Vigas Isostáticas — Protótipo Didático V14
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
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"].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()}; 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(); })();