2017-02-01 8 views
0

Я хочу повернуть мой треугольникОбработка поворота треугольника на клавиатуре событие

Мой код не работает во всех случаях.

Он работает только в этом случае

triangle (- 10, + 26, 0, -25, + 10, + 26); 

Так что, когда я нажимаю вверх, вниз, влево и вправо клавиши я должен повернуть мой треугольник на соответствующую позицию.

Я не уверен, что это лучший способ, но я, как это до сих пор

Вот код

float X1 = 200; 
    float Y1 = 200; 

    float X2 = 220; 
    float Y2 = 160; 

    float X3 = 240; 
    float Y3 = 200; 

void setup() { 
    background(2); 
    size(400, 400); 

} 

void draw() { 

    background(0); 


    // background (0); 
    smooth(); 
    fill(255); 
    translate(width/2, height/2); 
    rotate(radians(angle)); 
    triangle (X1, Y1, X2, Y2, X3, Y3); 

    //triangle (- 10, + 26, 0, -25, + 10, + 26); This code works 

} 


int angle = 0; 
void keyPressed() { 


    switch (keyCode) 
    { 
    case UP: 

    angle +=90; 

     break; 
    case DOWN: 

    angle +=180; 

     break; 
    case LEFT: 

    angle +=90; 

     break; 
    case RIGHT: 

     angle +=-90; 

     break; 

    default: 
     break; 
    } 

} 

ответ

0

думать о координатах, которые вы используете.

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

Вот почему ваши переменные не работают. Похоже, что они относятся к верхнему левому углу экрана, а не к центру экрана.

Чтобы устранить проблему, вам придется переопределить переменные так, чтобы они были относительно центра экрана.

Подумайте об этом так: вы переводите в центр экрана, что означает, что ваше новое происхождение находится на 200,200. Затем вы нарисуете точку на 200,200. Но эта точка относится к центру экрана, поэтому вы действительно рисуете его на 400,400, который находится за пределами вашего окна. Вот почему вы не можете его увидеть. Вы действительно должны рисовать его на 0,0, который будет отображаться как 200,200, так как вы там уже переводили.

+0

Я очень новый в обработке. Не могли бы вы привести пример? – ggdev

+0

@ggdev Я отредактировал свой ответ, чтобы включить пример. –

+0

Вы имели в виду перевод (0, 0); ? Пожалуйста, дайте пример с кодом – ggdev

 Смежные вопросы

  • Нет связанных вопросов^_^