2014-06-23 101 views
-1

我知道A點的角度,圓圈通過A點和B點。應該有一個獨特的解決方案,它給出了圓心(C)和半徑(R)從這個信息。我試圖找到一個公式如下。通過2個已知點和角度在一個點上計算圓圈

R^2 = (Bx - Cx)^2 + (By - Cy)^2 
Cx = Ax - R*dy 
Cy = Ay + R*dx 

(DX,DY)是相切的圓在點A處,它可以從所述角度在A點中找到具有正弦,餘弦的單位向量。圓的中心距離點A的距離是垂直於(dx,dy)的方向。

把此一起給我

R^2 = (Bx - Ax + R*dy)^2 + (By - Ay - R*dx)^2 

乘以了這一點給我對於R二次,但二次的分母(該/ 2A的部分)是

dx^2 + dy^2 - 1 

由於(DX, dy)是一個單位矢量,分母總是0,我得到一個除零誤差。我哪裏錯了?

+0

「我知道A點的角度」?什麼角度?不清楚。 -1。 – peterh

+0

請添加繪圖 - 如果這是將點A連接到中心的線的角度,則沿着該線的兩點之間會有無限的圓形通過 - 在圖像A和B中是點,alpha是角度的可能解釋到A和c - c'是兩個圓心,既滿足所有條件,但描述不同的圓圈http://tinypic.com/r/9lj3ps/8 –

+0

你的意思是線段AB和切線之間的角度在A圈? –

回答

0

該配方對我來說似乎很好。讓擴大表達

R^2 = (Bx - Ax + R dy)^2 + (By - Ay - R dx)^2 

這給出

R^2 = Bx^2 + Ax^2 + R^2 dy^2 + 2 Bx R dy - 2 Ax Bx - 2 Ax R dy 
    + By^2 + Ay^2 + R^2 dx^2 - 2 By R dx - 2 Ay By + 2 Ay R dx 

重新排列

(1 - dx^2 - dy^2) R^2 + 2 (Ax dy - Ay dx - Bx dy + By dx) R + 2 (Ax Bx + Ay By) = 0 

您是在正確的,如果(DX,DY)是一個單位矢量的R^2項消失。這不是一個問題,它只是意味着你有一個線性方程來解決。

2 (Ax dy - Ay dx - Bx dy + By dx) R + 2 (Ax Bx + Ay By) = 0 

這是很容易解決

R = - (Ax Bx + Ay By)/(Ax dy - Ay dx - Bx dy + By dx) 

事情簡單一些,如果你讓U =(U,V)=(BX-AX,由-AY)從A到矢量乙我們的公式變爲

R^2 = (u + R dy)^2 + (v - R dx)^2 
    = u^2 + 2 u dy R + dy^2 R^2 + v^2 - 2 v dx R + dx^2 R^2 

重新排列

(1-dx^2-dy^2) R^2 + 2 (v dx - u dy) R - u^2 - v^2 = 0 

令T =(dx,dy)爲切線,N =(dy,-dx)爲正常。如果他們是單位長度將其簡化

2 (N . U) R - U . U = 0 

R = (U . U)/ 2 (N . U) 
+0

非常感謝。我沒有意識到R^2術語消失,我感到很蠢。如果我把它寫出來,而不是通過使用符號數學工具來節省時間,那麼我可能會意識到。我沒有想到它會簡化這麼多。最終的解決方案非常簡單。這是我寫的一些Matlab代碼來測試它。 p1 = [2 2]; p2 = [5 5]; angle = 20; d = [信號(角度)cosd(角度)]; n = [d(2)-d(1)]; pd = p2-p1; r =(pd * pd')/(2 *(n * pd')); c = p1 + r * [d(2)-d(1)]; 矩形('Position',[cr 2 * r 2 * r],[0,1]),(p1(1)p2(1)],[p1(2)p2(2)]'r。') 'Curvature',[1 1]) 軸等於 – user3767903

+0

我確定有最終公式的幾何解釋。 –

0

假設您指的是AB線與切線之間的角度。 l,在A處的圓圈:

關鍵是繪製AB的垂直平分線和垂直於l到A的直線,找到相交點。這將是你的圈子的中心。

0

我已經從我的理論解決。 圓的斜率等於1的半徑。

因此:slope=(rise^2+run^2)^(1/2)=1, 因此dy^2+dx^2=1^2(dy^2+dx^2)^(1/2)=1