2016-08-13 123 views
2

enter image description here計算在一個圓圈

平行線我計算是從原始線Ñ垂直距離線(2組座標)(紫和綠 - 藍線)。 (原線是粉紅色的)(距離是綠色箭頭)

如何獲得四個新點的座標?

我有2個原始點的座標和他們的角度。 (粉紅線)

我需要它的工作,如果行垂直,或任何其他方向。

現在我試圖計算它: 1.獲得垂直於兩個老點的新點n距離 2.找到圓與我定義的新線相交的位置。

我覺得有一個更簡單的方法。

+0

這是一種編程或數學的問題嗎? – ja72

回答

1

類似於@ MBO的回答,讓我們假設,該中心是(0,0)和您最初的兩點是:

P0 = (x0, y0) and P1 = (x1, y1) 

上線P0P1的點的形式:

(x, y) = c(x1 - x0, y1 - y0) + (x0, y0) 

爲一些常數c

(u, v)是垂直於線P0P1

(u, v) = (y1 - y0, x1 - x0)/sqrt((x1 - x0)^2 + (y1 - y0)^2) 

平行於P0P1上的任何線的點的形式爲:

(x, y) = c(x1 - x0, y1 - y0) + (x0, y0) +/- (u, v)* n   {eq 1} 

其中n是線之間的垂直距離和c是一個常數。

這裏剩下的是找到c的值,使得(x,y)在圓上。但這些可以通過求解以下兩個二次公式計算:

(c(x1 - x0) + x0 +/- u*n)^2 + (c(y1 - y0) + y0 +/- v*n)^2 = r^2 

其中r爲半徑。請注意,這些方程可以寫成:

c^2(x1 - x0)^2 + 2c(x1 - x0)*(x0 +/- u*n) + (x0 +/- u*n)^2 
+ c^2(y1 - y0)^2 + 2c(y1 - y0)*(y0 +/- v*n) + (y0 +/- v*n)^2 = r^2 

A*c^2 + B*c + D = 0 

其中

A = (x1 - x0)^2 + (y1 - y0)^2 
B = 2(x1 - x0)*(x0 +/- u*n) + 2(y1 - y0)*(y0 +/- v*n) 
D = (x0 +/- u*n)^2 + (y0 +/- v*n)^2 - r^2 

這實際上是兩個二次方程之一的+/-跡象每個選擇。這兩個方程的4個解決方案會給你的c四個值從中你會用得到四點{EQ 1}


UPDATE

這裏有兩個二次方程(我「VE重用字母ABC但它們在每種情況下不同):

A*c^2 + B*c + D = 0           {eq 2} 

其中

A = (x1 - x0)^2 + (y1 - y0)^2 
B = 2(x1 - x0)*(x0 + u*n) + 2(y1 - y0)*(y0 + v*n) 
D = (x0 + u*n)^2 + (y0 + v*n)^2 - r^2 

A*c^2 + B*c + D = 0           {eq 3} 

其中

A = (x1 - x0)^2 + (y1 - y0)^2 
B = 2(x1 - x0)*(x0 - u*n) + 2(y1 - y0)*(y0 - v*n) 
D = (x0 - u*n)^2 + (y0 - v*n)^2 - r^2 
+0

感謝您的詳盡解答。就你的答案的格式而言:is(x,y)是指每個x值對應於逗號前的第一個東西?另外,在你的方程中,c和C有什麼區別?另外,什麼是相當於處理+/-的代碼?是否有條件檢查n> = 0? – awongh

+0

另外,您的第二個到最後一個等式中的D是什麼? – awongh

+0

請注意,我修改了最後一行,以便現在它定義了'D',即二次方程中的獨立項'A * c^2 + B * c + D = 0'。 –

0

讓我們圓半徑爲R,圓心是(0,0)(如果沒有,轉移所有的座標,以簡化數學),第一個和絃到底是P0=(x0, y0),第二絃到底是P1=(x1,y1),未知的新的和絃到底是P=(x,y)。 和絃長度L是

L = Sqrt((x1-x0)^2 + (y1-y0)^2) 

和絃結束趴在圓,所以

x^2 + y^2 = R^2 {1} 

倍增三角形PP0P1的區域可能被表示爲底和高的產物和通過叉積的絕對值兩個邊緣向量,所以

+/- L * n = (x-x0)*(y-y1)-(x-x1)*(y-y0) = {2} 
     x*y - x*y1 - x0*y + x0*y1 - x*y + x*y0 + x1*y - x1*y0 = 
     x * (y0-y1) + y * (x1-x0) + (x0*y1-x1*y0) 

求解方程{1}和{2}的系統,找到新和絃結束的座標。 (最多4分 - 兩個用於+L*n情況下,兩個用於-L*n情況)

我不能聲稱雖然,這種方法是簡單的 - {2}基本上是平行線的方程,並且取代在{1}是相交與圈子。