2015-01-27 6 views
1

필자는 Helix Toolkit으로 WPF를 사용하여 파이프를 렌더링하고 있습니다. 제공된 함수가 삼각형 프리미티브를 생성하여 사용하기에는 너무 큽니다. 빨간색 삼각형 내 원시적 인 경우원시 삼각형을 작은 삼각형으로 분할

enter image description here

는 예를 들어, 내가 (말) 삼각형의 중간 부분을 제어 할 수 있습니다. 내가 생각할 수있는 한 가지 방법은 빨간색 삼각형을 파란색 삼각형으로 더 분할하는 것입니다. 누구든지이 분할을 허용하는 알고리즘이나 알고리즘을 가르쳐 주시겠습니까?

답변

0
public struct Triangle 
    { 
     public Vector3 point1; 
     public Vector3 point2; 
     public Vector3 point3; 

     public Triangle(Vector3 p1, Vector3 p2, Vector3 p3) 
     { 
      this.point1 = p1; 
      this.point2 = p2; 
      this.point3 = p3; 
     } 
    } 

    public static Vector3 getMiddlePoint(Vector3 point1, Vector3 point2) 
    { 
     return new Vector3((point1.X + point2.X)/2.0f, (point1.Y + point2.Y)/2.0f, (point1.Z + point2.Z)/2.0f); 
    } 

    public static List<Triangle> SplitTriangle(Triangle tri) 
    { 
     Vector3 a = getMiddlePoint(tri.point1, tri.point2);  
     Vector3 b = getMiddlePoint(tri.point2, tri.point3); 
     Vector3 c = getMiddlePoint(tri.point3, tri.point1); 
     List<Triangle> NewTris = new List<Triangle>(); 
     NewTris.Add(new Triangle(tri.point1, a, c)); 
     NewTris.Add(new Triangle(tri.point2, b, a)); 
     NewTris.Add(new Triangle(tri.point3, c, b)); 
     NewTris.Add(new Triangle(a, b, c); 
     return NewTris; 
    }