让代码更简单

当前位置:代码狗 > 开发教程 > 工业视觉教程 > 正文

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

重要:本文最后更新于2021-07-12 23:07:10,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

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

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

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

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

代码如下

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 ;
}
}

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

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

感觉很棒!可以赞赏支持我哟~

赞(3) 打赏

评论 2

  1. #1

    请问下 结合结果 如何计算半径呢?

    qcegj2个月前 (07-20)回复
    • 请看上一篇文章:https://www.daimadog.com/7584.html

      代码狗2个月前 (07-21)回复
×

请作者吃根烤肠!

支付宝