SlideShare a Scribd company logo
[GPG1권] 4.5 3D 충돌 검출 [DevRookie]꽝매니아
알고리즘 개요 경계구 충돌 검출 삼각형 대 삼각형 충돌 검출 선분-평면 교차 삼각형 평면화 점이 삼각형 안에 있는지의 점검 두 삼각형 모두에 대해서 선들을 판정 소개
수학공식에 주의하세요! 수학 관련 참고 서적을 활용해야 합니다. 좌표계 에 주의합시다.(오른손? 왼손?) 졸지 마세요…;;;(다음 발표자를 위해서…) 공간감각을 키웁시다. 잠깐만!
경계구(Bounding Sphere) 충돌 검출 삼각형 단위 충돌 검출 알고리즘 개요
1) 객체 전체의 최대, 최소의 x, y, z 값을 찾는다. (왜? : 객체의 최대 충돌 면적을 알기 위해) 2) 해당 값으로 객체를 덮는 직(정)육면체 배정 (왜? : 중점을 구해서 Bounding Sphere 중심으로 사용함) 3) 공간내 대각선이 만나는 한점인 중점을 구한다. (왜? : 마주보는 평면이 서로 평행관계 이므로) 경계구 충돌 검출
4) 중점과 가장 먼 정점과의 거리를 구한다. (왜? : 가장 먼 정점과의 거리가 경계구의 반지름) 왜 Bounding Sphere 인가?  - 반지름 만으로 경계구 간의 빠른 충돌 여부 확인 - 하위 객체들의 개별적인 경계구를사용할수 있다. 경계구 충돌 검출
점, 선, 직선, 선분, 벡터, 평면의 기하관계 매개변수 방정식 쉬어 갑시다.
경계구 보다 좀더 정밀한 충돌 검출 (왜 삼각형인가? : 최소한의 점으로 이루어진 면) 평면의 방정식 : Ax+By+Cz+d = 0 (왜? : 평면에 있는 점은 같은 법선 벡터를 갖는다.) 법선 벡터를 구하는 방법 : 평면위 두 벡터의 외적 (왜? : 두 벡터의 외적 벡터는 해당 벡터와 수직) 여기서 주의! : 외적을 계산할땐좌표계를 주의! 삼각형 대 삼각형 충돌 검출
1) 삼각형 표면의 법선 벡터를 구한다. (왜? : 평면을 이용해서 교차 판정하기 위해) (왜 평면을 구하는가? : 삼각형은 평면에 포함관계 이므로 평면에 충돌했다면 충돌한 선분이 삼각형에 포함되는지 확인한다.) 2) 법선 벡터들의 성분을 평면 방정식에 대입 (왜? : 평면을 구하기 위해) (왜 d의 값이 –DotProduct(cross_v1v2, p) 인가? : 법선벡터n(a,b,c) , 평면위 점P(x, y, z), P’(x’, y’, z’) a(x – x’) + b(y – y’) + c(z – z’) = 0 0 = ax + by + cz – (ax’ + by’ + cz’)   = ax + by + cz + d 삼각형 대 삼각형 충돌 검출
3) 평면이 삼각형에 충돌했는지 판단 (왜? 충돌된 선분의 점 성분 중에 하나라도 평면상의 삼각형에 포함되면 충돌 된 것임.) 매개변수 방정식을 구해서 교점의 좌표를 구하자. (왜 : 방정식 t값이 [0,1]이 아닌경우 만나지 않음.) 선분-평면 교차
한쪽 좌표로 투영화 (왜 : 교점도 평면화 시키면 충돌 여부 판별 가능) 좌표축과 평행관계일때 평면화 시키면?… (평면의 법선 벡터 성분 중 최대값 쪽으로 정한다.) (왜 : 투영화된 삼각형의 성분이 평면 위 선분에 포함된다.) 삼각형 평면화
평면화 된 교점이 평면화된 삼각형 안에 있는지 판별 직선의 방정식 (y = mx + b)을 이용해서 중점의 x좌표를 직선 방정식에 넣었을때 나온 y값이 중점의 y좌표보다  작으면 중점은 선의 위쪽, 크면 중점은 선의 아래쪽 점이 삼각형 안에 있는지의 점검
위 방식으로 교차하는 변이 하나만 있어도 두 삼각형은 충돌한 것임. 확실하게 하고 싶으면 서로 반대 경우로 계산. 두 삼각형 모두에 대해서 선들을 판정

