投射物が指定高度を通過する2つの時刻を計算
この投射物高度通過時刻計算機は、投げ上げた物体が出発点より上の指定高度に達する2つの時刻を求めます。初速度、投射角、目標高度を入力し、必要に応じて現地の重力加速度も指定できます。結果では上昇中の通過と下降中の通過を分け、軌道の最高高度も示します。指定高度が頂点より高い場合は、虚数や誤解を招く時刻を表示せず、到達不能であることを明確なエラーで通知します。物理学の学習、軌道の確認、再現可能な工学計算に役立ちます。
無料で実行
整合した投射条件を入力します
初速度はメートル毎秒、投射角は水平面から上向きの度数、目標高度は投射点から上のメートル単位で入力してください。したがって、高度のゼロは投射位置を表し、投射点自体が海面にない限り海抜高度ではありません。重力加速度はメートル毎秒毎秒で指定し、既定値には地球の標準重力である9.80665を使用します。問題文で別の値が指定されている場合や、異なる環境をモデル化する場合は変更できます。キロメートル毎時、フィート、ラジアンなどへの暗黙の換算は行わないため、すべての量を指定された単位にそろえてください。投射角はゼロより大きく九十度以下でなければならず、初速度と重力加速度は正の値が必要です。目標高度がゼロの場合も有効で、最初の通過時刻として投射時刻が返されます。この定義により入力の曖昧さがなくなり、2つの時刻が同一の物理的基準系に対応します。空気抵抗、揚力、風、地球の曲率、重力の変化は、この理想的な投射運動モデルには含まれません。
2つの通過時刻を求める仕組みを理解します
計算ではまず、投射角の正弦を使って初速度を鉛直成分に分解します。その後の鉛直位置には等加速度運動の式を用います。すなわち、高度は鉛直速度と時刻の積から、重力加速度と時刻の二乗の積の半分を引いた値です。この位置を指定高度と等しくすると二次方程式が得られます。小さい方の実数解は上昇時刻で、投射物が上昇中に初めてその高度へ達する時刻です。大きい方の実数解は下降時刻で、頂点を過ぎた後に同じ高度を再び通過する時刻です。目標が最高高度と正確に一致する場合、投射物がその高度に触れる瞬間は1回だけなので2つの解は一致し、両方の結果欄に同じ時刻が表示されます。表示する最高高度も同じ鉛直速度成分と重力から計算するため、指定条件の確認に利用できます。再現可能なJSON出力を得るため結果は安定した精度で丸めますが、内部計算では通常の浮動小数点精度を維持します。この理想モデルでは、水平速度は特定高度の通過時刻に影響しません。
到達不能な高度を判断し、結果を活用します
実際の通過時刻が存在するのは、二次方程式の判別式がゼロ以上の場合だけです。選択した初速度、角度、重力で得られる最高高度を目標高度が上回ると、判別式は負になり、求める時刻は物理的な実数ではなく複素数になります。本計算機はこの状態を無効な入力として扱い、到達可能な最高高度を示すため、条件を意図どおりに修正できます。初速度を上げる、投射角を急にする、目標高度を下げる、または問題で指定された重力を使用するといった調整が可能です。有効な時刻が得られたら、頂点より前の事象には上昇時刻を、頂点より後の事象には下降時刻を使用してください。センサーの作動時刻、動画フレームの比較、教科書の解答確認などに適用できます。これらの時刻は、一定で下向きの重力下にある投射物の質量中心を表す点にご注意ください。大きな空気抵抗を受けるボール、推進中のロケット、または台から開始位置より低い場所へ投げる物体には、より広範な運動モデルが必要です。APIでは1回の計算に$0.002かかり、決定論的な応答は自動演習やシミュレーション検証に便利です。
活用例
物理学の演習を確認する
2つの二次方程式の解を途中式のある解答と比較し、指定高度が頂点より低いことを確認できます。
高度センサーの時刻を決める
理想的な投射物がセンサー高度を上昇時と下降時に通過する時刻を見積もれます。
単純なシミュレーションを検証する
解析的で決定論的な通過時刻を、離散的な投射運動シミュレーションの基準値として使用できます。
よくある質問
なぜ時刻が2つあるのですか?
頂点より低い高度では、投射物は上昇中に1回、下降中に1回、同じ高度を通過するためです。
最高高度ではどうなりますか?
投射物が頂点へ達する瞬間は1回だけなので、2つの解は同じ値になります。
目標高度に到達できないのはなぜですか?
指定した重力のもとでは、選択した鉛直初速度がその高度へ達するために不足しているためです。
空気抵抗も計算に含まれますか?
いいえ。一定で下向きの重力を受け、空気抵抗、風、揚力、推進力がない理想的な投射運動を使用します。
別の惑星の重力を使えますか?
はい。理想化した条件に合う正の重力加速度をメートル毎秒毎秒で指定してください。
APIによる計算の料金はいくらですか?
1回のリクエスト料金は$0.002です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/mech/projectile-time-at-height \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"speed":20,"angle_degrees":60,"height":10}'const res = await fetch("https://api.kit.forhosting.com/mech/projectile-time-at-height", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"speed": 20,
"angle_degrees": 60,
"height": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/mech/projectile-time-at-height",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"speed": 20,
"angle_degrees": 60,
"height": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/mech/projectile-time-at-height", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"speed":20,"angle_degrees":60,"height":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"speed":20,"angle_degrees":60,"height":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/mech/projectile-time-at-height", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"speed": 20,
"angle_degrees": 60,
"height": 10
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "mech.projectile_time_at_height",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |