Module: ジオメトリ


Problem

3 /7


Lazy Vasya と Half-Life 3 のリリース

Theory Click to read/hide

ラインは 5 つの異なる方法で定義できます:
1) 方程式\( y = kx + b\);学校で教えられる最初の直線の方程式は、手動で作成したり計算したりするには便利ですが、プログラムで使用するのは非常に不便です。
2) 2 つの点を上に置きます - 実際には非常に便利ですが、適用範囲はかなり狭いです。
3) 直線と点の法線ベクトルによる - 直線に対する法線ベクトルはそれに垂直なベクトルです。これについては以下で詳しく説明します。
4) 直線と点の方向ベクトルに沿って - 方向ベクトルは直線上にあり、法線ベクトルに垂直なベクトルです (まあ、論理的です)。これについては以下で説明します。
5) 直線の方程式 \(ax + by + c = 0\);古典的な直線の方程式であり、ほとんどの場合、最も普遍的です。さて、彼について。

このような直線の法線ベクトルの座標: \((a; b)\) または \( (-a; -b)\)

このような直線の方向ベクトルの座標: \((-b; a)\) または \ ((b; -a)\).

次の場合、

線は平行です
\({a1 \over b1} = {a2 \over b2}\).

点から線までの距離 (注意: 距離は負の値になる可能性があります。すべては点が線のどちら側にあるかによって異なります):
\({(a \cdot x_1 + b \cdot y_1 + c) \over \sqrt{a^2 + b^2}}\),
ここで、x1y1 は点の座標です。

法線ベクトルと点、または方向ベクトルと点から線を構築することは、結局 2 つの点から線を構築することになるので、それを見てみましょう (これは最も一般的に使用される方法でもあります) ).< /p>

If x1y1x 2y2 - それぞれ最初と 2 番目の点の座標、その後

\(a = y_1 - y_2\)

\(b = x_2 - x_1\)

\(c = x_1 \cdot y_2 - x_2 \cdot y_1\)

Problem

奇跡が起こりました!世界中の何百万人もの人々が夢見た待望のHalf-Life 3がついにリリースされました!ヴァシャも伝説的なシリーズの続きを楽しみにしていて、この傑作を買うのに十分な量を確保するために、一か月間学校のカフェテリアでさえ食事をしませんでした。彼の前に立ちはだかる唯一の問題は、膨大な代数の宿題です。授業で、彼は直線という新しいトピックを学習しました。そして今度は、2 点を通る直線を構築するという N 個ものタスクを行う必要があります。しかし、あなたは本当にプレイしたいので、翌日、そこにある素晴らしいグラフィックを友達に伝えます...そこで、彼は友達であるあなたに手伝ってくれるように頼んだのです。
 
入力
最初の行には、最初の点の座標 (X1Y1)、( \(-50 <= X_1, Y_1 <= 50\)).
2 行目には 2 番目の点の座標 (X2Y2)、( \(-50 <= X_2, Y_2 <= 50\)).
 
出力
単一行に 3 つの整数を連続して出力します: 直線の方程式の係数 abc
 
注: タスクが機能しないが、すべてが正しいと確信している場合は、すべての係数に -1 を乗算してみてください。このタスクは、講義/理論から得た公式を使用していることを前提としています。

 

<頭> <本体>
# 入力 出力
1
-1 -1
1 1
-2 2 0