ABC三角形ソルバー ― 任意の組み合わせで辺と角度を計算
ABC 三角形ソルバーは、三角形を一意に定める辺 a、b、c と内角 A、B、C の任意の組み合わせを受け取り、指定されなかった辺と角をすべて返します。三辺、二辺とその挟角、二角と任意の一辺、二辺と挟まない一角という各ケースに対し、余弦定理と正弦定理を適切な順序で適用します。三角形を構成しない入力、複数の三角形に該当する入力、互いに矛盾する値については拒否されます。角度は度単位で入出力され、すべての結果は安定した小数点以下10桁に丸められるため、同じ入力には常に同じ出力が得られ、テストやキャッシュでの比較にも安心してご利用いただけます。
無料で実行
解けるすべての組み合わせに対応する単一のエンドポイント
教科書の三角法では、三角形の求解を SSS、SAS、ASA、AAS、そして扱いの難しい SSA という五つの別々の手順に分け、それぞれに固有の公式集が用意されています。この三角形ソルバーは、その五つすべてを一回のリクエストにまとめます。side_a、side_b、side_c、angle_a、angle_b、angle_c のうち既知のフィールドをそのまま送信すれば、どの手順を適用すべきかはソルバーが判断します。三辺が既知なら余弦定理が使われ、二辺とその間の角なら余弦定理を一度適用した後に正弦定理へ進み、任意の一辺と二角の組み合わせならそのまま正弦定理の問題となります。利用者がケース名を指定する必要はなく、レスポンスには常にどの経路が取られたかを記録する <em>method</em> フィールドが含まれます。これは結果をログに残したりキャッシュしたりする際に便利です。インターフェースが統一されているため、屋根の勾配、土地測量、宿題の問題を、同じクライアントコードで組み合わせによる分岐なしに解くことができます。
整合性は仮定せず、検証されます
実際の測定値は互いに食い違うものです。三角形が厳密に必要とする三つの値を超える値、たとえば三辺すべてに加えて現地で測った一角を送信した場合でも、ソルバーは余分な値を黙って無視しません。まず三角形を定める部分集合から解を求め、その解に対して残りの値をすべて狭い許容誤差の範囲で検証します。他の値と矛盾する値があれば、入力の一部だけを満たす一見もっともらしい三角形を返すのではなく、該当するフィールド名を明示した明確なエラーが返されます。同じ方針により、計算を始める前に典型的な失敗パターンも検出されます。内角の和が180度にならない三角、三角形不等式を満たさない三辺、既知の角の対辺が短すぎて届かない SSA の組み合わせ、そしてデータに合致する三角形が二つ存在する曖昧な SSA ケースです。最後の状況では、ソルバーは利用者が選んでいない候補を勝手に採用するのではなく、その旨を伝えてもう一つ測定値を求めます。
組み込み方法
既知のフィールドを数値として持つ JSON オブジェクトを送信してください。数値文字列も受け付けられます。返ってくるのは完成した三角形、すなわち三辺すべて、度単位の三角すべて、角度の単位、使用された手法です。不足している要素は補完され、送信した要素はそのままエコーバックされるため、レスポンスは三角形の完全で自己完結した記録になります。すべての計算は倍精度演算で決定的に行われ、小数点以下10桁に丸められるため、テストやキャッシュで出力をバイト単位で比較しても安全です。この機能は永続化を行わないグローバルエッジ上で動作し、まったく同じモジュールがこのページ上のブラウザでも無料で動きます。そのため、手作業で計算を試作し、自動化する段階になって初めてリクエストごとに $0.002 をお支払いいただけます。単位ごとの追加料金はありません。一回のリクエストで一つの三角形が解けて、$0.002 です。
活用例
現地測量の検算
測定した辺と角をまとめて送信すれば、他と矛盾する値は平均化されずに明示的に指摘されます。
屋根や筋交いの寸法算出
二辺とその挟角から、一回の呼び出しで第三辺と残りの角を求め、切断リストを作成できます。
幾何学の演習の採点
受験者が完成させた三角形を、SSS、SAS、ASA、AAS の各問題についてソルバーの安定した丸め済み出力と比較できます。
よくある質問
料金はいくらですか?
リクエストごとに $0.002 です。また、このページ上のブラウザでは無料で実行できます。
どのような値の組み合わせを送信できますか?
三角形を一意に定める組み合わせであれば送信できます。三辺、二辺とその挟角、二角と任意の一辺、あるいは二辺と挟まない一角です。余分な値を送信しても構いません。整合性が検証されます。
曖昧な SSA ケースではどうなりますか?
二辺と挟まない一角に適合する三角形が二つ存在する場合、推測で答えを選ぶのではなく、もう一つの辺または角を求めるエラーでリクエストが拒否されます。
角度は度ですか、ラジアンですか?
入出力ともに度です。内角は正の値で、180 未満である必要があります。
「入力が矛盾しています」というエラーが出たのはなぜですか?
送信した値の一つが、他の値によって定まる三角形と小さな許容誤差を超えて矛盾しているためです。たとえば、測定した三辺と一致しない角が含まれる場合などです。その測定値を確認し直してください。
三角だけから三角形を解けますか?
いいえ。角度は形を定めますが大きさは定まらないため、少なくとも一つの辺が必要です。この場合はその旨を説明するエラーが返されます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/abc-triangle \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"side_a":3,"side_b":4}'const res = await fetch("https://api.kit.forhosting.com/math/abc-triangle", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"side_a": 3,
"side_b": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/abc-triangle",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"side_a": 3,
"side_b": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/abc-triangle", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"side_a":3,"side_b":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"side_a":3,"side_b":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/abc-triangle", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"side_a": 3,
"side_b": 4
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.abc_triangle",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |