三個點擬合圓形的函數
函數說明
public void FitCircleFromThreePoints(double 點1X, double 點1Y, double 點2X, double 點2Y, double 點3X, double 點3Y, out double 圓心X坐標, out double 圓心Y坐標, out double 圓形半徑大小)
public void FitCircleFromThreePoints(double Points1X, double Points1Y, double Points2X, double Points2Y, double Points3X, double Points3Y, out double Col, out double Row, out double Rad){try{//先判斷一下這三個點是否共線,如果共線就不求了。if ((Points1X - Points2X) / (Points1Y - Points2Y) == (Points2X - Points3X) / (Points2Y - Points3Y)){Col = 0;Row = 0;Rad = 0;return ;}//求圓形double x1, y1, x2, y2, x3, y3;double a, b, c, g, h, f;x1 = Points1X;y1 = Points1Y;x2 = Points2X;y2 = Points2Y;x3 = Points3X;y3 = Points3Y;h = 2 * (x2 - x1);f = 2 * (y2 - y1);g = x2 * x2 - x1 * x1 + y2 * y2 - y1 * y1;a = 2 * (x3 - x2);b = 2 * (y3 - y2);c = x3 * x3 - x2 * x2 + y3 * y3 - y2 * y2;Col = (g * b - c * f) / (h * b - a * f);Row = (a * g - c * h) / (a * f - b * h);Rad = Math.Sqrt((Col - x1) * (Col - x1) + (Row - y1) * (Row - y1));}catch{Col = 0;Row = 0;Rad = 0;}}
不懂可以問我哈,底下評論留言,看到第一時間回復。覺得有用點贊哦。
PS
我的博客不定時分享日常工作中覺得有價值的內容,包括C#、C++、halcon、運動控制等等內容,喜歡的點贊,關注我。