자유 낙하와 땅과의 충돌 (예 : 튀는 공)을 시뮬레이션하고 싶습니다. 물체가 진공 상태가되어 공기 저항을 없앨 수 있습니다. 땅과 충돌하면 에너지가 약간 손실되어 결국 물체가 움직이지 않게됩니다. JOGL을 사용하여 떨어지는 물체 인 점을 렌더링합니다. 중력은 일정하다 (-9.8m/s^2). 잘못된중력 시뮬레이션
deltaTime = currentTime - previousTime;
vel += acc * deltaTime;
pos += vel * deltaTime;
하지만 내가 뭘 뭔가 :
나는 점의 새로운 위치를 계산하는 오일러 방법을 발견했다. 요점은 몇 번 튀고 그 다음으로 내려갑니다 (매우 느림).display()
{
calculateDeltaTime();
velocity.y += gravity * deltaTime;
pos.y += velocity.y * deltaTime;
if(pos.y < -2.0f) //a collision with the ground
{
velocity.y = velocity.y * energyLoss * -1.0f;
}
}
: 여기
는 의사 (초기 POS = (은 0.0f, 2.0f, 0.0f로), 초기 VEL (은 0.0f, 0.0f를, 0.0f로), 비중 = -9.8f) 인 현실적인 효과를 얻는 가장 좋은 방법은 무엇입니까? 오일러 방정식이 일정한 가속 방정식을 어떻게 언급 하는가?
방정식에서 에너지 손실 만 제거하면 어떻게됩니까? – redbmk
떨어져 요 차이의 답변에서, 당신은 충돌 오류를 피하기 위해 충돌 상황에서 바닥 레벨로 설정하는 것을 고려할 수도 있습니다. –
에너지 손실없이 포인트는 일정 시간 후에 튀는 것을 멈추고 매우 느리게 움직입니다. – Vert