Диапазон градусов (0-360) охватывает проблемы

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

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

альтернативный текст


person Casey    schedule 14.01.2010    source источник
comment
Это круто, но по крайней мере 3 других разделяют противоположное мнение и ответили на мой вопрос в течение часа. Спасибо за ваш полезный комментарий.   -  person Casey    schedule 14.01.2010


Ответы (3)


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}
person Andrew McGregor    schedule 14.01.2010
comment
Вместо этого вы можете использовать t % 360. Я не уверен, что результат зависит от реализации для отрицательных значений, но на моем компьютере это работает. - person Georg Schölly; 14.01.2010

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

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

person rui    schedule 14.01.2010
comment
Я должен был сделать более ясным, что я искал как минимум какой-то псевдокод, все равно спасибо - person Casey; 14.01.2010

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

deg = deg % 360

person TheHippo    schedule 14.01.2010
comment
Я не совсем уверен, как это использовать... когда я пытался, это не дало того же результата, что и псевдокод Эндрю. - person Casey; 14.01.2010
comment
Вы используете его так... если deg равно 370, то после операции по модулю и присваивания оно становится 10. Если градус равен 1000, он становится 280. Он всегда берет остаток после деления. Псевдокод Эндрю не работает во втором случае. - person Agnel Kurian; 14.01.2010