ポイントを通る線を描きました - (x1,y1) , (x2,y2)
この線に垂直な同じ長さの別の線を描きたいです。
これについて私を案内してください..
あなたの線を(x1、y1)から(x2、y2)へのベクトルと考えてください。次に、に従ってこのベクトルのx成分とy成分を取得します。
vX = x2-x1
vY = y2-y1
これと同じサイズであるが、平面内でそれに垂直なベクトルには、x成分とy成分があります。
vXP = -(y2-y1)
vYP = x2-x1
ゼロになる2つのベクトルの内積を取ることにより、これらの2つのベクトルが垂直であることを確認できます。これで、同じ長さで最初のベクトルに垂直なベクトルができました。線の始点を決定するだけです。これを(a、b)と呼びます。次に、始点を使用して、線の終点は次の式で与えられます。
(a - (y2-y1), b + (x2-x1))
または、逆方向(まだ垂直)に向けたい場合は、
(a + (y2-y1), b - (x2-x1))
まあ、それは簡単な数学です:
int dx = x2 - x1;
int dy = y2 - y1;
int ox,oy; // Origin of new line
//...
drawLine( ox, oy, ox+dy, oy-dx) // This line will be perpendicular to original one
あなたがしなければならないのは、起源を選択することだけです。たとえば、線を中央で切断する場合は、次のようにします。
ox = x1 + (dx - dy) / 2;
oy = y1 + (dx + dy) / 2;