Диапазон градусов (0-360) обернуть вокруг бед - PullRequest
1 голос
/ 14 января 2010

Я пытаюсь поймать градусы, которые находятся на расстоянии X (рис. 45) от заданного градуса (рис. 15). Я попал в пленку 360/0. Указанные степени все нормированы 0-360. Может кто-нибудь, пожалуйста, покажите мне, как это сделать? Я включил рисунок, который иллюстрирует мой недостаток способностей.

Я клянусь на могиле Майкла Джексона, что я искал Google и StackOverflow для ответа, прежде чем спрашивать. Я понимаю, что это, вероятно, повторение, но отвеченные не должны быть помечены или названы соответствующим образом.

alt text

Ответы [ 3 ]

2 голосов
/ 14 января 2010

15 + 45 = 60, так что у вас есть эта сторона справа, но 15-45 = -30, поэтому вы должны добавить 360, что даст 330.

По сути, вы добавляете или вычитаете 360 каждый раз, когда выходите за пределы [0,360), где я использую а) для открытого диапазона.

Если вы хотите написать тест для окрашивания ваших маркеров в синий, скажем, h - это заголовок, o - это смещение, а x - это маркер, который мы тестируем, вы ищете что-то вроде в псевдокоде c-ish. :

t=h-x
if (t>360) {t-=360}
if (t<0) {t+=360}
if (t<o) {mark blue}
1 голос
/ 14 января 2010

Почему бы просто не использовать операцию по модулю?

deg = deg % 360

1 голос
/ 14 января 2010

Я не уверен на 100%, чего вы хотите достичь. Я предполагаю, что вы хотите: «Для степени X найдите все градусы, которые находятся на расстоянии не более Y градусов от нее, дайте шаг Z градусов между каждой отметкой».

В таком случае просто напишите цикл for от X-Y до X + Y с шагом Z. Если текущее значение градуса <0, просто добавьте 360. </p>

...