给定初始接触点,如何计算在圆周上包含这些点的圆的半径? [英] Given initial touch points, how can I calculate a radius for a circle containing these points on it's circumference?

查看:0
本文介绍了给定初始接触点,如何计算在圆周上包含这些点的圆的半径?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我实现了一个绘制弧线的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)

这篇关于给定初始接触点,如何计算在圆周上包含这些点的圆的半径?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