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;
matlab在三维空间中三点绘制圆弧
原文作者:想做机械 王老师
原文地址: https://blog.csdn.net/m0_59343296/article/details/121387386
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/m0_59343296/article/details/121387386
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。