Beispiel #1
0
        static public IEnumerable <Triangle2> RecursiveSplitAlongEdgeByArea(this Triangle2 item, float p, float min_area, int max_recursions)
        {
            if (item.GetArea() > min_area && max_recursions >= 1)
            {
                return(item.SplitAlongEdge01ByPercent(p)
                       .Convert(t => t.RecursiveSplitAlongEdgeByArea(p, min_area, max_recursions - 1))
                       .Flatten());
            }

            return(item.WrapAsEnumerable());
        }
Beispiel #2
0
        static public IEnumerable <Triangle2> SplitAlongEdgeByPercent(this Triangle2 item, float percent)
        {
            percent = percent.GetLooped(3.0f);

            if (percent < 1.0f)
            {
                return(item.SplitAlongEdge01ByPercent(percent));
            }

            if (percent < 2.0f)
            {
                return(item.SplitAlongEdge12ByPercent(percent - 1.0f));
            }

            return(item.SplitAlongEdge20ByPercent(percent - 2.0f));
        }