判断四个点是否共平面,Python实现

    #判断四个点是否共平面:
    #计算结果 = 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

ps: 特别喜欢Python的一个语法: a < b < c,而不是写成 a < b && b < c。

猜你喜欢

转载自blog.csdn.net/wangeil007/article/details/107770069