Vigas Isostáticas — Protótipo Didático V16 corrigido_3_memoria_detalhada
Viga
P
M
q
Modelo da viga
Comprimento da viga (m)
Apoio do lado A
Sem apoio
Apoio de 1º gênero
Apoio de 2º gênero
Apoio de 3º gênero
Apoio do lado B
Sem apoio
Apoio de 1º gênero
Apoio de 2º gênero
Apoio de 3º gênero
Carga concentrada
Posição x (m)
Valor P (kN)
Adicionar carga concentrada
Momento concentrado
Posição x (m)
Valor M (kN.m)
Momento positivo: sentido anti-horário.
Adicionar momento concentrado
Carga distribuída
Início (m)
Fim (m)
q inicial (kN/m)
q final (kN/m)
Adicionar carregamento distribuído
Desfazer
Refazer
Limpar modelo
Gerar memória de cálculo
▶ Configurações
Idioma da interface
Português brasileiro
Español de América Latina
English (United States)
Casas decimais
Tamanho da fonte
Cor do DEC
Cor do DMF
Escala dos apoios
Mostrar construção gráfica das curvas
Ferramenta computacional elaborada pelo:
Prof. Dr. Winston Junior Zumaeta Moncayo
Escala do DEC
Escala do DMF
Ajustar desenho
Aviso
Entendi
`; w.document.write(html); w.document.close(); } // events document.querySelectorAll(".navBtn").forEach(b=>b.onclick=()=>{ document.querySelectorAll(".navBtn").forEach(x=>x.classList.remove("ativa")); b.classList.add("ativa"); ["modelo","conc","mom","dist"].forEach(t=>e("tool-"+t).classList.remove("ativa")); e("tool-"+b.dataset.tool).classList.add("ativa"); }); e("addP").onclick=addPoint;e("addD").onclick=addDist;e("addM").onclick=addMom;e("clear").onclick=clearAll;e("fit").onclick=fit;e("memoria").onclick=memoria; e("undo").onclick=()=>{if(!state.hist.length)return;state.redo.push(JSON.stringify({L:state.L,apA:state.apA,apB:state.apB,loads:state.loads,moments:state.moments}));restore(state.hist.pop())}; e("redo").onclick=()=>{if(!state.redo.length)return;state.hist.push(JSON.stringify({L:state.L,apA:state.apA,apB:state.apB,loads:state.loads,moments:state.moments}));restore(state.redo.pop())}; ["L","apA","apB","dec","fontRange","scaleV","scaleM","colorV","colorM","showAux","supportScale"].forEach(id=>e(id).oninput=()=>{calc(false);draw()}); e("toggleConfig").onclick=()=>{e("configPanel").classList.toggle("oculto");e("toggleConfig").textContent=e("configPanel").classList.contains("oculto")?tr("configClosed"):tr("configOpen")}; e("lang").onchange=()=>{applyLang();draw()}; if(e("showAux")) e("showAux").onchange=()=>{calc(false);draw()}; cv.addEventListener("wheel",ev=>{ev.preventDefault();let old=state.cam.scale, factor=ev.deltaY<0?1.08:.92, ns=Math.max(.55,Math.min(2.8,old*factor));let rect=cv.getBoundingClientRect(),mx=(ev.clientX-rect.left)*(cv.width/rect.width),my=(ev.clientY-rect.top)*(cv.height/rect.height);state.cam.panX=mx-(mx-state.cam.panX)*(ns/old);state.cam.panY=my-(my-state.cam.panY)*(ns/old);state.cam.scale=ns;draw()},{passive:false}); cv.onpointerdown=ev=>{state.drag=true;state.lastX=ev.clientX;state.lastY=ev.clientY;cv.setPointerCapture(ev.pointerId)}; cv.onpointermove=ev=>{if(!state.drag)return;state.cam.panX+=ev.clientX-state.lastX;state.cam.panY+=ev.clientY-state.lastY;state.lastX=ev.clientX;state.lastY=ev.clientY;draw()}; cv.onpointerup=()=>state.drag=false;cv.onpointercancel=()=>state.drag=false; e("modalFechar").onclick=fecharPopup; e("modalAviso").onclick=(ev)=>{if(ev.target===e("modalAviso"))fecharPopup()}; applyLang(); calc(false);draw(); })();