方位角を0度以上360度未満に正規化
負の方位角、1回転を超える角度、または既に一般的な範囲にある方位角を、0度以上360度未満の一貫した値へ変換します。表す方向を変えずに、360度の完全な回転分を差し引きます。航法、測量、地図、ロボット工学、表計算などで角度の規則が混在している場合に便利です。有限の度数を1つ入力すると、元の数値と正規化後の値を返します。外部情報を参照しない決定的な計算です。
無料で実行
正規化する範囲について
方位角は円周上の方向を表すため、360度の整数倍だけ異なる角度はすべて同じ方向を示します。たとえば、10度、370度、-350度は同じ向きです。正規化では、この無数の同値な角度から標準的な値を1つ選びます。本機能が使う範囲は0度を含み、360度を含まない半開区間です。そのため北は360度ではなく0度となり、東、南、西はそれぞれ90度、180度、270度です。この規則により、境界の方向が2つの値を持つことを防げます。処理は方向を回転、丸め、再解釈するものではありません。値が範囲内に入るまで完全な回転分だけを加減します。小数部も保持されるため、721.25度は1.25度になります。
角度の入力と結果の確認
度で表した有限の数値を1つ入力してください。0度以上360度未満の値、負の値、複数回転を含む正負の値を指定できます。範囲内の値はそのまま返されますが、負のゼロは通常のゼロになります。725.5度から2回転を除くと5.5度になり、-10度に1回転を加えると350度になります。実装は同等の剰余を直接求めるため、回転数が増えても処理時間は増えません。利用前に、入力元が度を使い、想定する方位角の規則に従っていることをご確認ください。ラジアンは変換されず、東を起点に反時計回りで測る方式なども自動判別できません。未入力、非数、無限値、NaNは誤解を招く結果を防ぐため拒否されます。
正規化した方位角の安全な利用
正規化した値は比較、保存、並べ替え、表示、後続計算に便利ですが、変更するのは数値の折り返しだけです。磁北から真北への変換、偏角やグリッド収束角の補正、経路計算、座標参照系の推定は行いません。必要な情報は別途保持してください。境界付近の比較にも注意が必要です。359度と1度の差は実際には2度ですが、通常の減算では358になります。両方を正規化した後、円周上の差を求める式をご使用ください。追跡可能性が必要な自動処理では、元の値も保存すると監査しやすくなります。APIは1回につき1項目を処理し、料金は$0.002です。ネットワーク、日付、乱数、更新される表を使わないため、同じ有限入力には常に同じ結果を返します。表示用の丸めは正規化後に測定精度に合わせて行ってください。
活用例
航法データの整理
車両、船舶、航空機の記録を保存・比較する前に、負値や複数回転の方位角を統一します。
ロボット方位の調整
累積した回転角を、表示画面や制御境界で扱いやすい標準方位へ変換します。
地図項目の準備
インポートした方位角列をGIS、検証、方向計算で使う前に正規化します。
よくある質問
結果はどの範囲になりますか?
0度以上360度未満です。完全な1回転の方向は0度として表します。
負の方位角はどのように処理されますか?
必要な回数だけ360度を加えます。たとえば、-10度は350度になります。
360度を超える値はどうなりますか?
方向を変えずに完全な回転分を除きます。たとえば、725.5度は5.5度になります。
ラジアンを度へ変換できますか?
いいえ。入力は度として解釈されますので、ラジアンは事前に別途変換してください。
磁気偏角も補正されますか?
いいえ。数値を範囲内へ折り返すだけです。磁北、真北、グリッド北の補正は別途行ってください。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/normalize-bearing \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bearing":725.5}'const res = await fetch("https://api.kit.forhosting.com/geo/normalize-bearing", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bearing": 725.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/normalize-bearing",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bearing": 725.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/normalize-bearing", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bearing":725.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bearing":725.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/normalize-bearing", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"bearing": 725.5
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.normalize_bearing",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |