From 04db81b55a66c923edbedfe7d485d204f47bf9ed Mon Sep 17 00:00:00 2001 From: OkunElya Date: Wed, 31 Dec 2025 22:13:22 +1000 Subject: [PATCH] math fixed --- hw/hw7/hw7.html | 2 +- hw/hw7/hw7.js | 129 ++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 109 insertions(+), 22 deletions(-) diff --git a/hw/hw7/hw7.html b/hw/hw7/hw7.html index ffd1aa1..6ab2124 100644 --- a/hw/hw7/hw7.html +++ b/hw/hw7/hw7.html @@ -47,7 +47,7 @@
- + diff --git a/hw/hw7/hw7.js b/hw/hw7/hw7.js index a7e3448..d6cf24e 100644 --- a/hw/hw7/hw7.js +++ b/hw/hw7/hw7.js @@ -25,54 +25,115 @@ let elements = { clearButton: document.getElementById('clearButton'), outputsTable: document.getElementById('outputsTable') } -console.log("loaded js!") +console.log("loaded js!"); let currentModeIsA = true; let outputFields = {}; +let inputsA = { + l: null, + angle: null +}; +let inputsB = { + l: null, + angle: null +}; -function updateCheckboxes(){ - outputFields["radius"]=elements.outputR.checked; - outputFields["heights"]=elements.outputH.checked; - outputFields["lengths"]=elements.outputL.checked; - console.log("output fields:",outputFields) +function deg2rad(degrees) { + return degrees * (Math.PI / 180); +} + +function getCalculations() { + let heights = [];//base related, side realted + let lengths = [];// base side + let radius = 0; + let baseAngle=0; + let sideAngle=0; + if (currentModeIsA) { + lengths[0]=2*Math.sin(deg2rad(inputsA.angle)/2)*inputsA.l; + lengths[1]=inputsA.l; + baseAngle=inputsA.angle; + sideAngle=(180-baseAngle)/2; + } + else { + lengths[0]=inputsB.l; + lengths[1]=inputsB.l/(2*Math.cos(deg2rad(inputsB.angle))); + sideAngle=inputsB.angle; + baseAngle=180-2*sideAngle; + } + radius = Math.sqrt(((2 * lengths[1]) - lengths[0]) / ((2 * lengths[1]) - lengths[0])) * lengths[0] / 2; + + + heights[0] = lengths[1] * Math.sin(deg2rad(sideAngle)); + heights[1] = lengths[0] * Math.sin(deg2rad(baseAngle)); + return { + radius: radius, + heights: heights, + lengths: lengths + }; +} + +function updateCheckboxes() { + outputFields["radius"] = elements.outputR.checked; + outputFields["heights"] = elements.outputH.checked; + outputFields["lengths"] = elements.outputL.checked; + console.log("output fields:", outputFields) +} + +function updateCalculateButton() { + let ret = false; + if (currentModeIsA) { + ret = inputsA["l"] !== null && inputsA["angle"] !== null + } + else { + ret = inputsB["l"] !== null && inputsB["angle"] !== null + } + console.log(inputsA, inputsB, ret); + elements.calculateButton.disabled = !ret; } function switchAppearance(selectA) { if (selectA) { - elements.imageA.classList.remove("hidden") - elements.imageB.classList.add("hidden") - elements.fieldsetA.classList.remove("hidden") - elements.fieldsetB.classList.add("hidden") + elements.imageA.classList.remove("hidden"); + elements.imageB.classList.add("hidden"); + elements.fieldsetA.classList.remove("hidden"); + elements.fieldsetB.classList.add("hidden"); } else { - elements.imageA.classList.add("hidden") - elements.imageB.classList.remove("hidden") - elements.fieldsetA.classList.add("hidden") - elements.fieldsetB.classList.remove("hidden") + elements.imageA.classList.add("hidden"); + elements.imageB.classList.remove("hidden"); + elements.fieldsetA.classList.add("hidden"); + elements.fieldsetB.classList.remove("hidden"); } + updateCalculateButton(); } -function clearInputs(clearA) { - if (clearA) { + +function clearInputs() { + if (currentModeIsA) { elements.equalSideLength.value = null; elements.baseAngle.value = null; + inputsA = { + l: null, + angle: null + }; } else { + inputsB = { + l: null, + angle: null + }; elements.baseSideLength.value = null; elements.baseAdjacentAngle.value = null; } elements.outputsTable.classList.add("hidden"); } + elements.outputsFieldset.addEventListener('change', function (event) { if (event.target.type === 'checkbox') { updateCheckboxes(); } - else if(event.target.type === 'checkbox'){ - - - } }); elements.inputsForm.addEventListener('change', function (event) { @@ -88,12 +149,38 @@ elements.inputsForm.addEventListener('change', function (event) { console.log("Switching inputs to B"); } + } else if (event.target.type === 'number') { + switch (event.target.id) { + case "equalSideLength": + inputsA.l = parseFloat(event.target.value) || 0; + break; + case "baseAngle": + inputsA.angle = parseFloat(event.target.value) || 0; + break; + case "baseSideLength": + inputsB.l = parseFloat(event.target.value) || 0; + break; + case "baseAdjacentAngle": + inputsB.angle = parseFloat(event.target.value) || 0; + break; + default: + console.log(event.target.id) + break; + } + updateCalculateButton(); + } }); elements.clearButton.addEventListener('click', (event) => { event.preventDefault(); - clearInputs(currentModeIsA) + clearInputs() +}); + + +elements.calculateButton.addEventListener('click', (event) => { + event.preventDefault(); + console.log(getCalculations()); });