2014-04-01 59 views
8

鉴于3点A,B和C算法找到给定的电弧,其中心,半径和角度3分

enter image description here

如何找到并开始于甲弧,中C端和通过B;其中心的坐标,r和r'的半径和角度?

enter image description here

+0

如果所有3个点形成等边三角形,您将如何解决问题?我不确定问题是否足够好。 –

+3

@Mark然后您的圆弧是完整圆的2/3 – ibrabeicker

+0

只要点不在同一条线上,该圆就是明确定义的。但是,您认为弧的“开始”和“结束”是任意的。哦,当然还有'r == r'。 – Thomas

回答

5

有几种方法去做这个。这是一种算法:

  1. 让您COORDS

    A = {XA,YA}

    B = {XB,YB}

    C = {XC,YC}

    d = {xd,yd}

  2. 计算AB线和BC线的中点

    mid_AB = {(XA + XB)/ 2,(YA + YB)/ 2}

    mid_BC = {(的xB + XC)/ 2,(YB + YC)/ 2}

  3. 找到线AB和BC

    的斜坡

    slope_AB =(YB-YA)/(XB-XA)

    slope_BC =(YC-YB)/(XC-XB)

  4. 通过运行
  5. 构建线中点PERPENDICULAR AB和BC(谢谢Yves捕捉负)

    Slope_perp_AB!= - (slope_AB)^( - 1)

    Slope_perp_BC = - (slope_BC)^( - 1)

    ***与Slope_perp_AB线通过mid_AB运行

    ***与Slope_perp_BC线通过mid_BC

  6. 运行设置两个方程彼此相等,解决找到交集! 这给你点d = {xd,yd} !!!

计算半径和角度现在微不足道的中心点d!

+1

注意,垂线的斜率是-1/m,而不是+ 1/m。您应该更喜欢线性方程的隐式表达式,因为它们更具各向同性并且适用于水平/垂直。 –

+0

很棒!谢谢。我会更新帖子。 – Joshua

+0

你能写一个证明吗?IOW定义xA,yA,xB,yB,xC,yC,xd,yd显示'所有步骤来获得xd,yd COORDS?我不确定'Slope_perp'是什么意思除以-1?或到-1的幂?我不明白“设置两个等式相等”的数学原理 – DarkPh03n1X

4

步骤1

查找AB和BC的垂直平分线。

第2步

找到这些线相交的点。

你会发现点将是你想要的圆的中心。

步骤3

计算从您在步骤2中发现中间的三个点,这将是半径的圆你一个的距离。

注意点A,B和C不得在同一行。在执行步骤1至3之前,必须先检查该步骤。

2

对此的解决方案与“非超定系统的最佳拟合圈”几乎相同。由于您有三个点,它们正好位于以圆心(0,0)(给定)为圆心的圆弧上,所以系统可以精确求解,而不需要最小二乘法逼近。

Finding the Center of a Circle Given 3 Points 


Date: 05/25/2000 at 00:14:35 
From: Alison Jaworski 
Subject: finding the coordinates of the center of a circle 

Hi, 

Can you help me? If I have the x and y coordinates of 3 points - i.e. 
(x1,y1), (x2,y2) and (x3,y3) - how do I find the coordinates of the 
center of a circle on whose circumference the points lie? 

Thank you. 


Date: 05/25/2000 at 10:45:58 
From: Doctor Rob 
Subject: Re: finding the coordinates of the center of a circle 

Thanks for writing to Ask Dr. Math, Alison. 

Let (h,k) be the coordinates of the center of the circle, and r its 
radius. Then the equation of the circle is: 

    (x-h)^2 + (y-k)^2 = r^2 

Since the three points all lie on the circle, their coordinates will 
satisfy this equation. That gives you three equations: 

    (x1-h)^2 + (y1-k)^2 = r^2 
    (x2-h)^2 + (y2-k)^2 = r^2 
    (x3-h)^2 + (y3-k)^2 = r^2 

in the three unknowns h, k, and r. To solve these, subtract the first 
from the other two. That will eliminate r, h^2, and k^2 from the last 
two equations, leaving you with two simultaneous linear equations in 
the two unknowns h and k. Solve these, and you'll have the coordinates 
(h,k) of the center of the circle. Finally, set: 

    r = sqrt[(x1-h)^2+(y1-k)^2] 

and you'll have everything you need to know about the circle. 

