Module: ジオメトリ


Problem

5 /7


ピックアップマスター

Theory Click to read/hide

交差点

の交点

a1, b1, c1 - 最初の行の係数、
a2, b2, c2 - 2 行目の係数
x, y - 交点。

\(x = {-(c1 \cdot b2 - c2 \cdot b1) \over (a1 \cdot b2 - a2 \cdot b1)} \\ y = {-(a1 \ cdot c2 - a2 \cdot c1) \over (a1 \cdot b2 - a2 \cdot b1)} \)

線の交点 (平行ではない) をチェックし、交点を見つける方法は既に知っています。

では、セグメントでこれを行う方法を学びましょう. 

まず、交差を簡単にチェックする方法を学びましょう。

セグメントが交差する一方の端が他方の反対側にある場合、およびその逆の場合 (これは外積によって簡単に確認できます)。  これが機能しない唯一のケース - セグメントは 1 つの直線上にあります。 そのためには、いわゆる交点をチェックする必要があります。 バウンディング ボックス (セグメントのバウンディング ボックス) - XY 上のセグメントの射影の交点を確認します。

軸。

セグメントの交点をチェックする方法がわかったので、交点のポイント (またはセグメント) を見つける方法を学びましょう:
- 交差しない場合、そのような点が存在しないことは明らかです。
- それ以外の場合は、これらのセグメントが存在する直線を作成します。

それらが平行である場合、セグメントは同じ線上にあり、セグメントの左境界線の最大値から右境界線の最小値までの交差セグメントを見つける必要があります (点が他の点よりも小さい場合、左にある場合、等しい場合は X-座標 - 低い場合)。

線が平行でない場合は、交点を見つけて返します。

Problem

ヴェンセスラフは最近新しい本を読みました。今度は公園で自分の知識を試したいと考えています。わかりやすくするために、公園を平面上のセグメントである一連の小道として想像してみましょう。ヴァーツラフはすでにこの公園を歩いたことがあり、どの女の子がどの道を歩いているかを知っています。問題は、ヴァーツラフが非常に怠け者で、一本の道しか歩まないことです。また、彼は旅の途中でどんな女の子に出会えるか調べるのが面倒なので、親友のあなたにこの難しい問題を手伝ってくれるように頼みました。
 
入力
最初の行には、パスの終端の座標 (X1Y1) が含まれます。そして ( X2, Y2)、それに沿ってヴァーツラフは歩きます (\(- 20 <= X1, Y1, X2, Y2 <= 20\))。
2 行目には、整数 N が含まれています。これは、少女たちが歩く道の数 (\(0 <= N <= 5\)) < /span>).
次の N 行に、女の子が歩く道の終点の座標を入力します (Xi1, Yi1) および (Xi2, Yi2) )、i 番目の道を歩く i 番目の女の子による (\(-20 <= X_{i1}, Y_ {i1}、X_{i2 }、Y_{i2} <= 20\))
 
出力
最初の行には、数値 M を出力します。これは、そのパスがヴァーツラフのパスと交差する女の子の数です (パスに触れることは交差とみなされます)。
2 行目には M の数字を出力します。これは、主人公が出会う女の子の数です。女の子には 1 から番号が付けられます。
 
<頭> <本体>

 

# 入力 出力
1
0 0 2 2
1
0 2 2 0
1
1