象限判定
昔、ある線分の始点から終点への角度と別の線分の角度による相対角度より、
象限を計算するロジックをC++で組みました。
色々な式を書き、最終的には以下のようになったのですが、変な方法だと自分でも思う為、
今でももっと良い方法は無かったか考える事が有ります。
[象限判定] 線分1絶対角度(θ1),線分2絶対角度(θ2),原点(0,0)
IF(fabs(θ2-θ1) < 90) || fabs(θ2-(θ1+360)) < 90
|| fabs((θ2+360)-θ1) < 90 || fabs((θ2+360)-(θ1+360)) < 90 || ) {
// 第1象限か第4象限
}
else {
// 第2象限か第3象限
}
ここから更に第1と第4、第2と第3を分けて判定するロジックが有ったはずですが、
忘れてしまいました。思い出したら追記します。
上記の式ですが、絶対角度が350°と10°のような場合でも、象限を判定する為に
絶対値を使った形になっています。
5月 18th, 2015 at 1:22 PM
F513です。
たしかに、ぱっと見で、何をしているのかわからなそうなコードだね。
その前に、何を求めようとしているのか良くわからない・・・
線分1の角度を0度、線分1の始点が原点になるように線分2を回転&移動させるのですな。
そうしたら、線分2だけで、象限判定できるのでソースがわかりやすくなる。
なお、計算速度は別の問題です。
Ito.tkさん、「もっと良い方法は無かったか考える事が有ります。」は素晴らしいですが、考えたことをオープンにするともっといろいろな情報を得ることができると思いますよ。