Example #1
0
 public Triangle(Point p1, Point p2, Point p3, Vector <double> ver = null)
 {
     vertix = new Point[3] {
         p1, p2, p3
     };
     weight = GetArea();
     if (ver == null)
     {
         versor = MatrixExt.WersorFromPlane(p1, p2, p3);
     }
     else
     {
         versor = ver;
     }
 }
Example #2
0
        public override void Generate(Point[] points, out int iter, bool regenerate = true)
        {
            int             n  = points.Length;
            Vector <double> sw = Vector <double> .Build.Dense(3, 0);

            for (int i = 0; i + 2 < n; i++)
            {
                sw += MatrixExt.WersorFromPlane(points[i], points[i + 1], points[i + 2]);
            }
            sw = sw.Normalize(2);
            Vector <double> start = Vector <double> .Build.Dense(4, 0);

            for (int i = 0; i < 3; i++)
            {
                start[i] = sw[i];
            }
            Generate(points, out iter, start, regenerate);
        }
Example #3
0
        public override void Generate(List <Point> points, List <double> weigths, out int iter)
        {
            int             n  = points.Count;
            Vector <double> sw = Vector <double> .Build.Dense(3, 0);

            for (int i = 0; i + 2 < n; i++)
            {
                sw += MatrixExt.WersorFromPlane(points[i], points[i + 1], points[i + 2]);
            }
            sw = sw.Normalize(2);
            Vector <double> start = Vector <double> .Build.Dense(4, 0);

            for (int i = 0; i < 3; i++)
            {
                start[i] = sw[i];
            }
            Generate(points, weigths, out iter, start);
        }
Example #4
0
 public Triangle(Point p1, Point p2, Point p3, Vector <double> ver = null, int id = 0)
 {
     //status = 0;
     this.id = id;
     //Edges = new List<Edge>();
     vertix = new Point[3] {
         p1, p2, p3
     };
     weight = GetArea();
     if (ver == null)
     {
         versor = MatrixExt.WersorFromPlane(p1, p2, p3);
     }
     else
     {
         var v = MatrixExt.WersorFromPlane(p1, p2, p3);
         if ((v - ver).L2Norm() > Control.VertexLinear && (v + ver).L2Norm() > Control.VertexLinear)
         {
             ver = MatrixExt.WersorFromPlane(p1, p2, p3);
         }
         versor = ver;
     }
 }