public static double ArcLength(double x1, double y1, double x2, double y2, double xc, double yc) { double a, b, c, angle; a = Mathematics.FindDist(x1, y1, x2, y2); b = Mathematics.FindDist(xc, yc, x1, y1); c = Mathematics.FindDist(xc, yc, x2, y2); angle = Math.Acos((b * b + c * c - a * a) / (2.0 * b * c)); return(b * angle); }
// метод для общих целей public static bool pointFitsArc(MyPoint point, MyArc arc, double precision) { double radius = Mathematics.FindDist(arc.CenterPoint, arc.StartPoint); bool pointFits = false; if (precision < 0) { double r = Mathematics.FindDist(arc.CenterPoint, arc.StartPoint); precision = r * 0.05; } pointFits = Math.Abs(Mathematics.FindDist(point, arc.CenterPoint) - radius) < precision; if (pointFits) { return(checkValidPointOnArc(point, arc)); } else { return(false); } }