2009-12-27 5 views
23

세 개의 3D 점 (A, B, & C)이 주어지면 법선 벡터는 어떻게 계산합니까? 세 점은 평면을 정의하고 벡터를이 평면에 수직으로 나타내기를 원합니다.주어진 3 점, 어떻게 법선 벡터를 계산합니까?

이를 보여주는 샘플 C# 코드를 얻을 수 있습니까?

+8

수학 프로그래밍 할 수있는 많은 계획을 가지고 :

당신이합니다 (Vector3 클래스에 액세스 할 수 있습니다) OpenTK 또는 XNA를 사용하는 경우는, 그것은 단지의 문제이다. 특히이 수학은 당신이 3D를하고 있다면 말이죠. – tgamblin

+0

예, 수학은 프로그래밍과 관련이 있습니다. 그러나 이것은 특정 수학 프로그래밍이 아닌 벡터 수학 문제입니다. 나는 Wikipedian이 아니기 때문에 이것을 닫는 것에 투표하지 않을 것이다. 이것을 지적해라. – Esko

+0

어떤 종류의 프로그래밍을 할 때 이런 종류의 수학이 자주 발생한다는 것은 사실이지만이 질문에는 코드 측면이 전혀 없습니다. 이것은 순전히 수학적인 답을 가진 순수한 수학 문제입니다. mathoverflow.com 또는 google.com에 속합니다. –

답변

30

포인트의 순서에 따라 다릅니다. 통상 대향 방향에서 본 점은 반 시계 방향 순서대로 지정하는 경우, 그것은 계산 간단 :

x 십자가 제품
Dir = (B - A) x (C - A) 
Norm = Dir/len(Dir) 

.

class Triangle { 
    Vector3 a, b, c; 
    public Vector3 Normal { 
     get { 
      var dir = Vector3.Cross(b - a, c - a); 
      var norm = Vector3.Normalize(dir); 
      return norm; 
     } 
    } 
} 
1

표면의 두 개의 비평 행 벡터 중 cross product을 계산해야합니다. 3 점을 얻었으므로 벡터 AB와 AC의 교차 곱을 취하면이 점을 알 수 있습니다.

이렇게하면 surface normal이되는데, 그 중 위키 피 디아는 꽤 광범위한 설명이 있습니다.

관련 문제