極座標(つまり、原点からのロー距離とx軸からのシータ角度)で指定された2D線がある場合、線のどちら側に点があるかをどのように判断できますか?具体的には、2つのポイントを取得して、それらがこの線の同じ側にあるか反対側にあるかを判断するにはどうすればよいですか?
ありがとう!
極座標(つまり、原点からのロー距離とx軸からのシータ角度)で指定された2D線がある場合、線のどちら側に点があるかをどのように判断できますか?具体的には、2つのポイントを取得して、それらがこの線の同じ側にあるか反対側にあるかを判断するにはどうすればよいですか?
ありがとう!
そのような線には方程式があります:
-x * cos(theta)+ y * sin(theta)-rho = 0 [1]
点(x0、y0)からこの線までの距離は
Dist = -x0 * cos(theta)+ y0 * sin(theta)-rho [2]
重要なこと:距離の符号は、点が線のどちら側にあるかによって異なります(この点と座標原点が線の異なる側にある場合は正、それ以外の場合は負)。
したがって、必要な2つのポイントについて、[2]式の符号を計算して比較するだけで十分です。
提供された両方のポイントを取得して、シータに対応する角度を計算できますか?
議論のために、2D行が(3,3)で終わると言います。
2Dライン:座標:(3,3)
半径:3 *√2
シータ:0.79ラジアン
ポイント1:
座標:(3,4)
半径:5
シータ:アークサイン(4/5)=0.92ラジアン
ポイント2:
座標:(3,1)
半径:√10
シータ:アークサイン(2 /√10)=0.68ラジアン
ポイント1のシータは2Dラインのシータよりも大きいです。それは1つの明確な側面にあります。ポイント2は2Dラインよりも小さくなります。それは反対側にあります。
お役に立てれば!:)
rho withは線とx軸の交点であり、thetawithは線とx軸の間の角度であると言うことで線が与えられていることを理解しています。
あなたの行の方程式は次のようになります
f(x) = (x-rho)*tan(theta)
ポイント(x0、y0)がその線より上にあるかどうかを判断するには、次のことを確認します。
f(x0) = (x0-rho)*tan(theta) > y0
ラインチェックの下にあるかどうかを確認するには
f(x0) = (x0-rho)*tan(theta) < y0
ただし、theta = 90°、270°の場合、この方法は機能しないことに注意してください。ただし、その場合は、x0がrhoよりも大きいか小さいかを確認するだけで簡単です。