已知n个点,如何拟合出圆来?

turbochen 2005-01-13 05:20:45
最好给出拟合圆的公式或程序算法。应该有最大圆,最小圆,平均圆。
...全文
1352 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
寻开心 2005-01-14
  • 打赏
  • 举报
回复
求最大圆也就是包围圆是有算法的
最小圆的不知道.
寻开心 2005-01-14
  • 打赏
  • 举报
回复
三参数逆合, 是圆心坐标x,y以及半径r
求下面公式
N
E | (xi - x)^2 + (yi-y)^2 - r*r |
i=0
的最小数值

turbochen 2005-01-14
  • 打赏
  • 举报
回复
update
bacmoz 2005-01-14
  • 打赏
  • 举报
回复
x(i)^2+y(i)^2+ax(i)+by(i)+c=0
JK_10000 2005-01-14
  • 打赏
  • 举报
回复
多点回归圆:
http://jkisjk.vip.sina.com/html/circle.htm
JK_10000 2005-01-14
  • 打赏
  • 举报
回复
(xi - x)^2 + (yi-y)^2 - r^2
-------
可以用它求。
寻开心 2005-01-14
  • 打赏
  • 举报
回复
to JK
确实是,如果按照那个标准的欧式距离公式很难求解

但是你可以采用其他的距离公式
除了标准的欧式距离,还有平方距离呢, (xi - x)^2 + (yi-y)^2 - r^2
寻开心 2005-01-14
  • 打赏
  • 举报
回复
考虑外接圆的时候,有一个算法通过解一个矩阵的特征向量的方式可以算出来一个近似的外接圆
该方法还适应三维的情况的
但是接出来的圆不是外接,可能还有点在外面,需要再次处理一下
但是此算法的计算量好像是O(n)的

关于内圆似乎没有准确的定义
JK_10000 2005-01-14
  • 打赏
  • 举报
回复
回复人: happy__888([顾问团]寻开心) ( ) 信誉:124 2005-01-14 13:49:00 得分: 0


sa三参数逆合的标准方式是

E ( fabs (sqrt( (x-xi)^2 + (y-yi)^2 ) - r ) )
就是求到预计的圆的距离的和
让这个数值最小
就是把上述表达式对x,y和r分别求偏导, 使得其数值为0, 从而求解获得x,y,r的数值

----------
这个偏导求出来后,不能解方程。




mathe 2005-01-14
  • 打赏
  • 举报
回复
如果计算实际问题,我们会考虑极小圆,那么肯定所有的点已经基本上分布在一个圆周围的时候
才考虑的,这时,比较实际的方法是通过极小二乘法计算出平均圆,然后限定
极大极小圆圆心在平均圆的圆心,这种情况下,只要计算每个点到圆心的距离,找出最大和
最小距离就可以了。
mathe 2005-01-14
  • 打赏
  • 举报
回复
"最大圆"好定义,
也就是求最小的所有点都在圆内部的点。
仿照这个定义,我们可以定义"最小圆"为
最大的,所有点都在圆外部的点。

"最大圆","最小圆"的算法相同,都可以通过利用三点确定一个圆
通过计算过任何三个点的圆(以及以两个点为直径的圆),
首先判断每个圆是否包含所有点/所有点在圆外。
然后再找出符合条件的所有圆中的极小/大圆。
这个算法时间复杂度为O(n^3)。
而最大圆的算法我记得可以通过分治法降低到O(nlog(n)),这个过去讨论过的。

寻开心 2005-01-14
  • 打赏
  • 举报
回复
sa三参数逆合的标准方式是

E ( fabs (sqrt( (x-xi)^2 + (y-yi)^2 ) - r ) )
就是求到预计的圆的距离的和
让这个数值最小
就是把上述表达式对x,y和r分别求偏导, 使得其数值为0, 从而求解获得x,y,r的数值

bacmoz 2005-01-13
  • 打赏
  • 举报
回复
最小二乘
x(i)^2+y(i)^2+ax(i)+by(i)+c=0
拟合a,b,c

最大圆和最小圆就不好定义了,不是一个问题
lxutao 2005-01-13
  • 打赏
  • 举报
回复
问问学数学的吧。
我也是数学系毕业,但是...
这个问题不难!

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