Example #1
0
 def __init__(self, pos=None, shape=None, theta=None):
     self.theta = float(theta or 0)
     xmin, xmax, ymin, ymax = aabb_bbox(pos=pos, shape=shape)
     vertices = [(xmax, ymin), (xmax, ymax), (xmin, ymax), (xmin, ymin)]
     super(Rectangle, self).__init__(vertices)
     if theta:
         self.rotate(self.theta)
Example #2
0
    def __init__(self,
                 xmin=None,
                 xmax=None,
                 ymin=None,
                 ymax=None,
                 pos=None,
                 vel=(0, 0),
                 mass=None,
                 density=None,
                 bbox=None,
                 shape=None,
                 rect=None,
                 **kwds):

        # Define as propriedades das caixas de contorno
        xmin, xmax, ymin, ymax = aabb_bbox(bbox=bbox,
                                           rect=rect,
                                           shape=shape,
                                           pos=pos,
                                           xmin=xmin,
                                           xmax=xmax,
                                           ymin=ymin,
                                           ymax=ymax)

        pos = ((xmin + xmax) / 2., (ymin + ymax) / 2.)
        self._delta_x = dx = (xmax - xmin) / 2
        self._delta_y = dy = (ymax - ymin) / 2
        self.cbb_radius = sqrt(dx**2 + dy**2)
        aabb = _AABB(xmin, xmax, ymin, ymax)
        super(AABB, self).__init__(pos,
                                   vel,
                                   mass=mass,
                                   density=density,
                                   baseshape=aabb,
                                   **kwds)
Example #3
0
    def __init__(self,
                 xmin=None,
                 xmax=None,
                 ymin=None,
                 ymax=None,
                 pos=None,
                 vel=(0, 0),
                 mass=None,
                 density=None,
                 bbox=None,
                 shape=None,
                 rect=None):

        # Define as propriedades das caixas de contorno
        xmin, xmax, ymin, ymax = aabb_bbox(bbox=bbox,
                                           rect=rect,
                                           shape=shape,
                                           pos=pos,
                                           xmin=xmin,
                                           xmax=xmax,
                                           ymin=ymin,
                                           ymax=ymax)

        pos = ((xmin + xmax) / 2., (ymin + ymax) / 2.)
        super(AABB, self).__init__(xmin,
                                   xmax,
                                   ymin,
                                   ymax,
                                   pos,
                                   vel,
                                   mass=mass,
                                   density=density)
Example #4
0
    def __init__(self, xmin=None, xmax=None, ymin=None, ymax=None,
                 pos=None, vel=(0, 0), mass=None, density=None,
                 bbox=None, shape=None, rect=None, **kwds):

        # Define as propriedades das caixas de contorno
        xmin, xmax, ymin, ymax = aabb_bbox(bbox=bbox, rect=rect,
                                           shape=shape, pos=pos,
                                           xmin=xmin, xmax=xmax,
                                           ymin=ymin, ymax=ymax)

        pos = ((xmin + xmax) / 2., (ymin + ymax) / 2.)
        self._delta_x = dx = (xmax - xmin) / 2
        self._delta_y = dy = (ymax - ymin) / 2
        self.cbb_radius = sqrt(dx ** 2 + dy ** 2)
        super(AABB, self).__init__(pos, vel,
                                   mass=mass, density=density, **kwds)
Example #5
0
    def __init__(self,
                 xmin=None,
                 xmax=None,
                 ymin=None,
                 ymax=None,
                 pos=None,
                 vel=(0, 0),
                 theta=0.0,
                 omega=0.0,
                 mass=None,
                 density=None,
                 inertia=None,
                 bbox=None,
                 rect=None,
                 shape=None):
        '''Cria um retângulo especificando ou a caixa de contorno ou a posição
        do centro de massa e a forma.

        Pode ser inicializado como uma AABB, mas gera um polígono como
        resultado.

        >>> r = Rectangle(shape=(200, 100))
        >>> r.rotate(pi/4)
        >>> r.bbox                                         # doctest: +ELLIPSIS
        (-106.066..., 106.066..., -106.066..., 106.066...)

        '''

        bbox = aabb_bbox(bbox=bbox,
                         rect=rect,
                         shape=shape,
                         pos=pos,
                         xmin=xmin,
                         ymin=ymin,
                         xmax=xmax,
                         ymax=ymax)
        xmin, xmax, ymin, ymax = bbox

        super(Rectangle, self).__init__([(xmax, ymin), (xmax, ymax),
                                         (xmin, ymax), (xmin, ymin)],
                                        None,
                                        vel,
                                        theta,
                                        omega,
                                        mass=mass,
                                        density=density,
                                        inertia=inertia)
Example #6
0
    def __init__(self, xmin=None, xmax=None, ymin=None, ymax=None,
                 pos=None, vel=(0, 0), theta=0.0, omega=0.0,
                 bbox=None, rect=None, shape=None, **kwds):
        '''Cria um retângulo especificando ou a caixa de contorno ou a posição
        do centro de massa e a forma.

        Pode ser inicializado como uma AABB, mas gera um polígono como
        resultado.

        >>> r = Rectangle(shape=(200, 100))
        >>> r.rotate(pi/4)
        >>> r.bbox                                         # doctest: +ELLIPSIS
        (-106.066..., 106.066..., -106.066..., 106.066...)

        '''

        xmin, xmax, ymin, ymax = aabb_bbox(
            xmin=xmin, ymin=ymin, xmax=xmax, ymax=ymax,
            bbox=bbox, rect=rect, shape=shape, pos=pos)

        super(Rectangle, self).__init__(
            [(xmax, ymin), (xmax, ymax), (xmin, ymax), (xmin, ymin)],
            None, vel, theta, omega, **kwds)