2017-12-16 21 views
0

3D 공간에 점 집합이 있습니다. 최대 오차가 10^-5 인 경우 평면을 배치 할 수 있습니다 (오류는 점에서 평면까지의 거리입니다).3D 공간에서 임의 평면상의 삼각형 집합 점

이 임의의 평면에서 이러한 점을 삼각형화할 수있는 방법이 있습니까? 나는 Bowyer-Watson을 시도했지만 에러가 0 일 때만 작동한다. 다른 것은 삼각형이 아니거나 좋은 삼각형 (겹치는 삼각형)을 얻지 못할 것이다.

편집

내가이 문제를 발견했다고 생각합니다. 특정 각도에서 외계의 계산이 꺼져 있기 때문에 bowyer watson 알고리즘이 작동하지 않습니다. 3D로 삼각형의 외심을 어떻게 계산할 수 있습니까?

답변

0

평면상의 점을 알고 있기 때문에 벡터를 계산할 수 있습니다. 이 벡터는 비행기에 놓여 있습니다. 다음으로 나는 점들의 질량 중심을 계산합니다. 지금 난 그냥 보이어 - 왓슨을 사용할 수 있습니다 바깥 쪽 삼각형을 가지고 있다는면

 Vertex p1 = new Vertex(dir * 3000 + center); 
     Vertex p2 = new Vertex(Quaternion.AngleAxis(120, plane.normal) * dir * 3000 + center); 
     Vertex p3 = new Vertex(Quaternion.AngleAxis(240, plane.normal) * dir * 3000 + center); 

에 큰 삼각형을 만들 수있는 벡터와 질량 중심을 사용

.

Vector3 ac = p3 - p1; 
    Vector3 ab = p2 - p1; 
    Vector3 abXac = Vector3.Cross(ab, ac); 

    circumceter = p1 + (Vector3.Cross(abXac, ab) * ac.sqrMagnitude + Vector3.Cross(ac, abXac) * ab.sqrMagnitude)/(2 * abXac.sqrMagnitude); 

을 그리고 지금은 3D로 임의의 평면 점의 삼각형 세트를 가지고 : 차원의 외심을 위해 내가 사용합니다.