|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Vladimir Vassilevsky 2:5020/175.2 22 Apr 2003 02:43:10 To : vitalie vrabie Subject : Усреднение углов -------------------------------------------------------------------------------- Hi vitalie, VV>>>> Представь угол как int, так, чтобы диапазон 0...180 соответствовал VV>>>> 0...0x8000. Работай с углом в этом представлении. Заворот через VV>>>> ноль отработается автоматически. vv>>> ответ неверный. при таком подходе среднее между 179 и 181 (или, vv>>> скажем, 170 и 190) получится тоже 0, но никак не 180. VV>> Среднее между 0x7fff и 0x8001 равно 0x8000, то есть -180 градусов. VV>> Все правильно. vv> ни шиша не правильно. 0x7fff+0x8001=0. 0/2=0. да научись ты, наконец, vv> правильно считать, коль решил заговорить об автоматическом заворачивании. Виталий, я вынужден заметить, что проблемы с арифметикой имеют место на вашей стороне. u16 avg_angle(u16 x, u16 y) { u16 tmp; tmp = x - y; return y + (tmp>>1) + (tmp&0x8000); } Что может быть проще? vv> проще? не пытаться дать однозначное решение на плохо сформулированную vv> задачу. к тому же и абсурдную, как совершенно справедливо подметил vv> ВалДав. Hу, любезный, в таком случае операция деления тоже абсурдна, так как результат деления 0/0 не определен. A что касается усреднения углов, это очень даже практическая задача. Hапример, электронный компас. VLV "Предлагаем измерители влажности воды..." --- ifmail v.2.15dev5 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/3300a91cff9c.html, оценка из 5, голосов 10
|