資源簡介
已知空間中不同的且不在同一直線上的三點坐標,求取圓心的matlab源代碼。測試環境matlab2019. ThreePointToCircle.m是符號運算文件,ThreePointToCircle1.m是具有數據的仿真文件。

代碼片段和文件信息
function?[X0R]?=?GetCircleParameter(X1Y1Z1X2Y2Z2X3Y3Z3)
%UNtitleD2?此處顯示有關此函數的摘要
%???此處顯示詳細說明
syms?x?y?z?x1?y1?z1?x2?y2?z2?x3?y3?z3?x0?y0?z0?R
x1=X1;
y1=Y1;
z1=Z1;
x2=X2;
y2=Y2;
z2=Z2;
x3=X3;
y3=Y3;
z3=Z3;
Amatrix=[xyz1;x1y1z11;x2y2z21;x3y3z31]
A1matrix=[y1z11;y2z21;y3z31]
A1=det(A1matrix)
B1matrix=[x1z11;x2z21;x3z31]
B1=-det(B1matrix)
C1matrix=[x1y11;x2y21;x3y31]
C1=det(C1matrix)
D1matrix=[x1y1z1;x2y2z2;x3y3z3]
D1=-det(D1matrix)
Circle1=(x1-x)^2+(y1-y)^2+(z1-z)^2-R^2
Circle2=(x2-x)^2+(y2-y)^2+(z2-z)^2-R^2
Circle3=(x3-x)^2+(y3-y)^2+(z3-z)^2-R^2
f12=Circle1-Circle2
[a21a22]=coeffs(f12x)
[rc]=size(a21);
if?c==1
????????A2=0;
else
????A2=a21(11);
end
[b21b22]=coeffs(f12y)
[rc]=size(b21);
if?c==1
????????B2=0;?
else
????????B2=b21(11);
end
[c21c22]=coeffs(f12z)
[rc]=size(c21);
if?c==1
????C2=0
else
C2=c21(11)
end
D2=f12-A2*x-B2*y-C2*z
f23=Circle2-Circle3
[a31a32]=coeffs(f23x)
[rc]=size(a31);
if?c==1
????A3=0
else
A3=a31(11)
end
[b31b32]=coeffs(f23y)
[rc]=size(b31);
if?c==1
????B3=0
else
B3=b31(11)
end
[c31c32]=coeffs(f23z)
[rc]=size(c31);
if?c==1
????C3=0
else
C3=c31(11)
end
D3=f23-A3*x-B3*y-C3*z;
pAMatrix=[A1B1C1;A2B2C2;A3B3C3]
pDMatrix=[D1;D2;D3];
pDMatrix=simplify(pDMatrix)
X0=-inv(pAMatrix)*pDMatrix;
X0=simplify(subs(X0))
X0P1=[x1-X0(11);y1-X0(21);z1-X0(31)];
R=norm(X0P1)
end
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2020-02-22?22:04??3PointToCircle\
?????文件????????1529??2020-02-22?21:47??3PointToCircle\GetCircleParameter.m
?????文件?????????637??2020-02-18?15:11??3PointToCircle\Position.m
?????文件????????1224??2020-02-24?08:04??3PointToCircle\ThreePointToCircle.m
?????文件???????13697??2020-02-24?09:17??3PointToCircle\ThreePointToCircle1.m
評論
共有 條評論