More Related Content

What's hot

SAT Problem (2015.02.25)
SAT Problem (2015.02.25)SAT Problem (2015.02.25)
SAT Problem (2015.02.25)
Jaehyun Koo
 
Ray-triangle intersection
Ray-triangle intersectionRay-triangle intersection
Ray-triangle intersection
동환 김
 
Bundle Adjustment
Bundle AdjustmentBundle Adjustment
Bundle Adjustment
Jongho Choi
 
Data Structure 2
Data Structure 2Data Structure 2
Data Structure 2yonsei
 
Eigenvalues of regular graphs
Eigenvalues of regular graphsEigenvalues of regular graphs
Eigenvalues of regular graphs
Jungkyu Lee
 
Dijkstra algorithm
Dijkstra algorithmDijkstra algorithm
Dijkstra algorithm
minhee An
 
05_벡터와 매트릭스
05_벡터와 매트릭스05_벡터와 매트릭스
05_벡터와 매트릭스noerror
 
2009 PPT 발표 대회 - P.S.R.
2009 PPT 발표 대회 - P.S.R.2009 PPT 발표 대회 - P.S.R.
2009 PPT 발표 대회 - P.S.R.Kyunghoon Kim
 
Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어
Jungkyu Lee
 
코딩더매트릭스 3장
코딩더매트릭스 3장코딩더매트릭스 3장
코딩더매트릭스 3장
진성 김
 

What's hot (12)

SAT Problem (2015.02.25)
SAT Problem (2015.02.25)SAT Problem (2015.02.25)
SAT Problem (2015.02.25)
 
Ray-triangle intersection
Ray-triangle intersectionRay-triangle intersection
Ray-triangle intersection
 
Bundle Adjustment
Bundle AdjustmentBundle Adjustment
Bundle Adjustment
 
Data Structure 2
Data Structure 2Data Structure 2
Data Structure 2
 
삼각 함수
삼각 함수삼각 함수
삼각 함수
 
Eigenvalues of regular graphs
Eigenvalues of regular graphsEigenvalues of regular graphs
Eigenvalues of regular graphs
 
Dijkstra algorithm
Dijkstra algorithmDijkstra algorithm
Dijkstra algorithm
 
05_벡터와 매트릭스
05_벡터와 매트릭스05_벡터와 매트릭스
05_벡터와 매트릭스
 
2009 PPT 발표 대회 - P.S.R.
2009 PPT 발표 대회 - P.S.R.2009 PPT 발표 대회 - P.S.R.
2009 PPT 발표 대회 - P.S.R.
 
Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어
 
이항계수
이항계수이항계수
이항계수
 
코딩더매트릭스 3장
코딩더매트릭스 3장코딩더매트릭스 3장
코딩더매트릭스 3장
 

More from Young-jun Jeong

Gpg2권]4 9 하늘상자
Gpg2권]4 9 하늘상자Gpg2권]4 9 하늘상자
Gpg2권]4 9 하늘상자Young-jun Jeong
 
글꼴 렌더링 이야기
글꼴 렌더링 이야기글꼴 렌더링 이야기
글꼴 렌더링 이야기Young-jun Jeong
 
Udk]static mesh & material
Udk]static mesh & materialUdk]static mesh & material
Udk]static mesh & materialYoung-jun Jeong
 
Gpg2 2 1_10_드롭인디버그메모리관리자
Gpg2 2 1_10_드롭인디버그메모리관리자Gpg2 2 1_10_드롭인디버그메모리관리자
Gpg2 2 1_10_드롭인디버그메모리관리자Young-jun Jeong
 
Gpg2 dll로부터 c++_클래스_내보내기
Gpg2 dll로부터 c++_클래스_내보내기Gpg2 dll로부터 c++_클래스_내보내기
Gpg2 dll로부터 c++_클래스_내보내기Young-jun Jeong
 
