我有三个三维点的坐标,分别为p1=[1 2 3] p2=[4 5 6] p3=[7 8 9], 现在想求矢量线段P3P2和P3P1的向量积,也就是P3P1,P3P2所在平面的法线,并画在三维图上,请问下怎么做?
自己解答下吧。。。
p3p1=p1-p3
p3p2=p2-p3
c=cross(p3p1,p3p2)
c就是所要求的法线
plot3(x,y,z)
x,y,z是c和p3的三维坐标
法向量是0,咋显示呢?
不好意思,前面例子中的数是我随便代的,刚好比较特殊法向量是0
A=[1,2,3];%A点
B=[2,3,5];%B点
C=[3,5,7];%C点
clf%清除图像窗口
hold on;
t=0:1;
plot3(A(1)+t*(B(1)-A(1)),A(2)+t*(B(2)-A(2)),A(3)+t*(B(3)-A(3)),'r');%AB
plot3(B(1)+t*(C(1)-B(1)),B(2)+t*(C(2)-B(2)),B(3)+t*(C(3)-B(3)),'g');%BC
plot3(A(1)+t*(C(1)-A(1)),A(2)+t*(C(2)-A(2)),A(3)+t*(C(3)-A(3)),'b');%CA
D=cross(A-C,B-C);%AC叉乘BC
plot3(A(1)+t*D(1),A(2)+t*D(2),A(3)+t*D(3));%垂线
%画完后旋转即可看到空间图像的轮廓
根据楼上的程序,自己编了一个:
A=[1,2,3];%A点
B=[2,3,5];%B点
C=[3,5,7];%C点
clf%清除图像窗口
hold on;
grid on
plot3([A(1),B(1)],[A(2),B(2)],[A(3),B(3)],'r')
plot3([A(1),C(1)],[A(2),C(2)],[A(3),C(3)],'B')
plot3([B(1),C(1)],[B(2),C(2)],[B(3),C(3)],'g')
plot3([A(1),B(1)],[A(2),B(2)],[A(3),B(3)],'*k')
plot3([B(1),C(1)],[B(2),C(2)],[B(3),C(3)],'*k')
plot3([A(1),C(1)],[A(2),C(2)],[A(3),C(3)],'*k')
D=cross(A-B,A-C);
M=(A+B+C)/3;
E=M+D;
plot3([E(1),M(1)],[E(2),M(2)],[E(3),M(3)],'M');
plot3([E(1),M(1)],[E(2),M(2)],[E(3),M(3)],'squareM');
fill3([A(1),B(1),C(1)],[A(2),B(2),C(2)],[A(3),B(3),C(3)],[0,1,.5]);
希望有帮助!!!
vBulletin® v3.8.3,版权所有 ©2000-2025,Jelsoft Enterprises Ltd.