見かけの風から真風
見かけの風18ノットが船首から45°、艇速6ノット、針路90°なら、真風は14.396699ノットで152.139272°から吹いています。計器の確認や、艇の動きが風をどう変えるかの説明に使えます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 見かけの風速
- 18
- 見かけの風向角 (°)
- 45
- 船速
- 6
- 針路 (°)
- 90
- 真風速
- 14.396699
- 真風角 (°)
- 62.139272
- 符号付き真風向角 (°)
- 62.139272
- 真風の来る方位 (°)
- 152.139272
セーラーと計器が見るのはデッキで感じる見かけの風であり、水上の気象上の真風ではありません。見かけの風は真風と船体自身の運動のベクトル和なので、船体が進むとマストヘッドセンサの数値は予報からずれます。本ツールは見かけの風速・船首基準の見かけの風角・船速・針路から船体速度ベクトルを差し引き、真風速、船上の真風角、真方位での真風の来向を返します。
動く船上で見かけの風が真風でない理由
見かけの風はマストヘッドの風速計と風向計が示す、船に対する相対気流です。真風は水または地面に対する風であり、予報・ルーティングソフト・レース文書が用いる場です。ベクトル的には、船に対する空気速度は水に対する空気速度から水に対する船速を引いたものです。
整理すると、同じ座標系と一貫した来向/吹き向きの規約で表せば、真風は見かけの風から船体運動を引いたものになります。風上帆走では船が風に突っ込むため見かけの風は真風より強く前寄りになり、追い風では船速が順風に加わり見かけの風は弱く後ろ寄りになります。この差を無視するとポーラが狂って見え、セールトリムが偏り、レイラインがずれます。
本計算機はまず船体座標系で完結します。前後残差は見かけの風速に見かけの風角の余弦を掛けて船速を引いたもの、左右残差は見かけの風速に角の正弦を掛けたもの、真風速は両残差の斜辺、船首からの真風角は左右残差を前後残差で割った二引数の逆正接です。針路を加えると北から時計回りの気象上の真風来向が得られます。
真風速が実質ゼロのとき方位は不定で、端点は atan2 のノイズ付き特異点ではなく相対角ゼロを返します。
真風の計算が役立つ場面
外洋・沿岸のレーサーは、船速校正やマストツイストが疑わしいとき、計器プロセッサを第二の解析源と照合するために見かけの風から真風を計算します。指導スキッパーとセーリングスクールは、クローズリーチで船速が5ノット変わると真風角が数度動くことを示し、ポーラや VMG 目標がマスト表示の数値ではなく真風を指すという直感を育てます。
気象ルーターとログ配管は記録した AWS・AWA・BSP・針路を TWS と true-from に変換し、単一の独自ブラックボックスに頼らずアーカイブ航跡を GRIB 予報と比較できます。範囲外方位や負の速度を含む検証失敗は残高を消費しません。
活用例
レース計器の照合
記録した AWS・AWA・船速・針路から TWS と真風を再計算し、第二の解析源に対してマストヘッド校正を検証します。
セーリングスクールでの実演
風上で船速が見かけの風を強め前へ寄せる様子を示し、学習者がデッキの感触だけでなく真風とポーラを結びつけるようにします。
航跡ログの補強
NMEA 風の見かけの風と針路ストリームを真風速と気象来向へ変換し、ルーティングと予報比較に使います。
よくある質問
AWA の規約は何ですか?
0は真正面、90は右舷正横、180は真後ろ、270は左舷正横です。0–360(両端含む)の外の角は範囲外として拒否されます。
見かけの風と真風の違いは何ですか?
見かけの風は甲板で感じ、マストトップの風速計が示す風です。真風は水面上の風で、予報や航路計画に使われます。両者を分けているのは艇自身の動きです。
風上に向かうと見かけの風が強くなるのはなぜですか?
クローズホールドでは艇が風に向かって進むため、艇速が体感の風に加わり、風向きも前寄りになります。ランニングでは艇が風と同じ向きに進むので、見かけの風は弱く後ろ寄りになります。
風速と艇速にはどの単位を使えますか?
ノット、メートル毎秒、マイル毎時のどれでも使えますが、風速と艇速は同じ単位にそろえてください。換算は行わないため、真風速も同じ単位で表示されます。
針路は結果にどう影響しますか?
針路を加えることで、船首から測った真風の角度が方位に変わります。つまり、風がどの方角から吹くかを北から時計回りの真方位で示します。針路がなければ艇に対する角度しか分かりません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/earth/true-wind-from-apparent \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"apparent_wind_speed":18,"apparent_wind_angle_deg":45,"boat_speed":6,"heading_deg":90}'const res = await fetch("https://api.kit.forhosting.com/earth/true-wind-from-apparent", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"apparent_wind_speed": 18,
"apparent_wind_angle_deg": 45,
"boat_speed": 6,
"heading_deg": 90
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/earth/true-wind-from-apparent",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"apparent_wind_speed": 18,
"apparent_wind_angle_deg": 45,
"boat_speed": 6,
"heading_deg": 90
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/earth/true-wind-from-apparent", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"apparent_wind_speed":18,"apparent_wind_angle_deg":45,"boat_speed":6,"heading_deg":90}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"apparent_wind_speed":18,"apparent_wind_angle_deg":45,"boat_speed":6,"heading_deg":90}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/earth/true-wind-from-apparent", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"apparent_wind_speed": 18,
"apparent_wind_angle_deg": 45,
"boat_speed": 6,
"heading_deg": 90
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "earth.true_wind_from_apparent",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
0から360度の外の無効な方位は黙って折り返さず invalid_input で失敗します。
入力契約・方位・単位・応答フィールド
速度はノット・メートル毎秒・マイル毎時のいずれでも構いません。例:AWS 18・AWA 45度・船速 6・針路 90度では、見かけ角より前寄りの弱めの真風速と、針路適用後の北東寄り true-from が得られます。必須の有限数4つを含む JSON 本体を POST してください。apparent_wind_speed は測定した AWS で非負、boat_speed は同じ単位の対水または対地速度でやはり非負です。ソルバは単位を換算しないため、出力の true_wind_speed は送信した単位のままです。apparent_wind_angle_deg は船首基準の AWA で、0は真正面、90は右舷正横、180は真後ろ、270は左舷正横です。heading_deg は真方位の船体針路です。両方位は閉区間 [0, 360] に入る必要があり、範囲外は明示的な out-of-range メッセージ付きの invalid_input となり、計器パイプラインが壊れた NMEA を黙って受け付けません。各フィールドは aws・awa・bsp・hdg などの別名を受け付けます。
見かけの風から真風を求める API が効く場面
実装は純粋な parse ティア A のため、成功コールは公開の基本料金 $0.002 のみで、モデルトークンも外向きネットワークも使いません。リクエストを小さく保ち、丸めフィールドをテストに固定すれば、自前の航法スタックを立てずにレースツール・教育・エッジワーカー向けの再現可能な真風が得られます。
技術的な質問
見かけの風を真風に変換するには?
同じ単位の非負の apparent_wind_speed と boat_speed、および [0, 360] の apparent_wind_angle_deg と heading_deg を送ってください。API は true_wind_speed、船相対の true_wind_angle_deg、絶対の true_wind_from_deg を返します。
どの速度単位を使うべきですか?
一貫した単位なら何でも構いません(ノット、m/s、mph)。ソルバは単位を換算せず、true_wind_speed は入力と同じ単位で返ります。
方位が範囲外の場合はどうなりますか?
heading_deg または apparent_wind_angle_deg が [0, 360] の外だと invalid_input と範囲外メッセージで失敗します。無効入力は課金されません。
見かけの風から真風の計算の料金は?
ブラウザツールは無料です。API は成功コールごとに前払い KIT 残高から $0.002 を使用し、無効入力は課金されません。