2016-10-10 97 views
-1

我有一條由兩點(A和B)表示的線和另一個不屬於此線的點(C)。如何獲得包含給定點(C)的平行線的起點和終點?獲取一條平行線

編輯

我有對圖片代表眼睛的線迅速類。

var eyesLine = Line(start: rightEye, end: leftEye) 

where rightEye and leftEye are CGPoint instances;

我想獲得代表嘴巴的線。從CIDetector我收到口中心。假設,那個角度和眼睛是一樣的,我想得到一條線,與眼睛平行。

+0

您是否嘗試過某些東西? – RCaetano

+0

我不確定,如果我理解你的問題。我嘗試過什麼? –

+1

'D = C + B - A' – Sneftel

回答

0

線方程爲y = mx + b。所以如果你想要一條平行線,你應該有一條具有相同斜率的線(m),但考慮到你需要的點(C)。

下面的公式也是如此:m = (y_B - y_A)/(x_B - x_A)

所以基本上你需要解決您的點下面的公式:

b = y_C - ((y_B - y_A)/(x_B - x_A)) * x_C

然後你只需要計算另一個y您所選擇的座標通過改變x的值(因爲C已經是新線的一個點):

y_D = ((y_B - y_A)/(x_B - x_A)) * x_D + (y_C - ((y_B - y_A)/(x_B - x_A)) * x_C)

爲了簡化甚至更多你的任務,你可以假設x_D = 0(例如),然後你將不得不只計算:

y_D = y_C - ((y_B - y_A)/(x_B - x_A)) * x_C

你的最後一站,將有(x_C, y_C)(0, y_D)座標。

注:

在腳本的開始,你也應該檢查是否x_A = x_B。如果這是真的,那麼您的最終點將具有(x_C, y_C)(x_C, y_D)座標,其中y_D可以是除y_C之外的任何值。

HTH;)

+0

如果行是垂直的?學校線方程並不完全適用於計算機幾何學。 – MBo

+0

添加了例外@MBo;) – RCaetano