質問: 船舶上での真の風向・風速計算のベクトル合成について 走っている船上で観測した風向風速から、正しい風向風速を算出する場合ベクトル合成をする必要がありますが、風速はうまく計算できるのですが風向が作図して出した値になりません。 計算結果が負数になったり、360度表示する必要あるのですが三角関数で90度を超える計算について理解できないのですがどのように考えればよいでしょうか。 真の風向は、船の走っている方向を基準にして右回りに角度を取った場合 真風向をθ、見かけの風速をr、見かけの風向をα、船の速度をsとして以下の式で計算できるそうです。 tanθ=(rsinα)/(rcosα-s) http://oacis.lib.kaiyodai.ac.jp/dspace/bitstream/123456789/351/1/an00161244-54-23.pdf より引用 これをexelの関数で記述すると θ=degrees(atan(r*sin(radians(α))/(r*cos(radians(α))-s))) のようになると思うのですが間違っているでしょうか? また、どういう条件式を追加したら基準方向に対して360度計算できますか。
回答: そういう式でいいんだけれどatanを使うので答えは-90度から90度の間にしかなりません。 0度から360度で表示させたいのなら,分子と分母の正負によって場合わけをする必要がある。 atan2を使ったほうが場合わけが少なくなるのでお勧めです。 θ=degrees(atan2((r*cos(radians(α))-s),r*sin(radians(α)))) + if(r*sin(radians(α))<0,360,0)