Bullet Physics의 HelloWorld.cpp가 자유 낙하의 예라고 생각합니다.Bullet Physics의 HelloWorld 예제 결과가 자유 낙하 법과 일치하지 않습니까?
Bullet Physics의 결과가 물리 법칙과 일치하는지 확인하기 위해 HelloWorld.cpp에서 구의 초기 위치를 "startTransform.setOrigin (btVector3 (2, 10, 0)); " "startTransform.setOrigin (btVector3 (2, 0, 0));"로 변경하고 시뮬레이션 단계를 "//dynamicsWorld-> stepSimulation (1.f/60.f, 10);" "dynamicsWorld-> stepSimulation (0.1f, 0, 0.1f);"
이 두 가지 변경 후에 출력은 0.1 초 간격으로 자유 낙하 모션에서 구의 위치가 될 것이라고 생각합니다. 또한 각 시뮬레이션 단계에서 구의 선 속도를 출력합니다. 결과는 다음과 같습니다. vx, vy, yz, px, py, pz
첫 번째 줄은 초기 선형 속도와 위치입니다. 속도는 자유 낙하 법칙 (즉, v = g * t)과 일치하지만, 위치 (변위)는 자유 낙하 법칙과 일치하지 않는다는 것을 알 수있다 (즉, s = g * t * t/2).
그래서 Bullet Physics가 안정적인지 궁금합니다. 아니면 뭔가 잘못 됐어?
감사합니다.
0.1 초 단계는 나에게 들립니다. 국제 경기에서 크리켓 볼의 궤적을 모델링 할 때, 위치를 스테핑하는 실수를 줄이기 위해 약 0.001 초의 타임 스텝을 사용했습니다. BulletPhysics를 사용하지 않았지만 통합을 수행하기보다는 오히려 근사치이기 때문에 시간 퀀텀을 제공한다고 말하고 싶습니다. 시간 퀀텀을 작게 만들면 오류가 수학적 예측에 수렴되기 시작해야합니다. 오, 그리고 아무 것도 진공 상태에 있다고 가정하지 마라. – paddy
대단히 감사합니다!귀하의 요지를 이해하고 0.001 초의 시뮬레이션 단계를 시도했습니다. 그러나 결과는 자유 낙하 법의 수학적 예측에 대한 어떠한 "수렴"도 보여주지 못했습니다. 속도는 여전히 "-0.01, -0.02, -0.03, ..., -0.10"의 순서로 맞습니다. 그러나 위치 시퀀스는 "-0.00001, -0.00003, -0.00006, -0.00010, ..., -0.00045, -0.00055"입니다.이 값은 0.1s에 10000을 곱한 값입니다. – Langping
절대 위치가 아닌 위치 델타를 제공합니까? 이 문서를주의 깊게 읽었습니까? – paddy