太陽高度から影の長さを求める計算ツール
この計算ツールは、垂直な物体の高さと太陽高度が分かっているとき、平らな地面に伸びる影の長さを求めます。高さは任意の長さ単位で、太陽高度は地平線からの度数で入力してください。結果は高さと同じ単位になります。日陰の計画、太陽幾何の学習、屋外撮影の準備、直角三角形の計算確認を、迅速かつ決定的に行うためにご利用いただけます。
無料で実行
垂直方向の高さと有効な太陽高度をご入力ください
最初に、影を作る物体の垂直方向の高さをご用意ください。メートル、フィート、センチメートル、インチなど、どの長さ単位でも使用でき、計算結果にも同じ単位が引き継がれます。物体が地面に接する位置から頂点までを測り、鉛直に立っていることをご確認ください。次に、地域の地平線から見た太陽高度を度数で入力します。値は 0 より大きく 90 より小さくなければなりません。0 に近い角度は地平線付近の光を表し、理論上は非常に長い影になります。90 に近い角度では太陽がほぼ真上にあり、影は非常に短くなります。天頂角、方位、方位角は別の測定値ですので入力しないでください。資料に天頂角が示されている場合は、90 からその値を引いてください。実地で有用な推定を行うには、ほぼ水平な地面を選び、壁、樹木、段差などで影が途切れない条件をご使用ください。
余接による関係をご確認ください
単純化したモデルでは、垂直な物体、水平な影、直進する太陽光線が直角三角形を作ります。物体の高さは太陽高度に対する向かい側の辺で、影は隣り合う辺です。このため、正接は高さを影の長さで割った値になります。式を変形すると、影の長さは高さを太陽高度の正接で割った値、すなわち高さに余接を掛けた値です。計算時には度数をラジアンへ変換し、機械可読な結果を安定させるため、表示値を小数点以下 12 桁に丸めます。45 度では正接が 1 となり、物体と影の長さは等しくなります。45 度未満では影のほうが長く、それを超えると短くなります。返される影と高さの比率は、同じ日光下にある複数の物体にも再利用できます。高さを 2 倍にすれば予測される影も 2 倍になり、角度の変更は共通の余接比率を通じてすべての物体に作用します。
推定結果と実用上の限界をご理解ください
結果は理想的な幾何学上の推定値であり、測量済みの境界や完全な太陽位置予報ではありません。このモデルは、物体が完全に鉛直で、地面が水平であり、光が直進し、物体の頂点から明確な光線が伸びると仮定します。実際の影は、地面の傾斜、物体の傾き、点ではない太陽円盤、大気差などによって異なる場合があります。影の縁がぼやけている場合も、小数表示が示すほど実測値は正確ではありません。このツールは、日付、時刻、緯度、経度から太陽高度を算出しません。適切な太陽位置情報から角度を取得してご入力ください。庭や撮影の計画では、複数の妥当な角度を比較すると、時間や季節による変化を把握できます。建築の離隔、日照規則、測量、航法、安全性に関わる用途では、各分野の規格、専門機器、許容差をご使用ください。角度を測るために太陽を直視せず、公表データまたは安全な間接測定法をご利用ください。
活用例
一時的な日陰を計画します
太陽高度が分かるとき、柱、遮光板、垂直構造物の影がどこまで届くかを推定します。
屋外撮影を準備します
指向性のある光に適した撮影位置と時刻を選ぶため、影のおおよその範囲を予測します。
直角三角形の幾何を学びます
余接が太陽高度および物体の高さと、隣接する影の長さをどう結ぶかを示します。
よくある質問
どのような式を使用しますか?
影の長さ = 高さ / tan(太陽高度) を使用します。これは高さに余接を掛けることと同じです。
影の長さはどの単位で表示されますか?
高さと同じ単位です。高さをメートルで入力すると、影の長さもメートルで表示されます。
角度を 0 から 90 度の間にするのはなぜですか?
太陽が地平線より上にある範囲を表し、地平線での特異点と真上での厳密な極限を避けるためです。
傾斜地も考慮されますか?
いいえ。水平な地面に垂直な物体があると仮定しており、傾斜には別の幾何モデルが必要です。
太陽高度と方位角は同じですか?
いいえ。太陽高度は地平線から上への角度で、方位角は地平線に沿った方角です。
API による計算料金はいくらですか?
API リクエスト 1 回は $0.002 です。同じ決定的計算をブラウザー内でローカル実行することもできます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/trig/shadow-length \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"height":2,"sun_elevation_degrees":45}'const res = await fetch("https://api.kit.forhosting.com/trig/shadow-length", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"height": 2,
"sun_elevation_degrees": 45
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/trig/shadow-length",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"height": 2,
"sun_elevation_degrees": 45
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/trig/shadow-length", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"height":2,"sun_elevation_degrees":45}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"height":2,"sun_elevation_degrees":45}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/trig/shadow-length", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"height": 2,
"sun_elevation_degrees": 45
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "trig.shadow_length",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |