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

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

Сообщение Гость »


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

Перенос угла происходит при использовании определенного представления угла (либо 0–360 градусов, либо -180–180 градусов (или эквивалента в радианах)) и переноса угла . Например, предположим, что у вас есть угол -170, и вы вычитаете 50 градусов. Математически вы получаете -220, но на самом деле должно быть +140 градусов.

Очевидно, вы можете проверить это, используя:

Код: Выделить всё

if (deg < -180) { 180 - abs(deg + 180); }
or similar. But firstly you need multitudes of checks and secondly it doesn't work if you wrap twice.

The second case where this is prevalent is in the interpolation between two angles.

For Example, say I have an angle of -170 deg and 160 deg and I want halfway in between them. A common way to do this is

Код: Выделить всё

ang1 + 0.5(ang2-ang1)
but in the example i have provided it will cause the angle to be -5 deg when it should be 175.

Is there a common way to handle angle wrap in these scenarios?


Источник: https://stackoverflow.com/questions/114 ... -in-c-code
Ответить

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

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

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

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

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