앞서, 포스팅에서 특정 좌표가 원 안에 있을 때 감지하는 글을 작성했는데 원이 아닌 타원형으로 감지하고 싶을 때가 있다. 원은 원인데 횡스크롤이나 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보다 같거나 작으면 타원의 내부에 위치함을 의미한다.
'즐거운 게임 수학' 카테고리의 다른 글
특정 좌표가 삼각형 안에 있는지 확인하기 (0) | 2023.06.05 |
---|---|
특정 좌표가 선 위에 있는지 감지하기 (0) | 2023.06.05 |
특정 좌표가 원 안에 있을 때 감지하기 (0) | 2023.06.05 |
선형 보간법(linear interpolation) (0) | 2023.06.05 |
특정 각도에서 일정 거리의 좌표 구하기 (0) | 2023.06.05 |
앞서, 포스팅에서 특정 좌표가 원 안에 있을 때 감지하는 글을 작성했는데 원이 아닌 타원형으로 감지하고 싶을 때가 있다. 원은 원인데 횡스크롤이나 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보다 같거나 작으면 타원의 내부에 위치함을 의미한다.
'즐거운 게임 수학' 카테고리의 다른 글
특정 좌표가 삼각형 안에 있는지 확인하기 (0) | 2023.06.05 |
---|---|
특정 좌표가 선 위에 있는지 감지하기 (0) | 2023.06.05 |
특정 좌표가 원 안에 있을 때 감지하기 (0) | 2023.06.05 |
선형 보간법(linear interpolation) (0) | 2023.06.05 |
특정 각도에서 일정 거리의 좌표 구하기 (0) | 2023.06.05 |