[추천] 색인기법 김성현
[추천] 색인기법 김성현[추천] 색인기법 김성현
[추천] 색인기법 김성현Young-jun Jeong
 
정렬 알고리즘의 성능 분석
정렬 알고리즘의 성능 분석정렬 알고리즘의 성능 분석
정렬 알고리즘의 성능 분석Young-jun Jeong
 
점근적 복잡도 분석
점근적 복잡도 분석점근적 복잡도 분석
점근적 복잡도 분석Young-jun Jeong
 
알고리즘 기초사항
알고리즘 기초사항알고리즘 기초사항
알고리즘 기초사항Young-jun Jeong
 
기초 알고리즘 스터디 소개
기초 알고리즘 스터디 소개기초 알고리즘 스터디 소개
기초 알고리즘 스터디 소개Young-jun Jeong
 

More from Young-jun Jeong (18)

Gpg2권]4 9 하늘상자
Gpg2권]4 9 하늘상자Gpg2권]4 9 하늘상자
Gpg2권]4 9 하늘상자
 
글꼴 렌더링 이야기
글꼴 렌더링 이야기글꼴 렌더링 이야기
글꼴 렌더링 이야기
 
Kinect sdk사용하기
Kinect sdk사용하기Kinect sdk사용하기
Kinect sdk사용하기
 
Udk]static mesh & material
Udk]static mesh & materialUdk]static mesh & material
Udk]static mesh & material
 
Udk] sound (sound cue)
Udk] sound (sound cue)Udk] sound (sound cue)
Udk] sound (sound cue)
 
Udk] sound (sound cue)
Udk] sound (sound cue)Udk] sound (sound cue)
Udk] sound (sound cue)
 
Gpg2 2 1_10_드롭인디버그메모리관리자
Gpg2 2 1_10_드롭인디버그메모리관리자Gpg2 2 1_10_드롭인디버그메모리관리자
Gpg2 2 1_10_드롭인디버그메모리관리자
 
Gpg2 dll로부터 c++_클래스_내보내기
Gpg2 dll로부터 c++_클래스_내보내기Gpg2 dll로부터 c++_클래스_내보내기
Gpg2 dll로부터 c++_클래스_내보내기
 
[추천] 색인기법 김성현
[추천] 색인기법 김성현[추천] 색인기법 김성현
[추천] 색인기법 김성현
 
문자열 검색 (1)
문자열 검색 (1)문자열 검색 (1)
문자열 검색 (1)
 
[Gpg1권]skinning
[Gpg1권]skinning[Gpg1권]skinning
[Gpg1권]skinning
 
2010 독후감
2010 독후감2010 독후감
2010 독후감
 
Kinect pc
Kinect   pcKinect   pc
Kinect pc
 
Kinect pc
Kinect   pcKinect   pc
Kinect pc
 
정렬 알고리즘의 성능 분석
정렬 알고리즘의 성능 분석정렬 알고리즘의 성능 분석
정렬 알고리즘의 성능 분석
 
점근적 복잡도 분석
점근적 복잡도 분석점근적 복잡도 분석
점근적 복잡도 분석
 
알고리즘 기초사항
알고리즘 기초사항알고리즘 기초사항
알고리즘 기초사항
 
기초 알고리즘 스터디 소개
기초 알고리즘 스터디 소개기초 알고리즘 스터디 소개
기초 알고리즘 스터디 소개
 

