Сложността на задачата която виждам е в това, че примерно ако само едната гума дори е да е много леко завъртяна, то на теория движение не може да се осъществи.
хехе да "теоретичната" наука не може да се ползва пряко при решаване на практически задачи, мога да ти дам безброй примери. от там идва и широко популярния лаф "то на теория така, ама на практика не". всъщност няма такова нещо, физиката описва реалния свят съвсем точно, там е работата обаче че "науката" е просто инструмент, който в различни ръце дава различен резултат. длетото на микеланджело в чужди ръце няма да извае същите статуи, и с "науката" е така. за това много се кефя на "голямото научно осиране" през пандемията, защото ми е писнало да гледам ордите бездарници да си бетонират тъпотиите позовавайки се на "науката".
така, ето какво бих направил аз: всяка симулация се прави на стъпки, и всяка стъпка има две фази - преместване и "трансфер на импулса" където най-общо казано се преизчислява скоростта на обектите, до тук едва ли ти казвам нищо ново. наивните имплементации вкарват "ограниченията" в преместването, например ако нещо си навлиза в стена, трябва да спре. това обаче не е добър път, фундаментално погледнато трансфера на импулса всъщност е отговорен за всички закони за съхранение, вкл и механичните връзки. конкретно по твоя казус, с уговорката че не съм писал никога подобна симулация бих направил така
1: пресмятам преместването на цялата кола съобразно текущия и импулс (вкл и момента)
2. проектирам преместването на гумите върху позволената им ос на движение. новите им позиции са НЕВЪЗМОЖНИ без деформация на колата
3. итеративно форсирам "формата" като просто многократно издърпвам две по две гумите (8 двойки) в такива точки лежащи на оста която ги свързва, които лежат на правилната дистанция една от друга. тоя процес му викам "телепортация"
4. преизчислявам импулса и момента на колата на база реалното преместване и реалното завъртане, което съм получил след точка 3
това е. имай предвид че точка 3 не е толкова тривиална,защото е очевидно несиметрична - според това в какъв ред итерираш двойките, крайния резултат е различен, макар и близък. аз обикновено прилагам редуване на посоките, за да се неутрализира натрупването на систематична грешка. другото което помага е да не преместваш направо върху точните позиции, а примерно само на половината път до тях, това помага много, но забавя изчисленията.