2017-02-01 14 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

translate(0、0)を意味しますか。 ?コード例を与えてください。 – ggdev

関連する問題