코가손의 블로그

[ Graphics ] 구-직선 충돌 & 평면-직선 충돌 본문

GameDevLog/Graphics

[ Graphics ] 구-직선 충돌 & 평면-직선 충돌

Cogason 2023. 4. 3. 11:25

구-직선 충돌

직선의 StartPoint, Dir Vector(Normalized) + 구의 위치, 반지름 알면 접점 구할 수 있음

 

 

 

x : 직선과의 충돌점

c : 구의 위치

 

 

 

o : 직선의 StartPoint

d : u벡터의 크기

u : 직선의 방향벡터

 

역삼각형 기호 -> Nabla

nabla < 0    >> 접점 없음

nabla == 0  >> 접점 1개

nabla > 0    >> 접점 2개(2개 중 StartPoint와 가까운 값 선택)

 

 

 

직선과 구의 접접을 거리에 따라 출력

멀 수록 흰색

 

 

참고자료

https://en.wikipedia.org/wiki/Line%E2%80%93sphere_intersection

 

Line–sphere intersection - Wikipedia

From Wikipedia, the free encyclopedia The three possible line-sphere intersections: 1. No intersection. 2. Point intersection. 3. Two point intersection. In analytic geometry, a line and a sphere can intersect in three ways: No intersection at all Intersec

en.wikipedia.org

 


평면-직선 충돌

직선의 StartPoint, Dir Vector(Normalized) + 평면을 이루는 점 v1, v2, v3 있으면 접점 구할 수 있음

- 무한한 평면과의 충돌이기 때문에 face와 충돌하는지 확인하고 싶다면, 충돌위치가 face의 내부인지 외부인지 판단하는 로직 필요

X -> 외적

*p가 삼각형 내부에 있는지 외부에 있는지 판별하는 법

p로 인해 나눠지는 작은 삼각형들의 Normal과 faceNormal을 내적한 결과로 판별

내적 결과 < 0, 이라면 p는 삼각형 밖에 위치

Comments