Допустим, у вас есть два угла, и вы обозначили их 0 и 1. Тогда у вас есть еще один угол x. Вы также знаете, будете ли вы двигаться по часовой стрелке или против часовой стрелки, чтобы добраться от угла 0 до угла 1. Как вы вычисляете число, которое может описать этот третий угол?
Примеры:
Проблемы, которые у меня есть:
Проверьте следующий подход:
def ratio(x, a, b, dircw = False):
if dircw:
if x > a:
x -= 360
if b > a:
b -= 360
else:
if b < a:
b += 360
if x < a:
x += 360
return (x-a)/(b-a)
print(ratio(60, 0, 90))
print(ratio(60, 0, 90, True))
print(ratio(60, 90, 0, True))
print(ratio(90, 0, 180, True))
print(ratio(90, 0, 180))
0.6666666666666666
1.1111111111111112
0.3333333333333333
1.5
0.5
Мы рассматриваем решение линейного уравнения (решаем обратное linear interpolation
)
x = a*(1-t) + b*t
для неизвестного t
.
Мы должны сделать нормализацию, чтобы обеспечить b after a
циклическим образом в обоих направлениях - так что b+-
коррекция.
Чтобы получить только положительные результаты, нормализуем еще и x
.
Я заметил, я немного запутался из-за вращения. Да, все в порядке. Хотя я думал, что удалил этот комментарий.
Можете ли вы объяснить, почему эта программа работает? Потому что это немного запутанно читать. Спасибо. @MBo