平行線我計算是從原始線Ñ垂直距離線(2組座標)(紫和綠 - 藍線)。 (原線是粉紅色的)(距離是綠色箭頭)
如何獲得四個新點的座標?
我有2個原始點的座標和他們的角度。 (粉紅線)
我需要它的工作,如果行垂直,或任何其他方向。
現在我試圖計算它: 1.獲得垂直於兩個老點的新點n距離 2.找到圓與我定義的新線相交的位置。
我覺得有一個更簡單的方法。
平行線我計算是從原始線Ñ垂直距離線(2組座標)(紫和綠 - 藍線)。 (原線是粉紅色的)(距離是綠色箭頭)
如何獲得四個新點的座標?
我有2個原始點的座標和他們的角度。 (粉紅線)
我需要它的工作,如果行垂直,或任何其他方向。
現在我試圖計算它: 1.獲得垂直於兩個老點的新點n距離 2.找到圓與我定義的新線相交的位置。
我覺得有一個更簡單的方法。
類似於@ 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重用字母A
,B
和C
但它們在每種情況下不同):
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
讓我們圓半徑爲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}是相交與圈子。
這是一種編程或數學的問題嗎? – ja72