【发布时间】:2021-03-29 02:09:25
【问题描述】:
我需要将对象的边缘涂上颜色。我对python的了解很差,但是我的老师给出了这段代码,这就是它发生的事情。
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
使用 S 运算符的最后几行代码出错 enter image description here
【问题讨论】:
-
您的
angle函数有时会返回None。也许这就是错误的根源?
标签: python