수학/이득우의 게임 수학

절두체 컬링 (2) 평면의 방정식의 정규화

monstro 2026. 6. 24. 17:01
728x90
반응형

- 개요

 

위와 같이 구성된 평면의 방정식을 정규화하는 방법을 알아본다

 

- 정규화 과정

크기가 1이 아닌 n 법선 벡터의 평면의 방정식

 

위와 같이 크기가 1이 아닌 n 법선 벡터만들어내는 평면의 방정식이 있다고 가정한다

해당 평면의 방정식크기가 1인 법선 벡터로부터의 평면의 방정식으로 변환하는 것이 목표이다

 

1) 정규화 과정 - 단위 벡터의 평면의 방정식의 계수

 

크기가 1인 n` 법선 벡터의 평면의 방정식

 

크기가 1n` 법선 벡터의 값을 각각 (a`, b`, c`)라고 가정한다면

n` 법선 벡터에서 만들어지는 평면의 방정식은 위와 같다

 

n 법선 벡터로부터 n` 법선 벡터를 구성하는 세 개의 계수(a`, b`, c`)를 구하는 식

 

크기가 1이 아닌 법선 벡터 해당 법선 벡터의 크기로 나눠 정규화할 수 있다

따라서 세 개의 계수 (a, b, c)는 위와 같이 (a`, b`, c`)로 변환할 수 있다

 

2) 정규화 과정 - 단위 벡터의 평면의 방정식의 상수

크기가 1이 아닌 법선 벡터 n의 평면의 방정식의 상수 d

 

평면의 방정식의 상수 d 평면 위의 한 점으로 향하는 p 벡터와 평면의 n 법선 벡터를 내적한 값의 반대수이다

다음으로 위와 같이 구성된 크기가 1이 아닌 법선 벡터평면의 방정식의 상수 d상수 d`로 변환해야 한다

 

크기가 1인 법선 벡터 n의 평면의 방정식의 상수 d`

 

법선 벡터의 크기1일때 평면의 방정식의 상수는 위와 같이 계산할 수 있다

 

상수 d와 상수 d`의 관계

 

따라서 최종적으로 d 상수와 d` 상수의 관계는 위와 같다

d 상수도 계수와 동일하게 법선 벡터의 크기로 나누어 d` 상수로 변환할 수 있다

 

3) 평면의 방정식의 정규화 식

평면의 방정식의 정규화 식

 

최종적으로 평면의 방정식의 정규화 식은 위와 같다

임의의 네 개의 수로부터 평면의 방정식을 구성하는 경우 평면의 방정식을 정규화시켜주는 것이 유리하다

정규화된 평면의 방정식의 상수 값 원점으로부터 최단 거리 정보를 담고 있기 때문이다

 

- 프로젝트에서 정규화된 평면의 방정식의 구현

 

평면을 구성하는 4개의 수 a, b, c, d의 값이 Vector4로 주어졌을 때

이를 토대로 정규화된 평면의 방정식을 계산하는 코드를 위와 같이 구성하였다

Plane 생성자에서 a, b, c,의 3개의 요소를 법선 벡터로 지정하고 마지막 요소를 D에 지정한다

이후 Normalize 함수를 호출하여 평면의 방정식을 정규화한다

 

 

Normalize 함수의 로직은 위와 같다

squaredSize 로컬 변수법선 벡터의 크기제곱값을 저장한다

squaredSize 변수의 크기1인지 확인하고 고속 역제곱근 함수를 통해 계산한 값을 invLength 변수에 저장한다

이후 법선 벡터와 상수 DinvLength 값을 곱하여 정규화한다

 

- 2차원에서의 평면의 방정식의 활용

평면의 방정식내적을 기반으로 동작하므로 2차원 공간에서도 동일하게 활용할 수 있다

3차원 공간에서 평면이 앞면과 뒷면을 가졌듯이, 2차원 공간의 직선도 앞쪽과 뒤쪽을 가진다

 

크기가 1이 아닌 법선 벡터의 원점에서 직선까지의 최단거리

 

2차원 공간에서의 직선의 방정식 ax + by + c = 0이라고 가정한다면,

법선 벡터 (a, b)의 크기가 1이면 상수 c의 절대값은 원점에서 직선까지의 최단 거리를 의미한다

따라서 크기가 1이 아닌 법선 벡터의 원점에서 직선까지의 최단 거리는 위와 같다

 

임의의 한 점에서 임의의 직선까지의 최단 거리 공식

 

평면의 방정식을 정규화한 값내적을 활용하여 위와 같이 

임의의 한 점(x₁, y₁)에서 임의의 직선 ax + by + c = 0까지의 최단 거리를 계산할 수 있다

728x90
반응형