삼각형 내 사각형 확인 함수
이 문서는 사각형이 삼각형 내에 있는지 확인하는 함수에 대해 설명합니다. 이 함수는 정의한 사각형 영역이 삼각형 영역과 충돌하는지, 완전히 포함되는지, 또는 단순히 접촉하는지를 검사합니다.
함수 설명
- 함수 이름:
rectangle_in_triangle
- 구문:
rectangle_in_triangle(sx1, sy1, sx2, sy2, dx1, dy1, dx2, dy2, dx3, dy3);
매개변수 설명
매개변수 | 타입 | 설명 |
---|---|---|
sx1 | 숫자 | 사각형의 왼쪽 x 좌표 |
sy1 | 숫자 | 사각형의 위쪽 y 좌표 |
sx2 | 숫자 | 사각형의 오른쪽 x 좌표 |
sy2 | 숫자 | 사각형의 아래쪽 y 좌표 |
dx1 | 숫자 | 확인할 삼각형의 첫 번째 꼭짓점 x 좌표 |
dy1 | 숫자 | 확인할 삼각형의 첫 번째 꼭짓점 y 좌표 |
dx2 | 숫자 | 확인할 삼각형의 두 번째 꼭짓점 x 좌표 |
dy2 | 숫자 | 확인할 삼각형의 두 번째 꼭짓점 y 좌표 |
dx3 | 숫자 | 확인할 삼각형의 세 번째 꼭짓점 x 좌표 |
dy3 | 숫자 | 확인할 삼각형의 세 번째 꼭짓점 y 좌표 |
반환값
- 0: 사각형과 삼각형이 전혀 접촉하지 않음
- 1: 사각형이 삼각형 내에 완전히 포함됨
- 2: 사각형과 삼각형이 단순히 겹침
활용 예제
아래는 rectangle_in_triangle
함수를 활용한 몇 가지 예제입니다.
예제 1: 시각 범위 확인
var inst = instance_nearest(x, y, obj_Player);
if (instance_exists(inst)) {
var x1 = x + lengthdir_x(100, image_angle - 45);
var y1 = y + lengthdir_y(100, image_angle - 45);
var x2 = x + lengthdir_x(100, image_angle + 45);
var y2 = y + lengthdir_y(100, image_angle + 45);
if (rectangle_in_triangle(inst.bbox_left, inst.bbox_top, inst.bbox_right, inst.bbox_bottom, x, y, x1, y1, x2, y2) == 1) {
can_see = true;
}
}
예제 2: 충돌 감지
if (rectangle_in_triangle(player.x, player.y, player.x + player.width, player.y + player.height, triangle.x1, triangle.y1, triangle.x2, triangle.y2, triangle.x3, triangle.y3) == 2) {
// 충돌 처리 코드
}
예제 3: 게임 오브젝트의 위치 확인
if (rectangle_in_triangle(object.x, object.y, object.x + object.width, object.y + object.height, triangle.x1, triangle.y1, triangle.x2, triangle.y2, triangle.x3, triangle.y3) == 1) {
// 오브젝트가 삼각형 내에 있을 때의 처리
}
이 함수는 게임에서 사각형과 삼각형 간의 충돌을 확인하는 데 유용하게 사용될 수 있습니다.