Работа с переносом углов в коде C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Работа с переносом углов в коде C++

Сообщение Anonymous »

Есть ли способ обезопасить себя и просто справиться с переносом углов с минимальным количеством операторов случая.

Перенос угла происходит при использовании определенного представления угла (либо 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»