Есть ли способ безопасности и просто иметь дело с угловой упаковкой с минимальным количеством операторов case.
Угловая обертка возникает при использовании определенного представления для угла (0-360 градусов или -180 - 180 градусов (или эквивалент в радианах)), и вы обертываете угол. Например, скажем, что у вас есть угол -170, и вы вычитаете 50 град. Вы математически добавляете до -220, но на самом деле должны быть +140 град.
Очевидно, вы можете проверить это, используя:
if (deg < -180) { 180 - abs(deg + 180); }
или аналогичный. Но, во-первых, вам нужно множество проверок, а во-вторых, это не сработает, если вы дважды обернете.
Второй случай, когда это распространено, - это интерполяция между двумя углами.
Например, скажем, у меня есть угол -170 градусов и 160 градусов, и я хочу на полпути между ними. Общим способом сделать это является ang1 + 0.5(ang2-ang1)
, но в примере, который я предусмотрел, это приведет к тому, что угол будет -5 град, если он должен быть равен 175.
Есть ли общий способ обработки углового переноса в этих сценариях?