2014-03-29 6 views
0

불완전한 원을 형성하고 원에 나타나는 순서대로 저장되는 3D 점의 모음이 있습니다. 저는 모든 포인트의 평균 위치를 계산하여 링의 중심에 오브젝트를 배치합니다. 이는 잘 작동합니다. 이제 내가 원하는 것은 나머지 점 (즉, 반지에 수직)을 기준으로 중앙의 객체가 위/아래를 향하게하는 것입니다.3D 점들의 집합에 수직 인 방향?

나는 의미를 명확히하는 데 도움이되는 이미지를 포함 시켰습니다. 누구든지 이것에 알 맞는 알고리즘을 알고 있습니까?

enter image description here

+1

포인트가 모두있는 평면을 찾는 방법을 찾으십시오. 원하는 벡터는 그 평면의 법선이됩니다. 어떤 이유로 든 포인트가 * 정확히 * 동일 평면이 아닌 경우, 어떤 변형을 부드럽게하기 위해 약간의 회귀를해야 할 수도 있습니다. – anaximander

+0

점의 평면을 계산하고 그 법선을 얻으십시오. – ChronoTrigger

답변

2

당신은 비행기 당신의 포인트 양식을 계산하고 정상을 얻을 수 있습니다.

포인트가 완전히 동일 평면 인 경우 a, bc 중 3 개를 가져 와서 두 벡터를 계산하십시오. 포인트가 완벽하게 동일 평면이 아닌 경우 가장 정상, 다음 사항을 맞는 비행기를 얻을 수

v1 = b - a; 
v2 = c - a; 
n = v1 x v2; 

: 법선 벡터 n 그들의 십자가 제품입니다. Ax=0 형태의 선형 방정식 시스템을 풀어 평면을 얻을 수 있습니다. 비행기의 일반적인 방정식 Ax + By + Cz + D = 0을하기 때문에, 당신은이 시스템을 획득, 3D 포인트 당 하나 개의 방정식을 얻을 :

| x1 y1 z1 1 | | A | | 0 | 
| x2 y2 z2 1 | x | B | = | 0 | 
| x3 y3 z3 1 | | C | | 0 | 
| ...  | | D | | ... | 
| xn yn zn 1 |   | 0 | 

법선 벡터가 (A, B, C)입니다.

1

이전 답변에 대해 자세히 설명하면 n 포인트가있는 최상의 초평면 법선 벡터를 풀 때 4 개의 미지수로 된 n 개의 방정식 시스템이 생깁니다. 알려지지 않은 계수 중 하나 (예를 들어 D)를 1과 같은 상수로 설정하고 해당 데이터 열을 오른쪽으로 이동 시켜서 A = B = C = D = 0이라는 사소한 해를 구하지 않아야합니다. 솔루션 A, B, C, D가 스케일링 할 때 여전히 솔루션이기 때문에 계수가 0이 아닌 경우 계수를 1로 안전하게 설정할 수 있습니다. 따라서 3 개의 미지수에서 n 방정식을 구할 수 있습니다. 오른쪽은 0 벡터가 아닌 -1의 벡터이고, 데이터 매트릭스는 단순히 점의 매트릭스이며 미지 계수는 A, B, C입니다. 일반적으로 이러한 시스템은 3 점 이상일 경우 과다하게 결정되므로 선형 회귀를 사용하여 해결해야합니다. 최소 자승법을 사용하여 3 개의 계수에 대한 해를 구하기위한 행렬 공식을 얻으려면 http://en.wikipedia.org/wiki/Linear_regression을 참조하십시오.

+0

맞습니다. 다시 0이됩니다. 감사! 그게 큰 도움이 되네. 빠른 질문 하나, 내가 찾은 선형 방정식을 풀기위한 해답은 모두 n x n 행렬에서 작동한다. 이것에 대한 이유가 있습니까? – IApp

+0

예. 선형 시스템에 대한 정확한 해답을 얻으려면 방정식이 중복되지 않는 한 미지수보다 방정식이 더 이상 필요하지 않습니다. 예 : 3 차원에서 2 차원 평면을 3 차원 점의 집합에 맞추는 것에 대해 생각해보십시오. 3 개의 무료 미지수가 있으며 3 점을 통과하는 평면 만 찾을 수 있습니다 (다른 점은 평면에 없을 수도 있음). 따라서 모든 점에 거의 맞는 "최상의"평면을 원한다면 선형 방정식을 푸는 대신 선형 회귀가 필요합니다. 귀하의 포인트가 모두 하나의 공통 평면에 정확하게 놓여 있다면, 3 포인트를 취해 3x3 시스템을 풀 수 있습니다. – user2566092

관련 문제