Обработка - заднее сальто автомобиля - PullRequest
1 голос
/ 20 апреля 2020

Мне нужно написать программу, показывающую, как автомобиль совершает сальто назад, летя по воздуху в правильном движении снаряда и приземляясь на его колеса.

Код, который у меня есть, позволяет мне лететь через воздуха. Все, что мне нужно, это повернуть автомобиль назад и правильно приземлиться на его колеса.

Код, который у меня сейчас есть:

float x,y;
float s = 20;
float theta = 0.64;
float g = 9.8;
float t =0.0;
PImage img;
void setup(){
  size(750,600);
  img = loadImage("myimage.gif");

  noStroke();
  smooth();
}

void draw(){
   fill(0, 22);
   rect(0, 0, width, height);
   t = t+0.01;
   x = s*cos(theta)*t;
   y = (s*t*sin(theta))-(0.5*g*t*t);
   fill(255);
   image(img,x*15,550-y*5);
}

Изображение, которое я использую для автомобиля:

enter image description here

1 Ответ

1 голос
/ 20 апреля 2020

Используйте rotate(), чтобы повернуть автомобиль вокруг его относительного положения, и translate(), чтобы переместить автомобиль в его положение.

translate(x*15,550-y*5);
rotate(r);
image(img, 0, 0);

Вращение угол (r) должен увеличиваться со временем ( r = f (t) ):

float r = alpha * t;

См. пример:

float s = 20;
float theta = 0.64;
float g = 9.8;
float t = 0.0;
float alpha = -2.2;
PImage img;

void setup(){
    size(750,600);
    img = loadImage("car.gif");
    noStroke();
    smooth();
}

void draw(){
   float x = s*cos(theta)*t;
   float y = (s*t*sin(theta))-(0.5*g*t*t);
   float r = alpha * t;
   t += 0.01;

   background(0);

   translate(x*15,550-y*5);
   rotate(r);
   image(img, 0, 0);

   if (t > 3.141529) 
       t = 0.0;
}
...