精度问题——直线方程的系数判断实际生产中三点能否确定一个圆
已知三點(diǎn)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|值的大小來判斷實(shí)際生產(chǎn)中三點(diǎn)能否確定一個圓:
if (A * A + B* B+ C* C < 0.0000001)
{
? ? ? ? MessageBox.Show("三點(diǎn)共線");
? ? ? ? return -1;
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/leejxyz/p/5238029.html
總結(jié)
以上是生活随笔為你收集整理的精度问题——直线方程的系数判断实际生产中三点能否确定一个圆的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【代码笔记】iOS-浮动的云
- 下一篇: 【转载】如何组建一支优秀的数据分析团队?