判断四个点是否共平面,Python实现
程序员文章站
2021-12-17 21:54:06
...
#判断四个点是否共平面:
#计算结果 = 0,就说明是共平面
#由于实际坐标并非完全精确,所以只要做到计算结果很接近0,就可以认为是共平面
#这里假设 -0.15 < 结果 < 0.15,就认为是共平面
#这里的0.15是经过多次尝试得到的
@staticmethod
def isFourPointsInSamePlane(p0, p1, p2, p3):
s1 = Point(p1.x - p0.x, p1.y - p0.y, p1.z - p0.z)
s2 = Point(p2.x - p0.x, p2.y - p0.y, p2.z - p0.z)
s3 = Point(p3.x - p0.x, p3.y - p0.y, p3.z - p0.z)
result = s1.x*s2.y*s3.z+s1.y*s2.z*s3.x+s1.z*s2.x*s3.y-s1.z*s2.y*s3.x-s1.x*s2.z*s3.y-s1.y*s2.x*s3.z
#R2.planeError是自定义的一个误差范围:0.1
#print(result)
#判断计算结果是否在误差范围内
if MathTool.isInRange(result, 0, R2.planeError):
return True
return False
#是否在误差范围内:这里的error是在Resource中定义的键长、键角等误差
#如果A - error <= B <= A + error,则认为A在B的误差范围内
#通过数学证明,参数A和B等价,也就是将A和B互换后不影响结果
@staticmethod
def isInRange(A, B, error):
if A - error <= B <= A + error:
return True
else:
return False
上一篇: Boundary(几何)
下一篇: Finding the Order