2016-03-21 14 views
1

Ich versuche, die Koordinaten für die roten Linien zu berechnen, die im Bild gezeigt werden.Berechnungspunkt im Bogen

ich geschrieben habe folgendes:

QPoint clsLOFmimic::ptCalcEndPt(QPoint* pptOrigin 
            ,int intRadius 
            ,float fltAngle) { 
     double dblRadians = ((double)fltAngle) * (M_PI/180.0); 
     return QPoint(((double)intRadius * cos(dblRadians)) + pptOrigin->x() 
         ,((double)intRadius * sin(dblRadians)) + pptOrigin->y()); 
    } 

jedoch die Ausrichtung des berechneten Endpunkt nicht korrekt ist. 'pptOrigin' sind die Koordinaten links unten, wo sich die Linien schneiden.

Ziel ist es, die korrekten Endpunkte zu berechnen, um die im Diagramm gezeigten Linien zu reflektieren. X nimmt von links nach rechts zu und Y steigt von oben nach unten.

enter image description here

Antwort

1

Wenn y nach unten zunimmt, werden Sie ein Minuszeichen auf die sin() Funktion anwenden müssen. Die Triggerfunktionen funktionieren wie erwartet, wenn x nach rechts und y nach oben ansteigt.

+0

Gefällt mir: return QPoint (((double) intRadius * cos (dblRadians)) + pptOrigin-> x() , ((doppelt) intRadius * -sin (dblRadians)) + pptOrigin-> y()); – SPlatten

+1

@SPlatten ja, das sollte es tun – Logicrat

+0

ausgezeichnet danke das funktioniert! – SPlatten