Python преобразует углы между двумя разными плоскостями координат?

#python #geometry

#python #геометрия

Вопрос:

Я не знаю, как сформулировать мою проблему, но меня больше всего интересует логика, которую я мог бы использовать в python, поскольку мои знания в python не так уж велики в отношении использования математики.

У меня есть 2 разные плоскости, одна фиксирована, где Север всегда равен 0, восток равен 90, юг равен 180, а запад равен 270. У меня тоже есть другая плоскость отсчета, где 0 всегда передо мной.

Теперь для меня это звучит просто в математике в моем сознании и на бумаге, но в Python у меня просто нет хороших представлений о том, как это отразить, где бы я ни находился, всегда 0 в моей собственной плоскости отсчета, однако в другой плоскости отсчета (север, восток, юг, запад) Я смотрю под любым углом. И, например, допустим, у меня есть что-то под углом 70 градусов в моей собственной плоскости отсчета, и я знаю, что в ссылке Компаса я обращен к 270 градусам (что означает, что при 0 градусах в моей ссылке я обращен к 270 градусам в компасе), я хочу определить, под каким углом (компас) находится объект, который в моей собственной плоскости отсчета находится примерно на 170 градусах. Математически я могу сделать это, просто добавив 100 градусов к ссылке компаса, и как только я достигну 360, я вернусь к 0 . итак, это означает, что объект находится под углом 10 градусов по компасу.

Я знаю, что ответ был бы простым с точки зрения программирования, возможно, если градусы > 360, то градусы = 0. Но не знаю, есть ли в python более простой способ рассмотреть все случаи (градусы <0, градусы >0).

Ответ №1:

Вы можете использовать оператор modulo, который возвращает остаток от деления:

 calculated_angle %= 360 # will keep the value between 0 amp; 359
  

Итак, как только ваш вычисленный угол (полученный путем добавления угла из вашей системы отсчета угол на вашем компасе) сохраняется в calculated_angle .

Вы можете использовать оператор по модулю, чтобы гарантировать, что если угол превышает 360 градусов, он возвращается к 0 и снова начинает отсчет. Таким образом, 460 % 360 будет равно 100. И если угол становится меньше 0, он снова запускается с 360. Таким образом, -50 % 360 будет равно 310.

Комментарии:

1. Что касается способа использования оператора по модулю, я предполагаю, что я должен добавить условие, чтобы оно использовалось только тогда, когда результирующий угол превышает 360 градусов правильно?

2. В них также не будет необходимости, потому что, скажем, 250 % 360 все равно будет равно 250. Так что можно буквально просто поместить туда % = 360.