順を追って説明しましょう。
ポイント 1 は (x,y) から始まります。ポイント 2 は (x2, y2) にあります。
それらの間の勾配は m = (y2-y)/(x2-x) です。これは何を教えてくれますか?これは、点 2 から点 1 に移動したい場合、x 方向に 1 単位移動するごとに、y 方向に m 移動する必要があることを示しています。
これで、それらを互いに近づけるアルゴリズムがすでにできました! 適切な速度ではありません。
点 2 を x 方向にどれだけ移動して、y 方向にも正しい量だけ移動した後、対角方向に合計 5 単位移動するかをどのように計算するのでしょうか?
x に 1 単位、y に m 単位を移動すると、d = sqrt(1^2 + m^2) (ピタゴラスの定理) の距離を移動したことになります。
x 方向に数 X 移動したいので、y 方向に Xm 移動した後、5 単位移動します。簡単: 移動距離は d = sqrt(X^2 + (Xm)^2) です。単純に d を 5 に設定します。
5 = sqrt(X^2 + (Xm)^2)
25 = X^2 + (Xm)^2 = (m^2 + 1)*X^2
X^2 = 25/(m^2 + 1)
X = sqrt(25/(m^2 + 1))
さて、mが何であるかはすでにわかっています。したがって、プラグインして X を解くだけです。ただし、X は常に正であることに注意してください。これは、方程式を 2 乗したためです。したがって、X の正しい符号を把握する必要があります (ポイント 1 がポイント 2 の左または右にあるかどうかを確認するだけです)。
それができたら、ポイント 2 が X 単位を左または右に移動し、mX を上または下に移動する必要があることがわかります。