Ограничение угла 2 * PI

Все пытаются ограничить угол интервалом 2 * PI. Некоторые используют [-PI, PI), а другие - [0, 2 * PI). Выполнение таких преобразований иногда приводит к проблемам, которые возникают из-за использования предыдущих значений этих углов, таких как получение производной, вычисление угловых скоростей и т. Д. Люди всегда принимают меры с учетом того, выполняли ли они на предыдущем шаге свертывание вверх или вниз.

Однако, на мой взгляд, это бесполезно. Нам НЕ нужно, чтобы углы были ограничены интервалом 2 * PI, поскольку они имеют разное физическое значение. В математике 3 * PI не является PI. Они дают одинаковые результаты только для некоторых тригонометрических функций, но на самом деле это разные углы.

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

Я просмотрел множество форумов и не нашел разумного объяснения.

В каких областях я должен строго ограничивать угол? В каких областях ограничение угла делает жизнь лучше?

Между прочим, мне известно о естественных ограничениях, исходящих от компьютерной архитектуры, которая намного больше, чем 2 * PI.

Спасибо


person crbah    schedule 15.02.2016    source источник
comment
A) Это не по теме, поскольку оно не касается напрямую проблемы программного обеспечения или компьютерных наук. Б) Это слишком открытый вопрос и приглашает к обсуждению в сети StackExchange.   -  person Zéychin    schedule 15.02.2016
comment
@ Zéychin, я не думаю, что это не по теме, потому что наложение углов на интервале 2 * PI - это конкретная проблема программирования, которая обсуждается здесь по нескольким темам: ‹stackoverflow.com/questions/4633177/ ›Или ‹stackoverflow .com / questions / 1311049 /  -  person crbah    schedule 15.02.2016
comment
В вашем сообщении нет прямого упоминания о проблеме программирования, поэтому он не по теме.   -  person Zéychin    schedule 16.02.2016


Ответы (1)


Прежде всего, хочу констатировать, что углы используются слишком часто. Конечно, в некоторых случаях углы могут быть лучшим представлением, но существует множество сценариев, в которых лучше подходят другие представления (например, векторы направления). И большинство этих альтернативных представлений не связаны с трудностями углов.

Однако, если вы оказались в сценарии, в котором следует использовать углы, может быть несколько причин, по которым вы захотите ограничить диапазон углов. Но как вы уже писали, это зависит от приложения.

Если для обозначения направления используются углы, то угол Пи конгруэнтен углу 3 Пи (в результате получается то же направление). Работа с фиксированным диапазоном может иметь некоторые преимущества:

Типы данных с плавающей запятой имеют более высокую точность около нуля. Если вы используете 32-битное число с плавающей запятой для представления совокупного угла, скажем, 1000 полных оборотов и немного, вы потеряете более половины битов мантиссы для представления фактического направления (без учета полных оборотов). В этом случае может быть желательно сохранить полные обороты в виде целого числа (без потерь), а дробную часть - в виде числа с плавающей запятой (с меньшими потерями).

Сравнение двух углов (например, для вычисления угла между соответствующими векторами направления) проще, если они находятся в одном диапазоне. Затем вам нужно только позаботиться об упаковке не более одного из них. Если они находятся в произвольном диапазоне, вам нужно будет вычислить, сколько раз обернуть один из них.

Если есть физические ограничения (например, для углов сочленения каркаса), причина ограничения углов должна быть очевидна.

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

В общем, большинство причин - это чисто вопросы комфорта. Отсутствие ограничивающих углов может сделать код более многословным, чем он должен быть (и, вероятно, даже окажет очень незначительное влияние на производительность). Если все эти причины не относятся к вашему сценарию, вы можете оставить свои углы неограниченными.

person Nico Schertler    schedule 15.02.2016
comment
Точность около нуля - хорошая точка зрения. - person crbah; 15.02.2016