• 大小: 5KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: Matlab
  • 标签: matlab  

资源简介

已知空间中不同的且不在同一直线上的三点坐标,求取圆心的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

评论

共有 条评论