C#已知圆周上三点计算圆心

在机器视觉引导项目中,经常出现旋转中心与旋转轴不重合的情况,这种情况下的坐标计算方法并不复杂,利用高中所学的数学知识即可解答,第一步就是找到旋转中心点,这个是你的运动机构的不是产品上的,比如机械手。

要找到旋转中心,只需要任意旋转三次,取这三个点求其圆心与半径,其实只需圆心坐标即可,旋转所在点就是运动机构的旋转中心,比如机械手的6轴旋转,6轴所在位置就是其旋转中心,这是重合的情况。一旦加上手爪,就需要我们自己计算旋转中心了,下面是C#的圆心求解方法。

C#已知圆周上三点计算圆心

C#已知圆周上三点计算圆心

代码如下

(adsbygoogle = window.adsbygoogle || []).push({});

struct mPoint
{
public double X;
public double Y;
}
struct circle
{
public mPoint center;
public float R;
}
mPoint getcenter(mPoint p1,mPoint p2,mPoint p3) {
mPoint rpoint;
double a = p1.X - p2.X;
double b = p1.Y - p2.Y;
double c = p1.X - p3.X;
double d = p1.Y - p3.Y;
double e = (Math.Pow(p1.X, 2) - Math.Pow(p2.X, 2) + Math.Pow(p1.Y, 2) - Math.Pow(p2.Y, 2)) / 2.0;
double f = (Math.Pow(p1.X, 2) - Math.Pow(p3.X, 2) + Math.Pow(p1.Y, 2) - Math.Pow(p3.Y, 2)) / 2.0;
double det = b * c - a * d;
if (Math.Abs(det) > 0)
{
//x0,y0为计算得到的原点
double x0 = -(d * e - b * f) / det;
double y0 = -(a * f - c * e) / det;
rpoint.X = x0;
rpoint.Y = y0;
return rpoint;
}
else
{
mPoint ab;
ab.X = 9999;
ab.Y = 9999;
return ab ;
}
}

怎么使用我就不多讲了,应该都能看懂。算法是根据圆的方程来的。

下一章再讲已知圆周上一点,球其旋转一定角度后的坐标。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论