![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Пользователь
Регистрация: 08.10.2008
Сообщений: 15
|
![]()
Всем привет.
Ситуация следующая. Есть программа-пример, из котоорой заботливо передран код в мою собственную. Но результат не сходится. Ловил баг около суток, получил какой-то кошмар. Есть следующая строчка: velocity.y=velocity.y+lastFrameAcce leration.y*duration; в исходной программе. У меня она же: Curr.LinearVelocity.y=Curr.LinearVe locity.y+Curr.LastFrameAcceleration .y*ElapsedTime; Выполняется все это в цикле, там есть еще код. Если нужен будет, напишу. Первые 53 итерации результаты полностью совпадают (как минимум до 12 знака после точки, дальше не проверял), на 54-й начинается бред. Вот лог расчетов для сравнения: Оригинал: --------------------------------------------------- Frame: 53, ElapsedTime= 0.001 lastFrameAcceleration=(0.0000000000 00;-9.810000419617;0.000000000000) velocity=( 0.000000000000;-0.518545031548; 0.000000000000) =================================== ======== Frame: 54, ElapsedTime= 0.001 lastFrameAcceleration=(0.0000000000 00;-9.810000419617; 0.000000000000) velocity=( 0.000000000000;-0.528301894665; 0.000000000000) =================================== =================================== ============================== Мое: --------------------------------------------------- Frame: 53, ElapsedTime= 0.001 lastFrameAcceleration=(0.0000000000 00;-9.810000419617; 0.000000000000) velocity=( 0.000000000000;-0.518545031548; 0.000000000000) =================================== =================================== ============================== Frame: 54, ElapsedTime= 0.001 lastFrameAcceleration=(0.0000000000 00;-9.810000419617; 0.000000000000) velocity=( 0.000000000000;-0.528301835060; 0.000000000000) =================================== =================================== ============================== Проверил руками в отладчике значения переменных - абсолютно одинаковые. Но результат выдает разный. В оригинале: -0.51849186+(-9.8100004*0.001)=-0.52830189, у меня =-0.52830184. Ошибка стабильная, т.е. всегда в 1 месте и с одинаковым отклонением. Или это у меня в ДНК ошибка. Подскажите, что я делаю неправильно, пожалуйста? Я бы не парился, но отклонение накапливается и за несколько тысяч итераций очень сильно вредит. Да и вообще так быть не должно О_о Заранее спасибо. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
snmp+php странная проблема | baarseek | PHP | 6 | 19.02.2009 14:02 |
Странная проблема при сложении double. Помогите разобраться. | ivank | Общие вопросы C/C++ | 2 | 23.09.2008 13:04 |
Invalid floating point operation | Skytis | Помощь студентам | 3 | 07.05.2008 12:16 |
Возникает ошибка Invalid floating point operation | Иринкаа | Помощь студентам | 3 | 29.11.2007 22:10 |
при пустой ячейке выскакивает "is not a valid floating point value" ПОМОГИТЕ | serserser | Помощь студентам | 17 | 14.11.2007 07:46 |