2017-02-01 4 views
0

Ich will mein DreieckVerarbeitung drehen Dreieck auf Tastaturereignis

Mein Code nicht in allen Fällen arbeiten drehen.

Es funktioniert nur in diesem Fall

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

Also, wenn ich auf UP klicken, Runter, Links und Rechts Tasten sollte ich mein Dreieck auf entsprechende Position drehen.

Ich bin nicht sicher, dies der beste Weg ist, aber ich tun, wie diese bisher

ist hier den Code

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; 
    } 

} 

Antwort

0

die Koordinaten Denken Sie Sie verwenden.

Zunächst übersetzen Sie in die Mitte des Bildschirms. Das bedeutet, dass Ihre Koordinaten alle relativ zu dieser Position sind und nicht zur oberen linken Ecke des Bildschirms.

Deshalb funktionieren Ihre Variablen nicht. Es sieht so aus, als wären sie relativ zur oberen linken Ecke des Bildschirms, nicht zur Mitte des Bildschirms.

Um Ihr Problem zu beheben, müssen Sie Ihre Variablen neu definieren, so dass sie relativ zur Mitte des Bildschirms sind.

Denken Sie darüber nach: Sie übersetzen in die Mitte des Bildschirms, was bedeutet, dass Ihr neuer Ursprung bei 200,200 ist. Dann zeichnen Sie einen Punkt bei 200,200. Aber dieser Punkt ist relativ zur Mitte des Bildschirms, also zeichnest du ihn wirklich unter der Nummer 400,400, die sich am Rand deines Fensters befindet. Deshalb kannst du es nicht sehen. Sie sollten es wirklich unter 0,0 zeichnen, was als 200,200 angezeigt wird, da Sie dort bereits übersetzt haben.

+0

Ich bin sehr neu in der Verarbeitung. Könnten Sie mir bitte ein Beispiel geben? – ggdev

+0

@ggdev Ich habe meine Antwort bearbeitet, um einen Beispielpunkt hinzuzufügen. –

+0

Meinst du übersetzen (0, 0); ? Bitte geben Sie ein Beispiel mit Code – ggdev