{"id":1604,"date":"2026-03-21T10:03:13","date_gmt":"2026-03-21T09:03:13","guid":{"rendered":"https:\/\/www.openwhite.eu\/index.php\/luz\/"},"modified":"2026-04-16T10:39:49","modified_gmt":"2026-04-16T08:39:49","slug":"luz","status":"publish","type":"page","link":"https:\/\/www.openwhite.eu\/es\/luz\/","title":{"rendered":"Luz"},"content":{"rendered":"\n\n\n\n  <meta charset=\"UTF-8\"\/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n  <title>C\u00e1lculos lum\u00ednicos<\/title>\n  <style>\n    :root {\n      --panel: #121a31;\n      --panel-2: #18213d;\n      --text: #eef3ff;\n      --muted: #b7c3e0;\n      --accent: #4da3ff;\n      --border: #2b3b69;\n      --radius: 16px;\n      --shadow: 0 10px 30px rgba(0, 0, 0, 0.25);\n      --input-bg: #0d1530;\n    }\n\n    * {\n      box-sizing: border-box;\n    }\n\n    body {\n      margin: 0;\n      font-family: Inter, Arial, Helvetica, sans-serif;\n      color: var(--text);\n      line-height: 1.45;\n      background: transparent;\n    }\n\n    .container {\n      max-width: 1320px;\n      margin: 0 auto;\n      padding: 24px;\n    }\n\n    .topbar {\n      display: flex;\n      gap: 16px;\n      align-items: center;\n      justify-content: space-between;\n      margin-bottom: 24px;\n      flex-wrap: wrap;\n    }\n\n    .title-wrap h1 {\n      margin: 0;\n      font-size: 30px;\n      font-weight: 800;\n      letter-spacing: -0.02em;\n    }\n\n    .title-wrap p {\n      margin: 6px 0 0;\n      color: var(--muted);\n    }\n\n    .grid {\n      display: grid;\n      grid-template-columns: repeat(12, 1fr);\n      gap: 18px;\n    }\n\n    .card {\n      grid-column: span 6;\n      background: linear-gradient(180deg, rgba(255, 255, 255, 0.02), rgba(255, 255, 255, 0.01));\n      border: 1px solid var(--border);\n      border-radius: var(--radius);\n      box-shadow: var(--shadow);\n      overflow: hidden;\n    }\n\n    .card-header {\n      padding: 18px 20px;\n      background: linear-gradient(180deg, rgba(77, 163, 255, 0.12), rgba(77, 163, 255, 0.04));\n      border-bottom: 1px solid var(--border);\n    }\n\n    .card-header h2 {\n      margin: 0;\n      font-size: 20px;\n    }\n\n    .card-header p {\n      margin: 6px 0 0;\n      color: var(--muted);\n      font-size: 14px;\n    }\n\n    .card-body {\n      padding: 20px;\n    }\n\n    .form-grid {\n      display: grid;\n      grid-template-columns: repeat(12, 1fr);\n      gap: 14px;\n    }\n\n    .field {\n      grid-column: span 6;\n      display: flex;\n      flex-direction: column;\n      gap: 7px;\n    }\n\n    .field.full {\n      grid-column: span 12;\n    }\n\n    .field label {\n      font-size: 14px;\n      color: var(--muted);\n    }\n\n    .field input,\n    .field select {\n      width: 100%;\n      padding: 12px 14px;\n      border-radius: 12px;\n      border: 1px solid var(--border);\n      background: var(--input-bg);\n      color: var(--text);\n      outline: none;\n      font-size: 15px;\n      appearance: none;\n    }\n\n    .field input:focus,\n    .field select:focus {\n      border-color: var(--accent);\n      box-shadow: 0 0 0 3px rgba(77, 163, 255, 0.16);\n    }\n\n    .results {\n      margin-top: 16px;\n      display: grid;\n      grid-template-columns: repeat(12, 1fr);\n      gap: 12px;\n    }\n\n    .result-box {\n      grid-column: span 4;\n      background: var(--panel-2);\n      border: 1px solid var(--border);\n      border-radius: 14px;\n      padding: 14px;\n    }\n\n    .result-box.wide {\n      grid-column: span 6;\n    }\n\n    .result-box.full {\n      grid-column: span 12;\n    }\n\n    .result-box .k {\n      color: var(--muted);\n      font-size: 13px;\n      margin-bottom: 4px;\n    }\n\n    .result-box .v {\n      font-size: 22px;\n      font-weight: 800;\n      letter-spacing: -0.02em;\n    }\n\n    .note {\n      margin-top: 14px;\n      color: var(--muted);\n      font-size: 13px;\n      background: rgba(126, 195, 255, 0.06);\n      border: 1px solid rgba(126, 195, 255, 0.14);\n      padding: 12px 14px;\n      border-radius: 12px;\n    }\n\n    @media (max-width: 1100px) {\n      .card {\n        grid-column: span 12;\n      }\n    }\n\n    @media (max-width: 760px) {\n      .field,\n      .field.full,\n      .result-box,\n      .result-box.wide,\n      .result-box.full {\n        grid-column: span 12;\n      }\n\n      .title-wrap h1 {\n        font-size: 24px;\n      }\n    }\n  <\/style>\n\n\n  <div class=\"container\">\n    <div class=\"topbar\">\n      <div class=\"title-wrap\">\n        <h1>C\u00e1lculos lum\u00ednicos<\/h1>\n        <p>Herramientas r\u00e1pidas de fotometr\u00eda para el terreno y la preparaci\u00f3n.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"grid\">\n      <!-- 1. Candela -> Lux -->\n      <section class=\"card\">\n        <div class=\"card-header\">\n          <h2>Candela \u2192 Lux a distancia<\/h2>\n          <p>Calcula la iluminancia recibida en una superficie a partir de la intensidad luminosa.<\/p>\n        <\/div>\n        <div class=\"card-body\">\n          <div class=\"form-grid\">\n            <div class=\"field\">\n              <label for=\"cdLuxCandela\">Intensidad luminosa (cd)<\/label>\n              <input id=\"cdLuxCandela\" type=\"number\" step=\"1\" min=\"0\" value=\"50000\"\/>\n            <\/div>\n            <div class=\"field\">\n              <label for=\"cdLuxDistance\">Distancia (m)<\/label>\n              <input id=\"cdLuxDistance\" type=\"number\" step=\"0.01\" min=\"0.01\" value=\"10\"\/>\n            <\/div>\n          <\/div>\n\n          <div class=\"results\">\n            <div class=\"result-box full\">\n              <div class=\"k\">Iluminancia<\/div>\n              <div class=\"v\" id=\"cdLuxResult\">0 lux<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"note\">\n F\u00f3rmula utilizada: lux = candela \/ distancia\u00b2\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <!-- 2. Lux -> Candela -->\n      <section class=\"card\">\n        <div class=\"card-header\">\n          <h2>Lux objetivo \u2192 Candela necesaria<\/h2>\n          <p>Determina la intensidad luminosa necesaria para alcanzar una iluminancia dada.<\/p>\n        <\/div>\n        <div class=\"card-body\">\n          <div class=\"form-grid\">\n            <div class=\"field\">\n              <label for=\"luxCdLux\">Lux objetivo<\/label>\n              <input id=\"luxCdLux\" type=\"number\" step=\"1\" min=\"0\" value=\"500\"\/>\n            <\/div>\n            <div class=\"field\">\n              <label for=\"luxCdDistance\">Distancia (m)<\/label>\n              <input id=\"luxCdDistance\" type=\"number\" step=\"0.01\" min=\"0.01\" value=\"10\"\/>\n            <\/div>\n          <\/div>\n\n          <div class=\"results\">\n            <div class=\"result-box full\">\n              <div class=\"k\">Candela necesaria<\/div>\n              <div class=\"v\" id=\"luxCdResult\">0 cd<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"note\">\n F\u00f3rmula utilizada: candela = lux \u00d7 distancia\u00b2\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <!-- 3. Angle + distance -> diam\u00e8tre -->\n      <section class=\"card\">\n        <div class=\"card-header\">\n          <h2>\u00c1ngulo + distancia \u2192 di\u00e1metro del haz<\/h2>\n          <p>Calcula el di\u00e1metro del haz a una distancia dada a partir del \u00e1ngulo de apertura.<\/p>\n        <\/div>\n        <div class=\"card-body\">\n          <div class=\"form-grid\">\n            <div class=\"field\">\n              <label for=\"beamAngle\">\u00c1ngulo del haz (\u00b0)<\/label>\n              <input id=\"beamAngle\" type=\"number\" step=\"0.1\" min=\"0.1\" value=\"25\"\/>\n            <\/div>\n            <div class=\"field\">\n              <label for=\"beamDistance\">Distancia (m)<\/label>\n              <input id=\"beamDistance\" type=\"number\" step=\"0.01\" min=\"0.01\" value=\"10\"\/>\n            <\/div>\n          <\/div>\n\n          <div class=\"results\">\n            <div class=\"result-box wide\">\n              <div class=\"k\">Di\u00e1metro del haz<\/div>\n              <div class=\"v\" id=\"beamDiameterResult\">0 m<\/div>\n            <\/div>\n            <div class=\"result-box wide\">\n              <div class=\"k\">Radio<\/div>\n              <div class=\"v\" id=\"beamRadiusResult\">0 m<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"note\">\n F\u00f3rmula utilizada: di\u00e1metro = 2 \u00d7 distancia \u00d7 tan(\u00e1ngulo \/ 2)\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <!-- 4. Diam\u00e8tre -> surface -->\n      <section class=\"card\">\n        <div class=\"card-header\">\n          <h2>Di\u00e1metro \u2192 superficie del haz<\/h2>\n          <p>Calcula la superficie cubierta por un haz circular a partir de su di\u00e1metro.<\/p>\n        <\/div>\n        <div class=\"card-body\">\n          <div class=\"form-grid\">\n            <div class=\"field full\">\n              <label for=\"surfaceDiameter\">Di\u00e1metro del haz (m)<\/label>\n              <input id=\"surfaceDiameter\" type=\"number\" step=\"0.01\" min=\"0\" value=\"4.43\"\/>\n            <\/div>\n          <\/div>\n\n          <div class=\"results\">\n            <div class=\"result-box wide\">\n              <div class=\"k\">Radio<\/div>\n              <div class=\"v\" id=\"surfaceRadiusResult\">0 m<\/div>\n            <\/div>\n            <div class=\"result-box wide\">\n              <div class=\"k\">Superficie<\/div>\n              <div class=\"v\" id=\"surfaceAreaResult\">0 m\u00b2<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"note\">\n F\u00f3rmula utilizada: superficie = \u03c0 \u00d7 radio\u00b2\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <!-- 5. Lumen \/ lux \/ surface -->\n      <section class=\"card\">\n        <div class=\"card-header\">\n          <h2>Lumen \/ Lux \/ Superficie<\/h2>\n          <p>Calcula la unidad que falta a partir de las otras dos.<\/p>\n        <\/div>\n        <div class=\"card-body\">\n          <div class=\"form-grid\">\n            <div class=\"field\">\n              <label for=\"llsMode\">Modo de c\u00e1lculo<\/label>\n              <select id=\"llsMode\">\n                <option value=\"lux\">Calcular los lux<\/option>\n                <option value=\"lumen\">Calcular los l\u00famenes<\/option>\n                <option value=\"surface\">Calcular la superficie<\/option>\n              <\/select> \n            <\/div>\n            <div class=\"field\">\n              <label for=\"llsLumen\">L\u00famenes<\/label>\n              <input id=\"llsLumen\" type=\"number\" step=\"1\" min=\"0\" value=\"12000\"\/>\n            <\/div>\n            <div class=\"field\">\n              <label for=\"llsLux\">Lux<\/label>\n              <input id=\"llsLux\" type=\"number\" step=\"1\" min=\"0\" value=\"500\"\/>\n            <\/div>\n            <div class=\"field\">\n              <label for=\"llsSurface\">Superficie (m\u00b2)<\/label>\n              <input id=\"llsSurface\" type=\"number\" step=\"0.01\" min=\"0.01\" value=\"24\"\/>\n            <\/div>\n          <\/div>\n\n          <div class=\"results\">\n            <div class=\"result-box full\">\n              <div class=\"k\">Resultado<\/div>\n              <div class=\"v\" id=\"llsResult\">0<\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"note\">\n F\u00f3rmulas utilizadas: lux = lumen \/ superficie; lumen = lux \u00d7 superficie; superficie = lumen \/ lux\n          <\/div>\n        <\/div>\n      <\/section>\n    <\/div>\n  <\/div>\n\n  <script>\n    function formatNumber(value, digits = 2) {\n      if (!isFinite(value)) return \"\u2014\";\n      return new Intl.NumberFormat(\"fr-BE\", {\n        minimumFractionDigits: 0,\n        maximumFractionDigits: digits\n      }).format(value);\n    }\n\n    function degToRad(deg) {\n      return deg * Math.PI \/ 180;\n    }\n\n    function calcCandelaToLux() {\n      const candela = Number(document.getElementById(\"cdLuxCandela\").value);\n      const distance = Number(document.getElementById(\"cdLuxDistance\").value);\n      const lux = distance > 0 ? candela \/ (distance * distance) : NaN;\n      document.getElementById(\"cdLuxResult\").textContent = `${formatNumber(lux, 2)} lux`;\n    }\n\n    function calcLuxToCandela() {\n      const lux = Number(document.getElementById(\"luxCdLux\").value);\n      const distance = Number(document.getElementById(\"luxCdDistance\").value);\n      const candela = lux * distance * distance;\n      document.getElementById(\"luxCdResult\").textContent = `${formatNumber(candela, 0)} cd`;\n    }\n\n    function calcBeamDiameter() {\n      const angle = Number(document.getElementById(\"beamAngle\").value);\n      const distance = Number(document.getElementById(\"beamDistance\").value);\n      const diameter = 2 * distance * Math.tan(degToRad(angle \/ 2));\n      const radius = diameter \/ 2;\n\n      document.getElementById(\"beamDiameterResult\").textContent = `${formatNumber(diameter, 2)} m`;\n      document.getElementById(\"beamRadiusResult\").textContent = `${formatNumber(radius, 2)} m`;\n    }\n\n    function calcSurfaceFromDiameter() {\n      const diameter = Number(document.getElementById(\"surfaceDiameter\").value);\n      const radius = diameter \/ 2;\n      const area = Math.PI * radius * radius;\n\n      document.getElementById(\"surfaceRadiusResult\").textContent = `${formatNumber(radius, 2)} m`;\n      document.getElementById(\"surfaceAreaResult\").textContent = `${formatNumber(area, 2)} m\u00b2`;\n    }\n\n    function calcLumenLuxSurface() {\n      const mode = document.getElementById(\"llsMode\").value;\n      const lumen = Number(document.getElementById(\"llsLumen\").value);\n      const lux = Number(document.getElementById(\"llsLux\").value);\n      const surface = Number(document.getElementById(\"llsSurface\").value);\n\n      let resultText = \"\u2014\";\n\n      if (mode === \"lux\") {\n        const result = surface > 0 ? lumen \/ surface : NaN;\n        resultText = `${formatNumber(result, 2)} lux`;\n      } else if (mode === \"lumen\") {\n        const result = lux * surface;\n        resultText = `${formatNumber(result, 0)} lm`;\n      } else if (mode === \"surface\") {\n        const result = lux > 0 ? lumen \/ lux : NaN;\n        resultText = `${formatNumber(result, 2)} m\u00b2`;\n      }\n\n      document.getElementById(\"llsResult\").textContent = resultText;\n    }\n\n    function recalcAll() {\n      calcCandelaToLux();\n      calcLuxToCandela();\n      calcBeamDiameter();\n      calcSurfaceFromDiameter();\n      calcLumenLuxSurface();\n    }\n\n    function bindInputs() {\n      document.querySelectorAll(\"input, select\").forEach((el) => {\n        el.addEventListener(\"input\", recalcAll);\n        el.addEventListener(\"change\", recalcAll);\n      });\n    }\n\n    bindInputs();\n    recalcAll();\n  <\/script>\n\n\n","protected":false},"excerpt":{"rendered":"<p>C\u00e1lculos lum\u00ednicos C\u00e1lculos lum\u00ednicos Herramientas r\u00e1pidas de fotometr\u00eda para el terreno y la preparaci\u00f3n. Candela \u2192 Lux a distancia Calcula la iluminancia recibida en una superficie a partir de la intensidad luminosa. Intensidad luminosa (cd) Distancia (m) Iluminancia 0 lux F\u00f3rmula utilizada: lux = candela \/ distancia\u00b2 Lux objetivo \u2192 Candela necesaria Determina la intensidad [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-full-width.php","meta":{"footnotes":""},"class_list":["post-1604","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.openwhite.eu\/es\/wp-json\/wp\/v2\/pages\/1604","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.openwhite.eu\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.openwhite.eu\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.openwhite.eu\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.openwhite.eu\/es\/wp-json\/wp\/v2\/comments?post=1604"}],"version-history":[{"count":1,"href":"https:\/\/www.openwhite.eu\/es\/wp-json\/wp\/v2\/pages\/1604\/revisions"}],"predecessor-version":[{"id":1605,"href":"https:\/\/www.openwhite.eu\/es\/wp-json\/wp\/v2\/pages\/1604\/revisions\/1605"}],"wp:attachment":[{"href":"https:\/\/www.openwhite.eu\/es\/wp-json\/wp\/v2\/media?parent=1604"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}