[C++] 3.2.4 두 공의 충돌 : 상대 속도와 반발 계수

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모 교수님의 홍정모의 게임 만들기 연습 문제 패키지 강의를 듣고 정리한 필기입니다.😀
🌜 공부에 사용된 홍정모 교수님의 코드들 보러가기
🌜 [홍정모의 게임 만들기 연습 문제 패키지] 강의 들으러 가기!


Chapter 3. 게임 물리 맛보기 : 공 두 개를 충돌시켜보자

벡터, 상대 속도 등등, 해당 강의에서 다루었던 물리학적 개념들이 문과생인 나에겐 생소하고 잘 와닿지 않았던 개념이라 강의를 필기하기에 앞서 개인적으로 따로 공부하여 정리해보았다.


🔔 상대 속도

image

상대속도 : 어떤 관측자 입장에서 느끼는 관측한 물체의 상대적인 속도.

  • 상대속도 = 물체의 속도 - 관측자의 속도
    • \(\vec{v_{0\vert{1}}}=\vec{v_0}-\vec{v_1}\)
      • 1️⃣ 에서 관측해서 느끼는 0️⃣ 의 속도
      • ex) 동쪽으로 100km/h 속도로 (\(\vec{v_1}= 100\)) 달리는 버스 안에서 동쪽으로 60km/h 속도로 (\(\vec{v_0}= 60\) 속도로 달리는 자동차를 관측한다면 그 자동차가 \(\vec{v_{0\vert{1}}}=\vec{v_0}-\vec{v_1}=60-(+100)=-40\) 속도로 달리는 것처럼 보인다. 즉 서쪽으로 40km/h 가는 것 처럼 보임. \(\vec{v_{0\vert{1}}}=-40\)
  • 같은 방향, 같은 속력 즉 같은 속도 벡터를 가진 두 물체의 상대 속도는 0 이 된다.
    • 상대 속도가 0에 가깝다는 것은 두 물체가 부딪쳐도 충격이 덜하다는 것.


🔔 반발 계수

image

반발 계수(\(\epsilon\)) : 두 물체의 충돌 전 상대속도와 충돌 후 상대속도의 비. 즉 두 물체가 가까워지는 속도과 두 물체가 멀어지는 속도의 비다. (\(0<\epsilon<1)\)

  • 반발 계수가 클 수록 충돌시 튕겨지는 정도가 크다.

\[\epsilon=-{\vec{v_{0\vert{1}}}^{new}\cdot\vec{n_1}\over\vec{v_{0\vert{1}}}^{old}\cdot\vec{n_1}}\]

  • 🔴공을 \(p_0\), 🟡공을 \(p_1\) 이라고 할 때
  • \(\vec{v_{0\vert{1}}}^{old}\)
    • 충돌 전 🟡공에서 관측한 🔴공의 속도
  • \(\vec{v_{0\vert{1}}}^{new}\)
    • 충돌 후 🟡공에서 관측한 🔴공의 속도
  • \(\vec{n_1}\)
    • 🟡중심으로부터 🔴중심을 향하는 벡터의 방향을 의미하는 노말 벡터
  • 음수가 붙은 이유
    • 충돌 전 후로 충돌로 인하여 방향이 바뀌기 때문에 \(\vec{v_{0\vert{1}}}^{new}\cdot\vec{n_1}\over\vec{v_{0\vert{1}}}^{old}\cdot\vec{n_1}\) 의 값은 음수가 된다.
    • 반발계수를 양수로 표현하기 위해 마이너스를 붙여 양수로 만들어 줌.

반발계수는 프로그래머가 그 값을 직접 설정해서 충돌시 튕겨져 나오는 정도를 설정한다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

C++ games 카테고리 내 다른 글 보러가기

댓글 남기기