from math import sqrt
class point():
#Definition d'un point 3D
def __init__(self, x = 0, y = 0, z=0):
self.__doc__ = "Definition d'un point 3D : point(x,y,z) "
self.x = x
self.y = y
self.z = z
self.coord = [x,y,z]
def __repr__(self):
return "%s %s %s" % (self.x, self.y, self.z)
class vector():
def __init__(self, point1 = point(), point2 = point()):
self.__doc__ = "Definition d'un vecteur 3D : vecteur(point1, point2) "
self.coord = [[point1, point2]]
self.point1 = point1
self.point2 = point2
self.x = self.point1.x - self.point2.x
self.y = self.point1.y - self.point2.y
self.z = self.point1.z - self.point2.z
def __repr__(self):
return "%s,%s,%s" % (self.x,self.y,self.z)
def Norme(self):
return sqrt(self.x*self.x + self.y*self.y + self.z*self.z)
class vertex():
def __init__(self, point1 = point(), point2 = point(), point3 = point()):
self.__doc__ = "Definition d'un vertice (triangle) 3D : vertex(point1,point2,point3)"
self.coord = {point1, point2, point3}
self.point1, self.point2, self.point3 = point1, point2, point3
self.coord_mat = [point1,point2,point3]
self.vecteur1 = vector(point1, point2)
self.vecteur2 = vector(point2, point3)
self.vecteur3 = vector(point3, point1)
self.vecteurs = [self.vecteur1, self.vecteur2, self.vecteur3]
def __repr__(self):
return "%s;%s;%s" % (self.vecteur1.__repr__(),self.vecteur2.__repr__(),self.vecteur3.__repr__())
def Normale(self):
u1 = vector(self.point1, self.point2)
u2 = vector(self.point1, self.point3)
X = u1.y*u2.z-u1.z*u2.y
Y = u1.z*u2.x-u1.x*u2.z
Z = u1.x*u2.y-u1.y*u2.x
a = point(0,0,0)
b = point(X,Y,Z)
norme = vector(a,b).Norme()
if (norme==0):
return None
return (X/norme,Y/norme,Z/norme)