세 개의 3D 점 (A, B, & C)이 주어지면 법선 벡터는 어떻게 계산합니까? 세 점은 평면을 정의하고 벡터를이 평면에 수직으로 나타내기를 원합니다.주어진 3 점, 어떻게 법선 벡터를 계산합니까?
이를 보여주는 샘플 C# 코드를 얻을 수 있습니까?
세 개의 3D 점 (A, B, & C)이 주어지면 법선 벡터는 어떻게 계산합니까? 세 점은 평면을 정의하고 벡터를이 평면에 수직으로 나타내기를 원합니다.주어진 3 점, 어떻게 법선 벡터를 계산합니까?
이를 보여주는 샘플 C# 코드를 얻을 수 있습니까?
포인트의 순서에 따라 다릅니다. 통상 대향 방향에서 본 점은 반 시계 방향 순서대로 지정하는 경우, 그것은 계산 간단 :
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;
}
}
}
벡터 BA와 BC의 외적을 형성하십시오. http://mathworld.wolfram.com/CrossProduct.html을 참조하십시오.
표면의 두 개의 비평 행 벡터 중 cross product을 계산해야합니다. 3 점을 얻었으므로 벡터 AB와 AC의 교차 곱을 취하면이 점을 알 수 있습니다.
이렇게하면 surface normal이되는데, 그 중 위키 피 디아는 꽤 광범위한 설명이 있습니다.
수학 프로그래밍 할 수있는 많은 계획을 가지고 :
당신이합니다 (Vector3 클래스에 액세스 할 수 있습니다) OpenTK 또는 XNA를 사용하는 경우는, 그것은 단지의 문제이다. 특히이 수학은 당신이 3D를하고 있다면 말이죠. – tgamblin
예, 수학은 프로그래밍과 관련이 있습니다. 그러나 이것은 특정 수학 프로그래밍이 아닌 벡터 수학 문제입니다. 나는 Wikipedian이 아니기 때문에 이것을 닫는 것에 투표하지 않을 것이다. 이것을 지적해라. – Esko
어떤 종류의 프로그래밍을 할 때 이런 종류의 수학이 자주 발생한다는 것은 사실이지만이 질문에는 코드 측면이 전혀 없습니다. 이것은 순전히 수학적인 답을 가진 순수한 수학 문제입니다. mathoverflow.com 또는 google.com에 속합니다. –