Exemplo n.º 1
0
    def reset(self):

        tangent = math.tan(self.FIELD_OF_VIEW_IN_DEGREES / 2.0 / 180.0 *
                           math.pi)
        distanceFromTarget = self.sceneRadius / tangent
        self.position = Point3D(0, 0, distanceFromTarget)
        #        print(self.position)
        self.target = Point3D(0, 0, 0)
        #        print(self.target)
        self.up = self.ground.returnCopy()
        t2p = self.position - self.target
        M1 = Matrix4x4.rotationAroundOrigin(np.pi / 3, Vector3D(1, 0, 0))
        #        print('M1',M1)
        #        M2 = Matrix4x4.rotationAroundOrigin( np.pi/2, Vector3D(1,0,0) )
        #        print(M2)
        M3 = Matrix4x4.rotationAroundOrigin(-np.pi / 6, Vector3D(0, 1, 0))
        #        print('M3',M3)
        #        t2p = M2 * t2p
        #        t2p = M1 * t2p

        #        M_temp =  Matrix4x4()
        #        M_temp.m = [ 0.0, 0.0, -1.0, 0.0,
        #                   -1.0, 0.0, 0.0, 0.0,
        #                   0.0, 1.0, 0.0, 0.0,
        #                   0.0, 0.0, 0.0, 1.0 ]

        t2p = M1 * t2p
        t2p = M3 * t2p
        self.position = self.target + t2p
        self.ground = Vector3D(0, 0, 1)
Exemplo n.º 2
0
    def orbit(self, old_x_pixels, old_y_pixels, new_x_pixels, new_y_pixels):
        pixelsPerDegree = self.viewportRadiusInPixels / float(self.ORBITING_SPEED_IN_DEGREES_PER_RADIUS_OF_VIEWPORT)
        radiansPerPixel = 1.0 / pixelsPerDegree * math.pi / 180.0

        t2p = self.position - self.target

        M = Matrix4x4.rotationAroundOrigin((old_x_pixels - new_x_pixels) * radiansPerPixel, self.ground)
        t2p = M * t2p
        self.up = M * self.up
        right = (self.up ^ t2p).normalized()
        M = Matrix4x4.rotationAroundOrigin((old_y_pixels - new_y_pixels) * radiansPerPixel, right)
        t2p = M * t2p
        self.up = M * self.up
        self.position = self.target + t2p
Exemplo n.º 3
0
    def orbit(self,old_x_pixels,old_y_pixels,new_x_pixels,new_y_pixels):
        pixelsPerDegree = self.viewportRadiusInPixels / float(self.ORBITING_SPEED_IN_DEGREES_PER_RADIUS_OF_VIEWPORT)
        radiansPerPixel = 1.0 / pixelsPerDegree * math.pi / 180.0

        t2p = self.position - self.target

        M = Matrix4x4.rotationAroundOrigin( (old_x_pixels - new_x_pixels) * radiansPerPixel, self.ground )
        t2p = M * t2p
        self.up = M * self.up
        right = (self.up ^ t2p).normalized()
        M = Matrix4x4.rotationAroundOrigin( (old_y_pixels - new_y_pixels) * radiansPerPixel, right )
        t2p = M * t2p
        self.up = M * self.up
        self.position = self.target + t2p