fix bad normal calculation

This commit is contained in:
pullusb
2024-07-18 18:22:40 +02:00
parent b65a60126d
commit fca531bf35
2 changed files with 25 additions and 7 deletions
+24 -6
View File
@@ -35,12 +35,30 @@ class attr_set():
# --- Vector
def triangle_normal(a, b, c):
x = a[1] * b[2] - a[2] * b[1]
y = a[2] * b[0] - a[0] * b[2]
z = a[0] * b[1] - a[1] * b[0]
return np.array([x, y, z], dtype='float64')
def triangle_normal(p1, p2, p3):
"""
Calculate the normal of a triangle given its three vertices.
Parameters:
p1, p2, p3: the 3 vertices of the triangle
Returns:
mathutils.Vector: The normalized normal vector of the triangle.
"""
## Get edge vectors
edge1 = Vector(p2) - Vector(p1)
edge2 = Vector(p3) - Vector(p1)
## Get normal (Cross product of the edge vectors)
normal = edge1.cross(edge2)
normal.normalize()
return normal
## Bad normal calculation !!
# def triangle_normal(a, b, c):
# x = a[1] * b[2] - a[2] * b[1]
# y = a[2] * b[0] - a[0] * b[2]
# z = a[0] * b[1] - a[1] * b[0]
# return np.array([x, y, z], dtype='float64')
def plane_coords(size=1):
v = size * 0.5