サッカーKW選定
// JIS 6x24 破断荷重データ (径mm : 破断荷重トン)
const jisTable = [
{ size: "9 mm", breakLoad: 4.43 },
{ size: "10 mm", breakLoad: 5.47 },
{ size: "12 mm", breakLoad: 7.88 },
{ size: "14 mm", breakLoad: 10.7 },
{ size: "16 mm", breakLoad: 14.0 },
{ size: "18 mm", breakLoad: 17.7 },
{ size: "20 mm", breakLoad: 21.9 },
{ size: "22.4 mm", breakLoad: 27.5 },
{ size: "26 mm", breakLoad: 37.0 },
{ size: "28 mm", breakLoad: 42.9 },
{ size: "31.5 mm", breakLoad: 54.3 },
{ size: "35.5 mm", breakLoad: 68.9 },
{ size: "40 mm", breakLoad: 87.6 }
];
function calculate() {
const method = document.querySelector('input[name="method"]:checked').value;
const weight = parseFloat(document.getElementById('weight').value) || 0;
const L = parseFloat(document.getElementById('length').value) || 0;
const W = parseFloat(document.getElementById('width').value) || 0;
const S = parseFloat(document.getElementById('slingLength').value) || 0;
const SF = parseFloat(document.getElementById('safetyFactor').value) || 6;
document.getElementById('width-group').style.display = (method === '4') ? 'block' : 'none';
// 対角距離 (2点吊りの場合は L のみ、4点吊りの場合は対角線長)
let diag = (method === '2') ? L : Math.sqrt(L*L + W*W);
let halfDiag = diag / 2;
// 長さの整合性チェック
if (S <= halfDiag) { document.getElementById('recommendedWire').innerText = "測定不能"; document.getElementById('statusAlert').className = "alert alert-red"; document.getElementById('statusAlert').innerText = "エラー: ワイヤーが短すぎてフックにとどきません"; document.getElementById('angleVal').innerText = "-"; document.getElementById('tensionVal').innerText = "-"; document.getElementById('breakingVal').innerText = "-"; return; } // 吊り角度(垂直からの角度θと対角内角 2θ) let sinTheta = halfDiag / S; let thetaRad = Math.asin(sinTheta); let thetaDeg = thetaRad * (180 / Math.PI); let includedAngle = thetaDeg * 2; // モード内角 // 斜め吊り係数 (1 / cosθ) let angleFactor = 1 / Math.cos(thetaRad); // 1本あたりの張力(4点吊りは安全のため「3本計算」を適用) let legs = (method === '2') ? 2 : 3; let tensionPerLeg = (weight / legs) * angleFactor; // 必要破断荷重 = 張力 × 安全係数 let reqBreaking = tensionPerLeg * SF; // JIS規格から適合ワイヤー選定 let selectedWire = "規格超過(天秤を使用してください)"; for (let item of jisTable) { if (item.breakLoad >= reqBreaking) {
selectedWire = item.size;
break;
}
}
// 画面表示更新
document.getElementById('recommendedWire').innerText = selectedWire;
document.getElementById('angleVal').innerText = includedAngle.toFixed(1) + "°";
document.getElementById('tensionVal').innerText = tensionPerLeg.toFixed(2) + " t";
document.getElementById('breakingVal').innerText = reqBreaking.toFixed(2) + " t";
// アラートメッセージ
let alertElem = document.getElementById('statusAlert');
if (includedAngle <= 60) { alertElem.className = "alert alert-green"; alertElem.innerText = "適正な吊り角度です(60°以下)"; } else if (includedAngle <= 90) { alertElem.className = "alert alert-yellow"; alertElem.innerText = "注意: 吊り角度がやや広めです(60°〜90°)"; } else { alertElem.className = "alert alert-red"; alertElem.innerText = "危険: 吊り角度90°超!ワイヤーを伸ばすか天秤を使ってください"; } } // 初回計算実行 calculate();