matlab知道三个三维空间点的坐标,如何绘制经过这三个点的园,要求显示出空间直角坐标系。急,在线坐等!

三个空间点的坐标分别是:
P1 = [x1, y1, z1]
P2 = [x2, y2, z2]
P3 = [x3, y3, z3]

%P1=[x1,y1,z1];

%P2=[x2,y2,z2];

%P3=[x3,y3,z4];


%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

cc=(A\B)';                %这里有个复杂的推导过程,

                   %最终结果cc(1) cc(2) cc(3)就是圆心的x,y,z坐标

r=sqrt(sum((cc-P(1,:)).^2)); %点cc到任意一点的距离都可以求出圆的半径;


C1=P(1,:)-cc;                    %第一点到圆心的向量C1

C2=cross(C1,n./sqrt(sum(n.^2))); %C2是三点所在平面内与C1垂直的向量

theta=(0:360)';%画圆所需的角度采样间隔,0到360度,间隔可以自己根据需要调整

cirxyz=repmat(cc,[length(theta) 1])+cosd(theta)*C1+sind(theta)*C2;

%cirxyz是361x3的矩阵,3列分别是圆上每点的x,y,z坐标


plot3(P(:,1),P(:,2),P(:,3),'ko');grid on;hold on; %画出三点

plot3(cirxyz(:,1),cirxyz(:,2),cirxyz(:,3),'r-');hold off; %画出圆



以下是某次空间随机三点和他们的外接圆图像

温馨提示:内容为网友见解,仅供参考
无其他回答

matlab知道三个三维空间点的坐标,如何绘制经过这三个点的园,要求显示出...
最终结果cc(1) cc(2) cc(3)就是圆心的x,y,z坐标 r=sqrt(sum((cc-P(1,:)).^2)); %点cc到任意一点的距离都可以求出圆的半径;C1=P(1,:)-cc; %第一点到圆心的向量C1 C2=cross(C1,n.\/sqrt(sum(n.^2))); %C2是三点所在平面内与C1垂直的向量 theta=(0:360)';%画圆所...

matlab知道三个三维空间点的坐标,如何绘制这三个点构成的空间三角形...
举个例子来说吧,若三个顶点分别为:(1,0,0);(0,1,0);(0,0,1),则可用如下程序来画:x=[1 0 0 1];y=[0 1 0 0]; z=[0 0 1 0];plot3(x,y,z);grid;

matlab知道三个三维空间点的坐标,如何绘制这三个点构成的空间三角形...
Pc1 =[-9.3225,-63.7486,199.4819];Pc2=[ -50.7775,-52.8743,173.7286];Pc3=[-54.4475,-29.6580,192.3709];x=[Pc1(1);Pc2(1);Pc3(1);Pc1(1)];y=[Pc1(2);Pc2(2);Pc3(2);Pc1(2)];z=[Pc1(3);Pc2(3);Pc3(3);Pc1(3)];plot3(x,y,z)xlabel('X')ylabel('...

matlab怎么用三维矩阵画三维图
1、对于三维图形其有x、y、z三个坐标轴,数据也要按三维确定,如图所示,下面是部分单位数据样例。2、首先需要将数据读取到MATLAB工作空间(workspace)中,使用xlsread()函数即可,使用绝对路径读取,因为不在MATLAB默认路径内。3、接着,需要将x1、y1、z1数据分别从矩a中提取出来。4、然后使用三维散...

matlab如何在三维坐标里画点?知道点的坐标 求大神
楼上对,这是这样画出来你看不见,所以要加标记。plot3(x,y,z,'ro','LineWidth',3)'ro' r是颜色,此处为红色;o是标记类型,这里选的是圆;'LineWidth' 是线的宽度,这里用的是3;

...y,z;能否将三个变量的取值用Matlab画成三维散点图,求图片和程序,谢 ...
x=[9.8 9.7 9.7 9.5 9.4 9.4 9.1 9.0];y=[58 58 57 55 55 54 51 50];z=[3613401 3613397 3613368 3613268 3613258 3613206 3612926 3612873];plot3(x,y,z,'ro',x,y,z);grid;xlabel('x'),ylabel('y'),zlabel('z')

Matlab:在三维空间坐标系中,已知某点坐标,如何画出从原点(0, 0, 0...
答:例如:做射线OP,P点坐标为(2,3,-2)。先作出空间直角坐标系,确定单位长度,然后找出x=2, y=3, z=-2; 见下图。图中,红色线为坐标系,蓝色线为着坐标点的线,黑色线为作图线。OP作图时可以画的更长一些。先画平面,再画纵轴的坐标。

matlab中已知立方体的顶点坐标,如何绘制三维图像,求大...
可以用MATLAB一步一步的查 X([5:8,11,12,15,16,18,20,22,24])=1; 命令之后 X变为 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 所以这句是赋值语句 X(d,1)的意思是 X第一列的第1 2 4 3 1 5 6 8 ...

Mathematica或MATLAB怎样将空间三维点拟合成一个圆形,并将该圆形划出...
至于画圆:只要从A开始,每次沿着切线方向旋转一个小角度即可。代码如下:A = rand(3, 1);B = rand(3, 1);C = rand(3, 1);figure, hold on;plot3(A(1), A(2), A(3), 'or');plot3(B(1), B(2), B(3), 'or');plot3(C(1), C(2), C(3), 'or');%%W = ([A...

matlab如何绘制三维曲面
1、点击图标,打开matlab。2、输入代码:[x,y]=meshgrid(1:0.1:10, 1:0.1:10);z=x.^2+y.^2;surf(x,y,z)3、点击运行。4、在弹出的文件存储页面中,选择一个任意位置,点击保存即可。5、保存后matlab自动运行程序,得出的图像如下:

相似回答