Ну полярная система координат здесь ни при чем. Как я понял, у Вас есть картинка спидометра. Снимите с нее 3 точки
- p0 (координаты центра, там где конец стрелки прикреплен)
- p1 (координаты крайней левой риски)
- p2 (координаты крайней правой риски)
Теперь находим параметры
C++ (Qt)
QVector2D p0. p1. p2;
// заполняем p0. p1. p2 точами картинки
QVector2D v01 = p1 - p0;
qreal len01 = v01.length();
v01 /= len01;
QVector2D v02 = p2 - p0;
qreal len02 = v02.length();
v02 /= len02;
qreal theRadius = (len01 + len02) * 0.5f; // радиуc
qreal theAngleRange = acos(dotProduct(v01, v02)); // угол раствора в радианах
qreal theStartAngle = acos(v01.x()); // "левый угол" в радианах
if (v01.y() < 0.0f) { // раствор > 180 градусов
theStartAngle = PI * 2 - theStartAngle;
theAngleRange = PI * 2 - theAngleRange;
}
Использование: пусть спидометр имеет 10 делений, надо поставить стрелку на 2-е
C++ (Qt)
qreal angle = theStartAngle - theAngleRange * 0.2f;
QVector2D theP(theRadius * cos(angle), theRadius * sin(angle));
theP += p0;
// рисуем стрелку используя 2 точки: p0 и theP
...