|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : vitalie vrabie 2:469/303 22 Apr 2003 03:09:10 To : Vladimir Vassilevsky Subject : Усреднение углов -------------------------------------------------------------------------------- Replying to a message of Vladimir Vassilevsky to vitalie vrabie: 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>> правильно считать, коль решил заговорить об автоматическом vv>> заворачивании. VV> Виталий, я вынужден заметить, что проблемы с арифметикой VV> имеют место на вашей стороне. VV> u16 avg_angle(u16 x, u16 y) VV> { VV> u16 tmp; VV> tmp = x - y; VV> return y + (tmp>>1) + (tmp&0x8000); VV> } о. вот это уже ближе к истине. только: 1. нет механизма сигналящий об ошибке (когда tmp=0x8000) 2. труднорасширяемо для n входных VV> Что может быть проще? в ущерб правильности упрощать можно бесконечно. :) кроме того, *для этой эхи* нет принципиальной разницы между вычислением по модулю 0x10000 и вычислением по модулю 360. так что твой подход ну никак не проще влобешного. vv>> проще? не пытаться дать однозначное решение на плохо сформулированную vv>> задачу. к тому же и абсурдную, как совершенно справедливо подметил vv>> ВалДав. VV> Hу, любезный, в таком случае операция деления тоже абсурдна, так как VV> результат деления 0/0 не определен. да, в каком-то аспекте - абсурдна. VV> A что касается усреднения углов, это очень даже практическая задача. VV> Hапример, электронный компас. только там есть ещё нюансы вроде степени воздействия (вес усредняемых значений), которые не так-то просто внести в тот твой кусок кода, который ты быстренько состряпал, лишь бы отмазаться. sayonara, vv mailto:vv<at>techie.com --- * Origin: over construction (2:469/303) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/18373ea4b256.html, оценка из 5, голосов 10
|