- ベストアンサー
船舶上での真の風向・風速計算のベクトル合成2
- 船舶上での真の風向・風速を計算する方法を紹介します。
- 船首方向と移動方向の角度差が大きい場合でも正確な計算が可能です。
- EXELを使用してマクロ記述することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
前回の質問を見ましたが、単純に見かけの風向αに、船首方向と移動方向の差を足すのではだめなのですか?
その他の回答 (1)
- myuki1232
- ベストアンサー率57% (97/170)
難しく考え過ぎです。一度整理しましょう(前の回答とは記号を変えます)。 入力(観測量):見かけの風向(船首方向基準)β、船首方向(子午線基準)γ、移動方向(子午線基準)⊿ 出力(求めたい量):見かけの風向(移動方向基準)α としたとき、 α = β - γ + ⊿ です。 この時、「この計算の中で角度の範囲がいくつかを考える必要はありません」。 なぜなら、前回の質問の回答の計算式を使っているとすれば、α は cos, sin の引数としてしか使っていないからです(細かく言うと radian を通していますが)。 また仮に、別の用途に使うとして角度の範囲を考える必要があったとしても、やはり計算の途中で考える必要はありません。 必要になった時にまとめて、 α' = α mod 360 [もし必要なら - 180 ] のように求めればよいです。 1行の式に詰め込まないようにしましょう。
お礼
α = β - γ + ⊿ではなく α = β +γ - ⊿のようです。 補足にも書きましたが、段階別に関数を記述して代入しているため、modを使わせていただきましたが最終だけでなく、途中にも入れています。 結局、以下の計算式になりました。 C1 船首方向 C2移動方向 C3船の速力(kt) C4船首方向からの風向 C5見かけの風速とする。式中の「;」はOPENOFFICEのためです。 真の風向=MOD((DEGREES(ATAN2(C5*COS(RADIANS((MOD(C1+C4-C2;360))))-C3*1852/3600;C5*SIN(RADIANS((MOD(C1+C4-C2;360))))))+IF(C5*SIN(RADIANS((MOD(C1+C4-C2;360))))<0;360;0))+C2;360) 今のところ、問題なく計算できているようです。どこか穴があるようでしたら再度ご指摘お願いします。
補足
MODを使えばよかったのですね、思いつきませんでした。 段階ごとに検証していたのでそのつど補正していました。 タブレットでの実行ですので できるだけ簡素にするために逆に1行に詰め込んでいる次第です。 どうやら組み上がった感がありますので、再検証後にお礼を入れさせて頂きたいと思います。
お礼
まだ計算結果が正しいか確証はないのですがこれ以上アドバイスなさそうですのでこれにて〆させて頂きます。ありがとうございました。
補足
問題点の記述が足りなかったようです。条件のつけ方で実際の観測に沿って説明したいと思います。 1.質問に書いたように 船首方向からの風向を観測します。 右半円が「+」、左半円が「-」です。船尾方向で+180度=-180度です。 例)船首方向20度、左60度からの風なら20+(-60)=-40、ただし負数になったら+360として -40+360=320度 (360度以上では-360度の条件式も必要か?) 2.レーダーやGPSから移動方向を読み取り、船首方向との差を求めます。 例)移動方向40度として 差は40-20=20度 3.移動方向から見た風向を求めます。 320-20=300度 ここでも負数では+360とする条件式が必要? まとめると 1.船首方向+船首からの風向 2.移動方向-船首方向 3.1.-2.=(船首方向+船首からの風向)-(移動方向-船首方向) =船首方向+船首からの風向-移動方向+船首方向 =2*船首方向+船首からの風向-移動方向(ただし-360以下なら+720・0未満で+360・360以上で-360の条件) で正しいか、条件は式の途中に入れなければいけないのか、他に必要な条件が足りないかと言うことです。