2017-07-26 33 views
-3

enter image description here 私は指の位置を使って最初の線を描く必要があります。 後で、指の位置を使って2番目の平行線を描く必要があります。 私はすでにそれをしています。 そして、これらの平行線の間に3番目の垂線を描くことが主な仕事です。 3行目はどのように描画できますか?2本の平行線の間に直線の垂線を描く方法は?

+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に垂直線を描画するために、あなたが2Dで非常に簡単ですそのnormalを取得する必要がありますそうすることを望みます。最初に与えられた行の開始点と終了点を引いて行の方向を取得します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ある他のライン上のエンドポイントを見つける必要があると述べたように。だから、ドットプロダクトを通して最も良く受け取られるべき2つのラインの間の距離が必要です。

まず、2つのラインから1対のポイントの間のベクトルが必要です。二行目)。それでは、今、私たちは二行

let distanceBetweenLines = between.x*normal.x + between.y*normal.y間の長さの突起の長さを取得するには、ドット積の通常にこのラインを投影する必要がある

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

てみましょう。

はだから今、私たちはラインを想定した2つの与えられたライン間の垂直線を描画するすべてのポイントが平行している:

L3.start = C 
L3.end = CGPoint(x: C.x + normal.x*distanceBetweenLines, y: C.y + normal.y*distanceBetweenLines) 
関連する問題