Organized modules into individual files
This commit is contained in:
42
tools/animation-tools/Shapes.py
Normal file
42
tools/animation-tools/Shapes.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from MatrixMath import *
|
||||
from pygame.math import Vector3
|
||||
|
||||
class Mesh():
|
||||
def __init__(self, vertices, faces):
|
||||
self.__vertices = [Vector3(v) for v in vertices]
|
||||
self.__faces = faces
|
||||
self.face_color = (0, 0, 0)
|
||||
self.edge_color = (0,0,0)
|
||||
|
||||
def rotate(self, angle, axis):
|
||||
self.__vertices = rotate_vertices(self.__vertices, angle, axis)
|
||||
def scale(self, s):
|
||||
self.__vertices = scale_vertices(self.__vertices, s)
|
||||
def translate(self, t):
|
||||
self.__vertices = translate_vertices(self.__vertices, t)
|
||||
|
||||
def calculate_average_z(self, vertices):
|
||||
return [(i, sum([vertices[j].z for j in f]) / len(f)) for i, f in enumerate(self.__faces)]
|
||||
|
||||
def get_face(self, index):
|
||||
return self.__faces[index]
|
||||
def get_vertices(self):
|
||||
return self.__vertices
|
||||
|
||||
def create_polygon(self, face, vertices):
|
||||
return [(vertices[i].x, vertices[i].y) for i in [*face, face[0]]]
|
||||
|
||||
def set_face_color(self, color : tuple[int]):
|
||||
self.face_color = color
|
||||
|
||||
def set_edge_color(self, color : tuple[int]):
|
||||
self.edge_color = color
|
||||
|
||||
class Cube(Mesh):
|
||||
def __init__(self):
|
||||
vertices = [(-1,-1,1), (1,-1,1), (1,1,1), (-1,1,1), (-1,-1,-1), (1,-1,-1), (1,1,-1), (-1,1,-1)]
|
||||
faces = [(0,1,2,3), (1,5,6,2), (5,4,7,6), (4,0,3,7), (3,2,6,7), (1,0,4,5)]
|
||||
super().__init__(vertices, faces)
|
||||
|
||||
def set_position(self, position : tuple):
|
||||
super().translate(position)
|
||||
Reference in New Issue
Block a user