滚球模拟

时间:2017-04-30 23:49:58

标签: matlab simulation

我试图在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控制器获取输入。因此,考虑到这一点,可以轻松实现奖励积分。

0 个答案:

没有答案