判断四个点是否共平面,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。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值