SSA三角形の個数計算:0個・1個・2個
SSA三角形個数計算では、2辺とその間にない角から、異なる三角形を0個、1個、または2個作れるかを判定します。既知角の対辺をside_a、もう一方の辺をside_b、度数法の角をangle_aに入力してください。未知の辺や角をすべて求める前に、SSAの曖昧な場合を分類できます。判定に使った高さ、簡潔な理由、本当に2解の曖昧性があるかも表示します。そのため、正弦定理のどの分岐を解くべきかを事前に確認できます。
無料で実行
SSAの測定値を正しく対応させます
SSAとは、2辺と1角が既知であり、その角が既知の2辺に挟まれていない条件です。判定規則は既知角の対辺がどれかによって変わるため、測定値の対応が重要です。既知角の対辺をside_a、もう一方の既知辺をside_b、既知角の度数をangle_aに入力してください。図を描き、角Aを記し、その正面の辺をa、残る既知辺をbとすると確認しやすくなります。角が2辺に挟まれるSAS条件には同じ2解の曖昧性がないため、この判定器は使用しません。辺の長さには正の有限数が必要で、角は0より大きく180度より小さくなければなりません。センチメートル、フィート、マイルなどを利用できますが、2辺の単位はそろえてください。結果の高さにも同じ単位が適用されます。比と大小関係だけを使うため、単位変換は行いません。3つの値を正しく割り当てれば、三角形全体を解く前に個数を確認できます。
鋭角の場合の判定を理解します
angle_aが90度未満の鋭角なら、まず高さh = side_b × sin(angle_a)を計算します。この高さは、side_bの自由端から第3辺が乗る半直線まで届くために必要な最短距離です。side_aをhおよびside_bと比較すると、すべての場合を分類できます。side_aがhより短ければ半直線に届かず、三角形は0個です。hと等しければ、半直線上の1つの垂直な点に接し、直角三角形が1個できます。hより長くside_bより短ければ、半直線と2点で交わり、異なる三角形が2個できます。これが典型的なSSAの曖昧な場合です。side_aがside_b以上なら、有効な交点は1つだけです。小数の境界値を安定して扱うため、計算では値の大きさに応じた小さな浮動小数点許容差を使います。結果には高さ、個数、曖昧性の有無、選択した分岐の理由が含まれます。各候補の辺と角までは計算せず、最初に解くべき三角形の個数だけを明確にします。
直角・鈍角の場合と結果の使い方を確認します
angle_aが直角または鈍角なら、三角形が2個になることはありません。その角の対辺は最長辺でなければならないため、side_aはside_bより厳密に長い必要があります。この条件を満たせば1個、side_aが同じ長さ以下なら0個です。この確認には逆正弦を使いません。結果が1個なら、分岐が1つだけであることを確認してから正弦定理で全体を解けます。2個なら、一般的な逆正弦の計算が鋭角だけを表示する点に注意し、その補角も検討してください。0個なら、元データが矛盾していると判断する前に、図、ラベル、単位を再確認してください。0個は正しい数学的結果であり、入力エラーではありません。入力エラーになるのは、値の欠落、有限でない値、正でない辺、許容範囲外の角です。計算は決定論的で、ネットワークを使わず、データを保存しません。ブラウザーでは無料で実行でき、自動化したAPIリクエストは1回$0.002です。
活用例
曖昧な場合の演習を確認
未知の値を求める前に、SSA問題から0個、1個、2個のどの三角形が作れるかを判定します。
幾何入力を検証
有効な条件だけを完全な三角形ソルバーへ渡せるよう、辺と角の記録を事前に選別します。
高さによる判定を説明
対辺を高さおよび第2辺と比較するとSSAの解の個数が決まる仕組みを示します。
よくある質問
SSAで三角形が2個できるのはいつですか?
angle_aが鋭角で、side_b × sin(angle_a) < side_a < side_bを満たす場合です。
エラーではなく0個と表示するのはなぜですか?
作図不可能という判定自体が個数問題の正しい答えだからです。入力欄が不正な場合だけエラーになります。
この計算で三角形を最後まで解けますか?
いいえ。解く前に候補数だけを数えます。全辺と全角には、続けて完全なSSAソルバーをご利用ください。
2辺に異なる単位を使えますか?
いいえ。両方の長さで同じ単位を使ってください。表示される高さもその単位になります。
APIリクエストの料金はいくらですか?
成功したリクエストは1回$0.002です。このページのブラウザー計算は無料です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/trig/ssa-number-of-solutions \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"side_a":10,"side_b":16,"angle_a":30}'const res = await fetch("https://api.kit.forhosting.com/trig/ssa-number-of-solutions", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"side_a": 10,
"side_b": 16,
"angle_a": 30
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/trig/ssa-number-of-solutions",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"side_a": 10,
"side_b": 16,
"angle_a": 30
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/trig/ssa-number-of-solutions", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"side_a":10,"side_b":16,"angle_a":30}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"side_a":10,"side_b":16,"angle_a":30}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/trig/ssa-number-of-solutions", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"side_a": 10,
"side_b": 16,
"angle_a": 30
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "trig.ssa_number_of_solutions",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |