즐거운 게임 수학
특정 좌표가 타원형에 있는지 감지하기
S.H.S
2023. 6. 6. 04:32
앞서, 포스팅에서 특정 좌표가 원 안에 있을 때 감지하는 글을 작성했는데 원이 아닌 타원형으로 감지하고 싶을 때가 있다. 원은 원인데 횡스크롤이나 2.5D기반 게임이라서 감지할 X축의 크기를 넓히고 싶다던지 등 게임 내에서도 여러모로 유용하게 사용할 수 있다.
구현 방법은 이전 포스팅과 비슷하다.
function isPointInEclipse(pointX: number, pointY: number, circleX: number, circleY: number, rx: number, ry: number) {
return (pointX - circleX) ** 2 / rx ** 2 + (pointY - circleY) ** 2 / ry ** 2 <= 1;
}
rx와 ry는 각각 x의 반지름, y의 반지름을 의미한다.
원으로 감지할 때와 다른 점은 x의 반지름과 y의 반지름을 제곱하여 각각 나누고 있다.
결과 값이 1보다 크면 타원의 외부에 위치하고 있으며, 1보다 같거나 작으면 타원의 내부에 위치함을 의미한다.