给定初始接触点,如何计算在圆周上包含这些点的圆的半径?
我实现了一个绘制弧线的UIView。我让它与设定的框架一起工作,但我想让它这样当用户开始绘制圆弧时,我可以快速计算出给定初始接触点的圆弧的半径。
假设我收集了5个初始点,我如何计算这条线开始创建的圆弧的半径?
解决方案
您可以通过三个非共线的点构建一个圆。计算三个决定因素的值:
D = |x1 y1 1|
|x2 y2 1|
|x3 y3 1|
Dx = |x1^2 + y1^2 y1 1|
|x2^2 + y2^2 y2 1|
|x3^2 + y3^2 y3 1|
Dy = |x1^2 + y1^2 x1 1|
|x2^2 + y2^2 x2 1|
|x3^2 + y3^2 x3 1|
可在wiki page使用公式。
例如D = x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)
,对于共线点的额外情况(当不存在圆时),D=0
圆(弧)中心坐标为
Cx = - Dx / (2*D)
Cy = Dy / (2*D)
圆半径
R = Sqrt((Cx-x1)^2 + (Cy-y1)^2)
如果要使用四个或更多点,这些点可能不在同一圆弧上,您需要某种圆拟合(example)
相关文章