{"id":502,"date":"2026-08-28T16:50:30","date_gmt":"2026-08-28T14:50:30","guid":{"rendered":"https:\/\/secic.fcyt.umss.edu.bo\/?page_id=502"},"modified":"2026-08-28T18:49:04","modified_gmt":"2026-08-28T16:49:04","slug":"boussinesq","status":"publish","type":"page","link":"https:\/\/secic.fcyt.umss.edu.bo\/index.php\/boussinesq\/","title":{"rendered":"boussinesq"},"content":{"rendered":"\n<style>\n    .secic-boussinesq {\n        font-family: 'Inter', 'Segoe UI', sans-serif;\n        max-width: 1200px;\n        margin: 0 auto;\n        color: #1e293b;\n        background: #f8fafc;\n        border-radius: 12px;\n        border: 1px solid #cbd5e1;\n        box-shadow: 0 10px 25px rgba(0,0,0,0.05);\n        overflow: hidden;\n    }\n\n    .bq-header { background: #0f172a; color: white; padding: 25px 30px; text-align: center; border-bottom: 4px solid #2563eb; }\n    .bq-header h2 { margin: 0; font-size: 26px; font-weight: 800; text-transform: uppercase; letter-spacing: -0.5px; }\n    .bq-header p { margin: 8px 0 0 0; color: #94a3b8; font-size: 14.5px; }\n\n    .bq-body { display: grid; grid-template-columns: 380px 1fr; gap: 0; }\n    \n    .bq-sidebar { background: white; padding: 30px; border-right: 1px solid #e2e8f0; }\n    .bq-group { margin-bottom: 25px; }\n    .bq-group label.title { display: block; font-size: 12px; font-weight: 800; color: #475569; text-transform: uppercase; margin-bottom: 12px; border-bottom: 2px solid #e2e8f0; padding-bottom: 5px; }\n    \n    .type-selector { width: 100%; padding: 10px; border: 2px solid #cbd5e1; border-radius: 8px; font-size: 14px; font-weight: 700; color: #0f172a; margin-bottom: 15px; cursor: pointer; background: #f1f5f9; }\n    .type-selector:focus { border-color: #2563eb; outline: none; }\n\n    .bq-input-row { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; margin-bottom: 12px; }\n    .bq-input { position: relative; }\n    .bq-input span.label { font-size: 11.5px; font-weight: 700; color: #64748b; margin-bottom: 5px; display: block; }\n    .bq-input input { width: 100%; box-sizing: border-box; padding: 10px; border: 2px solid #cbd5e1; border-radius: 6px; font-size: 14px; font-weight: 600; transition: border-color 0.2s; }\n    .bq-input input:focus { border-color: #2563eb; outline: none; }\n    .bq-input .unit { position: absolute; right: 12px; bottom: 11px; font-size: 11px; color: #94a3b8; font-weight: bold; pointer-events: none; }\n\n    .bq-main { padding: 30px; display: flex; flex-direction: column; gap: 25px; }\n    \n    .bq-canvas-container { background: white; border: 1px solid #e2e8f0; border-radius: 8px; padding: 15px; display: flex; justify-content: center; align-items: center; background-image: radial-gradient(#cbd5e1 1px, transparent 1px); background-size: 20px 20px; height: 320px; }\n    canvas { max-width: 100%; height: 100%; }\n\n    .bq-memoria { background: white; border: 1px solid #e2e8f0; border-radius: 8px; padding: 25px; box-shadow: 0 4px 6px rgba(0,0,0,0.02); }\n    .bq-memoria h3 { margin: 0 0 20px 0; font-size: 18px; color: #0f172a; border-bottom: 2px solid #2563eb; padding-bottom: 8px; display: inline-block; text-transform: uppercase; }\n    \n    .paso-calc { margin-bottom: 20px; padding-bottom: 15px; border-bottom: 1px dashed #e2e8f0; }\n    .paso-calc:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }\n    .paso-title { font-size: 13px; font-weight: 800; color: #2563eb; text-transform: uppercase; margin-bottom: 12px; }\n    \n    .math-block { font-family: 'Cambria Math', 'Times New Roman', serif; font-size: 17px; color: #1e293b; background: #f8fafc; padding: 18px; border-radius: 8px; border-left: 4px solid #94a3b8; overflow-x: auto; display: flex; flex-direction: column; gap: 15px; }\n    .math-line { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }\n    .math-var { font-style: italic; color: #0f172a; font-weight: bold; }\n    .math-sub { font-size: 0.7em; vertical-align: sub; font-weight: normal; }\n    .math-val { color: #dc2626; font-weight: bold; }\n    .math-res { color: #059669; font-weight: bold; }\n    \n    .frac { display: inline-flex; flex-direction: column; align-items: center; vertical-align: middle; margin: 0 6px; }\n    .frac-top { border-bottom: 1px solid #1e293b; padding: 0 4px; font-size: 0.85em; }\n    .frac-bot { padding: 0 4px; font-size: 0.85em; }\n    .bracket-big { font-size: 2.2em; font-weight: 100; line-height: 0.5; vertical-align: middle; }\n    \n    .badge-pi { background-color: #fef08a; color: #854d0e; padding: 4px 8px; border-radius: 4px; font-size: 12px; font-weight: bold; border: 1px solid #fde047; margin-left: 10px; }\n\n    @media (max-width: 900px) { .bq-body { grid-template-columns: 1fr; } .bq-sidebar { border-right: none; border-bottom: 1px solid #e2e8f0; } }\n<\/style>\n\n<div class=\"secic-boussinesq\">\n    <div class=\"bq-header\">\n        <h2>Simulador Teor\u00eda de Boussinesq (Newmark)<\/h2>\n        \n    <\/div>\n\n    <div class=\"bq-body\">\n        <div class=\"bq-sidebar\">\n            <div class=\"bq-group\">\n                <label class=\"title\">Tipo de Aplicaci\u00f3n de Carga<\/label>\n                <select class=\"type-selector\" id=\"b-tipo\">\n                    <option value=\"rectangular\">\u00c1rea Rectangular (Newmark)<\/option>\n                    <option value=\"puntual\">Carga Puntual (P)<\/option>\n                <\/select>\n            <\/div>\n\n            <!-- DATOS \u00c1REA RECTANGULAR -->\n            <div id=\"grp-rectangular\">\n                <div class=\"bq-group\">\n                    <label class=\"title\">Punto de An\u00e1lisis<\/label>\n                    <select class=\"type-selector\" id=\"b-punto\" style=\"background-color: #eff6ff; border-color: #bfdbfe;\">\n                        <option value=\"centro\">En el Centro de la Zapata<\/option>\n                        <option value=\"esquina\">En la Esquina de la Zapata<\/option>\n                    <\/select>\n                <\/div>\n                <div class=\"bq-group\">\n                    <label class=\"title\">Par\u00e1metros de Carga<\/label>\n                    <div class=\"bq-input\"><span class=\"label\">Presi\u00f3n Uniforme (q)<\/span><input type=\"number\" id=\"b-q\" value=\"150\" step=\"10\"><span class=\"unit\">kPa<\/span><\/div>\n                <\/div>\n                <div class=\"bq-group\">\n                    <label class=\"title\">Geometr\u00eda de la Fundaci\u00f3n<\/label>\n                    <div class=\"bq-input-row\">\n                        <div class=\"bq-input\"><span class=\"label\">Base (B)<\/span><input type=\"number\" id=\"b-B\" value=\"2.0\" step=\"0.1\"><span class=\"unit\">m<\/span><\/div>\n                        <div class=\"bq-input\"><span class=\"label\">Largo (L)<\/span><input type=\"number\" id=\"b-L\" value=\"3.5\" step=\"0.1\"><span class=\"unit\">m<\/span><\/div>\n                    <\/div>\n                    <div class=\"bq-input\" style=\"margin-top: 12px;\"><span class=\"label\">Profundidad (z)<\/span><input type=\"number\" id=\"b-zr\" value=\"6.0\" step=\"0.1\"><span class=\"unit\">m<\/span><\/div>\n                <\/div>\n            <\/div>\n\n            <!-- DATOS CARGA PUNTUAL -->\n            <div id=\"grp-puntual\" style=\"display:none;\">\n                <div class=\"bq-group\">\n                    <label class=\"title\">Par\u00e1metros de Carga<\/label>\n                    <div class=\"bq-input\"><span class=\"label\">Carga Puntual (P)<\/span><input type=\"number\" id=\"b-P\" value=\"1000\" step=\"50\"><span class=\"unit\">kN<\/span><\/div>\n                <\/div>\n                <div class=\"bq-group\">\n                    <label class=\"title\">Coordenadas del Punto (A)<\/label>\n                    <div class=\"bq-input-row\">\n                        <div class=\"bq-input\"><span class=\"label\">Radio horiz. (r)<\/span><input type=\"number\" id=\"b-r\" value=\"1.5\" step=\"0.1\"><span class=\"unit\">m<\/span><\/div>\n                        <div class=\"bq-input\"><span class=\"label\">Profundidad (z)<\/span><input type=\"number\" id=\"b-zp\" value=\"2.0\" step=\"0.1\"><span class=\"unit\">m<\/span><\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <div class=\"bq-main\">\n            <div class=\"bq-canvas-container\">\n                <canvas id=\"cvsBq\" width=\"700\" height=\"320\"><\/canvas>\n            <\/div>\n            <div class=\"bq-memoria\">\n                <h3>Memoria Anal\u00edtica Paso a Paso<\/h3>\n                <div id=\"memoria-dinamica\"><\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script>\n    const inputsBq = document.querySelectorAll('.bq-sidebar input, .bq-sidebar select');\n    inputsBq.forEach(input => input.addEventListener('input', calcularBoussinesq));\n\n    function calcularBoussinesq() {\n        const tipo = document.getElementById(\"b-tipo\").value;\n        const mem = document.getElementById(\"memoria-dinamica\");\n        \n        document.getElementById(\"grp-puntual\").style.display = tipo === 'puntual' ? 'block' : 'none';\n        document.getElementById(\"grp-rectangular\").style.display = tipo === 'rectangular' ? 'block' : 'none';\n\n        if (tipo === 'rectangular') {\n            const punto = document.getElementById(\"b-punto\").value;\n            const q = parseFloat(document.getElementById(\"b-q\").value) || 0;\n            const B_real = parseFloat(document.getElementById(\"b-B\").value) || 0.1;\n            const L_real = parseFloat(document.getElementById(\"b-L\").value) || 0.1;\n            const z = parseFloat(document.getElementById(\"b-zr\").value) || 0.1;\n\n            \/\/ Superposici\u00f3n para el centro\n            const B = punto === 'centro' ? B_real \/ 2 : B_real;\n            const L = punto === 'centro' ? L_real \/ 2 : L_real;\n            const factorSuperposicion = punto === 'centro' ? 4 : 1;\n\n            const m = B \/ z;\n            const n = L \/ z;\n            \n            const m2 = m*m;\n            const n2 = n*n;\n            const m2n2 = m2 * n2;\n            \n            const cond1 = m2 + n2 + 1;\n            const cond2 = m2 + n2 + 2;\n            const cond3 = m2 + n2 - m2n2 + 1;\n            \n            const num1 = 2 * m * n * Math.sqrt(cond1);\n            const part1 = (num1 \/ (cond1 + m2n2)) * (cond2 \/ cond1);\n            \n            let argAtan = num1 \/ cond3;\n            let anguloRadianes = Math.atan(argAtan);\n            let piAplicado = false;\n\n            \/\/ Correcci\u00f3n de Cuadrante (Newmark, 1935)\n            if (cond1 < m2n2) {\n                anguloRadianes += Math.PI;\n                piAplicado = true;\n            } else if (anguloRadianes < 0) {\n                \/\/ Precausi\u00f3n matem\u00e1tica en JS si cond3 es negativo pero cond1 no lo atrap\u00f3\n                anguloRadianes += Math.PI;\n                piAplicado = true;\n            }\n\n            const I2 = (1 \/ (4 * Math.PI)) * (part1 + anguloRadianes);\n            const deltaSigma = q * factorSuperposicion * I2;\n\n            let htmlDimensiones = punto === 'centro' \n                ? `<div class=\"math-line\" style=\"color: #2563eb; font-size: 14px; margin-bottom: 10px;\">Aplicando Superposici\u00f3n (4 \u00e1reas): B' = B\/2 = ${B.toFixed(3)}m | L' = L\/2 = ${L.toFixed(3)}m<\/div>` \n                : ``;\n\n            let htmlPi = piAplicado \n                ? `<span class=\"badge-pi\">\u00a1Se aplic\u00f3 +\u03c0 radianes! (m\u00b2 + n\u00b2 + 1 < m\u00b2n\u00b2)<\/span>` \n                : ``;\n\n            mem.innerHTML = `\n                <div class=\"paso-calc\">\n                    <div class=\"paso-title\">Paso 1: Factores Geom\u00e9tricos (m, n)<\/div>\n                    <div class=\"math-block\">\n                        ${htmlDimensiones}\n                        <div class=\"math-line\"><span class=\"math-var\">m<\/span> = B \/ z = <span class=\"math-val\">${B.toFixed(3)}<\/span> \/ <span class=\"math-val\">${z}<\/span> = <span class=\"math-res\">${m.toFixed(4)}<\/span><\/div>\n                        <div class=\"math-line\"><span class=\"math-var\">n<\/span> = L \/ z = <span class=\"math-val\">${L.toFixed(3)}<\/span> \/ <span class=\"math-val\">${z}<\/span> = <span class=\"math-res\">${n.toFixed(4)}<\/span><\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"paso-calc\">\n                    <div class=\"paso-title\">Paso 2: Factor de Influencia de Newmark (I\u2082)<\/div>\n                    <div class=\"math-block\">\n                        <div class=\"math-line\">\n                            <span class=\"math-var\">I<span class=\"math-sub\">2<\/span><\/span> = \n                            <div class=\"frac\"><div class=\"frac-top\">1<\/div><div class=\"frac-bot\">4\u03c0<\/div><\/div>\n                            <span class=\"bracket-big\">[<\/span>\n                            <div class=\"frac\"><div class=\"frac-top\">2mn\u221a(m\u00b2+n\u00b2+1)<\/div><div class=\"frac-bot\">m\u00b2+n\u00b2+m\u00b2n\u00b2+1<\/div><\/div>\n                            <span class=\"bracket-big\">(<\/span>\n                            <div class=\"frac\"><div class=\"frac-top\">m\u00b2+n\u00b2+2<\/div><div class=\"frac-bot\">m\u00b2+n\u00b2+1<\/div><\/div>\n                            <span class=\"bracket-big\">)<\/span>\n                            + tan\u207b\u00b9<span class=\"bracket-big\">(<\/span>\n                            <div class=\"frac\"><div class=\"frac-top\">2mn\u221a(m\u00b2+n\u00b2+1)<\/div><div class=\"frac-bot\">m\u00b2+n\u00b2-m\u00b2n\u00b2+1<\/div><\/div>\n                            <span class=\"bracket-big\">)<\/span>\n                            <span class=\"bracket-big\">]<\/span>\n                        <\/div>\n                        <div class=\"math-line\"><span class=\"math-var\">I<span class=\"math-sub\">2<\/span><\/span> = 0.07957 \u00b7 [ ${part1.toFixed(5)} + ${anguloRadianes.toFixed(5)} rad ] ${htmlPi}<\/div>\n                        <div class=\"math-line\"><span class=\"math-var\">I<span class=\"math-sub\">2<\/span><\/span> = <span class=\"math-res\">${I2.toFixed(5)}<\/span><\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"paso-calc\">\n                    <div class=\"paso-title\">Paso 3: Incremento de Esfuerzo (\u0394\u03c3_z)<\/div>\n                    <div class=\"math-block\">\n                        <div class=\"math-line\">\n                            <span class=\"math-var\">\u0394\u03c3<span class=\"math-sub\">z<\/span><\/span> = q \u00b7 (${factorSuperposicion} \u00b7 I<span class=\"math-sub\">2<\/span>) = <span class=\"math-val\">${q}<\/span> \u00b7 (${factorSuperposicion} \u00b7 <span class=\"math-val\">${I2.toFixed(5)}<\/span>) = \n                            <span class=\"math-res\" style=\"font-size:1.4em;\">${deltaSigma.toFixed(2)} kPa<\/span>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            `;\n            dibujarEscenarioRectangular(B_real, L_real, z, punto);\n        } else {\n            \/\/ L\u00f3gica Carga Puntual (Mantenida id\u00e9ntica al dise\u00f1o anterior para no perder la funcionalidad)\n            const P = parseFloat(document.getElementById(\"b-P\").value) || 0;\n            const r = parseFloat(document.getElementById(\"b-r\").value) || 0;\n            const z = parseFloat(document.getElementById(\"b-zp\").value) || 0.1;\n            const relacion_rz = r \/ z;\n            const factor = 1 + Math.pow(relacion_rz, 2);\n            const Ib = (3 \/ (2 * Math.PI)) * Math.pow(1 \/ factor, 2.5);\n            const deltaSigma = (P \/ Math.pow(z, 2)) * Ib;\n\n            mem.innerHTML = `\n                <div class=\"paso-calc\">\n                    <div class=\"paso-title\">Paso 1: Relaci\u00f3n Geom\u00e9trica (r\/z)<\/div>\n                    <div class=\"math-block\">\n                        <div class=\"math-line\"><span class=\"math-var\">r \/ z<\/span> = <span class=\"math-val\">${r}<\/span> \/ <span class=\"math-val\">${z}<\/span> = <span class=\"math-res\">${relacion_rz.toFixed(3)}<\/span><\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"paso-calc\">\n                    <div class=\"paso-title\">Paso 2: Factor de Influencia (I_B)<\/div>\n                    <div class=\"math-block\">\n                        <div class=\"math-line\"><span class=\"math-var\">I<span class=\"math-sub\">B<\/span><\/span> = 0.4775 \u00b7 [ 1 \/ (1 + (r\/z)\u00b2) ]<span class=\"math-sup\">2.5<\/span> = <span class=\"math-res\">${Ib.toFixed(4)}<\/span><\/div>\n                    <\/div>\n                <\/div>\n                <div class=\"paso-calc\">\n                    <div class=\"paso-title\">Paso 3: Esfuerzo (\u0394\u03c3_z)<\/div>\n                    <div class=\"math-block\">\n                        <div class=\"math-line\"><span class=\"math-var\">\u0394\u03c3<span class=\"math-sub\">z<\/span><\/span> = (P \/ z\u00b2) \u00b7 I<span class=\"math-sub\">B<\/span> = <span class=\"math-res\" style=\"font-size:1.4em;\">${deltaSigma.toFixed(2)} kPa<\/span><\/div>\n                    <\/div>\n                <\/div>\n            `;\n            dibujarEscenarioPuntual(P, r, z);\n        }\n    }\n\n    function dibujarEscenarioRectangular(B, L, z, punto) {\n        const cvs = document.getElementById(\"cvsBq\");\n        const ctx = cvs.getContext(\"2d\");\n        ctx.clearRect(0, 0, cvs.width, cvs.height);\n\n        const cx = cvs.width * 0.5;\n        const y_terreno = 70;\n        const maxDist = Math.max(z, B) + 1;\n        const scale = (cvs.height - 120) \/ maxDist;\n\n        \/\/ Terreno\n        ctx.beginPath(); ctx.moveTo(50, y_terreno); ctx.lineTo(cvs.width - 50, y_terreno);\n        ctx.lineWidth = 2; ctx.strokeStyle = \"#475569\"; ctx.stroke();\n\n        const widthPx = B * scale;\n        \n        \/\/ \u00c1rea Cargada\n        ctx.fillStyle = \"rgba(220, 38, 38, 0.15)\";\n        ctx.fillRect(cx - widthPx\/2, y_terreno - 15, widthPx, 15);\n        ctx.lineWidth = 2; ctx.strokeStyle = \"#dc2626\";\n        ctx.strokeRect(cx - widthPx\/2, y_terreno - 15, widthPx, 15);\n\n        \/\/ Vector q\n        for(let i=0; i<=4; i++) {\n            let px = (cx - widthPx\/2) + (widthPx \/ 4) * i;\n            dibujarVector(ctx, px, y_terreno - 45, px, y_terreno - 15, \"#dc2626\");\n        }\n\n        \/\/ Posici\u00f3n del Eje Z dependiendo de Centro o Esquina\n        const ejeX = punto === 'centro' ? cx : (cx + widthPx\/2);\n        \n        ctx.beginPath(); ctx.setLineDash([5, 5]); ctx.moveTo(ejeX, y_terreno); ctx.lineTo(ejeX, y_terreno + z * scale + 30);\n        ctx.strokeStyle = \"#94a3b8\"; ctx.stroke(); ctx.setLineDash([]);\n\n        \/\/ Punto de An\u00e1lisis\n        const pY = y_terreno + z * scale;\n        ctx.beginPath(); ctx.arc(ejeX, pY, 6, 0, 2*Math.PI);\n        ctx.fillStyle = \"#2563eb\"; ctx.fill();\n        \n        ctx.fillStyle = \"#0f172a\"; ctx.font = \"bold 13px 'Inter'\";\n        ctx.fillText(`Punto A (${punto === 'centro' ? 'Centro' : 'Esquina'})`, ejeX + 15, pY + 5);\n\n        \/\/ Cotas\n        dibujarCotaH(ctx, cx - widthPx\/2, cx + widthPx\/2, y_terreno + 20, `B = ${B}m`);\n        dibujarCotaV(ctx, ejeX - (punto === 'centro' ? 30 : -30), y_terreno, pY, `z = ${z}m`);\n    }\n\n    function dibujarEscenarioPuntual(P, r, z) {\n        const cvs = document.getElementById(\"cvsBq\");\n        const ctx = cvs.getContext(\"2d\");\n        ctx.clearRect(0, 0, cvs.width, cvs.height);\n        const cx = cvs.width * 0.4;\n        const y_terreno = 60;\n        const maxDist = Math.max(z, r) + 1;\n        const scale = (cvs.height - 100) \/ maxDist;\n\n        ctx.beginPath(); ctx.moveTo(50, y_terreno); ctx.lineTo(cvs.width - 50, y_terreno);\n        ctx.lineWidth = 2; ctx.strokeStyle = \"#475569\"; ctx.stroke();\n        ctx.beginPath(); ctx.setLineDash([5, 5]); ctx.moveTo(cx, y_terreno); ctx.lineTo(cx, y_terreno + z * scale + 40);\n        ctx.strokeStyle = \"#94a3b8\"; ctx.stroke(); ctx.setLineDash([]);\n        dibujarVector(ctx, cx, y_terreno - 40, cx, y_terreno, \"#dc2626\", \"P\");\n\n        const pX = cx + r * scale;\n        const pY = y_terreno + z * scale;\n        ctx.beginPath(); ctx.arc(pX, pY, 5, 0, 2*Math.PI);\n        ctx.fillStyle = \"#2563eb\"; ctx.fill();\n        \n        dibujarCotaH(ctx, cx, pX, pY - 15, `r = ${r}m`);\n        dibujarCotaV(ctx, cx - 20, y_terreno, pY, `z = ${z}m`);\n    }\n\n    function dibujarVector(ctx, fromx, fromy, tox, toy, color, text=\"\") {\n        const headlen = 7; const angle = Math.atan2(toy - fromy, tox - fromx);\n        ctx.beginPath(); ctx.moveTo(fromx, fromy); ctx.lineTo(tox, toy); \n        ctx.lineWidth = 2; ctx.strokeStyle = color; ctx.stroke();\n        ctx.beginPath(); ctx.moveTo(tox, toy);\n        ctx.lineTo(tox - headlen * Math.cos(angle - Math.PI\/6), toy - headlen * Math.sin(angle - Math.PI\/6));\n        ctx.lineTo(tox - headlen * Math.cos(angle + Math.PI\/6), toy - headlen * Math.sin(angle + Math.PI\/6));\n        ctx.closePath(); ctx.fillStyle = color; ctx.fill();\n        if(text) { ctx.font = \"bold 14px 'Inter'\"; ctx.fillText(text, fromx + 10, fromy + 15); }\n    }\n    function dibujarCotaH(ctx, x1, x2, y, text) {\n        ctx.beginPath(); ctx.moveTo(x1, y); ctx.lineTo(x2, y); ctx.strokeStyle = \"#475569\"; ctx.stroke();\n        ctx.beginPath(); ctx.moveTo(x1, y-5); ctx.lineTo(x1, y+5); ctx.stroke();\n        ctx.beginPath(); ctx.moveTo(x2, y-5); ctx.lineTo(x2, y+5); ctx.stroke();\n        ctx.fillStyle = \"#0f172a\"; ctx.font = \"bold 12px 'Inter'\"; ctx.textAlign = \"center\"; ctx.fillText(text, (x1+x2)\/2, y - 8); ctx.textAlign = \"left\";\n    }\n    function dibujarCotaV(ctx, x, y1, y2, text) {\n        ctx.beginPath(); ctx.moveTo(x, y1); ctx.lineTo(x, y2); ctx.strokeStyle = \"#475569\"; ctx.stroke();\n        ctx.beginPath(); ctx.moveTo(x-5, y1); ctx.lineTo(x+5, y1); ctx.stroke();\n        ctx.beginPath(); ctx.moveTo(x-5, y2); ctx.lineTo(x+5, y2); ctx.stroke();\n        ctx.save(); ctx.translate(x - 8, (y1+y2)\/2); ctx.rotate(-Math.PI\/2); ctx.fillStyle = \"#0f172a\"; ctx.font = \"bold 12px 'Inter'\"; ctx.textAlign = \"center\"; ctx.fillText(text, 0, 0); ctx.restore();\n    }\n\n    window.onload = calcularBoussinesq;\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Simulador Teor\u00eda de Boussinesq (Newmark) Tipo de Aplicaci\u00f3n de Carga \u00c1rea Rectangular (Newmark)Carga Puntual (P) Punto de An\u00e1lisis En el [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-502","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/secic.fcyt.umss.edu.bo\/index.php\/wp-json\/wp\/v2\/pages\/502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/secic.fcyt.umss.edu.bo\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/secic.fcyt.umss.edu.bo\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/secic.fcyt.umss.edu.bo\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/secic.fcyt.umss.edu.bo\/index.php\/wp-json\/wp\/v2\/comments?post=502"}],"version-history":[{"count":2,"href":"https:\/\/secic.fcyt.umss.edu.bo\/index.php\/wp-json\/wp\/v2\/pages\/502\/revisions"}],"predecessor-version":[{"id":525,"href":"https:\/\/secic.fcyt.umss.edu.bo\/index.php\/wp-json\/wp\/v2\/pages\/502\/revisions\/525"}],"wp:attachment":[{"href":"https:\/\/secic.fcyt.umss.edu.bo\/index.php\/wp-json\/wp\/v2\/media?parent=502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}