我试图在matlab中模拟滚球,我需要能够控制它在2d平面上的移动,同时控制它的俯仰和滚动。
我已经想出如何控制它的俯仰,滚转和原点坐标,但是我无法想到一次完成这三个方法的好方法。发生的事情是,我可以自己控制音高和滚动。但是,当我将其添加到控制球的原点时,它会移动整个平面,使其“滚动”。上。
我认为我可以走硬路线并改变它的原点坐标,这样一旦添加了滚动和俯仰,它就会回到平面上。然而,这似乎相当复杂,我认为必须有更好的方法。
clear;
clc;
rho = 100;
xCenter = 0;
yCenter = 0;
theta = 0 : 0.01 : 2*pi;
radius = 40;
x_del = radius * cos(theta) + xCenter;
y_del = radius * sin(theta) + yCenter;
freq=1;
t=0:0.001:1;
y_sin=sin(2*pi*freq*t);
x_cos=cos(2*pi*freq*t);
max_angle=0.5;
x_cos_adjusted=x_cos*max_angle;
y_sin_adjusted=y_sin*max_angle;
y_angle=asind(y_sin_adjusted);
x_angle=asind(x_cos_adjusted)*-1;
for n = 1:1000;
[x, y, z] = sphere (40);
bb = surf (3*x+x_del(n), 3*y+y_del(n), 3*z);
axis equal;
xlim([-50 50])
ylim([-50 50])
zlim([-50 50])
x_direction=[0 1 0];
y_direction=[1 0 0];
rotate(bb,x_direction,x_angle(n));
rotate(bb,y_direction,y_angle(n));
refresh()
pause(0.01);
end
此代码旨在包括轨道和进动而不会有任何高程变化
注意:我忘了补充一点,在完成后我将从ps2控制器获取输入。因此,考虑到这一点,可以轻松实现奖励积分。