///////////////////////////////////////////////////////////////////////////// // // javascript source code for the ski/snowboard calculator at: // http://www.natew.com/frames.cgi/software/html.SnowboardCalculator // // I'd put a copyright notice here: // // Xxxxxxxxx (c) 2001 Xxxx Xxxxxxxx. Xxx xxxxxx xxxxxxxx. // // But that would be silly. The key concepts here are not mine - if // anyone deserves copyright on this it's Pythagoras, and he's dead. // // Nate Waddoups, 14 April 2001 // ///////////////////////////////////////////////////////////////////////////// var rPi = 3.1415926535; function SolveForRadius(form) { var rDepth = form.elements["Depth"].value / 1000; var rEdgeLength = form.elements["EdgeLength"].value / 100; rRadius = ((rEdgeLength * rEdgeLength) / (8 * rDepth)); form.elements["Radius"].value = rRadius; SolveForCarve (form); } function SolveForDepth(form) { var rRadius = form.elements["Radius"].value; var rHalfEdge = (form.elements["EdgeLength"].value / 100) / 2; rDepth = rRadius - Math.sqrt ((rRadius * rRadius) - (rHalfEdge * rHalfEdge)); rDepth *= 1000; form.elements["Depth"].value = Math.round (rDepth * 100) / 100; SolveForCarve (form); } function SolveForEdgeLength(form) { var rRadius = form.elements["Radius"].value; var rDepth = form.elements["Depth"].value / 1000; rEdgeLength = sqrt (rRadius * 8 * rDepth); form.elements["EdgeLength"].value = rEdgeLength; SolveForCarve (form); } function SolveForCarve (form) { var rRadius = form.elements["Radius"].value; var rDepth = form.elements["Depth"].value / 1000; var rEdgeLength = form.elements["EdgeLength"].value / 100; var rEdgeAngle = form.elements["EdgeAngle"].value * rPi / 180; var rDecamber = rDepth * Math.tan (rEdgeAngle); document.all["Decamber"].innerHTML = Math.round (rDecamber * 100000) / 100; var rCarveDepth = rDepth / Math.cos (rEdgeAngle); document.all["EffectiveDepth"].innerHTML = Math.round (rCarveDepth * 100000) / 100; var rCarveRadius = ((rEdgeLength * rEdgeLength) / (8 * rCarveDepth)); // // rCarveRadius = rRadius * Math.cos (rEdgeAngle); // // same results either way! document.all["CarveRadius"].innerHTML = Math.round (rCarveRadius * 100) / 100; var rSpeed = Math.sqrt (Math.sin (rEdgeAngle) * rRadius * 9.81); document.all["Speed"].innerHTML = Math.round (rSpeed * 100) / 100; var rCentForce = ((rSpeed * rSpeed) / rCarveRadius) / 9.81; document.all["CentForce"].innerHTML = Math.round (rCentForce * 100) / 100; var rTotalForce = Math.sqrt ((rCentForce * rCentForce) + 1); document.all["TotalForce"].innerHTML = Math.round (rTotalForce * 100) / 100; } function ChangeWidth (form) { var rTipWidth = form.elements["TipWidth"].value; var rWaistWidth = form.elements["WaistWidth"].value; var rTailWidth = form.elements["TailWidth"].value; var rWaistWidthNoSidecut = (rTipWidth / 2) + (rTailWidth / 2); var rDepth = (0 + rWaistWidthNoSidecut - rWaistWidth) / 2; form.elements["Depth"].value = (Math.round (rDepth * 1000)) / 100; var rTaperMillimeters = (rTipWidth - rTailWidth) * 10; form.elements["TaperMillimeters"].value = (Math.round (rTaperMillimeters * 100)) / 100; SolveForRadius (form); SolveForTaperDegrees (form); SolveForTaperSetback (form); } function SolveForTaperMillimeters (form) { var rEdgeLength = form.elements["EdgeLength"].value; var rTaperDegrees = form.elements["TaperDegrees"].value; var rTaperRadians = rTaperDegrees * rPi / 180; var rTaperMillimeters = Math.sin (rTaperRadians) * rEdgeLength; form.elements["TaperMillimeters"].value = (Math.round (rTaperMillimeters * 100)) / 100; SolveForTaperSetback (form); } function SolveForTaperDegrees (form) { var rEdgeLength = form.elements["EdgeLength"].value; var rTaperMillimeters = form.elements["TaperMillimeters"].value; var rTaperRadians = Math.asin (rTaperMillimeters / rEdgeLength); var rTaperDegrees = rTaperRadians * 180 / rPi; form.elements["TaperDegrees"].value = (Math.round (rTaperDegrees * 100)) / 100; SolveForTaperSetback (form); } function SolveForTaperSetback (form) { var rRadius = form.elements["Radius"].value; var rTaperDegrees = form.elements["TaperDegrees"].value; var rTaperRadians = rTaperDegrees * rPi / 180; var rSetback = Math.sin (rTaperRadians) * (rRadius * 1000); form.elements["Setback"].value = (Math.round (rSetback) * 10) / 1000; } function SolveForTaper (form) { var rSetback = form.elements["Setback"].value; var rRadius = form.elements["Radius"].value; var rTaperDegrees = 0; SolveForTaperMillimeters (form); } ///////////////////////////////////////////////////////////////////////////// // EOF. Stop reading here ->