1

2 つの CGPoints、たとえば P1 と P2 が与えられた場合、次のようにします。

  • それらを結ぶ線を見つける
  • その線に沿ってすべての CGPoints を見つける

助言がありますか?


これまでのところ、次の方法でさまざまなポイントを導き出しました。

1) まず、次のように定義された直線の方程式から始めます。

y = m * x + b

2) m を見つけるには:

m = (P2.y - P1.y) / (P2.x - P2.x)

次に、b を見つけるために、直線のクォーテーションを思い出します。これを 2 つのポイント (P1 と P2) のいずれにも適用できます。したがって、次のようになります。

b = y - m*x 

になります:

b = P1.y - m*P1.x (where we have both P1 and m)

この方程式には、P1 と P2 が上下にある (P1.x == P2.x) 場合の期待値があります。この場合、x が変化しない方程式になるため、ポイントの y 部分によって定義される変数は 1 つだけになります。

[引用。このタイプの答えを見つけたり導出したりするための優れたインタラクティブガイドはこちらです.]

4

1 に答える 1

2

少なくともこれは間違っています:

m = (P2.y - P1.y) / (P2.x - P2.x)

そのはず

m = (P2.y - P1.y) / (P2.x - P1.x)

またはそれ以上

   denom = P2.x - P1.x;

   if (denom != 0) {
     m = (P2.y - P1.y) / denom;
   } else {
     //handle special case
     m = 0;
   }

あなたのコメントから、長方形の境界ボックスを使用して線の衝突検出を行いたいことがわかります。だから私は「線と長方形の交差点」を検索します。その結果、交点が得られます。交点があれば、線は外接する長方形にぶつかっています。

于 2013-10-16T16:55:21.783 に答える