MATLAB 四点定球及三点定圆(完整代码)

Posted slandarer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB 四点定球及三点定圆(完整代码)相关的知识,希望对你有一定的参考价值。

哈哈哈看到一个很有意思的想法,顺手写了一下:
怎样快速求圆形或球形的隐函数方程、中心、半径
先从四点定球开始:

四点定球

实际上是看到李扬老师的视频哈哈哈

求通过不共面四点 M 1 ( x 1 , y 1 , z 1 ) M_{1}\\left(x_{1}, y_{1},z_{1}\\right) M1(x1,y1,z1), M 2 ( x 2 , y 2 , z 2 ) M_{2}\\left(x_{2}, y_{2}, z_{2}\\right) M2(x2,y2,z2), M 3 ( x 3 , y 3 , z 3 ) M_{3}\\left(x_{3}, y_{3}, z_{3}\\right) M3(x3,y3,z3), M 4 ( x 4 , y 4 , z 4 ) M_{4}\\left(x_{4}, y_{4}, z_{4}\\right) M4(x4,y4,z4)的球面方程

我们设球面方程为:
a ( x 2 + y 2 + z 2 ) + b x + c y + d z + e = 0 a\\left(x^{2}+y^{2}+z^{2}\\right)+b x+c y+d z+e=0 a(x2+y2+z2)+bx+cy+dz+e=0

那么球面上的任意点及已知四点满足如下方程组:

{ a ( x 2 + y 2 + z 2 ) + b x + c y + d z + e = 0 a ( x 1 2 + y 1 2 + z 1 2 ) + b x 1 + c y 1 + d z 1 + e = 0 a ( x 2 2 + y 2 2 + z 2 2 ) + b x 2 + c y 2 + d z 2 + e = 0 a ( x 3 2 + y 3 2 + z 3 2 ) + b x 3 + c y 3 + d z 3 + e = 0 a ( x 4 2 + y 4 2 + z 4 2 ) + b x 4 + c y 4 + d z 4 + e = 0 \\left\\{\\begin{array}{l} a\\left(x^{2}+y^{2}+z^{2}\\right)+b x+c y+d z+e=0 \\\\ a\\left(x_{1}^{2}+y_{1}^{2}+z_{1}^{2}\\right)+b x_{1}+c y_{1}+d z_{1}+e=0 \\\\ a\\left(x_{2}^{2}+y_{2}^{2}+z_{2}^{2}\\right)+b x_{2}+c y_{2}+d z_{2}+e=0 \\\\ a\\left(x_{3}^{2}+y_{3}^{2}+z_{3}^{2}\\right)+b x_{3}+c y_{3}+d z_{3}+e=0 \\\\ a\\left(x_{4}^{2}+y_{4}^{2}+z_{4}^{2}\\right)+b x_{4}+c y_{4}+d z_{4}+e=0 \\end{array}\\right. a(x2+y2+z2)+bx+cy+dz+e=0a(x12+y12+z12)+bx1+cy1+dz1+e=0a(x22+y22+z22)+bx2+cy2+dz2+e=0a(x32+y32+z32)+bx3+cy3+dz3+e=0a(x42+y42+z42)+bx4+cy4+dz4+e=0

要使方程组有非零解则要求系数行列式为0,即:
D ( x , y , z ) = ∣ x 2 + y 2 + z 2 x y z 1 x 1 2 + y 1 2 + z 1 2 x 1 y 1 z 1 1 x 2 2 + y 2 2 + z 2 2 x 2 y 2 z 2 1 x 3 2 + y 3 2 + z 3 2

以上是关于MATLAB 四点定球及三点定圆(完整代码)的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript三点定圆

三点定圆原理与C++实现

与圆有关的性质

PCL随机采样一致性:RANSAC 圆拟合(二维圆 + 空间圆)

三个点求圆心

linux 下查看文件的完整时间信息及三种时间属性