zoukankan      html  css  js  c++  java
  • 精度问题——直线方程的系数判断实际生产中三点能否确定一个圆

    已知三点p1(x1,y1,z1)、p2(x2,y2,z2)、p3(x3,y3,z3),求平面方程如下:

    c=向量AB=向量OB-向量OA=(x2-x1,y2-y1,z2-z1)

    b=向量AC=向量OC-向量OA=(x3-x1,y3-y1,z3-z1)

    n=向量AB×向量AC=([y1z2-y1z3-y2z1+y2z3+y3z1-y3z2],[-x1z2+x1z3+x2z1-x2z3-x3z1+x3z2],[x1y2-x1y3-x2y1+x2y3+x3y1-x3y2])

      =(A,B,C)

    即A=y1z2-y1z3-y2z1+y2z3+y3z1-y3z2,

       B=-x1z2+x1z3+x2z1-x2z3-x3z1+x3z2,

       C=x1y2-x1y3-x2y1+x2y3+x3y1-x3y2

    带入(x1,y1,z1),

    =>(y1z2-y1z3-y2z1+y2z3+y3z1-y3z2)x1+(-x1z2+x1z3+x2z1-x2z3-x3z1+x3z2)y1+(x1y2-x1y3-x2y1+x2y3+x3y1-x3y2)z1+d=0,

    =>x1y1z2-x1y1z3-x1y2z1+x1y2z3+x1y3z1-x1y3z2-x1y1z2+x1y1z3+x2y1z1-x2y1z3-x3y1z1+x3y1z2+x1y2z1-x1y3z1-x2y1z1+x2y3z1+x3y1z1-x3y2z1+d=0,

    =>x1y2z3-x1y3z2-x2y1z3+x2y3z1+x3y1z2-x3y2z1+d=0,

    =>D=-x1y2z3+x1y3z2+x2y1z3-x2y3z1-x3y1z2+x3y2z1

    =>Ax+By+Cz+D=0 为直线方程

    此时向量AB、AC的叉积|n|=|b||c|sin<b,c>

    用|n|值的大小来判断实际生产中三点能否确定一个圆:

    if (A * A + B* B+ C* C < 0.0000001)
    {
            MessageBox.Show("三点共线");
            return -1;
    }

  • 相关阅读:
    数据结构和算法大纲
    内存碎片产生原因及处理技术
    相关资源
    busybox hexdump 命令使用
    http协议中content-length 以及chunked编码分析
    libtool工具的使用
    音视频学习相关资源
    winpcap
    ipkg包管理
    system返回值校验
  • 原文地址:https://www.cnblogs.com/leejxyz/p/5238029.html
Copyright © 2011-2022 走看看