{"id":24574,"date":"2026-08-10T03:08:22","date_gmt":"2026-08-10T03:08:22","guid":{"rendered":"https:\/\/www.mechstream.com\/?p=24574"},"modified":"2026-08-10T03:21:35","modified_gmt":"2026-08-10T03:21:35","slug":"helical-gear-force-calculator","status":"publish","type":"post","link":"https:\/\/www.mechstream.com\/es\/helical-gear-force-calculator\/","title":{"rendered":"Helical Gear Force Calculator"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The <strong>Helical Gear Force Calculator<\/strong> is a practical engineering tool designed to calculate the forces generated during helical gear transmission. By entering key parameters such as transmitted torque, pitch diameter, pressure angle, and helix angle, users can quickly estimate tangential, radial, and axial gear forces. The <strong>Helical Gear Force Calculator<\/strong> helps engineers and designers evaluate gear loads, select suitable bearings and shafts, and improve the reliability of gearbox and transmission system designs. It also reduces time spent on manual calculations and minimizes calculation errors. Whether you are designing industrial gearboxes, mechanical drives, or other power transmission systems, this calculator provides a fast and convenient solution for analyzing helical gear forces and supporting efficient mechanical design.<\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Helical Gear Force Calculator<\/title>\n  <style>\n    #hgc-app {\n      --hgc-bg-input: #f7f9fc;\n      --hgc-border: #d1dbe8;\n      --hgc-border-focus: #2563eb;\n      --hgc-text-primary: #1a2332;\n      --hgc-text-secondary: #4a5568;\n      --hgc-text-muted: #718096;\n      --hgc-accent: #2563eb;\n      --hgc-accent-dim: rgba(37, 99, 235, 0.1);\n      --hgc-danger: #f87171;\n      --hgc-ft-color: #2563eb;\n      --hgc-fr-color: #db2777;\n      --hgc-fa-color: #059669;\n      --hgc-f-color: #7c3aed;\n      --hgc-radius: 8px;\n      --hgc-radius-sm: 4px;\n      --hgc-font-mono: Consolas, \"SF Mono\", Monaco, monospace;\n      --hgc-font-sans: \"Segoe UI\", system-ui, -apple-system, sans-serif;\n      box-sizing: border-box;\n      font-family: var(--hgc-font-sans);\n      font-size: 16px;\n      line-height: 1.5;\n      color: var(--hgc-text-primary);\n      background: #ffffff;\n      max-width: 1200px;\n      margin: 0 auto;\n      padding: 20px;\n      isolation: isolate;\n    }\n\n    #hgc-app *,\n    #hgc-app *::before,\n    #hgc-app *::after {\n      box-sizing: border-box;\n    }\n\n    #hgc-app .hgc-main {\n      display: flex;\n      flex-direction: column;\n    }\n\n    #hgc-app .hgc-panel {\n      background: #ffffff;\n      padding-bottom: 20px;\n      border-bottom: 1px solid var(--hgc-border);\n      margin-bottom: 20px;\n    }\n\n    #hgc-app .hgc-panel-section { margin-bottom: 20px; }\n    #hgc-app .hgc-panel-section:last-child { margin-bottom: 0; }\n\n    #hgc-app .hgc-section-header {\n      margin-bottom: 14px;\n      padding-bottom: 8px;\n      border-bottom: 1px solid var(--hgc-border);\n    }\n\n    #hgc-app .hgc-section-header h2 {\n      font-size: 0.75rem;\n      font-weight: 600;\n      text-transform: uppercase;\n      letter-spacing: 0.08em;\n      color: var(--hgc-text-secondary);\n      margin: 0;\n      padding: 0;\n      line-height: 1.4;\n    }\n\n    #hgc-app .hgc-input-mode-toggle {\n      display: flex;\n      background: var(--hgc-bg-input);\n      border: 1px solid var(--hgc-border);\n      border-radius: var(--hgc-radius);\n      padding: 3px;\n      margin-bottom: 16px;\n    }\n\n    #hgc-app .hgc-input-mode-toggle label {\n      flex: 1;\n      text-align: center;\n      padding: 8px 12px;\n      font-size: 0.8rem;\n      cursor: pointer;\n      border-radius: 6px;\n      color: var(--hgc-text-secondary);\n      transition: background 0.15s, color 0.15s;\n      user-select: none;\n      margin: 0;\n    }\n\n    #hgc-app .hgc-input-mode-toggle input { display: none; }\n\n    #hgc-app .hgc-input-mode-toggle input:checked + label {\n      background: var(--hgc-accent);\n      color: #fff;\n      font-weight: 500;\n    }\n\n    #hgc-app .hgc-form-group {\n      margin-bottom: 14px;\n      position: relative;\n    }\n\n    #hgc-app .hgc-form-group > label {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      font-size: 0.8rem;\n      color: var(--hgc-text-secondary);\n      margin-bottom: 6px;\n      font-weight: normal;\n    }\n\n    #hgc-app .hgc-unit-badge {\n      font-family: var(--hgc-font-mono);\n      font-size: 0.7rem;\n      background: var(--hgc-bg-input);\n      color: var(--hgc-text-muted);\n      padding: 1px 6px;\n      border-radius: var(--hgc-radius-sm);\n      border: 1px solid var(--hgc-border);\n    }\n\n    #hgc-app .hgc-form-group input[type=\"number\"] {\n      width: 100%;\n      max-width: 100%;\n      background: var(--hgc-bg-input);\n      border: 1px solid var(--hgc-border);\n      border-radius: var(--hgc-radius-sm);\n      padding: 10px 12px;\n      font-size: 0.95rem;\n      font-family: var(--hgc-font-mono);\n      color: var(--hgc-text-primary);\n      transition: border-color 0.15s, box-shadow 0.15s;\n      height: auto;\n      line-height: normal;\n      box-shadow: none;\n    }\n\n    #hgc-app .hgc-form-group input[type=\"number\"]:focus {\n      outline: none;\n      border-color: var(--hgc-border-focus);\n      box-shadow: 0 0 0 3px var(--hgc-accent-dim);\n    }\n\n    #hgc-app .hgc-form-group input.hgc-invalid {\n      border-color: var(--hgc-danger);\n      box-shadow: 0 0 0 3px rgba(248, 113, 113, 0.15);\n    }\n\n    #hgc-app .hgc-warning-tip {\n      display: none;\n      font-size: 0.75rem;\n      color: var(--hgc-danger);\n      margin-top: 4px;\n    }\n\n    #hgc-app .hgc-form-group.hgc-has-error .hgc-warning-tip { display: block; }\n\n    #hgc-app .hgc-radio-group {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 8px;\n    }\n\n    #hgc-app .hgc-radio-group label {\n      display: flex;\n      align-items: center;\n      gap: 8px;\n      background: var(--hgc-bg-input);\n      border: 1px solid var(--hgc-border);\n      border-radius: var(--hgc-radius-sm);\n      padding: 10px 12px;\n      font-size: 0.8rem;\n      cursor: pointer;\n      transition: border-color 0.15s, background 0.15s;\n      color: var(--hgc-text-secondary);\n      margin: 0;\n      font-weight: normal;\n    }\n\n    #hgc-app .hgc-radio-group input { display: none; }\n\n    #hgc-app .hgc-radio-group input:checked + span {\n      color: var(--hgc-accent);\n      font-weight: 500;\n    }\n\n    #hgc-app .hgc-radio-group label:has(input:checked) {\n      border-color: var(--hgc-accent);\n      background: var(--hgc-accent-dim);\n    }\n\n    #hgc-app .hgc-results-panel {\n      background: #ffffff;\n      display: none;\n      flex-direction: column;\n      gap: 16px;\n    }\n\n    #hgc-app .hgc-results-panel.hgc-visible {\n      display: flex;\n    }\n\n    #hgc-app .hgc-results-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n      gap: 12px;\n    }\n\n    #hgc-app .hgc-result-card {\n      background: #ffffff;\n      border: 1px solid var(--hgc-border);\n      border-radius: var(--hgc-radius);\n      padding: 16px;\n      position: relative;\n      overflow: hidden;\n    }\n\n    #hgc-app .hgc-result-card::before {\n      content: \"\";\n      position: absolute;\n      top: 0;\n      left: 0;\n      right: 0;\n      height: 3px;\n    }\n\n    #hgc-app .hgc-result-card.hgc-ft::before { background: var(--hgc-ft-color); }\n    #hgc-app .hgc-result-card.hgc-fr::before { background: var(--hgc-fr-color); }\n    #hgc-app .hgc-result-card.hgc-fa::before { background: var(--hgc-fa-color); }\n    #hgc-app .hgc-result-card.hgc-f::before { background: var(--hgc-f-color); }\n\n    #hgc-app .hgc-result-label {\n      font-size: 0.7rem;\n      text-transform: uppercase;\n      letter-spacing: 0.06em;\n      color: var(--hgc-text-muted);\n      margin-bottom: 4px;\n    }\n\n    #hgc-app .hgc-result-symbol {\n      font-size: 1.1rem;\n      font-weight: 600;\n      margin-bottom: 8px;\n    }\n\n    #hgc-app .hgc-result-card.hgc-ft .hgc-result-symbol { color: var(--hgc-ft-color); }\n    #hgc-app .hgc-result-card.hgc-fr .hgc-result-symbol { color: var(--hgc-fr-color); }\n    #hgc-app .hgc-result-card.hgc-fa .hgc-result-symbol { color: var(--hgc-fa-color); }\n    #hgc-app .hgc-result-card.hgc-f .hgc-result-symbol { color: var(--hgc-f-color); }\n\n    #hgc-app .hgc-result-value {\n      font-family: var(--hgc-font-mono);\n      font-size: 1.4rem;\n      font-weight: 600;\n      line-height: 1.2;\n    }\n\n    #hgc-app .hgc-result-sub {\n      font-family: var(--hgc-font-mono);\n      font-size: 0.85rem;\n      color: var(--hgc-text-secondary);\n      margin-top: 4px;\n    }\n\n    #hgc-app .hgc-direction-banner {\n      background: #ffffff;\n      border: 1px solid var(--hgc-border);\n      border-radius: var(--hgc-radius);\n      padding: 14px 16px;\n      display: flex;\n      align-items: flex-start;\n      gap: 12px;\n    }\n\n    #hgc-app .hgc-direction-icon {\n      width: 36px;\n      height: 36px;\n      background: var(--hgc-accent-dim);\n      border-radius: var(--hgc-radius-sm);\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n      font-size: 0.65rem;\n      font-weight: 700;\n      color: var(--hgc-accent);\n    }\n\n    #hgc-app .hgc-direction-text h3 {\n      font-size: 0.85rem;\n      font-weight: 600;\n      margin: 0 0 4px;\n      padding: 0;\n      line-height: 1.4;\n    }\n\n    #hgc-app .hgc-direction-text p {\n      font-size: 0.8rem;\n      color: var(--hgc-text-secondary);\n      margin: 0;\n    }\n\n    #hgc-app .hgc-direction-value {\n      color: var(--hgc-fa-color);\n      font-weight: 600;\n    }\n\n    #hgc-app .hgc-torque-display {\n      background: var(--hgc-accent-dim);\n      border: 1px solid var(--hgc-accent);\n      border-radius: var(--hgc-radius-sm);\n      padding: 10px 14px;\n      margin-bottom: 14px;\n      font-size: 0.8rem;\n    }\n\n    #hgc-app .hgc-torque-label { color: var(--hgc-text-secondary); }\n    #hgc-app .hgc-torque-value {\n      font-family: var(--hgc-font-mono);\n      font-weight: 600;\n      color: var(--hgc-accent);\n    }\n\n    #hgc-app .hgc-input-group-hidden { display: none; }\n    #hgc-app .hgc-input-group-hidden.hgc-active { display: block; }\n\n    #hgc-app .hgc-global-warning {\n      display: none;\n      background: rgba(248, 113, 113, 0.12);\n      border: 1px solid var(--hgc-danger);\n      color: var(--hgc-danger);\n      padding: 10px 14px;\n      border-radius: var(--hgc-radius-sm);\n      font-size: 0.8rem;\n      margin-bottom: 16px;\n    }\n\n    #hgc-app .hgc-global-warning.hgc-visible { display: block; }\n\n    #hgc-app .hgc-btn-calculate {\n      display: block;\n      width: 33.33%;\n      margin: 8px auto 0;\n      padding: 12px 20px;\n      background: var(--hgc-accent);\n      color: #ffffff;\n      border: none;\n      border-radius: var(--hgc-radius-sm);\n      font-size: 0.95rem;\n      font-weight: 600;\n      font-family: var(--hgc-font-sans);\n      cursor: pointer;\n      transition: background 0.15s;\n      line-height: normal;\n      text-transform: none;\n      letter-spacing: normal;\n      box-shadow: none;\n    }\n\n    #hgc-app .hgc-btn-calculate:hover {\n      background: #1d4ed8;\n      color: #ffffff;\n    }\n\n    #hgc-app .hgc-btn-calculate:active {\n      background: #1e40af;\n    }\n  <\/style>\n<\/head>\n<body>\n  <!-- WordPress: copy from line below (style) through \/script into Custom HTML block -->\n  <div id=\"hgc-app\">\n    <div class=\"hgc-main\">\n      <aside class=\"hgc-panel\">\n        <div class=\"hgc-panel-section\">\n          <div class=\"hgc-section-header\">\n            <h2>Input Parameters<\/h2>\n          <\/div>\n\n          <div class=\"hgc-global-warning\" id=\"hgc-globalWarning\"><\/div>\n\n          <div class=\"hgc-input-mode-toggle\">\n            <input type=\"radio\" name=\"hgc-inputMode\" id=\"hgc-modePower\" value=\"power\" checked>\n            <label for=\"hgc-modePower\">Power &amp; Speed<\/label>\n            <input type=\"radio\" name=\"hgc-inputMode\" id=\"hgc-modeTorque\" value=\"torque\">\n            <label for=\"hgc-modeTorque\">Direct Torque<\/label>\n          <\/div>\n\n          <div class=\"hgc-input-group-hidden hgc-active\" id=\"hgc-powerGroup\">\n            <div class=\"hgc-form-group\" id=\"hgc-groupPower\">\n              <label for=\"hgc-power\">Power <span class=\"hgc-unit-badge\">kW<\/span><\/label>\n              <input type=\"number\" id=\"hgc-power\" value=\"15\" min=\"0\" step=\"any\">\n              <div class=\"hgc-warning-tip\"><\/div>\n            <\/div>\n            <div class=\"hgc-form-group\" id=\"hgc-groupSpeed\">\n              <label for=\"hgc-speed\">Speed <span class=\"hgc-unit-badge\">RPM<\/span><\/label>\n              <input type=\"number\" id=\"hgc-speed\" value=\"1450\" min=\"0\" step=\"any\">\n              <div class=\"hgc-warning-tip\"><\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"hgc-input-group-hidden\" id=\"hgc-torqueGroup\">\n            <div class=\"hgc-form-group\" id=\"hgc-groupTorque\">\n              <label for=\"hgc-torque\">Torque <span class=\"hgc-unit-badge\">N.m<\/span><\/label>\n              <input type=\"number\" id=\"hgc-torque\" value=\"98.79\" min=\"0\" step=\"any\">\n              <div class=\"hgc-warning-tip\"><\/div>\n            <\/div>\n          <\/div>\n\n          <div class=\"hgc-torque-display\">\n            <span class=\"hgc-torque-label\">Computed Torque: <\/span>\n            <span class=\"hgc-torque-value\" id=\"hgc-torqueValue\">&#8211;<\/span>\n            <span class=\"hgc-torque-label\"> N.m<\/span>\n          <\/div>\n\n          <div class=\"hgc-form-group\" id=\"hgc-groupDiameter\">\n            <label for=\"hgc-diameter\">Pitch Diameter <span class=\"hgc-unit-badge\">mm<\/span><\/label>\n            <input type=\"number\" id=\"hgc-diameter\" value=\"200\" min=\"0\" step=\"any\">\n            <div class=\"hgc-warning-tip\"><\/div>\n          <\/div>\n\n          <div class=\"hgc-form-group\" id=\"hgc-groupHelix\">\n            <label for=\"hgc-helixAngle\">Helix Angle beta <span class=\"hgc-unit-badge\">deg<\/span><\/label>\n            <input type=\"number\" id=\"hgc-helixAngle\" value=\"15\" min=\"0\" max=\"45\" step=\"any\">\n            <div class=\"hgc-warning-tip\"><\/div>\n          <\/div>\n\n          <div class=\"hgc-form-group\" id=\"hgc-groupPressure\">\n            <label for=\"hgc-pressureAngle\">Normal Pressure Angle alpha_n <span class=\"hgc-unit-badge\">deg<\/span><\/label>\n            <input type=\"number\" id=\"hgc-pressureAngle\" value=\"20\" min=\"0\" max=\"45\" step=\"any\">\n            <div class=\"hgc-warning-tip\"><\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"hgc-panel-section\">\n          <div class=\"hgc-section-header\">\n            <h2>Helix &amp; Rotation<\/h2>\n          <\/div>\n\n          <div class=\"hgc-form-group\">\n            <label>Hand of Helix<\/label>\n            <div class=\"hgc-radio-group\">\n              <label><input type=\"radio\" name=\"hgc-helixHand\" value=\"RH\" checked><span>RH (Right-Hand)<\/span><\/label>\n              <label><input type=\"radio\" name=\"hgc-helixHand\" value=\"LH\"><span>LH (Left-Hand)<\/span><\/label>\n            <\/div>\n          <\/div>\n\n          <div class=\"hgc-form-group\">\n            <label>Rotation (Facing Gear)<\/label>\n            <div class=\"hgc-radio-group\">\n              <label><input type=\"radio\" name=\"hgc-rotation\" value=\"CW\" checked><span>CW (Clockwise)<\/span><\/label>\n              <label><input type=\"radio\" name=\"hgc-rotation\" value=\"CCW\"><span>CCW (Counter-CW)<\/span><\/label>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <button type=\"button\" class=\"hgc-btn-calculate\" id=\"hgc-calculateBtn\">Calculate<\/button>\n      <\/aside>\n\n      <section class=\"hgc-results-panel\" id=\"hgc-resultsPanel\">\n        <div class=\"hgc-section-header\">\n          <h2>Results<\/h2>\n        <\/div>\n\n        <div class=\"hgc-results-grid\">\n          <div class=\"hgc-result-card hgc-ft\">\n            <div class=\"hgc-result-label\">Tangential Force<\/div>\n            <div class=\"hgc-result-symbol\">F_t<\/div>\n            <div class=\"hgc-result-value\" id=\"hgc-resultFt\">&#8211;<\/div>\n            <div class=\"hgc-result-sub\" id=\"hgc-resultFtKn\">&#8211;<\/div>\n          <\/div>\n          <div class=\"hgc-result-card hgc-fr\">\n            <div class=\"hgc-result-label\">Radial Force<\/div>\n            <div class=\"hgc-result-symbol\">F_r<\/div>\n            <div class=\"hgc-result-value\" id=\"hgc-resultFr\">&#8211;<\/div>\n            <div class=\"hgc-result-sub\" id=\"hgc-resultFrKn\">&#8211;<\/div>\n          <\/div>\n          <div class=\"hgc-result-card hgc-fa\">\n            <div class=\"hgc-result-label\">Axial \/ Thrust Force<\/div>\n            <div class=\"hgc-result-symbol\">F_a<\/div>\n            <div class=\"hgc-result-value\" id=\"hgc-resultFa\">&#8211;<\/div>\n            <div class=\"hgc-result-sub\" id=\"hgc-resultFaKn\">&#8211;<\/div>\n          <\/div>\n          <div class=\"hgc-result-card hgc-f\">\n            <div class=\"hgc-result-label\">Total Resultant Force<\/div>\n            <div class=\"hgc-result-symbol\">F<\/div>\n            <div class=\"hgc-result-value\" id=\"hgc-resultF\">&#8211;<\/div>\n            <div class=\"hgc-result-sub\" id=\"hgc-resultFKn\">&#8211;<\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"hgc-direction-banner\">\n          <div class=\"hgc-direction-icon\" id=\"hgc-directionIcon\">&#8211;<\/div>\n          <div class=\"hgc-direction-text\">\n            <h3>Axial Thrust Direction (F_a)<\/h3>\n            <p id=\"hgc-directionText\">&#8211;<\/p>\n          <\/div>\n        <\/div>\n      <\/section>\n    <\/div>\n  <\/div>\n\n  <script>\n(function () {\n  var NA = \"-\";\n\n  function initHgc() {\n    var root = document.getElementById(\"hgc-app\");\n    if (!root) return;\n\n    var DEG = Math.PI \/ 180;\n\n    var els = {\n      powerGroup: root.querySelector(\"#hgc-powerGroup\"),\n      torqueGroup: root.querySelector(\"#hgc-torqueGroup\"),\n      power: root.querySelector(\"#hgc-power\"),\n      speed: root.querySelector(\"#hgc-speed\"),\n      torque: root.querySelector(\"#hgc-torque\"),\n      diameter: root.querySelector(\"#hgc-diameter\"),\n      helixAngle: root.querySelector(\"#hgc-helixAngle\"),\n      pressureAngle: root.querySelector(\"#hgc-pressureAngle\"),\n      torqueValue: root.querySelector(\"#hgc-torqueValue\"),\n      globalWarning: root.querySelector(\"#hgc-globalWarning\"),\n      resultFt: root.querySelector(\"#hgc-resultFt\"),\n      resultFr: root.querySelector(\"#hgc-resultFr\"),\n      resultFa: root.querySelector(\"#hgc-resultFa\"),\n      resultF: root.querySelector(\"#hgc-resultF\"),\n      resultFtKn: root.querySelector(\"#hgc-resultFtKn\"),\n      resultFrKn: root.querySelector(\"#hgc-resultFrKn\"),\n      resultFaKn: root.querySelector(\"#hgc-resultFaKn\"),\n      resultFKn: root.querySelector(\"#hgc-resultFKn\"),\n      directionText: root.querySelector(\"#hgc-directionText\"),\n      directionIcon: root.querySelector(\"#hgc-directionIcon\"),\n      resultsPanel: root.querySelector(\"#hgc-resultsPanel\"),\n      calculateBtn: root.querySelector(\"#hgc-calculateBtn\")\n    };\n\n    function round2(v) {\n      return Math.round(v * 100) \/ 100;\n    }\n\n    function formatN(v) {\n      if (!isFinite(v)) return NA;\n      return round2(v).toFixed(2) + \" N\";\n    }\n\n    function formatKn(v) {\n      if (!isFinite(v)) return NA;\n      return round2(v \/ 1000).toFixed(2) + \" kN\";\n    }\n\n    function getRadio(name) {\n      var el = root.querySelector(\"input[name=\\\"\" + name + \"\\\"]:checked\");\n      return el ? el.value : null;\n    }\n\n    function setFieldError(groupId, message) {\n      var group = root.querySelector(\"#\" + groupId);\n      if (!group) return;\n      var input = group.querySelector(\"input\");\n      var tip = group.querySelector(\".hgc-warning-tip\");\n      if (message) {\n        group.classList.add(\"hgc-has-error\");\n        if (input) input.classList.add(\"hgc-invalid\");\n        if (tip) tip.textContent = message;\n      } else {\n        group.classList.remove(\"hgc-has-error\");\n        if (input) input.classList.remove(\"hgc-invalid\");\n        if (tip) tip.textContent = \"\";\n      }\n    }\n\n    function validateNumber(value, field, opts) {\n      var min = opts.min;\n      var max = opts.max;\n      var allowZero = opts.allowZero;\n      if (value === \"\" || value === null || isNaN(value)) {\n        return field + \" is required.\";\n      }\n      if (!allowZero && 0 >= value) {\n        return field + \" must be greater than zero.\";\n      }\n      if (allowZero && 0 > value) {\n        return field + \" cannot be negative.\";\n      }\n      if (min !== undefined && min > value) {\n        return field + \" must be at least \" + min + \".\";\n      }\n      if (max !== undefined && value > max) {\n        return field + \" exceeds recommended max (\" + max + \" deg).\";\n      }\n      return null;\n    }\n\n    function computeTorque() {\n      var mode = getRadio(\"hgc-inputMode\");\n      if (mode === \"torque\") {\n        return parseFloat(els.torque.value);\n      }\n      var P = parseFloat(els.power.value);\n      var n = parseFloat(els.speed.value);\n      if (!isFinite(P) || !isFinite(n) || 0 >= n) return NaN;\n      return (9550 * P) \/ n;\n    }\n\n    function getAxialDirection(hand, rotation) {\n      var away = (hand === \"RH\" && rotation === \"CW\") || (hand === \"LH\" && rotation === \"CCW\");\n      return {\n        sign: away ? 1 : -1,\n        label: away\n          ? \"Pushes Along Shaft - Away From Viewer (+Z)\"\n          : \"Pushes Along Shaft - Toward Viewer (-Z)\"\n      };\n    }\n\n    function updateDirection(hand, rotation, axial) {\n      var p = els.directionText;\n      while (p.firstChild) { p.removeChild(p.firstChild); }\n      var span = document.createElement(\"span\");\n      span.className = \"hgc-direction-value\";\n      span.textContent = axial.label;\n      p.appendChild(span);\n      p.appendChild(document.createElement(\"br\"));\n      p.appendChild(document.createTextNode(\n        \"Configuration: \" + hand + \" Helix \/ \" + rotation + \" Rotation (viewing gear face)\"\n      ));\n      els.directionIcon.textContent = axial.sign > 0 ? \"Away\" : \"Toward\";\n    }\n\n    function updateResults(Ft, Fr, Fa, F, hand, rotation) {\n      els.resultFt.textContent = formatN(Ft);\n      els.resultFr.textContent = formatN(Fr);\n      els.resultFa.textContent = formatN(Fa);\n      els.resultF.textContent = formatN(F);\n      els.resultFtKn.textContent = formatKn(Ft);\n      els.resultFrKn.textContent = formatKn(Fr);\n      els.resultFaKn.textContent = formatKn(Fa);\n      els.resultFKn.textContent = formatKn(F);\n      if (hand && rotation && isFinite(Fa)) {\n        updateDirection(hand, rotation, getAxialDirection(hand, rotation));\n      }\n    }\n\n    function updateTorquePreview() {\n      var T = computeTorque();\n      els.torqueValue.textContent = isFinite(T) ? round2(T).toFixed(2) : NA;\n    }\n\n    function calculate() {\n      var mode = getRadio(\"hgc-inputMode\");\n      var d = parseFloat(els.diameter.value);\n      var beta = parseFloat(els.helixAngle.value);\n      var alphaN = parseFloat(els.pressureAngle.value);\n      var hand = getRadio(\"hgc-helixHand\");\n      var rotation = getRadio(\"hgc-rotation\");\n      var errors = [];\n\n      setFieldError(\"hgc-groupDiameter\", null);\n      setFieldError(\"hgc-groupHelix\", null);\n      setFieldError(\"hgc-groupPressure\", null);\n      setFieldError(\"hgc-groupPower\", null);\n      setFieldError(\"hgc-groupSpeed\", null);\n      setFieldError(\"hgc-groupTorque\", null);\n\n      if (mode === \"power\") {\n        var pErr = validateNumber(parseFloat(els.power.value), \"Power\", { min: 0, allowZero: false });\n        var sErr = validateNumber(parseFloat(els.speed.value), \"Speed\", { min: 0, allowZero: false });\n        if (pErr) { setFieldError(\"hgc-groupPower\", pErr); errors.push(pErr); }\n        if (sErr) { setFieldError(\"hgc-groupSpeed\", sErr); errors.push(sErr); }\n      } else {\n        var tErr = validateNumber(parseFloat(els.torque.value), \"Torque\", { min: 0, allowZero: false });\n        if (tErr) { setFieldError(\"hgc-groupTorque\", tErr); errors.push(tErr); }\n      }\n\n      var dErr = validateNumber(d, \"Pitch diameter\", { min: 0, allowZero: false });\n      var bErr = validateNumber(beta, \"Helix angle\", { min: 0, max: 45, allowZero: true });\n      var aErr = validateNumber(alphaN, \"Pressure angle\", { min: 0, max: 45, allowZero: true });\n\n      if (dErr) { setFieldError(\"hgc-groupDiameter\", dErr); errors.push(dErr); }\n      if (bErr) { setFieldError(\"hgc-groupHelix\", bErr); errors.push(bErr); }\n      if (aErr) { setFieldError(\"hgc-groupPressure\", aErr); errors.push(aErr); }\n\n      if (beta >= 45) {\n        setFieldError(\"hgc-groupHelix\", \"Helix angle must be less than 45 deg.\");\n        errors.push(\"Helix angle too large.\");\n      }\n      if (alphaN >= 45) {\n        setFieldError(\"hgc-groupPressure\", \"Pressure angle must be less than 45 deg.\");\n        errors.push(\"Pressure angle too large.\");\n      }\n\n      var T = computeTorque();\n      els.torqueValue.textContent = isFinite(T) ? round2(T).toFixed(2) : NA;\n\n      if (errors.length > 0) {\n        els.globalWarning.textContent = errors[0];\n        els.globalWarning.classList.add(\"hgc-visible\");\n        updateResults(NaN, NaN, NaN, NaN);\n        els.resultsPanel.classList.add(\"hgc-visible\");\n        return;\n      }\n\n      els.globalWarning.classList.remove(\"hgc-visible\");\n\n      var betaRad = beta * DEG;\n      var alphaRad = alphaN * DEG;\n      var cosBeta = Math.cos(betaRad);\n      var cosAlpha = Math.cos(alphaRad);\n\n      if (0.0000000001 > Math.abs(cosBeta)) {\n        els.globalWarning.textContent = \"Helix angle too close to 90 deg.\";\n        els.globalWarning.classList.add(\"hgc-visible\");\n        updateResults(NaN, NaN, NaN, NaN);\n        els.resultsPanel.classList.add(\"hgc-visible\");\n        return;\n      }\n      if (0.0000000001 > Math.abs(cosAlpha)) {\n        els.globalWarning.textContent = \"Invalid pressure angle.\";\n        els.globalWarning.classList.add(\"hgc-visible\");\n        updateResults(NaN, NaN, NaN, NaN);\n        els.resultsPanel.classList.add(\"hgc-visible\");\n        return;\n      }\n\n      var Ft = (2000 * T) \/ d;\n      var Fr = (Ft * Math.tan(alphaRad)) \/ cosBeta;\n      var Fa = Ft * Math.tan(betaRad);\n      var F = Ft \/ (cosAlpha * cosBeta);\n\n      updateResults(Ft, Fr, Fa, F, hand, rotation);\n      els.resultsPanel.classList.add(\"hgc-visible\");\n    }\n\n    function switchInputMode() {\n      var mode = getRadio(\"hgc-inputMode\");\n      if (mode === \"power\") {\n        els.powerGroup.classList.add(\"hgc-active\");\n        els.torqueGroup.classList.remove(\"hgc-active\");\n      } else {\n        els.powerGroup.classList.remove(\"hgc-active\");\n        els.torqueGroup.classList.add(\"hgc-active\");\n      }\n      updateTorquePreview();\n    }\n\n    window.hgcRunCalc = calculate;\n\n    if (els.calculateBtn) {\n      els.calculateBtn.addEventListener(\"click\", calculate);\n    }\n\n    var inputs = root.querySelectorAll(\"input[type=\\\"number\\\"], input[type=\\\"radio\\\"]\");\n    var inputCount = inputs.length;\n    for (var i = 0; inputCount !== i; i++) {\n      inputs[i].addEventListener(\"input\", updateTorquePreview);\n      inputs[i].addEventListener(\"change\", function (ev) {\n        if (ev.target.name === \"hgc-inputMode\") switchInputMode();\n        else updateTorquePreview();\n      });\n    }\n\n    updateTorquePreview();\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", initHgc);\n  } else {\n    initHgc();\n  }\n})();\n  <\/script>\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>The Helical Gear Force Calculator is a practical engineering tool designed to calculate the forces generated during helical gear transmission. By entering key parameters such&#8230;<\/p>","protected":false},"author":2,"featured_media":24575,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"pmpro_default_level":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[8520],"tags":[3673,3560,8550,8551],"class_list":["post-24574","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mechanical-basic-component-design","tag-gear-calculator","tag-gear-design","tag-gear-force","tag-helical-gear","pmpro-has-access"],"acf":[],"jetpack_featured_media_url":"https:\/\/www.mechstream.com\/wp-content\/uploads\/2026\/08\/Helical-Gear-Force-Calculator.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/posts\/24574","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/comments?post=24574"}],"version-history":[{"count":5,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/posts\/24574\/revisions"}],"predecessor-version":[{"id":24580,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/posts\/24574\/revisions\/24580"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/media\/24575"}],"wp:attachment":[{"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/media?parent=24574"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/categories?post=24574"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mechstream.com\/es\/wp-json\/wp\/v2\/tags?post=24574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}