Winkelprobleme
-
Hi,
Ich schreibe im Moment ein Programm(C++) in MFC das mir einen Graphen malt.
Nun stehe ich schon länger vor einem Problem was mit Winkeln zu tun hat.Und zwar berechne ich meine neuen Koordinaten mithilfe folgender Formel:
newx = start->getX() + distance * (cosdeg(actualangle)); //#define cosdeg(x) cos((x)*(PI/180)) newy = start->getY() + distance * (sindeg(actualangle)); //#define sindeg(x) sin((x)*(PI/180))
newx/newy sind hierbei die neuen Koordinaten die berechnet werden sollen in Abhänigkeit vom Winkel "actualangle"(winkel) und "distance"(strecke).
Dies funktioniert alles gut und passt. Punkte werden richtig berechnet und gemalt.
Jetzt komme ich zum eigenen Problem.
Wenn ich nun den Winkel zwischen 2 errechneter Punkte "ausgeben" bzw neu errechnen lasse kommt kommt mit dieser Funktion der "kehrwert" heraus.void Edge::refreshAngle() { float slope = (m_destinationNode->getY() - m_originNode->getY()) / ((m_destinationNode->getX() - m_originNode->getX())); m_angle = atan(slope)* (180 / PI); }
Wenn ich einen Graph male mit dem Winkel von 100° gibt mir diese Funktion -80 Grad aus. Das bedeutet sie bedeutet sie rechnet von der anderen "Seite" wenn ihr versteht was ich meine.
Ich schätze es liegt daran dass mein Koordinatensystem nur auf positiven Koordinaten basiert.
Ursprung liegt in x= 950 und y in 450.
Gibt es hierfür eine Lösung oder muss ich mein Koordinatensystem umschreiben bzw. verlagern?MfG SaW120
-
Schau dir mal man: atan2 an.
-
Oh dankeschön, genau so etwas habe ich gesucht :>
spuckt mir genau 100 aus jetzt