2017-01-09 23 views
1

Мой код обработки основан на главе осцилляции Природы Кодекса Даниэля Шиффмана, в основном на примерах, где он поворачивает двигатель в соответствии с направлением, которое он направляет (мышь). Это не работает, хотя я почти уверен, что его одна ошибка. Прямоугольник просто вылетает за пределы экрана. Пример из книги (не полный)Код обработки тригонометрии не работает

void display() { 
float angle = velocity.heading2D; 
stroke(0); fill(175); pushMatrix(); rectMode(CENTER);    
translate(location.x,location.y); 
rotate (angle); 
rect(0,0,30,10); 
popMatrix(); 
} 

Мой код:

void show() { 
angle = velocity.heading2D(); 
rectMode(CENTER); 
pushMatrix(); 
translate(location.x,location.y); 
rotate(angle); 

fill(255,20,20,150); 
rect(location.x,location.y,carSize,carSize); 
popMatrix(); 
} 

установки и рисовать:

Car car ; 
void setup() { 
car = new Car(); 
} 

void draw() { 
mouse = new PVector(mouseX,mouseY); 
background(255); 
car.show(); 
car.move(); 
car.update(); 
} 
+0

Можете ли вы отправить сообщение [mcve]? Вместо простого размещения всего вашего класса без каких-либо функций 'setup()' или 'draw()' (что означает, что мы не можем запустить ваш код), сузите проблему до нескольких строк кода. –

+0

Извините, я его поменяю. – udbhavs

+0

Кроме того, я не знаю, что делает перевод (location.x, location.y) – udbhavs

ответ

1

я, наконец, понял это. Вместо

translate(location.x,location.y); 
rect(location.x,location.y,40,40); 

Это должно было быть:

translate(location.x,location.y); 
rect(0,0,40,40);  

, потому что перевод уже принимает исходную точку для расположения объекта, и именно там я хочу сделать это (0,0).