Я пытаюсь вычислить вращение от одного креста к другому.Соответствия между линиями в крестах известны.
Вращение должно быть рассчитано в пределах 180 градусов по часовой стрелке или против часовой стрелки, в настоящее время я могу вычислить в пределах 90 градусов, но алгоритмы не работают с чем-то большим.Проблема, по-видимому, заключается в том, что соответствующие подшипники проходят вокруг 360 градусов, так что A = 350 и A '= 80. Повторение этого для каждой линии креста приводит к неправильному общему вращению.
Алгоритм в настоящее время работает следующим образом для сравнения вращения между двумя линиями, из двух крестиков есть;где crossB и crossA - соответствующие подшипники для каждого креста.
if ((crossB < 360 && crossB >= 270)
&& (crossA >= 0 && crossA < 90))
{
angle = -((360) - crossB) - crossA;
}
else if ((crossA < 360 && crossA >= 270)
&& (crossB >= 0 && crossB < 90)
{
angle = crossB + (360 - crossA);
}
else
{
angle = crossB - crossA;
}
Есть какие-нибудь мысли о том, как улучшить или изменить алгоритм так, чтобы он позволял определять любую величину вращения?