質問: 単位円上に点a(cosθ1,sinθ1)と点b(cosθ2,sinθ2 単位円上に点a(cosθ1,sinθ1)と点b(cosθ2,sinθ2)があり、円の外に点d(rcosθ3,rsinθ3)があります。 原点をoとして、線分odと単位円の交点c(cosθ3,sinθ3)が、次のどちらにあるかを知りたいのです。 ・点aから円弧に沿って時計回りに点bへ向かう途中 ・点aから円弧に沿って反時計回りに点bへ向かう途中 プログラムを作っていて、上記のような判別をしなくてはいけなくなりました。 プログラムの都合上、θ1やθ2は-π<θ1≦πや-π<θ2≦πを満たしているとは限りません。 (-2π<θ1≦2πや-2π<θ2≦2πくらいに収まっているとは思いますが...) なるべくスマートな判別方法をお教えください。 a,b,cが一致することはないものとして結構です。
回答: a(cosθ1,sinθ1),b(cosθ2,sinθ2),c(cosθ3,sinθ3) 実数xに対して int[x]=max{n|nは整数,n≦x} θ_2=θ2-θ1-2π*int[(θ2-θ1)/(2π)] θ_3=θ3-θ1-2π*int[(θ3-θ1)/(2π)] とすると、c は θ_2<θ_3のとき 点aから円弧に沿って時計回りに点bへ向かう途中 θ_2>θ_3のとき 点aから円弧に沿って反時計回りに点bへ向かう途中