所以我有一个对象,我给它应用了一个旋转,我很好奇如何让它沿着路径移动。我还在学习 MatLab,所以如果你看到我可以/应该做一些不同的事情,请告诉我。任何帮助,不胜感激。
kittyx = [0 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 ...
150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 ...
-150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 ...
-150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 -150 150 150 -150 150 150 230 150 150 230 150 150 230 ...
150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 ...
150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 150 150 230 ...
150 150 230 150 150 230 150 150 230];
kittyy = [0 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 7.5 7.5 8 8 8.5 8.5 9 9 9.5 9.5 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ...
10 10 10 10 10 10 10 10 9.5 9.5 9 9 8.5 8.5 8 8 7.5 7.5 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0 0 -1 -1 -2 -2 ...
-3 -3 -4 -4 -5 -5 -6 -6 -7 -7 -7.5 -7.5 -8 -8 -8.5 -8.5 -9 -9 -9.5 -9.5 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 -10 ...
-10 -10 -10 -10 -10 -10 -9.5 -9.5 -9 -9 -8.5 -8.5 -8 -8 -7.5 -7.5 -7 -7 -6 -6 -5 -5 -4 -4 -3 -3 -2 -2 -1 -1 0 0 0 -7 0 7 6.5 0 6 5.5 0 ...
5 4.5 0 4 3.5 0 3 2.5 0 2 1.5 0 1 0.5 0 0 -.5 0 -1 -1.5 0 -2 -2.5 0 -3 -3.5 0 -4 -4.5 0 -5 -5.5 0 -6 -6.5 0 ...
-7 -6.5 0 -6 -5.5 0 -5 -4.5 0 -4 -3.5 0 -3 -2.5 0 -2 -1.5 0 -1 -.5 0 0 .5 0 1 1.5 0 2 2.5 0 3 3.5 0 4 4.5 0 ...
5 5.5 0 6 6.5 0 7 7.5 0];
kittyz = [6 6 6 5 5 4 4 3 3 2 2 1 1 0 0 -1 -1 -2 -2 -3 -3 -4 -4 -5 -5 -6 -6 -7 -7 -8 -8 -9 -9 -10 -10 -11 -11 -12 -12 -13 -13 ...
-14 -14 -15 -15 -16 -16 -17 -17 -18 -18 -19 -19 -20 -20 -21 -21 -22 -22 -23 -23 -24 -24 -25 -25 -26 -26 -27 -27 -28 -28 -29 -29 -30 -30 -29 -29 -28 -28 ...
-27 -27 -26 -26 -25 -25 -24 -24 -23 -23 -22 -22 -21 -21 -20 -20 -19 -19 -18 -18 -17 -17 -16 -16 -15 -15 -14 -14 -13 -13 -12 -12 -11 -11 -10 -10 ...
-9 -9 -8 -8 -7 -7 -6 -6 -5 -5 -4 -4 -3 -3 -2 -2 -1 -1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 6 -6 -6 -6 -5 -6 -4 -3 -6 ...
-2 -1 -6 0 1 -6 2 3 -6 4 5 -6 6 7 -6 8 7 -6 6 5 -6 4 3 -6 2 1 -6 0 -1 -6 -2 -3 -6 -4 -5 -6 ...
-6 -5 -6 -7 -8 -6 -9 -10 -6 -11 -12 -6 -13 -14 -6 -15 -16 -6 -17 -18 -6 -19 -20 -6 -20 -19 -6 -18 -17 -6 -16 -15 -6 -14 -13 -6 ...
-12 -11 -6 -10 -9 -6 -8 -7 -6];
figure(1)
axis([-200 200 -200 200 -200 200])
hold on
%plot3(kittyx,kittyy,kittyz);
%Rotation Part
object = [kittyx
kittyy
kittyz];
v=.2;
for t=0:.1:4*pi
x = -1*sin(t);
y = 1*cos(t);
pitch_angle = atan2(y,t)/sqrt((x/t)^2+(y/t)^2);
yaw_angle = atan2(y,t)/(x/t);
R = [cos(pitch_angle) 0 -sin(pitch_angle); 0 1 0; sin(pitch_angle) 0 cos(pitch_angle)];
R2 = [cos(yaw_angle) -sin(yaw_angle) 0; sin(yaw_angle) cos(yaw_angle) 0; 0 0 1];
object_pitched = R*(object);
object_yawed = R2*(object_pitched);
i = object_yawed(1,:);
j = object_yawed(2,:);
k = object_yawed(3,:);
view(45,45)
axis equal
%Plot and set axis
plot3(i,j,k)
axis([-200 200 -200 200 -200 200])
pause(0.2);
clf;
end
您只需在对象坐标中添加/减去一些值即可。在您的示例中,您可以将t*100
添加到旋转对象的 x 坐标中。这会将对象向右平移。
plot3(i+t*100,j,k);
您还可以将路径的值存储在矢量中,以便对象遵循其预定义的路由。
plot3( i + predifined_x(t), j, k);
其中predifined_x
是长度0:.1:4*pi
的向量。