Работа с переносом углов в коде 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

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