def update(self): """ called on every frame apply transformation matrix and project every polygon to 2d for color avg_z function is used polygons are sorted on avg_z value finally painting on surface is called """ # Clock vector vector = Matrix3D.get_rot_z_matrix(self.angle).v_dot(self.vector) # projected = self.__project(self.vector, self.center) projected = self.__projectm(vector, self.center) pygame.draw.polygon(self.surface, pygame.Color(255,255,255,0), (self.center, projected), 1) # Cube mesh = self.model.transform(Matrix3D.get_rot_z_matrix(self.angle)) #mesh = mesh.transform(Matrix3D.get_rot_x_matrix(self.angle)) mesh = mesh.transform(Matrix3D.get_scale_matrix(SCALE, SCALE, SCALE)) mesh = mesh.transform(Matrix3D.get_shift_matrix(X_SHIFT, Y_SHIFT, Z_SHIFT)) for face in mesh: vertices = [self.__projectm(vertice, self.center) for vertice in face] pygame.draw.polygon(self.surface, pygame.Color(255,255,255,0), vertices, 1) self.angle += self.angle_step # axis vectors pygame.draw.polygon(self.surface, pygame.Color(255,0,0,0), (self.center, self.__projectm(self.x_axis, self.center)), 1) pygame.draw.polygon(self.surface, pygame.Color(0,255,0,0), (self.center, self.__projectm(self.y_axis, self.center)), 1) pygame.draw.polygon(self.surface, pygame.Color(0,0,255,0), (self.center, self.__projectm(self.z_axis, self.center)), 1)
def test_m_transforms(self): v = Vector3D(1, 1, 0, 1) m = Matrix3D.get_shift_matrix(5, 5, 0) print "shift matrix:\n", m print "shifted vector:", m.v_dot(v) m = Matrix3D.get_scale_matrix(2, 2, 0) print "scale matrix:\n", m print "scaled vector:", m.v_dot(v)
def update(self): """ called on every frame apply transformation matrix and project every polygon to 2d for color avg_z function is used polygons are sorted on avg_z value finally painting on surface is called """ # Clock vector vector = Matrix3D.get_rot_z_matrix(self.angle).v_dot(self.vector) # projected = self.__project(self.vector, self.center) projected = self.__projectm(vector, self.center) pygame.draw.polygon(self.surface, pygame.Color(255, 255, 255, 0), (self.center, projected), 1) # Cube mesh = self.model.transform(Matrix3D.get_rot_z_matrix(self.angle)) #mesh = mesh.transform(Matrix3D.get_rot_x_matrix(self.angle)) mesh = mesh.transform(Matrix3D.get_scale_matrix(SCALE, SCALE, SCALE)) mesh = mesh.transform( Matrix3D.get_shift_matrix(X_SHIFT, Y_SHIFT, Z_SHIFT)) for face in mesh: vertices = [ self.__projectm(vertice, self.center) for vertice in face ] pygame.draw.polygon(self.surface, pygame.Color(255, 255, 255, 0), vertices, 1) self.angle += self.angle_step # axis vectors pygame.draw.polygon( self.surface, pygame.Color(255, 0, 0, 0), (self.center, self.__projectm(self.x_axis, self.center)), 1) pygame.draw.polygon( self.surface, pygame.Color(0, 255, 0, 0), (self.center, self.__projectm(self.y_axis, self.center)), 1) pygame.draw.polygon( self.surface, pygame.Color(0, 0, 255, 0), (self.center, self.__projectm(self.z_axis, self.center)), 1)