簡単にするために、左下隅が原点にあり、正方形の幅が1であると仮定します。
光線は正方形を 2 つの部分に分割します。交点の座標があります。p1
からまでのベクトルの右側にある領域を取得したいp2
:
現在if
、2 点のすべての組み合わせをチェックし、それに応じて面積を計算する 16 のステートメントがあります。ひどいですね。これを行うより賢い方法はありますか?
簡単にするために、左下隅が原点にあり、正方形の幅が1であると仮定します。
光線は正方形を 2 つの部分に分割します。交点の座標があります。p1
からまでのベクトルの右側にある領域を取得したいp2
:
現在if
、2 点のすべての組み合わせをチェックし、それに応じて面積を計算する 16 のステートメントがあります。ひどいですね。これを行うより賢い方法はありますか?
p1とp2の代わりにポイントAとBを呼び出します。慣例に従って、xは右に向かって増加し、yは上に向かって増加すると仮定します。
点Aは、0または1の座標(xまたはy)を持っている必要があります。正方形(実際には2つの点のみ)を回転させてx=0にします。
点Bはx=-1にある可能性があり、その場合、面積は1-(A y + B y)/2です。
または、Bはy = 0、面積= 1+(A y B x)/2にある可能性があります
または、Bはy = 1、面積=(A y -1)B x /2にある可能性があります
このソリューションは、影付きの領域に示されているように、p1とp2が直角三角形を形成することを前提としています。
ベクトルの右側の面積=(w * w)-(0.5 * p1 * p2)ここで、wは正方形の幅、0 <= p1 <= w、0 <= p2<=wです。
たとえば、w = 1、p1 = 0.5、p2 = 0.75の場合、面積=(1 * 1)-(0.5 * 0.5 * 0.75)= 0.8125