3

この画像を見てください(申し訳ありませんが、私の作品のマシンにペイントブラシがあります):

ここに画像の説明を入力

メジャーの内側に 1 つのメジャーと 1 つのマイナーの2 つの黒い四角形が表示されます。divそれらがsであると考えてください。赤い点はそれぞれの中心点です (上と左)。

緑色の四角形は、主要な反応角を対称的に取り囲む物理的な (画面上に描画されない) 境界であり、JavaScript によって計算されます。

青い線は、これら 2 つの赤い点の対角線分です。

JavaScriptで計算された上記のオブジェクトのすべての位置がすでにあります。

黄色の点は私が取得したいポイントです。赤い点の対角線上にある必要がありますが、境界線 (緑の線) にある必要があります。外にも内にもありません。

私は自分のアルゴリズムでこのjsFiddleを作成しました。ご覧のとおり、黄色の点は緑色の境界の外側にあります。対角セグメント内にあり、緑色の線の制限を超えている必要があります。

このアルゴリズムの助けはありますか?

4

1 に答える 1

7

勾配の詳細: https://www.khanacademy.org/math/algebra/linear-equations-and-inequalitie/slope-and-intercepts/v/slope-of-a-line

点と勾配の式を使用して、線上の点を見つけることができます (緑の一番上の線と交差する点を見つけるため):

(x1, y1) - one of the red points
(x2, y2) - another of the red points
(x, y) - the green point
slope = (y2 - y1) / (x2 - x1) 
y - y1 = slope * (x - x1)

編集: Imre Kerr に感謝:

これで、点の y (線が上の緑の線と交差する場合) または点の x (左の緑の線と交差する場合) のいずれかが既にあります。これから、他の座標を見つけることができます。一番上の行と交差していると仮定したサンプル ( http://jsfiddle.net/BGSacho/TDH7q/6/ )。

于 2013-05-24T19:44:05.393 に答える