Перенос угла происходит при использовании определенного представления угла (либо 0–360 градусов, либо -180–180 градусов (или эквивалент в радианах)) и переноса угла . Например, предположим, что у вас есть угол -170, и вы вычитаете 50 градусов. Математически вы получаете -220, но на самом деле должно быть +140 градусов.
Очевидно, вы можете проверить это, используя:
Код: Выделить всё
if (deg < -180) { 180 - abs(deg + 180); }
Второй случай, когда это преобладает, — это интерполяция между двумя углами.
Например, предположим, что у меня есть угол -170 градусов и 160 градусов, и я хочу найти половину между ними. Обычный способ сделать это — ang1 + 0,5(ang2-ang1), но в приведенном мной примере это приведет к тому, что угол будет равен -5 градусам, хотя он должен быть 175.
Есть ли общий способ обработки переноса угла в этих сценариях?
Подробнее здесь: https://stackoverflow.com/questions/114 ... -in-c-code
Мобильная версия