2016-10-10 60 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