2017-02-01 3 views
0

삼각형을 회전하고 싶습니다.키보드 이벤트에서 삼각형 회전 처리

모든 경우에 내 코드가 작동하지 않습니다.

내가 UP에 클릭 때, 아래, 왼쪽 및 오른쪽 키를 내가 적절한 위치에 내 삼각형을 회전해야이 경우

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