使用多个点确定圆的中心/中心

时间:2011-02-10 14:15:00

标签: flash actionscript-3 algorithm geometry 2d

我想知道是否有人可以帮助我,我可以使用指南针在笔和纸上做,但不能在Actionscript 3中做到。

正如标题所说,基本上我需要使用半径中的多个点来找到圆心。

1 个答案:

答案 0 :(得分:10)

你想要Equation for a Circle from 3 Points。 Math博士对你的问题也有some nice explanations

编辑:我在JavaScript + SVG中实现了这一点;你可以在我的网站上看到互动结果:
http://phrogz.net/SVG/3-point-circle.xhtml

以下是相关代码(我在ActionScript中创建了Point类,其中包含.x.y属性):

function findCircleCenter(p1,p2,p3){
  var d2  = p2.x*p2.x + p2.y*p2.y;
  var bc  = (p1.x*p1.x + p1.y*p1.y - d2) / 2;
  var cd  = (d2 - p3.x*p3.x - p3.y*p3.y) / 2;
  var det = (p1.x-p2.x) * (p2.y-p3.y) - (p2.x-p3.x) * (p1.y-p2.y);
  if (Math.abs(det) > 1e-10) return new Point(
    (bc * (p2.y-p3.y) - cd * (p1.y-p2.y)) / det,
    ((p1.x-p2.x) * cd - (p2.x-p3.x) * bc) / det
  );
}

编辑2 :为了好玩,而不是定义一个圆圈的3个点,如何定义20个点? :)
http://phrogz.net/SVG/3-point-circle2.xhtml