2013-03-02 4 views
1

나는 구글이나 포럼에 대한 답을 찾지 못했고 여기에 도움을 청하기로 결정했다.3d 벡터가 4면 피라미드에 있습니까?

저는 꽤 숙련 된 프로그래머이며 다양한 플랫폼에서 많은 성공을 거두었지만 지금까지는 수학을 많이 사용하지 않았습니다.

이제 5 점 (4면 피라미드)과 단일 벡터 배열을받는 함수를 작성하는 방법을 알아야합니다. 문제는이 3d 벡터가 피라미드 안에 있는지 여부입니다.

이 함수는 궁극적으로 (Mono) C#으로 작성되지만 다른 언어에 대한 힌트 또는 코드가 있거나 절대적으로 훌륭한 평범한 수학을 도울 수 있다면 도움이 될 것입니다.

답변

5

벡터가 아무 것도 안에 있지 않습니다. 3D 벡터가 아니라 3D 점이 있다는 것을 의미하는 것 같습니다.

이 경우 모든 볼록 다면체에 적용 할 수있는 간단한 해결책은 피라미드의 각면을 고려할 때 올바른 반 공간에 있는지 확인하는 것입니다.

특히 피라미드의 첫 번째면 (예 : 두 모서리)에서 두 벡터를 가져 와서이면에 한 점 (예 : 정점 중 하나)과 테스트 할 점이있는 세 번째 벡터를 만듭니다. 혼합 된 제품의 부호를 사용하여 (즉, 피라미드면에 수직 인 벡터를 생성하는 두 모서리의 교차 곱을 취하고이 법선이 세 번째 벡터와 동일한 방향인지 여부를 점 팩터로 확인하십시오) 당신은 당신의 요지가 어느 쪽인지를 결정할 수 있습니다.

모든 얼굴에 대한 절차를 반복하면 결론을 내릴 수 있습니다.

+0

감사합니다. 방금이 문제를 우회하는 해결책을 생각해 냈습니다.하지만 해결책을 제시 한만큼 그것을 표시 할 것입니다.) – metafa

관련 문제