C# 将基本三角形拆分为较小的三角形

C# 将基本三角形拆分为较小的三角形,c#,wpf,tessellation,helix-3d-toolkit,C#,Wpf,Tessellation,Helix 3d Toolkit,我正在使用带有Helix工具箱的WPF渲染管道。我意识到提供的函数生成的三角形原语太大,无法使用 例如,如果红色三角形是我的基本体,我希望控制(比如)三角形的中间部分。我能想到的一种方法是进一步将红色三角形拆分为蓝色三角形,如图所示。有人能告诉我一个允许这种拆分的方法或算法吗?public struct Triangle public struct Triangle { public Vector3 point1; public Vector3

我正在使用带有Helix工具箱的WPF渲染管道。我意识到提供的函数生成的三角形原语太大,无法使用

例如,如果红色三角形是我的基本体,我希望控制(比如)三角形的中间部分。我能想到的一种方法是进一步将红色三角形拆分为蓝色三角形,如图所示。有人能告诉我一个允许这种拆分的方法或算法吗?

public struct Triangle
    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;
    }
{ 公共向量3点1; 公共向量3点2; 公共向量3点3; 公共三角形(向量3 p1、向量3 p2、向量3 p3) { 该点1=p1; 该点2=p2; 该点3=p3; } } 公共静态向量3获取中间点(向量3点1,向量3点2) { 返回新的向量3((point1.X+point2.X)/2.0f,(point1.Y+point2.Y)/2.0f,(point1.Z+point2.Z)/2.0f); } 公共静态列表SplitTriangle(Triangle tri) { 向量3 a=获取中点(三点1,三点2); Vector3B=getMiddlePoint(三点2,三点3); 向量3 c=获取中点(三点3,三点1); List NewTris=新列表(); 新增(新三角形(三点1,a,c)); 新增(新三角形(三点2,b,a)); 新增(新三角形(三点3,c,b)); 新增(新三角形(a、b、c); 返回NewTris; }