2015-01-27 3 views
1

Я обрабатываю трубку с помощью WPF с помощью Helix Toolkit. Я понял, что предоставленная функция генерирует примитивы треугольника, которые слишком велики для моего использования.Разделение примитивного треугольника на более мелкие треугольники

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; 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^