2 つのポイントがA (x1,y1)
あり、B (x2,y2)
それはプログラムへの入力として与えられます。C
直線上にありAB
、10
点 A から離れたところにある 3 番目の点を見つけなければなりません。
直線の傾きは簡単に取得できますが、直線の完全な方程式は得られません。x
完全な方程式が得られたとしても、この方程式を使用して A から離れた点をどのように見つけることができるかわかりません。
これにアプローチする方法について何か提案はありますか?
各線には常に 2 つの点があります。
A
(B
座標を減算します)A
て取得しますC
の場合A==B
、行は定義されておらず、このアルゴリズムはゼロによる除算を引き起こすことに注意してください。最初に等しいかどうかのテストを追加することができます。
ラインの角度のサインまたはコサイン (10 倍) を使用して、特定のポイントから 10 の距離であるポイントの水平距離または垂直距離を取得できます。近道は、水平距離または垂直距離をポイント間の直線距離で割った値を使用して、サインまたはコサインを取得することです。
画像から、指定したポイントがx1、y1およびx2、y2であることがわかります。点x1、y1から距離'R'にある中間点を見つける必要があります。
あなたがする必要があるのは、を使用してθを見つけることです
Tan θ = (y2-y1)/(x2-x1)
次に、中間点を(R *cosθ)、(R *Sinθ)として取得できます。
これは正の傾きを想定して描いています。
同様の行に進むと、他の特殊なケースの解決策を探すことができます。
私。横線ii。縦線iii。負の勾配
それが明らかになることを願っています。
次のようなベクトルを使用して実行できます。
D = B と A の差とする (D = B - A)
次に、線上の任意の点を次の式で表すことができます。
point = A + Dt
ここで、t は実数です。
したがって、別のポイントを取得するには、t に任意の値を差し込むだけです。たとえば、t == 1 とすると、上記の式は点 = B になります。t = 0 とすると、点 = A になります。したがって、これを使用して A と B の間の点を見つけることができることがわかります。 t の範囲を 0 から 1 にするだけです。さらに、t > 1 とすると、B を超える点が見つかります。