Пример #1
0
        public static iArc ArcFromPoints(iPointOnSpline p1, iPointOnSpline p2, iPointOnSpline p3)
        {
            double cX, cY, r;

            CercleFromPoints(p1, p2, p3, out cX, out cY, out r);

            return(new iArc(new iPoint(cX, cY), r, p1, p2, p3));
        }
Пример #2
0
        public static void CercleFromPoints2(iPointOnSpline p1, iPointOnSpline p2, iPointOnSpline p3, out double cX, out double cY, out double cZ, out double r)
        {
            try
            {
                MathCircArc arc = MathHelper.Mu.CreateCircArcBy3Points(p1.MathPoint(), p2.MathPoint(), p2.MathPoint());

                arc.Center.GetPosition(out cX, out cY, out cZ);
                r = arc.Radius;
            }
            catch (Exception e)
            {
                Log.Write(e);
                cX = 0; cY = 0; cZ = 0; r = 0;
            }
        }
Пример #3
0
        public static void CercleFromPoints(iPointOnSpline p1, iPointOnSpline p2, iPointOnSpline p3, out double cX, out double cY, out double r)
        {
            double offset = Math.Pow(p2.X, 2) + Math.Pow(p2.Y, 2);
            double bc     = (Math.Pow(p1.X, 2) + Math.Pow(p1.Y, 2) - offset) / 2.0;
            double cd     = (offset - Math.Pow(p3.X, 2) - Math.Pow(p3.Y, 2)) / 2.0;
            double det    = (p1.X - p2.X) * (p2.Y - p3.Y) - (p2.X - p3.X) * (p1.Y - p2.Y);

            //if (Math.Abs(det) < 0.0000000001) { throw new Exception("Les points sont alignés"); }

            double idet = 1 / det;

            cX = (bc * (p2.Y - p3.Y) - cd * (p1.Y - p2.Y)) * idet;
            cY = (cd * (p1.X - p2.X) - bc * (p2.X - p3.X)) * idet;
            r  = Math.Sqrt(Math.Pow(p2.X - cX, 2) + Math.Pow(p2.Y - cY, 2));
        }
Пример #4
0
 public double DistanceDe3D(iPointOnSpline pt)
 {
     return(Math.Sqrt(Math.Pow(pt.X - X, 2) + Math.Pow(pt.Y - Y, 2) + Math.Pow(pt.Z - Z, 2)));
 }
Пример #5
0
 public double DistanceDe2D(iPointOnSpline pt)
 {
     return(Math.Abs(pt.DistanceDe2D(Centre) - Rayon));
 }
Пример #6
0
 public iArc(iPoint centre, double rayon, iPointOnSpline p1, iPointOnSpline p2, iPointOnSpline p3)
 {
     Centre = centre; Rayon = rayon; P1 = p1; P2 = p2; P3 = p3;
 }
Пример #7
0
 public iLine(iPointOnSpline p1, iPointOnSpline p2)
 {
     P1 = p1; P2 = p2;
 }
Пример #8
0
 public static MathPoint MathPoint(this iPointOnSpline pt)
 {
     return(Mu.CreatePoint(pt.X, pt.Y, pt.Z));
 }