旋转椭圆到一个特定的向量

16次浏览(过去30天)
阿卡什V
阿卡什V 2021年8月22日
评论道: 阿卡什V2021年8月22日
我有一个三维椭圆,我用它来绘图 椭球体 (xc、yc佐,xr,年,zr)功能。你还可以看到三个相互垂直的向量(蓝、红、黄线)。我想旋转椭球,使椭圆的x_semi_axis与蓝线对齐,椭圆的y_semi_axis与红线对齐,椭圆的z_semi_axis与黄线对齐。你能分享一下代码吗?谢谢你!
2的评论
阿卡什V
阿卡什V 2021年8月22日
我对matlab很陌生。我尝试使用rotate(),但它根本没有正确对齐。我不知道这是否是(滚俯仰偏航)角度值本身的错误,还是我必须遵循特定的旋转顺序。代码如下:
Semi_axis_x = 0.085962489000000
Semi_axis_y = 0.119483388000000
Semi_axis_z = 0.240855299000000
Vector_1_x = 0.551221118000000
Vector_1_y = 0.832495512000000
Vector_1_z = -0.055736010000000
Vector_2_x = 0.015328738000000
Vector_2_y = 0.056685361000000
Vector_2_z = 0.998274411000000
Vector_3_x = -0.834218382000000
Vector_3_y = 0.551124299000000
Vector_3_z = -0.018485062000000
[X, Y, Z] =椭球(0,0,0,semi_axis_x semi_axis_y, semi_axis_z);
持有
s = surf(X,Y,Z);
plot3 ([0 vector_1_x], [0 vector_1_y], [0 vector_1_z],“b”);
持有
plot3 ([0 vector_2_x], [0 vector_2_y], [0 vector_2_z],“r”);
持有
plot3 ([0 vector_3_x], [0 vector_3_y], [0 vector_3_z],“y”);
平等的
包含(我的x标签
ylabel (我的y标签
zlabel (“我的z标签”

登录评论。

接受的答案

Wan霁
Wan霁 2021年8月22日
按照操作符你会得到你想要的
clc;明确
blueLine = [-0.4, 0.8, 0];%方向蓝线
Xc = 1;
Yc = 2;
Zc = 3;
Xr = 1;
Yr = 4;
Zr = 2;
图(1)
clf
[x,y,z] =椭球(xc,yc,zc,xr,yr,zr);
网格(x, y, z)
包含(“x”
ylabel (“y”
zlabel (“z”
视图(67)
平等的
相对位置%
X = X - xc;
Y = Y - yc;
Z = Z - zc;
T = z;% y,z轴交换
Z = y;
Y = t;
图(2);clf
网格(x, y, z)
包含(“x”
ylabel (“y”
zlabel (“z”
视图(67)
平等的
= atan2(blueLine(2), blueLine(1)) - /2;
X = X *cos - y*sin;%旋转
Y = x*sin + Y *cos;
图(3);clf
网格(x, y, z)
包含(“x”
ylabel (“y”
zlabel (“z”
视图(67)
平等的
%回到绝对坐标
X = X + xc;
Y = Y + yc;
Z = Z + zc;
5个评论
阿卡什V
阿卡什V 2021年8月22日
非常感谢你的代码和你的时间:)

登录评论。

更多答案(0)

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!