あなたの質問を私が思うように言い換えて、それに答えてください。
ポイントA = (x1, y1)
とが与えられますB = (x2, y2)
。に垂直で、長さが であるZ = (x3, y3)
ような点を見つけたいとします。AZ
AB
BZ
h
A
からへのベクトルB
は ですv = (x2 - x1, y2 - y1)
。そのベクトルに垂直なベクトルを簡単に計算できるのはw = (y2 - y1, x1 - x2)
です。A
が に垂直に交差する線は、実数上の範囲としてAB
で表されます。したがって、から離れた値を選択する必要があります。F(s) = A + s*w = (x1 + s*(y2 - y1), y1 + s*(x1 - x2))
s
s
F(s)
h
B
ピタゴラスの定理から、 から までの長さのF(s)
2乗は、 から までB
の距離の 2 乗に からF(s)
までA
の距離の 2 乗を加えたものにA
なりB
ます。そこから、必要な乱雑な式を取得します。
h**2 = s**2 * ((y2 - y1)**2 + (x1-x2)**2) + ((x1 - x2)**2 + (y1 - y2)**2))
= s**2 * ((x1 - x2)**2 + (y1 - y2)**2)) + ((x1 - x2)**2 + (y1 - y2)**2))
= (s**2 + 1) * ((x1 - x2)**2 + (y1 - y2)**2))
(s**2 + 1) = h**2 / ((x1 - x2)**2 + (y1 - y2)**2))
s**2 = h**2 / ((x1 - x2)**2 + (y1 - y2)**2)) - 1
s = sqrt(h**2 / ((x1 - x2)**2 + (y1 - y2)**2)) - 1)
ここで、その表現 for s
back を に差し込むとF(s) = (x1 + s*(y2 - y1), y1 + s*(x1 - x2))
、ポイントが得られますZ
。もう1つの可能な答えは、反対側の同じ距離です。