{"id":1561,"date":"2026-03-20T03:11:02","date_gmt":"2026-03-20T03:11:02","guid":{"rendered":"https:\/\/gqlamp.com\/?page_id=1561"},"modified":"2026-03-20T03:41:42","modified_gmt":"2026-03-20T03:41:42","slug":"led-pixel-density-calculator","status":"publish","type":"page","link":"https:\/\/gqlamp.com\/pt\/facade-architectural-lighting\/led-pixel-lights\/led-pixel-density-calculator\/","title":{"rendered":"Calculadora de densidade de pixel LED"},"content":{"rendered":"\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-61f37c8\" data-block-id=\"61f37c8\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-61f37c8-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-ecaa45c\" data-v=\"4\" data-block-id=\"ecaa45c\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-ecaa45c-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-ecaa45c-inner-blocks\"><\/div><\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-13352a9\" data-block-id=\"13352a9\"><div class=\"stk-row stk-inner-blocks has-text-align-center stk-block-content stk-content-align stk-13352a9-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-b9d8419\" data-v=\"4\" data-block-id=\"b9d8419\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-b9d8419-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-b9d8419-inner-blocks\"><div class=\"ct-breadcrumbs\" data-source=\"rankmath\" ><nav aria-label=\"breadcrumbs\" class=\"rank-math-breadcrumb\"><p><span class=\"last\">Home<\/span><\/p><\/nav><\/div><\/div><\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-columns alignfull stk-block-columns stk-block stk-a0a5947\" data-block-id=\"a0a5947\"><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-a0a5947-column alignfull\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-3b38a83\" data-v=\"4\" data-block-id=\"3b38a83\"><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-3b38a83-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-3b38a83-inner-blocks\">\n<section id=\"bx-pixel-density-calc-v1\">\n  <style>\n    #bx-pixel-density-calc-v1 *,\n    #bx-pixel-density-calc-v1 *::before,\n    #bx-pixel-density-calc-v1 *::after {\n      box-sizing: border-box;\n      margin: 0;\n      padding: 0;\n    }\n\n    #bx-pixel-density-calc-v1 {\n      max-width: 1260px;\n      margin: 0 auto;\n      padding: 36px 24px;\n      color: #303030;\n      line-height: 1.6;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-calc-header {\n      text-align: center;\n      margin-bottom: 32px;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-calc-header h2 {\n      color: #183090;\n      margin-bottom: 8px;\n      line-height: 1.3;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-calc-header p {\n      color: #555;\n      font-size: 15px;\n      max-width: 1000px;\n      margin: 0 auto;\n    }\n\n    \/* ---- Input Form ---- *\/\n    #bx-pixel-density-calc-v1 .bx-calc-form {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 20px;\n      margin-bottom: 28px;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-field {\n      display: flex;\n      flex-direction: column;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-field label {\n      font-size: 13px;\n      font-weight: 600;\n      color: #183090;\n      margin-bottom: 6px;\n      text-transform: uppercase;\n      letter-spacing: 0.4px;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-field input[type=\"number\"],\n    #bx-pixel-density-calc-v1 .bx-field select {\n      height: 44px !important;\n      padding: 0 14px;\n      border: 1.5px solid #c8cdd4;\n      border-radius: 6px;\n      font-size: 15px;\n      color: #303030;\n      background: #FFFFFF;\n      transition: border-color 0.2s;\n      width: 100%;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-field select {\n      appearance: none !important;\n      -webkit-appearance: none !important;\n      -moz-appearance: none !important;\n      background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%23183090' d='M1.41 0L6 4.58 10.59 0 12 1.41l-6 6-6-6z'\/%3E%3C\/svg%3E\");\n      background-repeat: no-repeat;\n      background-position: right 14px center;\n      background-size: 12px;\n      padding-right: 36px;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-field select option {\n      color: #000018 !important;\n      background: #FFFFFF !important;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-field input[type=\"number\"]:focus,\n    #bx-pixel-density-calc-v1 .bx-field select:focus {\n      outline: none;\n      border-color: #183090;\n      box-shadow: 0 0 0 3px rgba(24, 48, 144, 0.12);\n    }\n\n    #bx-pixel-density-calc-v1 .bx-field input[type=\"number\"]::placeholder {\n      color: #999;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-field .bx-unit-hint {\n      font-size: 11px;\n      color: #888;\n      margin-top: 4px;\n    }\n\n    \/* ---- Calculate Button ---- *\/\n    #bx-pixel-density-calc-v1 .bx-calc-btn-wrap {\n      text-align: center;\n      margin-bottom: 32px;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-calc-btn {\n      display: inline-block;\n      padding: 14px 48px;\n      background: #183090;\n      color: #fff;\n      font-size: 16px;\n      font-weight: 600;\n      border: none;\n      border-radius: 6px;\n      cursor: pointer;\n      transition: background 0.25s, transform 0.15s;\n      letter-spacing: 0.3px;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-calc-btn:hover {\n      background: #122470;\n      transform: translateY(-1px);\n    }\n\n    #bx-pixel-density-calc-v1 .bx-calc-btn:active {\n      transform: translateY(0);\n    }\n\n    \/* ---- Results Panel ---- *\/\n    #bx-pixel-density-calc-v1 .bx-results-panel {\n      display: none;\n      border: 1.5px solid #e0e4ea;\n      border-radius: 10px;\n      padding: 28px 24px;\n      background: linear-gradient(135deg, #f8f9fc 0%, #ffffff 100%);\n      animation: bxFadeSlideIn 0.4s ease-out;\n    }\n\n    @keyframes bxFadeSlideIn {\n      from { opacity: 0; transform: translateY(12px); }\n      to { opacity: 1; transform: translateY(0); }\n    }\n\n    #bx-pixel-density-calc-v1 .bx-results-panel.bx-visible {\n      display: block;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-results-title {\n      font-size: 18px;\n      font-weight: 700;\n      color: #183090;\n      margin-bottom: 20px;\n      padding-bottom: 12px;\n      border-bottom: 2px solid #183090;\n    }\n\n    \/* ---- KPI Cards Grid ---- *\/\n    #bx-pixel-density-calc-v1 .bx-kpi-grid {\n      display: grid;\n      grid-template-columns: repeat(3, 1fr);\n      gap: 16px;\n      margin-bottom: 24px;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-kpi-card {\n      background: #ffffff;\n      border: 1px solid #e0e4ea;\n      border-radius: 8px;\n      padding: 18px 16px;\n      text-align: center;\n      transition: box-shadow 0.2s;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-kpi-card:hover {\n      box-shadow: 0 4px 16px rgba(24, 48, 144, 0.1);\n    }\n\n    #bx-pixel-density-calc-v1 .bx-kpi-label {\n      font-size: 11px;\n      font-weight: 600;\n      text-transform: uppercase;\n      letter-spacing: 0.5px;\n      color: #777;\n      margin-bottom: 8px;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-kpi-value {\n      font-size: 26px;\n      font-weight: 700;\n      color: #183090;\n      line-height: 1.2;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-kpi-unit {\n      font-size: 13px;\n      font-weight: 400;\n      color: #555;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-kpi-card.bx-kpi-highlight {\n      border-color: #009048;\n      background: linear-gradient(135deg, #f0faf5 0%, #ffffff 100%);\n    }\n\n    #bx-pixel-density-calc-v1 .bx-kpi-card.bx-kpi-highlight .bx-kpi-value {\n      color: #009048;\n    }\n\n    \/* ---- Model Recommendation ---- *\/\n    #bx-pixel-density-calc-v1 .bx-model-rec {\n      background: #ffffff;\n      border: 1.5px solid #183090;\n      border-radius: 8px;\n      padding: 20px;\n      margin-bottom: 24px;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-model-rec-title {\n      font-size: 14px;\n      font-weight: 700;\n      color: #183090;\n      text-transform: uppercase;\n      letter-spacing: 0.4px;\n      margin-bottom: 14px;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-model-list {\n      list-style: none;\n      padding: 0;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-model-item {\n      display: flex;\n      align-items: flex-start;\n      gap: 12px;\n      padding: 12px 14px;\n      margin-bottom: 8px;\n      background: #f5f7fb;\n      border-radius: 6px;\n      border-left: 3px solid #183090;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-model-item:last-child {\n      margin-bottom: 0;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-model-item.bx-best-match {\n      background: #eef8f2;\n      border-left-color: #009048;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-model-name {\n      font-weight: 700;\n      font-size: 15px;\n      color: #183090;\n      white-space: nowrap;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-model-item.bx-best-match .bx-model-name {\n      color: #009048;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-model-specs {\n      font-size: 13px;\n      color: #555;\n      line-height: 1.5;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-best-tag {\n      display: inline-block;\n      background: #009048;\n      color: #fff;\n      font-size: 10px;\n      font-weight: 700;\n      padding: 2px 8px;\n      border-radius: 3px;\n      text-transform: uppercase;\n      letter-spacing: 0.5px;\n      margin-left: 8px;\n      vertical-align: middle;\n    }\n\n    \/* ---- Summary Note ---- *\/\n    #bx-pixel-density-calc-v1 .bx-summary-note {\n      background: #fefcf3;\n      border: 1px solid #e8d88e;\n      border-radius: 6px;\n      padding: 14px 18px;\n      font-size: 13px;\n      color: #665a22;\n      line-height: 1.6;\n      margin-bottom: 24px;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-summary-note strong {\n      color: #4a4010;\n    }\n\n    \/* ---- CTA ---- *\/\n    #bx-pixel-density-calc-v1 .bx-cta-wrap {\n      text-align: center;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-cta-link {\n      display: inline-block;\n      padding: 14px 40px;\n      background: #D81818;\n      color: #fff !important;\n      font-size: 16px;\n      font-weight: 600;\n      text-decoration: none;\n      border-radius: 6px;\n      transition: background 0.25s, transform 0.15s;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-cta-link:hover {\n      background: #b51414;\n      transform: translateY(-1px);\n      color: #fff !important;\n      text-decoration: none;\n    }\n\n    \/* ---- Error State ---- *\/\n    #bx-pixel-density-calc-v1 .bx-field.bx-has-error input,\n    #bx-pixel-density-calc-v1 .bx-field.bx-has-error select {\n      border-color: #D81818;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-error-msg {\n      font-size: 12px;\n      color: #D81818;\n      margin-top: 4px;\n      display: none;\n    }\n\n    #bx-pixel-density-calc-v1 .bx-field.bx-has-error .bx-error-msg {\n      display: block;\n    }\n\n    \/* ---- Responsive ---- *\/\n    @media (max-width: 860px) {\n      #bx-pixel-density-calc-v1 .bx-calc-form {\n        grid-template-columns: 1fr;\n      }\n\n      #bx-pixel-density-calc-v1 .bx-kpi-grid {\n        grid-template-columns: 1fr 1fr;\n      }\n\n      #bx-pixel-density-calc-v1 .bx-kpi-value {\n        font-size: 22px;\n      }\n\n      #bx-pixel-density-calc-v1 .bx-model-item {\n        flex-direction: column;\n        gap: 6px;\n      }\n    }\n\n    @media (max-width: 520px) {\n      #bx-pixel-density-calc-v1 {\n        padding: 24px 16px;\n      }\n\n      #bx-pixel-density-calc-v1 .bx-kpi-grid {\n        grid-template-columns: 1fr;\n      }\n\n      #bx-pixel-density-calc-v1 .bx-kpi-value {\n        font-size: 24px;\n      }\n\n      #bx-pixel-density-calc-v1 .bx-calc-btn {\n        width: 100%;\n        padding: 14px 24px;\n      }\n\n      #bx-pixel-density-calc-v1 .bx-cta-link {\n        width: 100%;\n        text-align: center;\n        padding: 14px 24px;\n      }\n    }\n  <\/style>\n\n  <div class=\"bx-calc-header\">\n    <h2>LED Pixel Density Calculator<\/h2>\n    <p>Enter your building facade dimensions and viewing conditions to find the optimal LED pixel configuration, total pixel count, power draw, and the best-fit Guangqi model.<\/p>\n  <\/div>\n\n  <div class=\"bx-calc-form\">\n    <div class=\"bx-field\">\n      <label for=\"bx-input-width\">Facade Width<\/label>\n      <input type=\"number\" id=\"bx-input-width\" min=\"0.5\" max=\"500\" step=\"0.1\" placeholder=\"e.g. 25\">\n      <span class=\"bx-unit-hint\">meters<\/span>\n      <span class=\"bx-error-msg\">Enter a width between 0.5 and 500 m<\/span>\n    <\/div>\n\n    <div class=\"bx-field\">\n      <label for=\"bx-input-height\">Facade Height<\/label>\n      <input type=\"number\" id=\"bx-input-height\" min=\"0.5\" max=\"500\" step=\"0.1\" placeholder=\"e.g. 40\">\n      <span class=\"bx-unit-hint\">meters<\/span>\n      <span class=\"bx-error-msg\">Enter a height between 0.5 and 500 m<\/span>\n    <\/div>\n\n    <div class=\"bx-field\">\n      <label for=\"bx-input-distance\">Viewing Distance<\/label>\n      <select id=\"bx-input-distance\">\n        <option value=\"\" disabled selected>Select distance<\/option>\n        <option value=\"10\">10 meters<\/option>\n        <option value=\"20\">20 meters<\/option>\n        <option value=\"30\">30 meters<\/option>\n        <option value=\"50\">50 meters<\/option>\n        <option value=\"80\">80 meters<\/option>\n        <option value=\"100\">100+ meters<\/option>\n      <\/select>\n      <span class=\"bx-error-msg\">Select a viewing distance<\/span>\n    <\/div>\n\n    <div class=\"bx-field\">\n      <label for=\"bx-input-content\">Content Type<\/label>\n      <select id=\"bx-input-content\">\n        <option value=\"\" disabled selected>Select content type<\/option>\n        <option value=\"static\">Static color<\/option>\n        <option value=\"simple\">Simple animation<\/option>\n        <option value=\"complex\">Complex animation<\/option>\n        <option value=\"video\">Video content<\/option>\n      <\/select>\n      <span class=\"bx-error-msg\">Select a content type<\/span>\n    <\/div>\n  <\/div>\n\n  <div class=\"bx-calc-btn-wrap\">\n    <button type=\"button\" class=\"bx-calc-btn\" id=\"bx-btn-calculate\">Calculate Pixel Density<\/button>\n  <\/div>\n\n  <div class=\"bx-results-panel\" id=\"bx-results-panel\">\n    <div class=\"bx-results-title\">Your Facade Specification<\/div>\n\n    <div class=\"bx-kpi-grid\">\n      <div class=\"bx-kpi-card\">\n        <div class=\"bx-kpi-label\">Pixel Pitch<\/div>\n        <div class=\"bx-kpi-value\" id=\"bx-kpi-pitch\">&#8212;<\/div>\n        <div class=\"bx-kpi-unit\">mm<\/div>\n      <\/div>\n      <div class=\"bx-kpi-card\">\n        <div class=\"bx-kpi-label\">Pixels \/ m&sup2;<\/div>\n        <div class=\"bx-kpi-value\" id=\"bx-kpi-density\">&#8212;<\/div>\n        <div class=\"bx-kpi-unit\">px\/m&sup2;<\/div>\n      <\/div>\n      <div class=\"bx-kpi-card bx-kpi-highlight\">\n        <div class=\"bx-kpi-label\">Total Pixels<\/div>\n        <div class=\"bx-kpi-value\" id=\"bx-kpi-total\">&#8212;<\/div>\n        <div class=\"bx-kpi-unit\">pixels<\/div>\n      <\/div>\n      <div class=\"bx-kpi-card\">\n        <div class=\"bx-kpi-label\">Total Power<\/div>\n        <div class=\"bx-kpi-value\" id=\"bx-kpi-power\">&#8212;<\/div>\n        <div class=\"bx-kpi-unit\">watts<\/div>\n      <\/div>\n      <div class=\"bx-kpi-card\">\n        <div class=\"bx-kpi-label\">Facade Area<\/div>\n        <div class=\"bx-kpi-value\" id=\"bx-kpi-area\">&#8212;<\/div>\n        <div class=\"bx-kpi-unit\">m&sup2;<\/div>\n      <\/div>\n      <div class=\"bx-kpi-card\">\n        <div class=\"bx-kpi-label\">DMX Universes<\/div>\n        <div class=\"bx-kpi-value\" id=\"bx-kpi-dmx\">&#8212;<\/div>\n        <div class=\"bx-kpi-unit\">universes<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"bx-model-rec\">\n      <div class=\"bx-model-rec-title\">Recommended Guangqi Models<\/div>\n      <ul class=\"bx-model-list\" id=\"bx-model-list\">\n        <!-- Populated by JS -->\n      <\/ul>\n    <\/div>\n\n    <div class=\"bx-summary-note\" id=\"bx-summary-note\"><\/div>\n\n    <div class=\"bx-cta-wrap\">\n      <a href=\"#ct-popup-801\" class=\"bx-cta-link\">Request a Quote &rarr;<\/a>\n    <\/div>\n  <\/div>\n\n  <script>\n    (function () {\n      \/* ============ PRODUCT DATABASE ============ *\/\n      var models = [\n        {\n          name: \"PX-F32\",\n          diameter: 32.2,\n          shape: \"round\",\n          wattage: [1.44, 1.96],\n          voltage: \"DC12V \/ DC24V\",\n          protocol: \"SPI \/ DMX512\",\n          pitchMin: 25,\n          pitchMax: 45\n        },\n        {\n          name: \"PX-F35\",\n          diameter: 34.2,\n          shape: \"round\",\n          wattage: [0.72, 0.96, 1.44],\n          voltage: \"DC12V \/ DC24V\",\n          protocol: \"TTL \/ DMX512\",\n          pitchMin: 30,\n          pitchMax: 50\n        },\n        {\n          name: \"PX-K3338\",\n          diameter: 35.5,\n          shape: \"rect\",\n          dimensions: \"33\\u00d738mm\",\n          wattage: [0.72, 0.96, 1.44],\n          voltage: \"DC24V\",\n          protocol: \"TTL \/ DMX512\",\n          pitchMin: 33,\n          pitchMax: 55\n        },\n        {\n          name: \"PX-F40\",\n          diameter: 39.6,\n          shape: \"round\",\n          wattage: [1.44, 1.96],\n          voltage: \"DC12V \/ DC24V\",\n          protocol: \"TTL \/ DMX512\",\n          pitchMin: 35,\n          pitchMax: 60\n        },\n        {\n          name: \"PX-F42\",\n          diameter: 41.4,\n          shape: \"round\",\n          wattage: [1.44, 1.96],\n          voltage: \"DC12V \/ DC24V\",\n          protocol: \"SPI \/ DMX512\",\n          pitchMin: 38,\n          pitchMax: 65\n        },\n        {\n          name: \"PX-F45\",\n          diameter: 45,\n          shape: \"round\",\n          wattage: [1.44, 1.96],\n          voltage: \"DC12V \/ DC24V\",\n          protocol: \"TTL \/ DMX512\",\n          pitchMin: 40,\n          pitchMax: 70\n        },\n        {\n          name: \"PX-S50\",\n          diameter: 50,\n          shape: \"round\",\n          wattage: [1.5, 1.96],\n          voltage: \"DC12V \/ DC24V\",\n          protocol: \"SPI \/ DMX512\",\n          pitchMin: 45,\n          pitchMax: 80\n        },\n        {\n          name: \"PX-K2560\",\n          diameter: 42.5,\n          shape: \"rect\",\n          dimensions: \"25\\u00d760mm\",\n          wattage: [2.88, 3.88],\n          voltage: \"DC24V\",\n          protocol: \"SPI \/ DMX512\",\n          pitchMin: 50,\n          pitchMax: 100\n        }\n      ];\n\n      \/* ============ PITCH LOOKUP (by viewing distance) ============ *\/\n      var pitchTable = {\n        10:  { min: 25, max: 40 },\n        20:  { min: 40, max: 60 },\n        30:  { min: 60, max: 100 },\n        50:  { min: 100, max: 150 },\n        80:  { min: 150, max: 200 },\n        100: { min: 200, max: 300 }\n      };\n\n      \/* Content multiplier *\/\n      var contentMultiplier = {\n        static:  0.8,\n        simple:  1.0,\n        complex: 1.2,\n        video:   1.5\n      };\n\n      \/* ============ DOM REFERENCES ============ *\/\n      var root      = document.getElementById(\"bx-pixel-density-calc-v1\");\n      var btnCalc   = root.querySelector(\"#bx-btn-calculate\");\n      var panel     = root.querySelector(\"#bx-results-panel\");\n      var inWidth   = root.querySelector(\"#bx-input-width\");\n      var inHeight  = root.querySelector(\"#bx-input-height\");\n      var inDist    = root.querySelector(\"#bx-input-distance\");\n      var inContent = root.querySelector(\"#bx-input-content\");\n\n      \/* ============ HELPERS ============ *\/\n      function fmt(n) {\n        if (n >= 1000000) return (n \/ 1000000).toFixed(2) + \"M\";\n        if (n >= 10000) return (n \/ 1000).toFixed(1) + \"k\";\n        return n.toLocaleString(\"en-US\");\n      }\n\n      function fmtW(w) {\n        if (w >= 1000000) return (w \/ 1000000).toFixed(1) + \" MW\";\n        if (w >= 1000) return (w \/ 1000).toFixed(1) + \" kW\";\n        return w.toLocaleString(\"en-US\");\n      }\n\n      function clearErrors() {\n        var fields = root.querySelectorAll(\".bx-field\");\n        for (var i = 0; i < fields.length; i++) {\n          fields[i].classList.remove(\"bx-has-error\");\n        }\n      }\n\n      function setError(el) {\n        el.closest(\".bx-field\").classList.add(\"bx-has-error\");\n      }\n\n      \/* ============ MATCHING MODELS ============ *\/\n      function findModels(pitch) {\n        var matched = [];\n        for (var i = 0; i < models.length; i++) {\n          var m = models[i];\n          if (pitch >= m.pitchMin && pitch <= m.pitchMax) {\n            matched.push(m);\n          }\n        }\n        \/* If nothing matched at exact pitch, find closest *\/\n        if (matched.length === 0) {\n          var sorted = models.slice().sort(function (a, b) {\n            var midA = (a.pitchMin + a.pitchMax) \/ 2;\n            var midB = (b.pitchMin + b.pitchMax) \/ 2;\n            return Math.abs(midA - pitch) - Math.abs(midB - pitch);\n          });\n          matched.push(sorted[0]);\n          if (sorted.length > 1) matched.push(sorted[1]);\n        }\n        \/* Sort: closest diameter to pitch first *\/\n        matched.sort(function (a, b) {\n          return Math.abs(a.diameter - pitch) - Math.abs(b.diameter - pitch);\n        });\n        return matched;\n      }\n\n      \/* ============ MAIN CALCULATION ============ *\/\n      function calculate() {\n        clearErrors();\n        var valid = true;\n\n        var w = parseFloat(inWidth.value);\n        var h = parseFloat(inHeight.value);\n        var d = inDist.value;\n        var c = inContent.value;\n\n        if (!w || w < 0.5 || w > 500) { setError(inWidth); valid = false; }\n        if (!h || h < 0.5 || h > 500) { setError(inHeight); valid = false; }\n        if (!d) { setError(inDist); valid = false; }\n        if (!c) { setError(inContent); valid = false; }\n\n        if (!valid) {\n          panel.classList.remove(\"bx-visible\");\n          return;\n        }\n\n        var dist = parseInt(d, 10);\n        var mult = contentMultiplier[c];\n        var pitchRange = pitchTable[dist];\n\n        \/* Adjusted pitch: higher content complexity \u2192 smaller pitch (denser) *\/\n        var basePitch = (pitchRange.min + pitchRange.max) \/ 2;\n        var adjustedPitch = basePitch \/ mult;\n\n        \/* Clamp to minimum physical possibility (25mm) *\/\n        adjustedPitch = Math.max(25, Math.round(adjustedPitch));\n\n        \/* Area *\/\n        var area = w * h;\n\n        \/* Pixels per m2 *\/\n        var pitchM = adjustedPitch \/ 1000;\n        var pxPerSqM = Math.round(1 \/ (pitchM * pitchM));\n\n        \/* Total pixels *\/\n        var totalPx = Math.round(area * pxPerSqM);\n\n        \/* Recommended models *\/\n        var recModels = findModels(adjustedPitch);\n\n        \/* Power: use average wattage of the best-match model (typical operating point) *\/\n        var primaryModel = recModels[0];\n        var wattArr = primaryModel.wattage;\n        var avgW = wattArr.reduce(function (s, v) { return s + v; }, 0) \/ wattArr.length;\n        var totalPower = Math.round(totalPx * avgW);\n\n        \/* DMX universes: 512 channels \/ 3 channels per pixel (RGB) = 170 px per universe *\/\n        var dmxUniverses = Math.ceil(totalPx \/ 170);\n\n        \/* ============ RENDER KPI CARDS ============ *\/\n        root.querySelector(\"#bx-kpi-pitch\").textContent  = adjustedPitch;\n        root.querySelector(\"#bx-kpi-density\").textContent = fmt(pxPerSqM);\n        root.querySelector(\"#bx-kpi-total\").textContent   = fmt(totalPx);\n        root.querySelector(\"#bx-kpi-power\").textContent   = fmtW(totalPower);\n        root.querySelector(\"#bx-kpi-area\").textContent    = area.toFixed(1);\n        root.querySelector(\"#bx-kpi-dmx\").textContent     = fmt(dmxUniverses);\n\n        \/* ============ RENDER MODEL LIST ============ *\/\n        var listEl = root.querySelector(\"#bx-model-list\");\n        listEl.innerHTML = \"\";\n\n        for (var j = 0; j < recModels.length; j++) {\n          var mod = recModels[j];\n          var li = document.createElement(\"li\");\n          li.className = \"bx-model-item\" + (j === 0 ? \" bx-best-match\" : \"\");\n\n          var sizeLabel = mod.shape === \"rect\"\n            ? mod.dimensions\n            : \"\\u00d8\" + mod.diameter + \"mm\";\n\n          var wattLabel = mod.wattage.map(function (wt) { return wt + \"W\"; }).join(\" \/ \");\n\n          li.innerHTML =\n            '<div class=\"bx-model-name\">' + mod.name +\n            (j === 0 ? '<span class=\"bx-best-tag\">Best Match<\/span>' : \"\") +\n            \"<\/div>\" +\n            '<div class=\"bx-model-specs\">' +\n            sizeLabel + \" &middot; \" + wattLabel + \" &middot; \" + mod.voltage + \" &middot; \" + mod.protocol +\n            \"<\/div>\";\n          listEl.appendChild(li);\n        }\n\n        \/* ============ SUMMARY NOTE ============ *\/\n        var noteEl = root.querySelector(\"#bx-summary-note\");\n        var contentLabel = { static: \"static color\", simple: \"simple animation\", complex: \"complex animation\", video: \"video\" };\n        noteEl.innerHTML =\n          \"<strong>Configuration summary:<\/strong> A \" + w + \" m \\u00d7 \" + h + \" m facade (\" + area.toFixed(1) + \" m\\u00b2) \" +\n          \"viewed from \" + dist + \" m with <em>\" + contentLabel[c] + \"<\/em> content requires a <strong>\" + adjustedPitch + \" mm pixel pitch<\/strong>, \" +\n          \"totaling <strong>\" + fmt(totalPx) + \" pixels<\/strong> and approximately <strong>\" + fmtW(totalPower) + \"<\/strong> of power. \" +\n          \"This setup needs <strong>\" + fmt(dmxUniverses) + \" DMX universes<\/strong> (170 pixels per universe at 3 RGB channels each). \" +\n          \"Actual power may vary depending on brightness levels and color temperature.\";\n\n        \/* Show panel *\/\n        panel.classList.remove(\"bx-visible\");\n        \/* Force reflow for animation replay *\/\n        void panel.offsetWidth;\n        panel.classList.add(\"bx-visible\");\n\n        \/* Scroll into view *\/\n        panel.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n      }\n\n      \/* ============ EVENT BINDING ============ *\/\n      btnCalc.addEventListener(\"click\", calculate);\n\n      \/* Allow Enter key to trigger calculation from inputs *\/\n      var inputs = root.querySelectorAll(\"input, select\");\n      for (var k = 0; k < inputs.length; k++) {\n        inputs[k].addEventListener(\"keydown\", function (e) {\n          if (e.key === \"Enter\") {\n            e.preventDefault();\n            calculate();\n          }\n        });\n      }\n    })();\n  <\/script>\n<\/section>\n<\/div><\/div><\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>LED Pixel Density Calculator Enter your building facade dimensions and viewing conditions to find the optimal LED pixel configuration, total pixel count, power draw, and the best-fit Guangqi model. Facade Width meters Enter a width between 0.5 and 500 m Facade Height meters Enter a height between 0.5 and 500 m Viewing Distance Select distance10 [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"parent":1451,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_gspb_post_css":"","footnotes":""},"class_list":["post-1561","page","type-page","status-publish","hentry"],"blocksy_meta":{"has_hero_section":"disabled","styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/pages\/1561","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/comments?post=1561"}],"version-history":[{"count":0,"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/pages\/1561\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/pages\/1451"}],"wp:attachment":[{"href":"https:\/\/gqlamp.com\/pt\/wp-json\/wp\/v2\/media?parent=1561"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}