삼각함수 실습 (벽 충돌 반사 + 원 간의 완전 탄성 충돌)




* 같은 크기의 원 끼리 충돌 1. (두 구체의 충돌각 고려 x)
- 같은 크기의 원 끼리 충돌은 같은 질량을 가지고 있다고 가정
- 때문에 탄성충돌을 하고, 이는 서로의 원이 온전히 운동에너지를 상대 원에게 전달함을 의미
- 결론: 원 간의 진행 각을 바꿔준다


* 주의: 위는 정확한 충돌처리가 아니다. 충돌하는 두 원의 각에 따라 진행 방향이 달라져야 한다.









* 같은 크기의 원 끼리 충돌 2. (두 구체의 충돌각 고려 o, but 속도 무시)
- 위는 구체의 충돌각을 고려해서 만든 충돌 처리이다.
- 충돌 1. 보다 정확한 결과 값을 보여 준다.
- 하지만 역시 속력에 대한 값을 무시하고 있기 때문에 물리 법칙에 정확히 들어 맞는 충돌은 아니다.



//총알 끼리 충돌 반사
for (int j = 0; j < BULLETMAX; j++)
{
if (i == j) continue;
if (!_bullet[j].fire) continue;

//충돌을 했는가?
d = distance(_bullet[i].x, _bullet[i].y, _bullet[j].x, _bullet[j].y);
if (d <= _bullet[i].radius + _bullet[j].radius)
{
//충돌 후 처리
tagBullet temp_i = _bullet[i];
tagBullet temp_j = _bullet[j];
_bullet[i].angle = acosf((temp_i.x - temp_j.x) / d);
_bullet[j].angle = (PI) + _bullet[i].angle;
}
}








(정확한 충돌 처리는 운동량에 대한 물리 공부를 좀 더 하고서 처리 해봐야 할 듯)

댓글