2017-04-16 3 views
1

3D 공간에서 작업 중입니다. 광선, 또는 특히 3D 공간에서 광선의 시작 및 전송 벡터를가집니다. 나는 또한 삼각형을 가지고 있는데, 나는 사실이 광선에 부딪쳤다는 것을 안다. 삼각형을 사용하면 물론 3D 점이 세 개 있다는 것을 의미합니다. 이 삼각형에서 법선 벡터를 쉽게 계산할 수도 있습니다.3D 공간에서 삼각형을 반사하는 광선

이제 새로운 광선을 얻을 필요가 있습니다. 특정 광선을 반사시킨 새 광선이 필요합니다.

나는 또한 삼각형에 접촉점이있는 곳을 알지 못하지만 반사 광선을 얻으려면 분명히 고려해야한다. 그 시점이 새로운 광선의 시작일 것입니다.

이것은 2D에서하는 것이 쉽지 않지만 3D로하는 방법을 이해할 수 없습니다.

저는 Cx ++와 OpenFrameworks를 ofxRay 부가 기능과 함께 사용하고 있습니다.

+0

두 벡터를 추가하거나 점을 찍는 것과 같이 벡터 대수학에 익숙하십니까? – Beta

+0

생각할 수있는 유용한 방법은 평면에 수직선 (삼각형)과 광선이 함께 평면을 형성하는 것입니다. 이 평면에서는 익숙한 2D 문제를 검색합니다. 따라서이 2D 공간을 찾아 문제를 해결 한 다음 다시 변환 할 수 있습니다.이것은 수학적으로 벡터 대수학 공식 (@Beta가 지적한 바와 같이)과 같을 것입니다. 이것은 아마도 가장 효율적인 (또는 적어도 계산 상으로는 간단히) 해결책 방법 일 것입니다. – jwimberley

답변

2

이 문제는 광선이 반사 광선의 원점 인 삼각형과 만나는 지점을 찾고 반사 광선의 방향 (벡터)을 찾는 두 가지 문제로 명확하게 나뉩니다.

삼각형의 법선 벡터를 n이라고합시다. 삼각형의면을 설명하는 식은

NX = K

그 방정식에 삼각형의 정점을 연결하여 (K)을 결정할 수있다. 입사 광선의 방정식

X = t V + P

P은 광선 원점이다

V는 그 (정규화) 방향 . 광선의 교차점을 찾기 위해 단지

N (t V + P) = K t 용

해결 내린다 방정식이 쌍을 해결하고 밀봉 그 광선에 대한 방정식으로 되돌아갑니다.

은 반사광의 방향을 찾기 위해, 상기 입사광을 평행 한 성분을 반대로해야 통상 삼각형의 :

V R = V + 2 (VN) V

(I이 상정 sign-- 조심 그 얼굴 광선 히트 중 정상 점).

관련 문제