This can all be done symbolically, of course, but you'll get some 
pretty complicated expressions for h and k. The simplest forms of 
these involve determinants, if you know what they are: 

     |x1^2+y1^2 y1 1|  |x1 x1^2+y1^2 1| 
     |x2^2+y2^2 y2 1|  |x2 x2^2+y2^2 1| 
     |x3^2+y3^2 y3 1|  |x3 x3^2+y3^2 1| 
    h = ------------------, k = ------------------ 
      |x1 y1 1|    |x1 y1 1| 
      2*|x2 y2 1|    2*|x2 y2 1| 
      |x3 y3 1|    |x3 y3 1| 

Example: Suppose a circle passes through the points (4,1), (-3,7), and 
(5,-2). Then we know that: 

    (h-4)^2 + (k-1)^2 = r^2 
    (h+3)^2 + (k-7)^2 = r^2 
    (h-5)^2 + (k+2)^2 = r^2 

Subtracting the first from the other two, you get: 

    (h+3)^2 - (h-4)^2 + (k-7)^2 - (k-1)^2 = 0 
    (h-5)^2 - (h-4)^2 + (k+2)^2 - (k-1)^2 = 0 

    h^2+6*h+9 - h^2+8*h-16 + k^2-14*k+49 - k^2+2*k-1 = 0 
    h^2-10*h+25 - h^2+8*h-16 + k^2+4*k+4 - k^2+2*k-1 = 0 

    14*h - 12*k + 41 = 0 
    -2*h + 6*k + 12 = 0 

    10*h + 65 = 0 
    30*k + 125 = 0 

    h = -13/2 
    k = -25/6 

Then 

    r = sqrt[(4+13/2)^2 + (1+25/6)^2] 
     = sqrt[4930]/6 

Thus the equation of the circle is: 

    (x+13/2)^2 + (y+25/6)^2 = 4930/36 

- Doctor Rob, The Math Forum 
    http://mathforum.org/dr.math/ 

参考


  1. 寻找鉴于三点一个圈,访问的2014年4月1日的中心,<http://mathforum.org/library/drmath/view/55239.html>
1

你有三个方程来确定三个未知XM,YM和R,

(xA-xM)^2+(yA-yM^2) = R^2 

等从B中减去甲方程和C方程给出

2*(xB-xA)*xM+2*(yB-yA)*yM = xB^2-xA^2+yB^2-yA^2 
2*(xC-xA)*xM+2*(yC-yA)*yM = xC^2-xA^2+yC^2-yA^2 

通过求解这2×2线性系统,您可以获得圆的中心点,插入任何原始方程都可得出半径。

5

圆的中心是等距离的三个已知点:

(X-Xa)^2+(Y-Ya)^2 = (X-Xb)^2+(Y-Yb)^2 = (X-Xc)^2+(Y-Yc)^2 

减去来自所述第二与第三所述第一构件,我们重新组合后得到:

2(Xa-Xb) X + 2(Ya-Yb) Y + Xb^2+Yb^2-Xa^2-Ya^2 = 0 
2(Xa-Xc) X + 2(Ya-Yc) Y + Xc^2+Yc^2-Xa^2-Ya^2 = 0 

该线性系统在两个未知数中的两个方程很容易用克莱默法则解决。

半径和角度可以通过围绕中心笛卡尔到极变换中找到:

R= Sqrt((Xa-X)^2+(Ya-Y)^2) 

Ta= atan2(Ya-Y, Xa-X) 
Tc= atan2(Yc-Y, Xc-X) 

但是你还是会错过一两件事:什么是弧形的相关部分?小于或大于半圈?从TaTb或从Tb2 PiTa + 2 Pi,还是什么?答案似乎不像看起来那么明显,试试吧(因为三个角度Ta,TbTc都未定义为2 Pi的倍数,您无法对它们进行排序)!

提示:考虑三角形ABC区域的正负号,正好是系统行列式的一半。它会告诉你B是在AC的左边还是右边。

1

有一个鲜为人知的结果通过3点给人一种圆的隐式方程:

|Z X Y 1| 
|Za Xa Ya 1| 
|Zb Xb Yb 1| = 0 
|Zc Xc Yc 1| 

,我们已经为简明起见定义Z:= X^2 + Y^2

计算的3×3的未成年人,我们发展成:

M00 Z + M10 X + M20 Y + M30 = 0 

和,归一化后,我们得到了通常的二度方程:

X^2 + Y^2 + 2U X + 2V Y + W = 0 

这可以被改写为:

(X - U)^2 + (Y - V)^2 = U^2 + V^2 - W 

立即给中心(U, V) = (-M10/2.M00, -M20/2.M00)和半径R^2 = U^2 + V^2 - M30/M00

相关问题