У вас две проблемы.
1) Что-то не так с кодом. Вам нужно это исправить.
2) Вы не знаете, как выяснить, что такое «что-то».
Решение первой проблемы зависит от решения второй проблемы. Вам нужно научиться отлаживать программу, которую вы только что написали.
Вы уже проверили это и получили результат, который вы определили как бессмысленный. Это хороший первый шаг. Теперь разбей его еще дальше. Выберите простую задачу в этой области, которую вы можете решить самостоятельно карандашом и бумагой; сделайте это, а затем посмотрите, как ваш алгоритм решает ту же проблему в отладчике, проверяя каждый шаг на этом пути. Слушайте тихие, ноющие сомнения. Когда есть что-то, что выглядит немного странно или неожиданно, остановите то, что вы делаете, и исследуйте проблему, пока не поймете, работают ли вещи правильно или нет. В конце концов вы найдете шаг, где все не так, как должно быть, и именно в этом и заключается ошибка.
Да, это утомительно. Когда вы нашли ошибку и исправили ее, сделайте паузу и подумайте о том, что заставило вас написать ошибку, и выясните, как больше не писать такую ошибку.
UPDATE:
Re: ваши последние комментарии.
Извинение принято. Теперь успокойся . Вы никогда не найдете эту ошибку, если вы это исправили. Ваш мозг не позволит вам. Люди, находящиеся в паническом, возбужденном состоянии, теряют способность рассуждать. Вот почему противопожарные двери открываются наружу; люди, спасающиеся от горящего здания, буквально не перестанут думать: «Я толкаю эту дверь, и она не открывается, может, мне стоит попробовать потянуть». Они просто толкают сильнее. Я подозреваю, что вы давите сильнее.
Отладка требует рациональности и тщательного внимания к мелким деталям . Если вы все разбираетесь в этой проблеме, то это вылетит в окно, и будет только хуже. Возьми это у кого-то, кто был там. Мы все были там. Очень неприятно, что в вашей собственной программе возникла ошибка, которую вы не можете найти.
Причина, по которой вам никто не помогает, заключается в том, что ... ну, позвольте мне перечислить набор предварительных условий, которые должны быть выполнены для меня, чтобы помочь вам с более чем неопределенными банальностями, и предложения о том, как сосредоточить ваши усилия по отладке:
1) Мне нужно кое-что знать об симуляции трехмерной физики. В 1992 году я достаточно хорошо разбирался в дифференциальных уравнениях простой ньютоновской механики, но с тех пор не использовал его. И уравнение затухающей ведомой пружины несколько отличается от уравнений столкновений твердого тела. Если бы я потратил пару недель, просматривая свои записи, я мог бы вернуть математику, но это нереально. Вам нужен кто-то глубоко осведомленный прямо сейчас с 3d симуляциями физики столкновений.
2) Я должен уметь читать и понимать ваш код, код которого состоит из сотен строк, написанных кем-то кроме меня, чтобы решить проблему, с которой я не знаком. Хуже того, сотня строк этого кода закомментирована. Зачем? Это актуально? Есть ли ошибка там? Более того, мне нужно уметь читать и понимать код , не запуская его в отладчике . Черт, я даже не могу скомпилировать этот код. Это зависит от библиотек, которых у меня нет.
И, что еще хуже, одна из этих библиотек может содержать ошибку . Насколько я знаю, ошибка - это опечатка в каком-то коде, который вычисляет нормальное значение где-то, что вы нам не показали. Показанный код может быть идеальным.
3) Мне нужно свободное время, чтобы поработать над чужой трудной проблемой; проблема, которую человек, который написал код и понимает физику, не продвигается вперед.
Все это требования; если какой-либо из них отсутствует, читатель не сможет эффективно помочь вам. Вы просите людей, которых вы не знаете, помочь вам найти черного кота в темном складе в полночь без фонарика - кота, которого может даже не быть. Не удивительно, что у вас мало покупателей. Сколько из 74 пользователей переполнения стека, которые прочитали ваш вопрос, сколько из них отвечают всем трем требованиям? Я встречаю нет из них.
Если вам нужна помощь на этом сайте, тогда опубликуйте более легкую проблему . Сузьте проблему до проблемы, которая требует меньше специальных знаний по физике и алгоритмам моделирования и имеет только соответствующий код, предпочтительно код, который можно скомпилировать и запустить.