matlab在三维空间中三点绘制圆弧

P1=[0.4,0.6,0.4];

P2=[0.48,0.63,0.52];

P3=[0.85,0.3,0.3];

P=[P1;P2;P3];

%   | x1  y1  z1 |

%P =| x2  y2  z2 |

%   | x3  y3  z3 |

P=rand(3);    % 三点的xyz坐标正好是合拼成3x3的矩阵,这里用3x3的随机矩阵测试

               % 利用随机数生成3个点的坐标

               % 实际使用中,将已知的三点坐标按上述顺序排成P矩阵既可以了

A=diff(P);     % 差分和近似导数

n=cross(A(1,:),A(2,:)); % n是三点组成的平面的法向量 由两的向量求法向向量


if all(n==0),error('not a triangle');

end                       % 如果n是0向量,表示三点共线

A=[A;n];                  % 从三点坐标很容易求得三点平面所在的方程

B=sum(diff(P.^2),2)/2;    % 而外接圆心到各点距离相等,又可以列几条方程

B=[B;dot(n,P(1,:))];      %  将方程联立可以解得圆心坐标cc 
                          %  C = dot(A,B)  C = A(1)*B(1) + A(2)*B(2) + A(3)*B(3)
                          %  每一列相乘相加
cc=(A\B)';                %  这里有个复杂的推导过程,

% 最终结果cc(1) cc(2) cc(3)就是圆心的x,y,z坐标
r=sqrt(sum((cc-P(1,:)).^2));     % 点cc到任意一点的距离都可以求出圆的半径;

C1=P(1,:)-cc;            
    原文作者:想做机械 王老师
    原文地址: https://blog.csdn.net/m0_59343296/article/details/121387386
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