2017-07-26 165 views
-3

enter image description here 我需要使用手指的位置繪製第一行。 後來我需要使用手指位置繪製第二條平行線。 我已經做到了。 而主要任務是繪製這些平行線之間的第三條垂直線。 如何繪製第三行?如何在兩條其他平行線之間繪製直線?

+1

那麼,有什麼問題,不是做一些陳述之外? –

+0

這是一個關於(Swift)編程或關於幾何/數學的問題嗎? –

+0

@ElTomato如何繪製平行線之間的垂直線? – kvv

回答

0

如果你有2條平行線,並希望在二者之間畫垂線,您將需要額外的1點。假設這個點位於第一行的中間(稱之爲C)。

此外,假設我們有以下幾點:

L1 // Represents the first line 
L2 // Represents the second line 
L1.start // Represents the line start point CGPoint 
L1.end // Represents the line end point CGPoint 

現在要畫垂直線到第一線L1和這樣做,你將需要得到它的normal這是在2D非常簡單。首先通過減去給定線的起點和終點direction = CGPoint(x: L1.end.x-L1.start.x, y: L1.end.y-L1.start.y)獲得線方向。我們得到正常的,我們只需要翻轉座標和方向的長度將它們劃分:

let length = sqrt(direction.x*direction.x + direction.y*direction.y) 
let normal = CGPoint(x: -direction.y/length, y: direction.x/length) // Yes, normal is (-D.y, D.x) 

,以便在所述起點爲C現在我們只需要找到另一條線路上是C + normal*distanceBetweenLines終點。因此,我們需要

首先應通過點積來獲得最好的兩條線之間的距離......我們需要從兩行的任何一對點(在第一線的一個點,並在另一個之間的矢量第二行)。因此,讓我們

let between = CGPoint(x: L1.start.x-L2.start.x, y: L1.start.y-L2.start.y)

現在我們需要項目這條線正常,點產品,以獲得投影的長度是兩線

let distanceBetweenLines = between.x*normal.x + between.y*normal.y之間的長度。

所以,現在我們擁有所有的點來繪製2條給出線假設線之間的垂直線是平行的:

L3.start = C 
L3.end = CGPoint(x: C.x + normal.x*distanceBetweenLines, y: C.y + normal.y*distanceBetweenLines)