Gpg1권] 4 5 3 d 충돌 검출

  • 1. [GPG1권] 4.5 3D 충돌 검출 [DevRookie]꽝매니아
  • 2. 알고리즘 개요 경계구 충돌 검출 삼각형 대 삼각형 충돌 검출 선분-평면 교차 삼각형 평면화 점이 삼각형 안에 있는지의 점검 두 삼각형 모두에 대해서 선들을 판정 소개
  • 3. 수학공식에 주의하세요! 수학 관련 참고 서적을 활용해야 합니다. 좌표계 에 주의합시다.(오른손? 왼손?) 졸지 마세요…;;;(다음 발표자를 위해서…) 공간감각을 키웁시다. 잠깐만!
  • 4. 경계구(Bounding Sphere) 충돌 검출 삼각형 단위 충돌 검출 알고리즘 개요
  • 5. 1) 객체 전체의 최대, 최소의 x, y, z 값을 찾는다. (왜? : 객체의 최대 충돌 면적을 알기 위해) 2) 해당 값으로 객체를 덮는 직(정)육면체 배정 (왜? : 중점을 구해서 Bounding Sphere 중심으로 사용함) 3) 공간내 대각선이 만나는 한점인 중점을 구한다. (왜? : 마주보는 평면이 서로 평행관계 이므로) 경계구 충돌 검출
  • 6. 4) 중점과 가장 먼 정점과의 거리를 구한다. (왜? : 가장 먼 정점과의 거리가 경계구의 반지름) 왜 Bounding Sphere 인가? - 반지름 만으로 경계구 간의 빠른 충돌 여부 확인 - 하위 객체들의 개별적인 경계구를사용할수 있다. 경계구 충돌 검출
  • 7. 점, 선, 직선, 선분, 벡터, 평면의 기하관계 매개변수 방정식 쉬어 갑시다.
  • 8. 경계구 보다 좀더 정밀한 충돌 검출 (왜 삼각형인가? : 최소한의 점으로 이루어진 면) 평면의 방정식 : Ax+By+Cz+d = 0 (왜? : 평면에 있는 점은 같은 법선 벡터를 갖는다.) 법선 벡터를 구하는 방법 : 평면위 두 벡터의 외적 (왜? : 두 벡터의 외적 벡터는 해당 벡터와 수직) 여기서 주의! : 외적을 계산할땐좌표계를 주의! 삼각형 대 삼각형 충돌 검출
  • 9. 1) 삼각형 표면의 법선 벡터를 구한다. (왜? : 평면을 이용해서 교차 판정하기 위해) (왜 평면을 구하는가? : 삼각형은 평면에 포함관계 이므로 평면에 충돌했다면 충돌한 선분이 삼각형에 포함되는지 확인한다.) 2) 법선 벡터들의 성분을 평면 방정식에 대입 (왜? : 평면을 구하기 위해) (왜 d의 값이 –DotProduct(cross_v1v2, p) 인가? : 법선벡터n(a,b,c) , 평면위 점P(x, y, z), P’(x’, y’, z’) a(x – x’) + b(y – y’) + c(z – z’) = 0 0 = ax + by + cz – (ax’ + by’ + cz’) = ax + by + cz + d 삼각형 대 삼각형 충돌 검출
  • 10. 3) 평면이 삼각형에 충돌했는지 판단 (왜? 충돌된 선분의 점 성분 중에 하나라도 평면상의 삼각형에 포함되면 충돌 된 것임.) 매개변수 방정식을 구해서 교점의 좌표를 구하자. (왜 : 방정식 t값이 [0,1]이 아닌경우 만나지 않음.) 선분-평면 교차
  • 11. 한쪽 좌표로 투영화 (왜 : 교점도 평면화 시키면 충돌 여부 판별 가능) 좌표축과 평행관계일때 평면화 시키면?… (평면의 법선 벡터 성분 중 최대값 쪽으로 정한다.) (왜 : 투영화된 삼각형의 성분이 평면 위 선분에 포함된다.) 삼각형 평면화
  • 12. 평면화 된 교점이 평면화된 삼각형 안에 있는지 판별 직선의 방정식 (y = mx + b)을 이용해서 중점의 x좌표를 직선 방정식에 넣었을때 나온 y값이 중점의 y좌표보다 작으면 중점은 선의 위쪽, 크면 중점은 선의 아래쪽 점이 삼각형 안에 있는지의 점검
  • 13. 위 방식으로 교차하는 변이 하나만 있어도 두 삼각형은 충돌한 것임. 확실하게 하고 싶으면 서로 반대 경우로 계산. 두 삼각형 모두에 대해서 선들을 판정