2016-03-21 2 views
1

Я пытаюсь вычислить координаты для красных линий, показанных на изображении.Расчетная точка в дуге

Я написал следующее:

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

Однако ориентация расчетной конечной точки не является правильным. «pptOrigin» - это координаты в левом нижнем углу, где пересекаются прямые.

Целью является вычисление правильных конечных точек для отражения линий, показанных на диаграмме. X увеличивается слева направо, а Y увеличивается сверху вниз.

enter image description here

ответ

1

Если у растет вниз, вы должны будете применять знак минус функции sin(). Триггерные функции работают так, как вы ожидали бы, когда x увеличивается вправо, а y увеличивается вверх.

+0

Нравится: return QPoint (((double) intRadius * cos (dblRadians)) + pptOrigin-> x() , ((double) intRadius * -sin (dblRadians)) + pptOrigin-> y()); – SPlatten

+1

@SPlatten да, это должно было сделать – Logicrat

+0

отличная спасибо, что работает! – SPlatten

Смежные вопросы