2016-04-05 10 views
0

Dies ist eine Funktion für die Drehung im Uhrzeigersinn. Der Parameter gibt an, wie viele Grad wir drehen möchten. Wie kann ich es gegen den Uhrzeigersinn drehen?Wie kann ich gegen den Uhrzeigersinn drehen

void rotateClockwise(int degree) {  
    int currentDegree = getDegree(); 
    int desiredDegree = currentDegree + degree; 
    if(desiredDegree > 359) { 
    desiredDegree -= 359; 
    } 
    do { 
    newDegree = getDegree(); // Returns current degree 
    desiredDegreeSINE = sin(desiredDegree * (PI/180)); 
    currentDegreeSINE = sin(newDegree * (PI/180)); 
    if(desiredDegreeSINE > 0 && currentDegreeSINE < 0) { 
     newDegree = newDegree - 360; 
    } 
    if(newDegree >= desiredDegree) { 
     // Stop rotating 
     break; 
    } else { 
     // Keep rotating 
    } 
    } while(true); 
} 

Wir drehen jeden Moment um 1 Grad.

+0

Zunächst sollten Sie desiredDegree verwenden - = 360. Und was ist der Sinus für? – user4759923

+0

'newDegree

+0

Wie drehst du? Sicher können Sie sowohl negative Winkel und Winkel> = 360 für die Rotation verwenden, Computer hat keine Angst vor ihnen! Wenn Sie wirklich einen "0..359" -Winkel für das menschliche Lesen oder für irgendein Gerät benötigen, geben Sie einfach '' (Winkel% 360) ' – MBo

Antwort

1
void rotateCounterClockwise(int degree) { 
    return rotateClockwise(360 - (360 + degree) % 360); 
} 
+0

Es ist eigentlich keine Drehung gegen den Uhrzeigersinn. –

+1

@ J.Doe hast du deine eigene Definition für gegen den Uhrzeigersinn? – UmNyobe

0
int rotateClockwise(int degree) { 
    return (getDegree() + degree) % 360; 
} 

und

int rotateCounterClockwise(int degree) { 
    int desiredDegree = (getDegree() - degree%360); 
    return desiredDegree >= 0 ? desiredDegree : 360+desiredDegree; 
} 
0

es vereinfachen.

Sie haben bereits eine Drehrichtung - es ist das Zeichen des Winkels, durch den Sie sich drehen.

#include <iostream> 

struct thing 
{ 
    int rotate(int alpha) 
    { 
     angle = (angle + alpha) % 360; 
     if (angle < 0) 
      angle += 360; 

     // by all means pre-calculate sin and cos here if you wish. 

     return angle; 
    } 

    int angle; 
}; 

int main(int argc, char * argv[]) 
{ 

    auto t = thing { 10 }; 

    std::cout << t.rotate(5) << std::endl; 
    std::cout << t.rotate(-30) << std::endl; 
    std::cout << t.rotate(360 + 30) << std::endl; 
    std::cout << t.rotate(-360 - 40) << std::endl; 

    return 0; 
} 

erwarteten Ergebnisse:

15 
345 
15 
335 
Verwandte Themen