{"id":8345,"date":"2026-07-06T21:12:37","date_gmt":"2026-07-07T00:12:37","guid":{"rendered":"https:\/\/fisica2.fica.unsl.edu.ar\/?page_id=8345"},"modified":"2026-07-06T21:13:18","modified_gmt":"2026-07-07T00:13:18","slug":"momento_de_una_fuerza","status":"publish","type":"page","link":"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/momento_de_una_fuerza\/","title":{"rendered":"momento_de_una_fuerza"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"8345\" class=\"elementor elementor-8345\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-0e73543 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"0e73543\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0c286f0\" data-id=\"0c286f0\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a8c0d06 elementor-widget elementor-widget-html\" data-id=\"a8c0d06\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<title>Momento de una Fuerza \u2014 Simulaci&#243;n Interactiva<\/title>\r\n<style>\r\n*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}\r\n:root{\r\n  --bg:#0d1117;--panel:#151b23;--panel2:#1c2333;--border:#2a3140;\r\n  --text:#e2e8f0;--dim:#7b8794;--accent:#4da6ff;\r\n  --force:#f97583;--perp:#56d4dd;--par:#5a6270;--lever:#e3b341;\r\n  --f1:#f97583;--f2:#56d4dd;--f3:#e3b341;--f4:#7ee787;\r\n  --pos:#56d4dd;--neg:#f97583;--ok:#3fb950;--cable:#f0883e;\r\n  --beam:#c9d1d9;--wall:#484f58;--grid:#181e2a;\r\n  --rad:10px;\r\n}\r\nhtml{font-size:15px}\r\nbody{\r\n  background:var(--bg);color:var(--text);\r\n  font-family:'Segoe UI',-apple-system,BlinkMacSystemFont,sans-serif;\r\n  min-height:100vh;line-height:1.55;\r\n  background-image:radial-gradient(ellipse at 20% 0%,#162030 0%,var(--bg) 60%);\r\n}\r\nheader{\r\n  text-align:center;padding:22px 16px 10px;\r\n  border-bottom:1px solid var(--border);\r\n  background:linear-gradient(180deg,rgba(30,40,55,.7),transparent);\r\n}\r\nheader h1{font-size:1.55rem;font-weight:700;letter-spacing:-.3px;color:#fff}\r\nheader p{font-size:.82rem;color:var(--dim);margin-top:2px}\r\nnav#tabs{\r\n  display:flex;justify-content:center;gap:6px;\r\n  padding:14px 16px 0;position:relative;z-index:2;\r\n}\r\n.tab-btn{\r\n  padding:9px 22px;border:1px solid var(--border);border-bottom:none;\r\n  background:var(--panel);color:var(--dim);border-radius:var(--rad) var(--rad) 0 0;\r\n  cursor:pointer;font-size:.88rem;font-weight:600;transition:all .2s;\r\n}\r\n.tab-btn:hover{color:var(--text);background:var(--panel2)}\r\n.tab-btn.active{\r\n  color:#fff;background:var(--panel2);\r\n  border-color:var(--accent);border-bottom:1px solid var(--panel2);\r\n  box-shadow:0 -2px 12px rgba(77,166,255,.15);\r\n}\r\nmain{padding:0 16px 30px}\r\n.level{display:none}\r\n.level.active{display:block}\r\n.level-intro{\r\n  max-width:860px;margin:14px auto 16px;padding:12px 18px;\r\n  background:var(--panel);border:1px solid var(--border);\r\n  border-radius:var(--rad);font-size:.87rem;color:var(--dim);\r\n  line-height:1.6;border-left:3px solid var(--accent);\r\n}\r\n.level-content{\r\n  display:flex;gap:16px;max-width:1100px;margin:0 auto;\r\n  align-items:flex-start;\r\n}\r\n.svg-wrap{\r\n  flex:1 1 60%;min-width:0;\r\n  background:var(--panel);border:1px solid var(--border);\r\n  border-radius:var(--rad);overflow:hidden;\r\n}\r\n.svg-wrap svg{display:block;width:100%;height:auto}\r\n.ctrl-panel{\r\n  flex:0 0 340px;display:flex;flex-direction:column;gap:12px;\r\n}\r\n.ctrl-card{\r\n  background:var(--panel);border:1px solid var(--border);\r\n  border-radius:var(--rad);padding:14px 16px;\r\n}\r\n.ctrl-card h3{\r\n  font-size:.78rem;text-transform:uppercase;letter-spacing:.8px;\r\n  color:var(--dim);margin-bottom:10px;font-weight:600;\r\n}\r\n.slider-row{margin-bottom:10px}\r\n.slider-row:last-child{margin-bottom:0}\r\n.slider-label{\r\n  display:flex;justify-content:space-between;align-items:center;\r\n  font-size:.82rem;margin-bottom:4px;\r\n}\r\n.slider-label span:last-child{\r\n  font-weight:700;font-family:'Cascadia Code','Fira Code',Consolas,monospace;\r\n  color:#fff;min-width:65px;text-align:right;\r\n}\r\ninput[type=range]{\r\n  -webkit-appearance:none;appearance:none;width:100%;height:5px;\r\n  border-radius:3px;background:var(--border);outline:none;cursor:pointer;\r\n}\r\ninput[type=range]::-webkit-slider-thumb{\r\n  -webkit-appearance:none;width:16px;height:16px;border-radius:50%;\r\n  background:var(--accent);border:2px solid #fff;cursor:pointer;\r\n  transition:transform .15s;\r\n}\r\ninput[type=range]::-webkit-slider-thumb:hover{transform:scale(1.2)}\r\ninput[type=range]::-moz-range-thumb{\r\n  width:16px;height:16px;border-radius:50%;\r\n  background:var(--accent);border:2px solid #fff;cursor:pointer;\r\n}\r\n.formula-box{\r\n  background:var(--panel2);border:1px solid var(--border);\r\n  border-radius:8px;padding:12px 14px;\r\n  font-family:'Cascadia Code','Fira Code',Consolas,monospace;\r\n  font-size:.85rem;line-height:1.8;color:var(--text);\r\n}\r\n.result-box{\r\n  text-align:center;padding:16px;\r\n  background:linear-gradient(135deg,rgba(77,166,255,.08),rgba(86,212,221,.06));\r\n  border:1px solid rgba(77,166,255,.25);border-radius:var(--rad);\r\n}\r\n.result-box .value{\r\n  font-size:2rem;font-weight:800;font-family:'Cascadia Code','Fira Code',Consolas,monospace;\r\n}\r\n.result-box .label{font-size:.8rem;color:var(--dim);margin-top:2px}\r\n.result-box .sense{\r\n  font-size:.95rem;font-weight:600;margin-top:6px;\r\n  padding:4px 12px;border-radius:20px;display:inline-block;\r\n}\r\n.msg-box{\r\n  padding:10px 14px;border-radius:8px;font-size:.82rem;\r\n  line-height:1.5;border-left:3px solid;\r\n}\r\n.msg-box.info{background:rgba(77,166,255,.08);border-color:var(--accent);color:var(--accent)}\r\n.msg-box.warn{background:rgba(243,179,65,.08);border-color:var(--lever);color:var(--lever)}\r\n.msg-box.ok{background:rgba(63,185,80,.1);border-color:var(--ok);color:var(--ok)}\r\n.msg-box.err{background:rgba(249,117,131,.08);border-color:var(--neg);color:var(--neg)}\r\n.btn{\r\n  padding:8px 16px;border:1px solid var(--border);border-radius:8px;\r\n  background:var(--panel2);color:var(--text);cursor:pointer;\r\n  font-size:.82rem;font-weight:600;transition:all .2s;\r\n}\r\n.btn:hover{background:var(--border);border-color:var(--accent)}\r\n.btn-primary{background:rgba(77,166,255,.15);border-color:var(--accent);color:var(--accent)}\r\n.btn-primary:hover{background:rgba(77,166,255,.25)}\r\n.btn-row{display:flex;gap:8px;flex-wrap:wrap}\r\n\/* Tabla Nivel 2 *\/\r\n.tbl-wrap{overflow-x:auto}\r\ntable.dt{\r\n  width:100%;border-collapse:collapse;font-size:.78rem;\r\n  font-family:'Cascadia Code','Fira Code',Consolas,monospace;\r\n}\r\ntable.dt th{\r\n  background:var(--panel2);color:var(--dim);padding:7px 6px;\r\n  text-align:center;font-weight:600;border-bottom:1px solid var(--border);\r\n  font-family:'Segoe UI',sans-serif;text-transform:uppercase;letter-spacing:.5px;\r\n  font-size:.7rem;\r\n}\r\ntable.dt td{\r\n  padding:6px;text-align:center;border-bottom:1px solid rgba(42,49,64,.5);\r\n  color:var(--text);\r\n}\r\ntable.dt tr.sum-row td{\r\n  border-top:2px solid var(--accent);font-weight:700;color:#fff;\r\n  background:rgba(77,166,255,.06);\r\n}\r\ntable.dt .dot{\r\n  display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;\r\n  vertical-align:middle;\r\n}\r\n\/* Fuerza controls Nivel 2 *\/\r\n.force-ctrl{\r\n  padding:8px 10px;margin-bottom:8px;border-radius:8px;\r\n  border:1px solid var(--border);background:var(--panel2);\r\n}\r\n.force-ctrl:last-child{margin-bottom:0}\r\n.force-ctrl .f-title{\r\n  font-size:.78rem;font-weight:700;margin-bottom:6px;\r\n  display:flex;align-items:center;gap:6px;\r\n}\r\n.force-ctrl .f-title .dot{\r\n  width:10px;height:10px;border-radius:50%;display:inline-block;\r\n}\r\n.force-ctrl .slider-row{margin-bottom:6px}\r\n.force-ctrl .slider-row:last-child{margin-bottom:0}\r\n.force-ctrl .slider-label{font-size:.76rem}\r\n.force-ctrl input[type=range]{height:4px}\r\n\/* Equilibrio indicador *\/\r\n.eq-indicator{\r\n  display:flex;align-items:center;gap:10px;\r\n  padding:10px 14px;border-radius:8px;font-size:.85rem;font-weight:600;\r\n}\r\n.eq-indicator.balanced{background:rgba(63,185,80,.1);border:1px solid rgba(63,185,80,.3);color:var(--ok)}\r\n.eq-indicator.unbalanced{background:rgba(249,117,131,.08);border:1px solid rgba(249,117,131,.25);color:var(--neg)}\r\n.spin-icon{\r\n  width:28px;height:28px;flex-shrink:0;\r\n}\r\n.spin-icon svg{width:100%;height:100%}\r\n@keyframes spin-cw{to{transform:rotate(360deg)}}\r\n@keyframes spin-ccw{to{transform:rotate(-360deg)}}\r\n.spin-cw{animation:spin-cw 1.5s linear infinite}\r\n.spin-ccw{animation:spin-ccw 1.5s linear infinite}\r\n\/* Nivel 3 *\/\r\n.calc-step{\r\n  padding:8px 12px;margin-bottom:6px;border-radius:6px;\r\n  background:rgba(255,255,255,.02);border-left:2px solid var(--border);\r\n  font-size:.82rem;line-height:1.7;\r\n  font-family:'Cascadia Code','Fira Code',Consolas,monospace;\r\n}\r\n.calc-step.highlight{border-left-color:var(--accent);background:rgba(77,166,255,.05)}\r\n.calc-step.result{border-left-color:var(--ok);background:rgba(63,185,80,.06);color:var(--ok);font-weight:700}\r\n.verify-box{\r\n  margin-top:10px;padding:12px;border-radius:8px;\r\n  background:rgba(63,185,80,.06);border:1px solid rgba(63,185,80,.2);\r\n}\r\n.verify-box h4{font-size:.78rem;color:var(--ok);margin-bottom:8px;text-transform:uppercase;letter-spacing:.5px}\r\n.verify-box .v-line{font-size:.78rem;line-height:1.7;font-family:'Cascadia Code','Fira Code',Consolas,monospace;color:var(--dim)}\r\n.verify-box .v-line:last-child{color:var(--ok);font-weight:700;margin-top:4px}\r\n\/* Modal *\/\r\n.modal-overlay{\r\n  display:none;position:fixed;inset:0;background:rgba(0,0,0,.7);\r\n  z-index:100;justify-content:center;align-items:center;padding:20px;\r\n}\r\n.modal-overlay.show{display:flex}\r\n.modal-box{\r\n  background:var(--panel);border:1px solid var(--border);\r\n  border-radius:var(--rad);padding:24px;max-width:600px;width:100%;\r\n  max-height:80vh;overflow-y:auto;position:relative;\r\n}\r\n.modal-box h2{font-size:1.1rem;margin-bottom:16px;color:#fff}\r\n.modal-box .step{\r\n  padding:10px 14px;margin-bottom:8px;border-radius:8px;\r\n  background:var(--panel2);border-left:3px solid var(--accent);\r\n  font-size:.84rem;line-height:1.7;\r\n  font-family:'Cascadia Code','Fira Code',Consolas,monospace;\r\n}\r\n.modal-box .step.final{border-left-color:var(--ok);background:rgba(63,185,80,.06)}\r\n.modal-close{\r\n  position:absolute;top:12px;right:14px;background:none;border:none;\r\n  color:var(--dim);font-size:1.4rem;cursor:pointer;line-height:1;\r\n}\r\n.modal-close:hover{color:#fff}\r\n\/* Responsive *\/\r\n@media(max-width:920px){\r\n  .level-content{flex-direction:column}\r\n  .ctrl-panel{flex:none;width:100%}\r\n  nav#tabs{flex-wrap:wrap}\r\n}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<header>\r\n  <h1>Momento de una Fuerza respecto a un Punto<\/h1>\r\n  <p>F&#237;sica 2 &#8212; Ingenier&#237;a &#8212; Universidad Nacional de San Luis<\/p>\r\n<\/header>\r\n\r\n<nav id=\"tabs\">\r\n  <button class=\"tab-btn active\" onclick=\"switchTab(1)\">Nivel 1<\/button>\r\n  <button class=\"tab-btn\" onclick=\"switchTab(2)\">Nivel 2<\/button>\r\n  <button class=\"tab-btn\" onclick=\"switchTab(3)\">Nivel 3<\/button>\r\n<\/nav>\r\n\r\n<main>\r\n\r\n<!-- ==================== NIVEL 1 ==================== -->\r\n<section id=\"level1\" class=\"level active\">\r\n  <div class=\"level-intro\">\r\n    Observ&#225; c&#243;mo el momento de una fuerza depende de tres factores simult&#225;neos: la magnitud de la fuerza <b>F<\/b>, la distancia al punto <b>r<\/b> y el &#225;ngulo de aplicaci&#243;n <b>&#952;<\/b>. F&#237;jate en la descomposici&#243;n de la fuerza en componentes paralela y perpendicular a la l&#237;nea OP: solo la perpendicular genera momento.\r\n  <\/div>\r\n  <div class=\"level-content\">\r\n    <div class=\"svg-wrap\">\r\n      <svg id=\"svg1\" viewBox=\"0 0 720 430\"><\/svg>\r\n    <\/div>\r\n    <div class=\"ctrl-panel\">\r\n      <div class=\"ctrl-card\">\r\n        <h3>Par&#225;metros<\/h3>\r\n        <div class=\"slider-row\">\r\n          <div class=\"slider-label\"><span>Magnitud F<\/span><span id=\"v1F\">50 N<\/span><\/div>\r\n          <input type=\"range\" id=\"s1F\" min=\"0\" max=\"100\" value=\"50\" step=\"1\">\r\n        <\/div>\r\n        <div class=\"slider-row\">\r\n          <div class=\"slider-label\"><span>Distancia r<\/span><span id=\"v1r\">1.00 m<\/span><\/div>\r\n          <input type=\"range\" id=\"s1r\" min=\"0\" max=\"200\" value=\"100\" step=\"1\">\r\n        <\/div>\r\n        <div class=\"slider-row\">\r\n          <div class=\"slider-label\"><span>&#193;ngulo &#952;<\/span><span id=\"v1t\">45&#176;<\/span><\/div>\r\n          <input type=\"range\" id=\"s1t\" min=\"0\" max=\"180\" value=\"45\" step=\"1\">\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"ctrl-card\">\r\n        <h3>F&#243;rmula<\/h3>\r\n        <div class=\"formula-box\" id=\"formula1\"><\/div>\r\n      <\/div>\r\n      <div class=\"result-box\" id=\"result1\"><\/div>\r\n      <div id=\"msg1\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ==================== NIVEL 2 ==================== -->\r\n<section id=\"level2\" class=\"level\">\r\n  <div class=\"level-intro\">\r\n    Ahora hay varias fuerzas actuando simult&#225;neamente sobre un cuerpo r&#237;gido. Cada fuerza contribuye al momento total con su propio signo seg&#250;n el sentido de giro. Observa la tabla de desglose y busca condiciones de equilibrio rotacional (&#931;M = 0).\r\n  <\/div>\r\n  <div class=\"level-content\">\r\n    <div class=\"svg-wrap\">\r\n      <svg id=\"svg2\" viewBox=\"0 0 720 430\"><\/svg>\r\n    <\/div>\r\n    <div class=\"ctrl-panel\">\r\n      <div class=\"ctrl-card\">\r\n        <h3>Fuerzas<\/h3>\r\n        <div id=\"forces2ctrl\"><\/div>\r\n      <\/div>\r\n      <div class=\"btn-row\">\r\n        <button class=\"btn btn-primary\" onclick=\"L2.randomize()\">Caso aleatorio<\/button>\r\n        <button class=\"btn\" onclick=\"L2.stepByStep()\">Paso a paso<\/button>\r\n      <\/div>\r\n      <div class=\"ctrl-card\">\r\n        <h3>Tabla de momentos<\/h3>\r\n        <div class=\"tbl-wrap\">\r\n          <table class=\"dt\" id=\"table2\"><\/table>\r\n        <\/div>\r\n      <\/div>\r\n      <div id=\"eq2\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ==================== NIVEL 3 ==================== -->\r\n<section id=\"level3\" class=\"level\">\r\n  <div class=\"level-intro\">\r\n    Aplicaci&#243;n real: una m&#233;nsula empotrada con cable tensor y carga colgada. Plantea el equilibrio de momentos respecto a la articulaci&#243;n A para despejar la tensi&#243;n del cable, y verifica el resultado calculando momentos respecto a otro punto.\r\n  <\/div>\r\n  <div class=\"level-content\">\r\n    <div class=\"svg-wrap\">\r\n      <svg id=\"svg3\" viewBox=\"0 0 720 500\"><\/svg>\r\n    <\/div>\r\n    <div class=\"ctrl-panel\">\r\n      <div class=\"ctrl-card\">\r\n        <h3>Geometr&#237;a y carga<\/h3>\r\n        <div class=\"slider-row\">\r\n          <div class=\"slider-label\"><span>Altura AC<\/span><span id=\"v3h\">40 cm<\/span><\/div>\r\n          <input type=\"range\" id=\"s3h\" min=\"20\" max=\"60\" value=\"40\" step=\"1\">\r\n        <\/div>\r\n        <div class=\"slider-row\">\r\n          <div class=\"slider-label\"><span>Longitud AB<\/span><span id=\"v3l\">90 cm<\/span><\/div>\r\n          <input type=\"range\" id=\"s3l\" min=\"60\" max=\"120\" value=\"90\" step=\"1\">\r\n        <\/div>\r\n        <div class=\"slider-row\">\r\n          <div class=\"slider-label\"><span>Peso W<\/span><span id=\"v3w\">100 N<\/span><\/div>\r\n          <input type=\"range\" id=\"s3w\" min=\"50\" max=\"200\" value=\"100\" step=\"1\">\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"ctrl-card\">\r\n        <h3>Planteo &#931;M<sub>A<\/sub> = 0<\/h3>\r\n        <div id=\"calc3\"><\/div>\r\n      <\/div>\r\n      <div class=\"ctrl-card\">\r\n        <h3>Reacciones en A<\/h3>\r\n        <div id=\"react3\"><\/div>\r\n      <\/div>\r\n      <div id=\"verify3\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<\/main>\r\n\r\n<!-- Modal paso a paso -->\r\n<div class=\"modal-overlay\" id=\"modal2\">\r\n  <div class=\"modal-box\">\r\n    <button class=\"modal-close\" onclick=\"closeModal()\">&times;<\/button>\r\n    <h2>Resoluci&#243;n paso a paso<\/h2>\r\n    <div id=\"modal2content\"><\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n\/* ============================================\r\n   UTILIDADES SVG\r\n   ============================================ *\/\r\nconst NS='http:\/\/www.w3.org\/2000\/svg';\r\nconst PI=Math.PI, DEG=PI\/180;\r\nconst r2=(v)=>Math.round(v*100)\/100;\r\nconst r1=(v)=>Math.round(v*10)\/10;\r\n\r\n\/* Funci&#243;n flecha SVG *\/\r\nfunction arrowH(x1,y1,x2,y2,col,w,hl){\r\n  hl=hl||12;w=w||2.5;\r\n  const dx=x2-x1,dy=y2-y1,len=Math.sqrt(dx*dx+dy*dy);\r\n  if(len<2)return'';\r\n  const ux=dx\/len,uy=dy\/len,px=-uy,py=ux;\r\n  return`<line x1=\"${x1}\" y1=\"${y1}\" x2=\"${x2-ux*hl*.65}\" y2=\"${y2-uy*hl*.65}\" stroke=\"${col}\" stroke-width=\"${w}\" stroke-linecap=\"round\"\/>`+\r\n  `<polygon points=\"${x2},${y2} ${x2-ux*hl+px*hl*.38},${y2-uy*hl+py*hl*.38} ${x2-ux*hl-px*hl*.38},${y2-uy*hl-py*hl*.38}\" fill=\"${col}\"\/>`;\r\n}\r\n\/* Flecha punteada *\/\r\nfunction dArrowH(x1,y1,x2,y2,col,w,hl){\r\n  hl=hl||10;w=w||1.8;\r\n  const dx=x2-x1,dy=y2-y1,len=Math.sqrt(dx*dx+dy*dy);\r\n  if(len<2)return'';\r\n  const ux=dx\/len,uy=dy\/len,px=-uy,py=ux;\r\n  return`<line x1=\"${x1}\" y1=\"${y1}\" x2=\"${x2-ux*hl*.65}\" y2=\"${y2-uy*hl*.65}\" stroke=\"${col}\" stroke-width=\"${w}\" stroke-dasharray=\"6,4\" stroke-linecap=\"round\"\/>`+\r\n  `<polygon points=\"${x2},${y2} ${x2-ux*hl+px*hl*.38},${y2-uy*hl+py*hl*.38} ${x2-ux*hl-px*hl*.38},${y2-uy*hl-py*hl*.38}\" fill=\"${col}\"\/>`;\r\n}\r\n\/* Cabecera de flecha *\/\r\nfunction headH(x1,y1,x2,y2,col,sz){\r\n  sz=sz||11;\r\n  const dx=x2-x1,dy=y2-y1,len=Math.sqrt(dx*dx+dy*dy);\r\n  if(len<.5)return'';\r\n  const ux=dx\/len,uy=dy\/len,px=-uy,py=ux;\r\n  return`<polygon points=\"${x2},${y2} ${x2-ux*sz+px*sz*.38},${y2-uy*sz+py*sz*.38} ${x2-ux*sz-px*sz*.38},${y2-uy*sz-py*sz*.38}\" fill=\"${col}\"\/>`;\r\n}\r\n\/* Arco como polil&#237;nea *\/\r\nfunction arcH(cx,cy,r,a1,a2,col,w,dash){\r\n  w=w||2;const n=Math.max(16,Math.abs(a2-a1)*.6|0);\r\n  let pts='';\r\n  for(let i=0;i<=n;i++){const a=a1+(a2-a1)*i\/n;pts+=`${cx+r*Math.cos(a)},${cy-r*Math.sin(a)} `;}\r\n  return`<polyline points=\"${pts.trim()}\" fill=\"none\" stroke=\"${col}\" stroke-width=\"${w}\" ${dash?'stroke-dasharray=\"5,3':''}\/>`;\r\n}\r\n\/* Arco con flecha al final *\/\r\nfunction arcArrowH(cx,cy,r,a1,a2,col,w){\r\n  w=w||2.5;const n=36;let pts=[];\r\n  for(let i=0;i<=n;i++){const a=a1+(a2-a1)*i\/n;pts.push([cx+r*Math.cos(a),cy-r*Math.sin(a)]);}\r\n  let h=`<polyline points=\"${pts.map(p=>p.join(',')).join(' ')}\" fill=\"none\" stroke=\"${col}\" stroke-width=\"${w}\"\/>`;\r\n  const L=pts[pts.length-1],P=pts[pts.length-2];\r\n  h+=headH(P[0],P[1],L[0],L[1],col,10);\r\n  return h;\r\n}\r\n\/* Grilla *\/\r\nfunction gridH(w,h,col){\r\n  let s='';for(let x=0;x<=w;x+=50)s+=`<line x1=\"${x}\" y1=\"0\" x2=\"${x}\" y2=\"${h}\" stroke=\"${col}\" stroke-width=\".5\"\/>`;\r\n  for(let y=0;y<=h;y+=50)s+=`<line x1=\"0\" y1=\"${y}\" x2=\"${w}\" y2=\"${y}\" stroke=\"${col}\" stroke-width=\".5\"\/>`;\r\n  return s;\r\n}\r\n\/* &#193;ngulo recto *\/\r\nfunction rightAngleH(cx,cy,size,a1,col){\r\n  const p1=[cx+size*Math.cos(a1),cy-size*Math.sin(a1)];\r\n  const p2=[cx+size*Math.cos(a1+PI\/2),cy-size*Math.sin(a1+PI\/2)];\r\n  const p3=[cx+size*Math.cos(a1)+size*Math.cos(a1+PI\/2),cy-size*Math.sin(a1)-size*Math.sin(a1+PI\/2)];\r\n  return`<polyline points=\"${p1[0]},${p1[1]} ${p3[0]},${p3[1]} ${p2[0]},${p2[1]}\" fill=\"none\" stroke=\"${col}\" stroke-width=\"1.2\"\/>`;\r\n}\r\n\r\n\/* ============================================\r\n   NIVEL 1\r\n   ============================================ *\/\r\nconst L1={\r\n  svg:null, F:50, r:1.0, theta:45,\r\n  OX:120, OY:230, SR:170, SF:1.7,\r\n  init(){\r\n    this.svg=document.getElementById('svg1');\r\n    const sF=document.getElementById('s1F');\r\n    const sr=document.getElementById('s1r');\r\n    const st=document.getElementById('s1t');\r\n    sF.oninput=()=>{this.F=+sF.value;document.getElementById('v1F').textContent=this.F+' N';this.update();};\r\n    sr.oninput=()=>{this.r=+sr.value\/100;document.getElementById('v1r').textContent=this.r.toFixed(2)+' m';this.update();};\r\n    st.oninput=()=>{this.theta=+st.value;document.getElementById('v1t').textContent=this.theta+'\\u00B0';this.update();};\r\n    this.update();\r\n  },\r\n  update(){this.draw();this.updateUI();},\r\n  draw(){\r\n    const s=this.svg, OX=this.OX, OY=this.OY, SR=this.SR, SF=this.SF;\r\n    const r=this.r, F=this.F, th=this.theta*DEG;\r\n    const px=OX+r*SR, py=OY;\r\n    const fScale=F*SF;\r\n    const fex=px+fScale*Math.cos(th), fey=py-fScale*Math.sin(th);\r\n    const fPar=F*Math.cos(th), fPerp=F*Math.sin(th);\r\n    const d=r*Math.sin(th);\r\n    const M=r2(F*r*Math.sin(th));\r\n    \/* Pie del brazo de palanca *\/\r\n    const footX=OX+r*SR*Math.sin(th)*Math.sin(th);\r\n    const footY=OY+r*SR*Math.cos(th)*Math.sin(th);\r\n    let h='';\r\n    h+=gridH(720,430,'#151a24');\r\n    \/* L&#237;nea OP *\/\r\n    if(r>0.01)h+=`<line x1=\"${OX}\" y1=\"${OY}\" x2=\"${px}\" y2=\"${py}\" stroke=\"#3a4250\" stroke-width=\"1.8\" stroke-dasharray=\"8,5\"\/>`;\r\n    \/* Brazo de palanca *\/\r\n    if(d>0.015&&r>0.01){\r\n      h+=dArrowH(OX,OY,footX,footY,'#e3b341',1.8,9);\r\n      \/* Marca de &#225;ngulo recto en pie *\/\r\n      const angLine=Math.atan2(fey-py,fex-px);\r\n      const angOP=Math.atan2(OY-footY,OX-footX);\r\n      h+=rightAngleH(footX,footY,10,angOP,'#e3b341');\r\n      \/* Etiqueta d *\/\r\n      const mx=(OX+footX)\/2, my=(OY+footY)\/2;\r\n      const offX=-16, offY=16;\r\n      h+=`<text x=\"${mx+offX}\" y=\"${my+offY}\" fill=\"#e3b341\" font-size=\"12\" font-weight=\"700\" font-family=\"Cascadia Code,Consolas,monospace\">d = ${r2(d)} m<\/text>`;\r\n    }\r\n    \/* Componente paralela (gris punteada) *\/\r\n    if(Math.abs(fPar)>0.5){\r\n      const parEndX=px+fPar*SF;\r\n      h+=dArrowH(px,py,parEndX,py,'#5a6270',1.8,9);\r\n      h+=`<text x=\"${(px+parEndX)\/2}\" y=\"${py+18}\" fill=\"#5a6270\" font-size=\"10.5\" text-anchor=\"middle\" font-family=\"Cascadia Code,Consolas,monospace\">F&#8741; = ${r2(fPar)} N<\/text>`;\r\n    }\r\n    \/* Componente perpendicular (cian) *\/\r\n    if(Math.abs(fPerp)>0.5){\r\n      const perpEndY=py-fPerp*SF;\r\n      h+=arrowH(px,py,px,perpEndY,'#56d4dd',2.5,11);\r\n      h+=`<text x=\"${px+14}\" y=\"${(py+perpEndY)\/2+4}\" fill=\"#56d4dd\" font-size=\"10.5\" font-family=\"Cascadia Code,Consolas,monospace\">F&#8869; = ${r2(fPerp)} N<\/text>`;\r\n    }\r\n    \/* Fuerza completa *\/\r\n    if(F>0.5){\r\n      h+=arrowH(px,py,fex,fey,'#f97583',3,14);\r\n      h+=`<text x=\"${fex+8}\" y=\"${fey-8}\" fill=\"#f97583\" font-size=\"13\" font-weight=\"700\" font-family=\"Cascadia Code,Consolas,monospace\">F = ${F} N<\/text>`;\r\n    }\r\n    \/* Arco de &#225;ngulo &#952; *\/\r\n    if(F>0.5&&this.theta>2&&this.theta<178){\r\n      const arcR=Math.min(40,fScale*.3+15);\r\n      h+=arcH(px,py,arcR,0,th,'#fff',1.5);\r\n      const mid=th\/2;\r\n      h+=`<text x=\"${px+(arcR+14)*Math.cos(mid)}\" y=\"${py-(arcR+14)*Math.sin(mid)+4}\" fill=\"#fff\" font-size=\"11.5\" text-anchor=\"middle\" font-weight=\"600\">&#952; = ${this.theta}&#176;<\/text>`;\r\n    }\r\n    \/* Flecha curva de giro *\/\r\n    if(Math.abs(M)>0.05){\r\n      const rotR=35;\r\n      h+=arcArrowH(OX,OY,rotR,PI*0.15,PI*0.85,'#56d4dd',2.5);\r\n      h+=`<text x=\"${OX}\" y=\"${OY+rotR+18}\" fill=\"#56d4dd\" font-size=\"10\" text-anchor=\"middle\" font-weight=\"600\">CCW (+)<\/text>`;\r\n    }\r\n    \/* Punto O *\/\r\n    h+=`<circle cx=\"${OX}\" cy=\"${OY}\" r=\"7\" fill=\"#0d1117\" stroke=\"#58a6ff\" stroke-width=\"2.5\"\/>`;\r\n    h+=`<circle cx=\"${OX}\" cy=\"${OY}\" r=\"2.5\" fill=\"#58a6ff\"\/>`;\r\n    h+=`<text x=\"${OX}\" y=\"${OY+24}\" fill=\"#58a6ff\" font-size=\"13\" font-weight=\"700\" text-anchor=\"middle\">O<\/text>`;\r\n    \/* Punto P *\/\r\n    h+=`<circle cx=\"${px}\" cy=\"${py}\" r=\"5\" fill=\"#0d1117\" stroke=\"#c9d1d9\" stroke-width=\"2\"\/>`;\r\n    h+=`<text x=\"${px}\" y=\"${py+20}\" fill=\"#c9d1d9\" font-size=\"13\" font-weight=\"700\" text-anchor=\"middle\">P<\/text>`;\r\n    \/* Etiqueta r *\/\r\n    if(r>0.05){\r\n      h+=`<text x=\"${(OX+px)\/2}\" y=\"${OY-12}\" fill=\"#8b949e\" font-size=\"11.5\" text-anchor=\"middle\" font-family=\"Cascadia Code,Consolas,monospace\">r = ${r.toFixed(2)} m<\/text>`;\r\n    }\r\n    \/* Leyenda *\/\r\n    h+=`<rect x=\"12\" y=\"385\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#f97583\"\/>`;\r\n    h+=`<text x=\"28\" y=\"395\" fill=\"#8b949e\" font-size=\"10\">Fuerza F<\/text>`;\r\n    h+=`<rect x=\"110\" y=\"385\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#56d4dd\"\/>`;\r\n    h+=`<text x=\"126\" y=\"395\" fill=\"#8b949e\" font-size=\"10\">Componente &#8869;<\/text>`;\r\n    h+=`<rect x=\"235\" y=\"385\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#5a6270\"\/>`;\r\n    h+=`<text x=\"251\" y=\"395\" fill=\"#8b949e\" font-size=\"10\">Componente &#8741;<\/text>`;\r\n    h+=`<rect x=\"360\" y=\"385\" width=\"10\" height=\"10\" rx=\"2\" fill=\"#e3b341\"\/>`;\r\n    h+=`<text x=\"376\" y=\"395\" fill=\"#8b949e\" font-size=\"10\">Brazo de palanca d<\/text>`;\r\n    s.innerHTML=h;\r\n  },\r\n  updateUI(){\r\n    const th=this.theta*DEG, M=r2(this.F*this.r*Math.sin(th));\r\n    const sinT=Math.sin(th), cosT=Math.cos(th);\r\n    \/* F&#243;rmula *\/\r\n    document.getElementById('formula1').innerHTML=\r\n      `M = F &middot; r &middot; sin &#952;<br>`+\r\n      `M = ${this.F} &middot; ${this.r.toFixed(2)} &middot; sin(${this.theta}&#176;)<br>`+\r\n      `M = ${this.F} &middot; ${this.r.toFixed(2)} &middot; ${r2(sinT)}<br>`+\r\n      `<b>M = ${M} N&middot;m<\/b>`;\r\n    \/* Resultado *\/\r\n    const sign=M>=0?'+':'';\r\n    const sense=M>0.05?'Antihorario (CCW)':M<-0.05?'Horario (CW)':'Nulo';\r\n    const sColor=M>0.05?'var(--pos)':M<-0.05?'var(--neg)':'var(--dim)';\r\n    document.getElementById('result1').innerHTML=\r\n      `<div class=\"label\">MOMENTO RESULTANTE<\/div>`+\r\n      `<div class=\"value\" style=\"color:${sColor}\">${sign}${M} N&middot;m<\/div>`+\r\n      `<div class=\"sense\" style=\"background:${M>0.05?'rgba(86,212,221,.12)':M<-0.05?'rgba(249,117,131,.12)':'rgba(123,135,148,.1)'};color:${sColor}\">${sense}<\/div>`;\r\n    \/* Mensajes did&#225;cticos *\/\r\n    let msg='';\r\n    if(Math.abs(this.theta-90)<3&&this.F>1&&this.r>0.01)\r\n      msg=`<div class=\"msg-box warn\">&#9888; &#952; &#8776; 90&#176;: el momento es m&#225;ximo. Toda la fuerza es perpendicular a OP, as&#237; que d = r = ${this.r.toFixed(2)} m y M = F&middot;r.<\/div>`;\r\n    else if((this.theta<3||this.theta>177)&&this.F>1&&this.r>0.01)\r\n      msg=`<div class=\"msg-box info\">&#9432; &#952; &#8776; ${this.theta<3?'0':'180'}&#176;: el momento es nulo. La fuerza pasa por la l&#237;nea de acci&#243;n de O, no hay brazo de palanca (d &#8776; 0).<\/div>`;\r\n    else if(this.r<0.05&&this.F>1)\r\n      msg=`<div class=\"msg-box info\">&#9432; r &#8776; 0: sin brazo de palanca no hay momento, aunque la fuerza sea grande (F = ${this.F} N).<\/div>`;\r\n    document.getElementById('msg1').innerHTML=msg;\r\n  }\r\n};\r\n\r\n\/* ============================================\r\n   NIVEL 2\r\n   ============================================ *\/\r\nconst L2={\r\n  svg:null,\r\n  forces:[\r\n    {F:60,r:0.8,theta:90,color:'#f97583',name:'F\\u2081'},\r\n    {F:40,r:1.5,theta:270,color:'#56d4dd',name:'F\\u2082'},\r\n    {F:30,r:0.4,theta:90,color:'#e3b341',name:'F\\u2083'},\r\n    {F:0,r:1.0,theta:0,color:'#7ee787',name:'F\\u2084'}\r\n  ],\r\n  OX:90, OY:215, SR:150, SF:1.4,\r\n  init(){\r\n    this.svg=document.getElementById('svg2');\r\n    \/* Generar controles *\/\r\n    let h='';\r\n    this.forces.forEach((f,i)=>{\r\n      h+=`<div class=\"force-ctrl\">`+\r\n        `<div class=\"f-title\"><span class=\"dot\" style=\"background:${f.color}\"><\/span>${f.name}<\/div>`+\r\n        `<div class=\"slider-row\"><div class=\"slider-label\"><span>F<\/span><span id=\"v2f${i}\">${f.F} N<\/span><\/div>`+\r\n        `<input type=\"range\" id=\"s2f${i}\" min=\"0\" max=\"100\" value=\"${f.F}\" step=\"1\" style=\"accent-color:${f.color}\"><\/div>`+\r\n        `<div class=\"slider-row\"><div class=\"slider-label\"><span>r<\/span><span id=\"v2r${i}\">${f.r.toFixed(2)} m<\/span><\/div>`+\r\n        `<input type=\"range\" id=\"s2r${i}\" min=\"0\" max=\"200\" value=\"${f.r*100}\" step=\"1\"><\/div>`+\r\n        `<div class=\"slider-row\"><div class=\"slider-label\"><span>&#952;<\/span><span id=\"v2t${i}\">${f.theta}&#176;<\/span><\/div>`+\r\n        `<input type=\"range\" id=\"s2t${i}\" min=\"0\" max=\"360\" value=\"${f.theta}\" step=\"1\"><\/div><\/div>`;\r\n    });\r\n    document.getElementById('forces2ctrl').innerHTML=h;\r\n    \/* Eventos *\/\r\n    this.forces.forEach((f,i)=>{\r\n      document.getElementById('s2f'+i).oninput=function(){\r\n        L2.forces[i].F=+this.value;\r\n        document.getElementById('v2f'+i).textContent=this.value+' N';\r\n        L2.update();\r\n      };\r\n      document.getElementById('s2r'+i).oninput=function(){\r\n        L2.forces[i].r=+this.value\/100;\r\n        document.getElementById('v2r'+i).textContent=(+this.value\/100).toFixed(2)+' m';\r\n        L2.update();\r\n      };\r\n      document.getElementById('s2t'+i).oninput=function(){\r\n        L2.forces[i].theta=+this.value;\r\n        document.getElementById('v2t'+i).textContent=this.value+'\\u00B0';\r\n        L2.update();\r\n      };\r\n    });\r\n    this.update();\r\n  },\r\n  calcMoments(){\r\n    return this.forces.map(f=>{\r\n      const th=f.theta*DEG;\r\n      const d=r2(f.r*Math.sin(th));\r\n      const M=r2(f.F*f.r*Math.sin(th));\r\n      const sense=M>0.05?'CCW':M<-0.05?'CW':'&#8212;';\r\n      return{...f,d,M,sense};\r\n    });\r\n  },\r\n  update(){this.draw();this.updateTable();this.updateEq();},\r\n  draw(){\r\n    const s=this.svg,OX=this.OX,OY=this.OY,SR=this.SR,SF=this.SF;\r\n    let h='';\r\n    h+=gridH(720,430,'#151a24');\r\n    \/* L&#237;nea de referencia (viga) *\/\r\n    h+=`<line x1=\"${OX}\" y1=\"${OY}\" x2=\"${OX+2.1*SR}\" y2=\"${OY}\" stroke=\"#2a3140\" stroke-width=\"1.5\"\/>`;\r\n    \/* Punto O *\/\r\n    h+=`<circle cx=\"${OX}\" cy=\"${OY}\" r=\"7\" fill=\"#0d1117\" stroke=\"#58a6ff\" stroke-width=\"2.5\"\/>`;\r\n    h+=`<circle cx=\"${OX}\" cy=\"${OY}\" r=\"2.5\" fill=\"#58a6ff\"\/>`;\r\n    h+=`<text x=\"${OX}\" y=\"${OY+24}\" fill=\"#58a6ff\" font-size=\"13\" font-weight=\"700\" text-anchor=\"middle\">O<\/text>`;\r\n    \/* Fuerzas *\/\r\n    this.forces.forEach((f,i)=>{\r\n      const px=OX+f.r*SR, py=OY;\r\n      const th=f.theta*DEG;\r\n      const fScale=f.F*SF;\r\n      const fex=px+fScale*Math.cos(th), fey=py-fScale*Math.sin(th);\r\n      \/* Punto de aplicaci&#243;n *\/\r\n      h+=`<circle cx=\"${px}\" cy=\"${py}\" r=\"4\" fill=\"#0d1117\" stroke=\"${f.color}\" stroke-width=\"1.8\"\/>`;\r\n      if(f.F>0.5){\r\n        h+=arrowH(px,py,fex,fey,f.color,2.5,11);\r\n        \/* Etiqueta *\/\r\n        const lx=fex+10*Math.cos(th+0.3), ly=fey-10*Math.sin(th+0.3);\r\n        h+=`<text x=\"${lx}\" y=\"${ly}\" fill=\"${f.color}\" font-size=\"11\" font-weight=\"700\" font-family=\"Cascadia Code,Consolas,monospace\">${f.name}=${f.F}N<\/text>`;\r\n      }\r\n    });\r\n    \/* Flecha de giro neto *\/\r\n    const moms=this.calcMoments();\r\n    const sumM=moms.reduce((a,m)=>a+m.M,0);\r\n    if(Math.abs(sumM)>0.1){\r\n      const col=sumM>0?'#56d4dd':'#f97583';\r\n      const rR=40;\r\n      if(sumM>0) h+=arcArrowH(OX,OY,rR,PI*0.15,PI*0.85,col,2.5);\r\n      else h+=arcArrowH(OX,OY,rR,PI*0.15,PI*0.85,col,2.5);\r\n      \/* Para CW dibujamos al rev&#233;s *\/\r\n      if(sumM<0){\r\n        \/* Re-draw como CW *\/\r\n        let h2='';\r\n        const n=36;let pts=[];\r\n        for(let i=0;i<=n;i++){const a=PI*0.85-(PI*0.7)*i\/n;pts.push([OX+rR*Math.cos(a),OY-rR*Math.sin(a)]);}\r\n        h2=`<polyline points=\"${pts.map(p=>p.join(',')).join(' ')}\" fill=\"none\" stroke=\"${col}\" stroke-width=\"2.5\"\/>`;\r\n        const L=pts[pts.length-1],P=pts[pts.length-2];\r\n        h2+=headH(P[0],P[1],L[0],L[1],col,10);\r\n        \/* Reemplazar la &#250;ltima arcArrow *\/\r\n        h=h.replace(arcArrowH(OX,OY,rR,PI*0.15,PI*0.85,col,2.5),h2);\r\n      }\r\n    }\r\n    \/* Leyenda *\/\r\n    let lx=12;\r\n    this.forces.forEach((f,i)=>{\r\n      h+=`<rect x=\"${lx}\" y=\"400\" width=\"9\" height=\"9\" rx=\"2\" fill=\"${f.color}\"\/>`;\r\n      h+=`<text x=\"${lx+14}\" y=\"409\" fill=\"#8b949e\" font-size=\"10\">${f.name}<\/text>`;\r\n      lx+=65;\r\n    });\r\n    s.innerHTML=h;\r\n  },\r\n  updateTable(){\r\n    const moms=this.calcMoments();\r\n    const sumM=r2(moms.reduce((a,m)=>a+m.M,0));\r\n    const sumSense=sumM>0.05?'CCW':sumM<-0.05?'CW':'&#8212;';\r\n    let h=`<tr><th>Fuerza<\/th><th>F (N)<\/th><th>r (m)<\/th><th>&#952; (&#176;)<\/th><th>d (m)<\/th><th>M (N&middot;m)<\/th><th>Sentido<\/th><\/tr>`;\r\n    moms.forEach(m=>{\r\n      const sColor=m.M>0.05?'var(--pos)':m.M<-0.05?'var(--neg)':'var(--dim)';\r\n      h+=`<tr><td><span class=\"dot\" style=\"background:${m.color}\"><\/span>${m.name}<\/td>`+\r\n        `<td>${m.F}<\/td><td>${m.r.toFixed(2)}<\/td><td>${m.theta}<\/td><td>${m.d}<\/td>`+\r\n        `<td style=\"color:${sColor};font-weight:700\">${m.M>=0?'+':''}${m.M}<\/td><td>${m.sense}<\/td><\/tr>`;\r\n    });\r\n    h+=`<tr class=\"sum-row\"><td colspan=\"5\" style=\"text-align:right\">&#931;M<sub>O<\/sub><\/td>`+\r\n      `<td style=\"color:${sumM>0.05?'var(--pos)':sumM<-0.05?'var(--neg)':'var(--ok)'}\">${sumM>=0?'+':''}${sumM}<\/td>`+\r\n      `<td>${sumSense}<\/td><\/tr>`;\r\n    document.getElementById('table2').innerHTML=h;\r\n  },\r\n  updateEq(){\r\n    const sumM=r2(this.calcMoments().reduce((a,m)=>a+m.M,0));\r\n    const bal=Math.abs(sumM)<0.15;\r\n    if(bal){\r\n      document.getElementById('eq2').innerHTML=\r\n        `<div class=\"eq-indicator balanced\">`+\r\n        `<svg width=\"28\" height=\"28\" viewBox=\"0 0 28 28\"><circle cx=\"14\" cy=\"14\" r=\"12\" fill=\"none\" stroke=\"#3fb950\" stroke-width=\"2\"\/><polyline points=\"8,14 12,18 20,10\" fill=\"none\" stroke=\"#3fb950\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>`+\r\n        `<span>El sistema est&#225; en equilibrio rotacional respecto a O<\/span><\/div>`;\r\n    }else{\r\n      const dir=sumM>0?'antihorario (CCW)':'horario (CW)';\r\n      const col=sumM>0?'var(--pos)':'var(--neg)';\r\n      const spinCls=sumM>0?'spin-ccw':'spin-cw';\r\n      document.getElementById('eq2').innerHTML=\r\n        `<div class=\"eq-indicator unbalanced\">`+\r\n        `<div class=\"spin-icon ${spinCls}\"><svg viewBox=\"0 0 28 28\">`+\r\n        `<path d=\"M14 4 A10 10 0 0 ${sumM>0?'1':'0'} ${sumM>0?'14':'24'} 14\" fill=\"none\" stroke=\"${sumM>0?'#56d4dd':'#f97583'}\" stroke-width=\"2.5\" stroke-linecap=\"round\"\/>`+\r\n        `<polygon points=\"${sumM>0?'14,4 10,9 18,9':'24,14 19,10 19,18'}\" fill=\"${sumM>0?'#56d4dd':'#f97583'}\"\/>`+\r\n        `<\/svg><\/div>`+\r\n        `<span>El cuerpo girar&#237;a en sentido <b style=\"color:${col}\">${dir}<\/b> (M = ${sumM>=0?'+':''}${sumM} N&middot;m)<\/span><\/div>`;\r\n    }\r\n  },\r\n  randomize(){\r\n    this.forces.forEach((f,i)=>{\r\n      f.F=Math.round(15+Math.random()*75);\r\n      f.r=r1(0.2+Math.random()*1.6);\r\n      f.theta=Math.round(Math.random()*360);\r\n      document.getElementById('s2f'+i).value=f.F;\r\n      document.getElementById('v2f'+i).textContent=f.F+' N';\r\n      document.getElementById('s2r'+i).value=Math.round(f.r*100);\r\n      document.getElementById('v2r'+i).textContent=f.r.toFixed(2)+' m';\r\n      document.getElementById('s2t'+i).value=f.theta;\r\n      document.getElementById('v2t'+i).textContent=f.theta+'\\u00B0';\r\n    });\r\n    this.update();\r\n  },\r\n  stepByStep(){\r\n    const moms=this.calcMoments();\r\n    const sumM=r2(moms.reduce((a,m)=>a+m.M,0));\r\n    let h='';\r\n    moms.forEach((m,i)=>{\r\n      const th=m.theta*DEG;\r\n      h+=`<div class=\"step\">`+\r\n        `<b>Paso ${i+1}: ${m.name}<\/b><br>`+\r\n        `Brazo de palanca: d = r &middot; sin &#952; = ${m.r.toFixed(2)} &middot; sin(${m.theta}&#176;) = ${m.r.toFixed(2)} &middot; ${r2(Math.sin(th))} = <b>${m.d} m<\/b><br>`+\r\n        `Momento: M = F &middot; d = ${m.F} &middot; ${m.d} = <b>${m.M>=0?'+':''}${m.M} N&middot;m<\/b> (${m.sense})<\/div>`;\r\n    });\r\n    const dir=sumM>0.05?'antihorario (CCW)':sumM<-0.05?'horario (CW)':'nulo (equilibrio)';\r\n    h+=`<div class=\"step final\">`+\r\n      `<b>Paso final: Suma algebraica<\/b><br>`+\r\n      `&#931;M<sub>O<\/sub> = ${moms.map(m=>(m.M>=0?'+':'')+m.M).join(' + ')}<br>`+\r\n      `&#931;M<sub>O<\/sub> = <b>${sumM>=0?'+':''}${sumM} N&middot;m<\/b><br>`+\r\n      `Conclusi&#243;n: giro neto <b>${dir}<\/b><\/div>`;\r\n    document.getElementById('modal2content').innerHTML=h;\r\n    document.getElementById('modal2').classList.add('show');\r\n  }\r\n};\r\n\r\n\/* ============================================\r\n   NIVEL 3\r\n   ============================================ *\/\r\nconst L3={\r\n  svg:null, h:40, l:90, w:100,\r\n  S:4, \/* escala px\/cm *\/\r\n  WX:90, BY:400,\r\n  init(){\r\n    this.svg=document.getElementById('svg3');\r\n    document.getElementById('s3h').oninput=function(){\r\n      L3.h=+this.value;document.getElementById('v3h').textContent=this.value+' cm';L3.update();};\r\n    document.getElementById('s3l').oninput=function(){\r\n      L3.l=+this.value;document.getElementById('v3l').textContent=this.value+' cm';L3.update();};\r\n    document.getElementById('s3w').oninput=function(){\r\n      L3.w=+this.value;document.getElementById('v3w').textContent=this.value+' N';L3.update();};\r\n    this.update();\r\n  },\r\n  calc(){\r\n    const hM=this.h\/100, lM=this.l\/100, W=this.w;\r\n    const theta=Math.atan2(hM,lM);\r\n    const thetaDeg=r2(theta\/DEG);\r\n    const sinT=Math.sin(theta), cosT=Math.cos(theta);\r\n    const T=r2(W\/sinT);\r\n    const Ax=r2(T*cosT);\r\n    const Ay=r2(W-T*sinT);\r\n    \/* Verificaci&#243;n: &#931;M_B *\/\r\n    const mB_W=0;\r\n    const mB_T=0;\r\n    const mB_Ax=0;\r\n    const mB_Ay=r2(-Ay*lM);\r\n    const sumMB=r2(mB_W+mB_T+mB_Ax+mB_Ay);\r\n    return{hM,lM,W,theta,thetaDeg,sinT,cosT,T,Ax,Ay,mB_W,mB_T,mB_Ax,mB_Ay,sumMB};\r\n  },\r\n  update(){this.draw();this.updateCalc();},\r\n  draw(){\r\n    const s=this.svg,S=this.S,WX=this.WX,BY=this.BY;\r\n    const bPx=this.l*S, hPx=this.h*S;\r\n    const AX=WX, AY=BY;\r\n    const BX=WX+bPx, BY2=BY;\r\n    const CX=WX, CY=BY-hPx;\r\n    const c=this.calc();\r\n    let h='';\r\n    h+=gridH(720,500,'#151a24');\r\n    \/* Pared (textura de l&#237;neas diagonales) *\/\r\n    h+=`<rect x=\"${WX-25}\" y=\"${CY-20}\" width=\"25\" height=\"${BY-CY+40}\" fill=\"#2a2f38\" stroke=\"#3a4050\" stroke-width=\"1\"\/>`;\r\n    for(let i=0;i<20;i++){\r\n      const yy=CY-20+i*18;\r\n      h+=`<line x1=\"${WX-25}\" y1=\"${yy}\" x2=\"${WX}\" y2=\"${yy+18}\" stroke=\"#3a4050\" stroke-width=\".7\"\/>`;\r\n    }\r\n    \/* Viga AB *\/\r\n    h+=`<line x1=\"${AX}\" y1=\"${AY}\" x2=\"${BX}\" y2=\"${BY2}\" stroke=\"#c9d1d9\" stroke-width=\"5\" stroke-linecap=\"round\"\/>`;\r\n    \/* Cable CB *\/\r\n    h+=`<line x1=\"${CX}\" y1=\"${CY}\" x2=\"${BX}\" y2=\"${BY2}\" stroke=\"#f0883e\" stroke-width=\"2.5\" stroke-dasharray=\"10,5\"\/>`;\r\n    \/* Bloque de carga *\/\r\n    const bw=36,bh=30;\r\n    h+=`<rect x=\"${BX-bw\/2}\" y=\"${BY2}\" width=\"${bw}\" height=\"${bh}\" fill=\"#3a4050\" stroke=\"#8b949e\" stroke-width=\"1.5\" rx=\"3\"\/>`;\r\n    h+=`<text x=\"${BX}\" y=\"${BY2+bh\/2+4}\" fill=\"#c9d1d9\" font-size=\"11\" font-weight=\"700\" text-anchor=\"middle\" font-family=\"Cascadia Code,Consolas,monospace\">${this.w}N<\/text>`;\r\n    \/* Peso W *\/\r\n    const wLen=this.w*0.8;\r\n    h+=arrowH(BX,BY2+bh,BX,BY2+bh+wLen,'#f97583',3,13);\r\n    h+=`<text x=\"${BX+10}\" y=\"${BY2+bh+wLen-4}\" fill=\"#f97583\" font-size=\"12\" font-weight=\"700\" font-family=\"Cascadia Code,Consolas,monospace\">W<\/text>`;\r\n    \/* Tensi&#243;n T en B (hacia C) *\/\r\n    const tLen=c.T*0.5;\r\n    const tDx=CX-BX, tDy=CY-BY2, tMag=Math.sqrt(tDx*tDx+tDy*tDy);\r\n    const tUx=tDx\/tMag, tUy=tDy\/tMag;\r\n    const tEx=BX+tUx*tLen, tEy=BY2+tUy*tLen;\r\n    h+=arrowH(BX,BY2,tEx,tEy,'#f0883e',2.5,11);\r\n    h+=`<text x=\"${tEx-18}\" y=\"${tEy-6}\" fill=\"#f0883e\" font-size=\"11\" font-weight=\"700\" font-family=\"Cascadia Code,Consolas,monospace\">T<\/text>`;\r\n    \/* Componentes de T en B *\/\r\n    const tPerpLen=c.T*Math.sin(c.theta)*0.5;\r\n    const tParLen=c.T*Math.cos(c.theta)*0.5;\r\n    \/* Vertical (perp a viga) *\/\r\n    h+=dArrowH(BX,BY2,BX,BY2-tPerpLen,'rgba(240,136,62,.5)',1.5,8);\r\n    \/* Horizontal (paralela a viga) *\/\r\n    h+=dArrowH(BX,BY2,BX-tParLen,BY2,'rgba(240,136,62,.5)',1.5,8);\r\n    \/* Reacciones en A *\/\r\n    const aScale=0.5;\r\n    \/* Ax *\/\r\n    if(Math.abs(c.Ax)>0.5){\r\n      const axLen=c.Ax*aScale;\r\n      h+=arrowH(AX,AY,AX-axLen,AY,'#56d4dd',2.5,11);\r\n      h+=`<text x=\"${AX-axLen-8}\" y=\"${AY-10}\" fill=\"#56d4dd\" font-size=\"11\" font-weight=\"700\" font-family=\"Cascadia Code,Consolas,monospace\">Ax<\/text>`;\r\n    }\r\n    \/* Ay *\/\r\n    if(Math.abs(c.Ay)>0.5){\r\n      const ayLen=c.Ay*aScale;\r\n      h+=arrowH(AX,AY,AX,AY+ayLen,'#7ee787',2.5,11);\r\n      h+=`<text x=\"${AX+10}\" y=\"${AY+ayLen+4}\" fill=\"#7ee787\" font-size=\"11\" font-weight=\"700\" font-family=\"Cascadia Code,Consolas,monospace\">Ay<\/text>`;\r\n    }\r\n    \/* &#193;ngulo del cable *\/\r\n    if(c.thetaDeg>1){\r\n      const aR=35;\r\n      h+=arcH(BX,BY2,aR,PI,PI+c.theta,'#f0883e',1.5);\r\n      const mid=PI+c.theta\/2;\r\n      h+=`<text x=\"${BX+(aR+16)*Math.cos(mid)}\" y=\"${BY2-(aR+16)*Math.sin(mid)+4}\" fill=\"#f0883e\" font-size=\"10.5\" text-anchor=\"middle\" font-weight=\"600\">&#952;=${c.thetaDeg}&#176;<\/text>`;\r\n    }\r\n    \/* Puntos A, B, C *\/\r\n    h+=`<circle cx=\"${AX}\" cy=\"${AY}\" r=\"5\" fill=\"#0d1117\" stroke=\"#58a6ff\" stroke-width=\"2\"\/>`;\r\n    h+=`<text x=\"${AX-16}\" y=\"${AY+20}\" fill=\"#58a6ff\" font-size=\"13\" font-weight=\"700\" text-anchor=\"middle\">A<\/text>`;\r\n    h+=`<circle cx=\"${BX}\" cy=\"${BY2}\" r=\"4\" fill=\"#0d1117\" stroke=\"#c9d1d9\" stroke-width=\"1.8\"\/>`;\r\n    h+=`<text x=\"${BX}\" y=\"${BY2-10}\" fill=\"#c9d1d9\" font-size=\"13\" font-weight=\"700\" text-anchor=\"middle\">B<\/text>`;\r\n    h+=`<circle cx=\"${CX}\" cy=\"${CY}\" r=\"4\" fill=\"#0d1117\" stroke=\"#c9d1d9\" stroke-width=\"1.8\"\/>`;\r\n    h+=`<text x=\"${CX-16}\" y=\"${CY-8}\" fill=\"#c9d1d9\" font-size=\"13\" font-weight=\"700\" text-anchor=\"middle\">C<\/text>`;\r\n    \/* Cotas *\/\r\n    const coteY=BY+60;\r\n    \/* Cota horizontal AB *\/\r\n    h+=`<line x1=\"${AX}\" y1=\"${coteY-6}\" x2=\"${AX}\" y2=\"${coteY+6}\" stroke=\"#8b949e\" stroke-width=\"1\"\/>`;\r\n    h+=`<line x1=\"${BX}\" y1=\"${coteY-6}\" x2=\"${BX}\" y2=\"${coteY+6}\" stroke=\"#8b949e\" stroke-width=\"1\"\/>`;\r\n    h+=`<line x1=\"${AX}\" y1=\"${coteY}\" x2=\"${BX}\" y2=\"${coteY}\" stroke=\"#8b949e\" stroke-width=\"1\"\/>`;\r\n    h+=`<text x=\"${(AX+BX)\/2}\" y=\"${coteY+16}\" fill=\"#8b949e\" font-size=\"11\" text-anchor=\"middle\" font-family=\"Cascadia Code,Consolas,monospace\">${this.l} cm<\/text>`;\r\n    \/* Cota vertical AC *\/\r\n    const coteX=WX-42;\r\n    h+=`<line x1=\"${coteX-6}\" y1=\"${AY}\" x2=\"${coteX+6}\" y2=\"${AY}\" stroke=\"#8b949e\" stroke-width=\"1\"\/>`;\r\n    h+=`<line x1=\"${coteX-6}\" y1=\"${CY}\" x2=\"${coteX+6}\" y2=\"${CY}\" stroke=\"#8b949e\" stroke-width=\"1\"\/>`;\r\n    h+=`<line x1=\"${coteX}\" y1=\"${AY}\" x2=\"${coteX}\" y2=\"${CY}\" stroke=\"#8b949e\" stroke-width=\"1\"\/>`;\r\n    h+=`<text x=\"${coteX}\" y=\"${(AY+CY)\/2+4}\" fill=\"#8b949e\" font-size=\"11\" text-anchor=\"middle\" font-family=\"Cascadia Code,Consolas,monospace\" transform=\"rotate(-90,${coteX},${(AY+CY)\/2})\">${this.h} cm<\/text>`;\r\n    \/* Leyenda *\/\r\n    h+=`<rect x=\"12\" y=\"458\" width=\"9\" height=\"9\" rx=\"2\" fill=\"#f97583\"\/>`;\r\n    h+=`<text x=\"26\" y=\"467\" fill=\"#8b949e\" font-size=\"10\">Peso W<\/text>`;\r\n    h+=`<rect x=\"90\" y=\"458\" width=\"9\" height=\"9\" rx=\"2\" fill=\"#f0883e\"\/>`;\r\n    h+=`<text x=\"104\" y=\"467\" fill=\"#8b949e\" font-size=\"10\">Tensi&#243;n T<\/text>`;\r\n    h+=`<rect x=\"185\" y=\"458\" width=\"9\" height=\"9\" rx=\"2\" fill=\"#56d4dd\"\/>`;\r\n    h+=`<text x=\"199\" y=\"467\" fill=\"#8b949e\" font-size=\"10\">Ax<\/text>`;\r\n    h+=`<rect x=\"230\" y=\"458\" width=\"9\" height=\"9\" rx=\"2\" fill=\"#7ee787\"\/>`;\r\n    h+=`<text x=\"244\" y=\"467\" fill=\"#8b949e\" font-size=\"10\">Ay<\/text>`;\r\n    s.innerHTML=h;\r\n  },\r\n  updateCalc(){\r\n    const c=this.calc();\r\n    \/* Planteo *\/\r\n    document.getElementById('calc3').innerHTML=\r\n      `<div class=\"calc-step\">&#193;ngulo del cable: &#952; = arctan(${c.hM.toFixed(2)} \/ ${c.lM.toFixed(2)}) = <b>${c.thetaDeg}&#176;<\/b><\/div>`+\r\n      `<div class=\"calc-step\">La tensi&#243;n T se aplica en B, con componente perpendicular a la viga:<br>T&#8869; = T &middot; sin(${c.thetaDeg}&#176;) = T &middot; ${r2(c.sinT)}<\/div>`+\r\n      `<div class=\"calc-step\">El peso W = ${c.W} N en B es perpendicular a la viga (horizontal), con brazo = ${c.lM.toFixed(2)} m<\/div>`+\r\n      `<div class=\"calc-step highlight\">&#931;M<sub>A<\/sub> = 0:<br>T &middot; sin(${c.thetaDeg}&#176;) &middot; ${c.lM.toFixed(2)} &#8722; ${c.W} &middot; ${c.lM.toFixed(2)} = 0<\/div>`+\r\n      `<div class=\"calc-step result\">T = ${c.W} \/ sin(${c.thetaDeg}&#176;) = ${c.W} \/ ${r2(c.sinT)} = <b>${c.T} N<\/b><\/div>`;\r\n    \/* Reacciones *\/\r\n    document.getElementById('react3').innerHTML=\r\n      `<div class=\"calc-step\">&#931;F<sub>x<\/sub> = 0: Ax &#8722; T &middot; cos(${c.thetaDeg}&#176;) = 0<\/div>`+\r\n      `<div class=\"calc-step\" style=\"border-left-color:#56d4dd\"><b>Ax = ${c.T} &middot; ${r2(c.cosT)} = ${c.Ax} N<\/b> (&#8592;)<\/div>`+\r\n      `<div class=\"calc-step\">&#931;F<sub>y<\/sub> = 0: Ay + T &middot; sin(${c.thetaDeg}&#176;) &#8722; W = 0<\/div>`+\r\n      `<div class=\"calc-step\" style=\"border-left-color:#7ee787\"><b>Ay = ${c.W} &#8722; ${c.T} &middot; ${r2(c.sinT)} = ${c.Ay} N<\/b> (&#8593;)<\/div>`;\r\n    \/* Verificaci&#243;n *\/\r\n    document.getElementById('verify3').innerHTML=\r\n      `<div class=\"verify-box\"><h4>Verificaci&#243;n: &#931;M<sub>B<\/sub> = 0<\/h4>`+\r\n      `<div class=\"v-line\">Momento de W en B: ${c.mB_W} N&middot;m (fuerza en B)<\/div>`+\r\n      `<div class=\"v-line\">Momento de T en B: ${c.mB_T} N&middot;m (fuerza en B)<\/div>`+\r\n      `<div class=\"v-line\">Momento de Ax en A: ${c.mB_Ax} N&middot;m (sin brazo vertical)<\/div>`+\r\n      `<div class=\"v-line\">Momento de Ay en A: ${c.mB_Ay} N&middot;m (&#8722;${r2(c.Ay)} &middot; ${c.lM.toFixed(2)})<\/div>`+\r\n      `<div class=\"v-line\">&#931;M<sub>B<\/sub> = ${c.sumMB} N&middot;m &#10003; Equilibrio verificado<\/div><\/div>`;\r\n  }\r\n};\r\n\r\n\/* ============================================\r\n   NAVEGACI&#211;N DE PESTA&#209;AS\r\n   ============================================ *\/\r\nfunction switchTab(n){\r\n  document.querySelectorAll('.level').forEach(el=>el.classList.remove('active'));\r\n  document.querySelectorAll('.tab-btn').forEach(el=>el.classList.remove('active'));\r\n  document.getElementById('level'+n).classList.add('active');\r\n  document.querySelectorAll('.tab-btn')[n-1].classList.add('active');\r\n}\r\nfunction closeModal(){document.getElementById('modal2').classList.remove('show');}\r\ndocument.getElementById('modal2').addEventListener('click',function(e){\r\n  if(e.target===this)closeModal();\r\n});\r\n\r\n\/* ============================================\r\n   INICIALIZACI&#211;N\r\n   ============================================ *\/\r\ndocument.addEventListener('DOMContentLoaded',()=>{\r\n  L1.init();\r\n  L2.init();\r\n  L3.init();\r\n});\r\n<\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Momento de una Fuerza \u2014 Simulaci&#243;n Interactiva Momento de una Fuerza respecto a un Punto F&#237;sica 2 &#8212; Ingenier&#237;a &#8212; Universidad Nacional de San Luis&hellip;<\/p>\n","protected":false},"author":7,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-8345","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>momento_de_una_fuerza - F\u00edsica 2<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/momento_de_una_fuerza\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"momento_de_una_fuerza - F\u00edsica 2\" \/>\n<meta property=\"og:description\" content=\"Momento de una Fuerza \u2014 Simulaci&#243;n Interactiva Momento de una Fuerza respecto a un Punto F&#237;sica 2 &#8212; Ingenier&#237;a &#8212; Universidad Nacional de San Luis&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/momento_de_una_fuerza\/\" \/>\n<meta property=\"og:site_name\" content=\"F\u00edsica 2\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-07T00:13:18+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/index.php\\\/momento_de_una_fuerza\\\/\",\"url\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/index.php\\\/momento_de_una_fuerza\\\/\",\"name\":\"momento_de_una_fuerza - F\u00edsica 2\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/#website\"},\"datePublished\":\"2026-07-07T00:12:37+00:00\",\"dateModified\":\"2026-07-07T00:13:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/index.php\\\/momento_de_una_fuerza\\\/#breadcrumb\"},\"inLanguage\":\"es-AR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/index.php\\\/momento_de_una_fuerza\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/index.php\\\/momento_de_una_fuerza\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"momento_de_una_fuerza\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/#website\",\"url\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/\",\"name\":\"F\u00edsica 2\",\"description\":\"FICA - UNSL\",\"publisher\":{\"@id\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es-AR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/#organization\",\"name\":\"SAC- Secretar\u00eda General FICA\",\"url\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es-AR\",\"@id\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/SG-Logo.png\",\"contentUrl\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/wp-content\\\/uploads\\\/2021\\\/11\\\/SG-Logo.png\",\"width\":4483,\"height\":1231,\"caption\":\"SAC- Secretar\u00eda General FICA\"},\"image\":{\"@id\":\"https:\\\/\\\/fisica2.fica.unsl.edu.ar\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"momento_de_una_fuerza - F\u00edsica 2","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/momento_de_una_fuerza\/","og_locale":"es_ES","og_type":"article","og_title":"momento_de_una_fuerza - F\u00edsica 2","og_description":"Momento de una Fuerza \u2014 Simulaci&#243;n Interactiva Momento de una Fuerza respecto a un Punto F&#237;sica 2 &#8212; Ingenier&#237;a &#8212; Universidad Nacional de San Luis&hellip;","og_url":"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/momento_de_una_fuerza\/","og_site_name":"F\u00edsica 2","article_modified_time":"2026-07-07T00:13:18+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/momento_de_una_fuerza\/","url":"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/momento_de_una_fuerza\/","name":"momento_de_una_fuerza - F\u00edsica 2","isPartOf":{"@id":"https:\/\/fisica2.fica.unsl.edu.ar\/#website"},"datePublished":"2026-07-07T00:12:37+00:00","dateModified":"2026-07-07T00:13:18+00:00","breadcrumb":{"@id":"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/momento_de_una_fuerza\/#breadcrumb"},"inLanguage":"es-AR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/momento_de_una_fuerza\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/momento_de_una_fuerza\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inicio","item":"https:\/\/fisica2.fica.unsl.edu.ar\/"},{"@type":"ListItem","position":2,"name":"momento_de_una_fuerza"}]},{"@type":"WebSite","@id":"https:\/\/fisica2.fica.unsl.edu.ar\/#website","url":"https:\/\/fisica2.fica.unsl.edu.ar\/","name":"F\u00edsica 2","description":"FICA - UNSL","publisher":{"@id":"https:\/\/fisica2.fica.unsl.edu.ar\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fisica2.fica.unsl.edu.ar\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es-AR"},{"@type":"Organization","@id":"https:\/\/fisica2.fica.unsl.edu.ar\/#organization","name":"SAC- Secretar\u00eda General FICA","url":"https:\/\/fisica2.fica.unsl.edu.ar\/","logo":{"@type":"ImageObject","inLanguage":"es-AR","@id":"https:\/\/fisica2.fica.unsl.edu.ar\/#\/schema\/logo\/image\/","url":"https:\/\/fisica2.fica.unsl.edu.ar\/wp-content\/uploads\/2021\/11\/SG-Logo.png","contentUrl":"https:\/\/fisica2.fica.unsl.edu.ar\/wp-content\/uploads\/2021\/11\/SG-Logo.png","width":4483,"height":1231,"caption":"SAC- Secretar\u00eda General FICA"},"image":{"@id":"https:\/\/fisica2.fica.unsl.edu.ar\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/wp-json\/wp\/v2\/pages\/8345","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/wp-json\/wp\/v2\/comments?post=8345"}],"version-history":[{"count":4,"href":"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/wp-json\/wp\/v2\/pages\/8345\/revisions"}],"predecessor-version":[{"id":8349,"href":"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/wp-json\/wp\/v2\/pages\/8345\/revisions\/8349"}],"wp:attachment":[{"href":"https:\/\/fisica2.fica.unsl.edu.ar\/index.php\/wp-json\/wp\/v2\/media?parent=8345"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}