我在完成作业时需要绘制如下图形:
其中涉及到三维图形中向量的绘制,向量大小的推算,坐标原点的推算,三维中两点连线的绘制以及如何将向量归一化的问题。
向量大小的推算必定会用到多维数组的乘法
不能直接写成[x;y;z]=[a11,a12,a13;a21,a22,a23;a31,a32,a33][x0,y0,z0]的形式,否则会出现如下错误:
解决方法是:
可以先用一个矩阵变量承接,
b=[a11,a12,a13;a21,a22,a23;a31,a32,a33][x0,y0,z0];
x=b(1,:);
y=b(2,:);
z=b(3,:);
向量的模计算公式为norm(a),可以采用如下方式将向量归一化
(接上文代码):
x11=x(1,1)/norm(x);
x12=x(1,2)/norm(x);
x13=x(1,3)/norm(x);
首先,向量的绘制需要用到quiver3(x,y,z,u,v,w,’-r’)函数,
其中,
1、(x,y,z)是坐标原点的位置;
2、(u,v,w)是向量的大小;
3、’-r’是线段的属性,“-”表示直线段,“–”表示虚线,“r”表示线段的颜色,常用的有r-红色、g-绿色、b-蓝色、k-黑色
若要想得到我图中带圆圈的线段,可使用’-or’
接上文中代码可以得,
quiver3(x0,y0,z0,x11,x12,x13,’-or’);
hold on;
「注:在二维中使用的是quiver(x,y,u,v,’-r’)」
已知一点(x0,y0,z0),另一点(x1,y1,z1)
可用如下代码实现:
x=[x0,x1];y=[y0,y1];z=[z0,z1];
plot3(x,y,z,’-ok’);