Necesito que los bordes del objeto estén pintados de color. Conozco muy poco Python, pero mi profesor me dio este código y esto es lo que pasó con él.
def triangleArea(half_edge):
a = len (half_edge)
b = len (half_edge.edge_next)
c = len (half_edge.edge_next.edge_next)
s = (a + b + c) / 2
area = math.sqrt(s * (s - a)*(s - b)*(s - c))
return area
def angle(half_edge):
v1 = half_edge.vertex
v2 = prev(half_edge).vertex
v3 = half_edge.edge_next.vertex
angle = math.acos(((v2.co.x - v1.co.x)*(v3.co.x - v1.co.x)+(v2.co.y - v1.co.y)*(v3.co.y - v1.co.y)+(v2.co.z - v1.co.z)*(v3.co.z -v1.co.z))/(len(prev(half_edge))*len(half_edge)))
if (angle > math.pi / 2):
print (">90")
return angle
def curvature(v):
anglesSum = 0
completeArea = 0
for e in h_edge_list:
if (v == e.vertex):
start_edge = e
anglesSum += angle(start_edge)
completeArea += triangleArea(start_edge)
half_edge = start_edge.edge_next
cur = (2*math.pi - anglesSum)/completeArea
color (half_edge, cur, 0.13, 0.29)#farbime z intervalu 0 az 2/3
return cur
for e in h_edge_list:
print (curvature(e.vertex))
bmesh.free() # free and prevent further access
error en las últimas líneas de código con el operador S
ingrese la descripción de la imagen aquí
3
Su función de ángulo devuelve Ninguno a veces. ¿Quizás esa sea la fuente del error?
- Samsagaz
28/03/2021 a las 17:47
------------------------------------
Su función de ángulo devuelve Ninguno cuando esta condición es Falsa
if (angle > math.pi / 2):
print (">90")
return angle
Así es como se ve el retorno en tu función de ángulo actual
def angle(half_edge):
v1 = half_edge.vertex
v2 = prev(half_edge).vertex
v3 = half_edge.edge_next.vertex
angle = math.acos(((v2.co.x - v1.co.x)*(v3.co.x - v1.co.x)+(v2.co.y - v1.co.y)*(v3.co.y - v1.co.y)+(v2.co.z - v1.co.z)*(v3.co.z -v1.co.z))/(len(prev(half_edge))*len(half_edge)))
if (angle > math.pi / 2):
print (">90")
return angle
return None
Devuelve Ninguno si la condición (ángulo > math.pi / 2) es Falsa
Tal vez quieras devolver el valor del ángulo, cualquiera que sea la condición (esto hace que la declaración if sea innecesaria),
reduciendo su pestaña de sangría
def angle(half_edge):
v1 = half_edge.vertex
v2 = prev(half_edge).vertex
v3 = half_edge.edge_next.vertex
angle = math.acos(((v2.co.x - v1.co.x)*(v3.co.x - v1.co.x)+(v2.co.y - v1.co.y)*(v3.co.y - v1.co.y)+(v2.co.z - v1.co.z)*(v3.co.z -v1.co.z))/(len(prev(half_edge))*len(half_edge)))
if (angle > math.pi / 2):
print (">90")
return angle
------------------------------------
Esta declaración if no devolverá Ninguno si esta condición es Falsa
if (angle > math.pi / 2):
print (">90")
return angle
Querrás agregar al menos una declaración else a tu función de ángulo.
------------------------------------
La función de ángulo devuelve NingunoTipo si la condición interna no se cumple y el operador += no se puede usar con valores NingunoTipo. Intente devolver 0 en su lugar.
if (angle > math.pi / 2):
print (">90")
return angle
else:
return 0
0