def set_absolute_position()

in mujoco_worldgen/objs/obj.py [0:0]


    def set_absolute_position(self, origin):
        '''
        Set absolute position of objects, recursing throught all children.
            origin - absolute position of this object's origin
        '''
        assert len(origin) == 3, "Invalid origin: {}".format(origin)
        assert len(self.relative_position) == 2, \
            "Invalid relative_position: {}".format(self.relative_position)
        self.absolute_position = np.array(origin, dtype=np.float)
        # Note relative_position is X,Y but our absolute_position is X,Y,Z
        self.absolute_position[:2] += self.relative_position
        for placement_name, children in self.children.items():
            placement = self.placements[placement_name]
            offset = self.absolute_position + placement['origin']
            for child, _ in children:
                if child.placeable:
                    child.set_absolute_position(offset)
        # Calculate positions of markers
        for marker in self.markers:
            if marker['relative_xyz'] is not None:
                relative_xyz = np.array(marker['relative_xyz'], dtype='f8')
                marker['position'] = relative_xyz * np.array(self.size, dtype=np.float)
                for i in range(3):
                    if np.abs(self.size[i]) < 1e-4:
                        marker["position"][i] = relative_xyz[i]
                marker['position'] -= self.size * 0.5
            elif marker['absolute_xyz'] is not None:
                marker['position'] = np.array(marker['absolute_xyz'], dtype='f8')
            else:
                assert False, 'Neither absolute nor relative xyz provided.'