{"id":25669,"date":"2026-07-03T14:13:25","date_gmt":"2026-07-03T12:13:25","guid":{"rendered":"https:\/\/shop.stagnoligears.com\/?post_type=centro-tecnico&#038;p=25669"},"modified":"2026-07-10T13:44:25","modified_gmt":"2026-07-10T11:44:25","slug":"torque-power-and-rotation-speed-calculator","status":"publish","type":"centro-tecnico","link":"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/torque-power-and-rotation-speed-calculator\/","title":{"rendered":"Torque, power and rotation speed calculator"},"content":{"rendered":"\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  <meta name=\"description\" content=\"Calculate the torque, power and rotation speed of a shaft from any two values, using the relation P = Mt \u00b7 \u03c9 with \u03c9 = 2\u03c0n\/60.\" \/>\n  <title>Torque, power and rotation speed calculator<\/title>\n\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\" \/>\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin \/>\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&#038;display=swap\" rel=\"stylesheet\" \/>\n\n  <!-- KaTeX for formula rendering -->\n  <link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/katex@0.16.9\/dist\/katex.min.css\" crossorigin=\"anonymous\" \/>\n  <script defer src=\"https:\/\/cdn.jsdelivr.net\/npm\/katex@0.16.9\/dist\/katex.min.js\" crossorigin=\"anonymous\"><\/script>\n\n  <style>\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n    :root {\n      --green:        #1a6b3c;\n      --green-dark:   #0f4a28;\n      --green-mid:    #2d8a55;\n      --green-light:  #e8f4ed;\n      --green-xlight: #f2faf5;\n      --amber:        #b45309;\n      --amber-light:  #fef3c7;\n      --red:          #b91c1c;\n      --bg:           #ffffff;\n      --bg-soft:      #f8f9fa;\n      --bg-muted:     #f1f3f5;\n      --border:       #e5e7eb;\n      --border-mid:   #d1d5db;\n      --text-primary:   #111827;\n      --text-secondary: #4b5563;\n      --text-muted:     #9ca3af;\n      --gray-650:       #4b5563;\n      --radius-sm: 6px;\n      --radius-md: 8px;\n    }\n\n    body { min-height: 100vh; padding: 40px 28px 64px;\n      font-family: 'Inter', sans-serif;\n      font-size: 14px;\n      letter-spacing: 0.02em;\n      color: var(--text-primary);}\n\n    .article__title {\n      font-size: 22px;\n      font-weight: 700;\n      color: var(--text-primary);\n      line-height: 1.3;\n      margin-bottom: 8px;\n    }\n\n    .article__subtitle {\n      font-size: 14px;\n      color: var(--text-secondary);\n      line-height: 1.75;\n      margin-bottom: 24px;\n    }\n\n    \/* \u2500\u2500 Infobox \u2500\u2500 *\/\n    .infobox {\n      display: flex;\n      flex-direction: column;\n      gap: 4px;\n      padding: 12px 14px;\n      background: var(--green-xlight);\n      border: 1px solid var(--green-light);\n      border-radius: var(--radius-sm);\n      color: var(--green-dark);\n    }\n    .infobox__title {\n      display: flex;\n      align-items: center;\n      gap: 6px;\n      font-size: 12.5px;\n      font-weight: 600;\n    }\n    .infobox__text { font-size: 12px; line-height: 1.6; }\n\n    \/* \u2500\u2500 Shell \u2500\u2500 *\/\n    .ci-host { display: flex; flex-direction: column; gap: 14px; margin-top: 4px; }\n\n    .ci-card {\n      background: var(--bg);\n      border: 1px solid var(--border);\n      border-radius: var(--radius-md);\n      box-shadow: 0 1px 3px rgba(0,0,0,.05);\n    }\n\n    \/* \u2500\u2500 Calculator panel \u2500\u2500 *\/\n    .ci-panel { padding: 22px 22px 20px; display: flex; flex-direction: column; gap: 18px; }\n\n    .ci-panel-head { display: flex; align-items: center; justify-content: space-between; }\n\n    .ci-panel-title {\n      font-size: 16px;\n      font-weight: 700;\n      color: var(--text-primary);\n      letter-spacing: -0.01em;\n    }\n\n    .ci-reset-btn {\n      display: inline-flex;\n      align-items: center;\n      gap: 5px;\n      background: none;\n      border: none;\n      cursor: pointer;\n      color: var(--text-secondary);\n      font-family: inherit;\n      font-size: 12.5px;\n      font-weight: 500;\n      padding: 4px 8px;\n      border-radius: var(--radius-sm);\n      transition: color 0.15s, background 0.15s;\n    }\n    .ci-reset-btn:hover { color: var(--text-primary); background: var(--bg-soft); }\n\n    \/* \u2500\u2500 Boxes (enter any two \u2192 third computed) \u2500\u2500 *\/\n    .ci-boxes {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));\n      gap: 14px;\n    }\n\n    .ci-box {\n      display: flex;\n      flex-direction: column;\n      gap: 10px;\n      padding: 14px 14px 16px;\n      border: 1px solid var(--border-mid);\n      border-radius: var(--radius-md);\n      background: var(--bg);\n      transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;\n    }\n    .ci-box--computed {\n      border-color: var(--green);\n      background: var(--green-xlight);\n      box-shadow: 0 0 0 3px rgba(26,107,60,.10);\n    }\n\n    .ci-box-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 20px; }\n\n    .ci-box-label {\n      display: inline-flex;\n      align-items: center;\n      gap: 6px;\n      font-size: 13px;\n      font-weight: 600;\n      color: var(--text-secondary);\n    }\n    .ci-box--computed .ci-box-label { color: var(--green-dark); }\n    .ci-box-label svg { flex-shrink: 0; }\n\n    .ci-box-badge {\n      font-size: 10px;\n      font-weight: 700;\n      letter-spacing: 0.06em;\n      text-transform: uppercase;\n      color: #fff;\n      background: var(--green);\n      padding: 2px 7px;\n      border-radius: 999px;\n    }\n\n    .ci-box-input-wrap { position: relative; display: flex; align-items: center; gap: 8px; }\n\n    .ci-box-input {\n      flex: 1;\n      width: 100%;\n      min-width: 0;\n      padding: 10px 12px;\n      border: 1px solid var(--border-mid);\n      border-radius: var(--radius-sm);\n      font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;\n      font-size: 16px;\n      font-weight: 500;\n      color: var(--text-primary);\n      background: var(--bg);\n      outline: none;\n      transition: border-color 0.15s, box-shadow 0.15s;\n      -moz-appearance: textfield;\n    }\n    .ci-box-input::-webkit-outer-spin-button,\n    .ci-box-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }\n    .ci-box-input:hover  { border-color: var(--green-mid); }\n    .ci-box-input:focus  { border-color: var(--green); box-shadow: 0 0 0 3px rgba(26,107,60,.15); }\n    .ci-box--computed .ci-box-input { background: #fff; border-color: var(--green-light); }\n\n    .ci-box-unit-static {\n      font-size: 13px;\n      font-weight: 500;\n      color: var(--gray-650);\n      flex-shrink: 0;\n      min-width: 34px;\n      text-align: right;\n    }\n\n    \/* \u2500\u2500 Custom unit dropdown \u2500\u2500 *\/\n    .ci-unit { position: relative; flex-shrink: 0; }\n\n    .ci-unit-btn {\n      display: inline-flex;\n      align-items: center;\n      gap: 4px;\n      padding: 8px 8px 8px 10px;\n      border: 1px solid var(--border-mid);\n      border-radius: var(--radius-sm);\n      background: var(--bg-soft);\n      cursor: pointer;\n      font-family: inherit;\n      font-size: 13px;\n      font-weight: 500;\n      color: var(--text-primary);\n      transition: border-color 0.15s, background 0.15s;\n      white-space: nowrap;\n    }\n    .ci-unit-btn:hover { border-color: var(--green-mid); }\n    .ci-unit-caret { transition: transform 0.2s; }\n    .ci-unit-caret--open { transform: rotate(180deg); }\n\n    .ci-unit-menu {\n      position: absolute;\n      top: calc(100% + 4px);\n      right: 0;\n      z-index: 20;\n      min-width: 76px;\n      list-style: none;\n      padding: 4px;\n      background: var(--bg);\n      border: 1px solid var(--border);\n      border-radius: var(--radius-sm);\n      box-shadow: 0 6px 18px rgba(0,0,0,.12);\n    }\n    .ci-unit-opt {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      gap: 8px;\n      width: 100%;\n      padding: 7px 9px;\n      border: none;\n      background: none;\n      cursor: pointer;\n      border-radius: 4px;\n      font-family: inherit;\n      font-size: 13px;\n      color: var(--text-primary);\n      text-align: left;\n      transition: background 0.12s, color 0.12s;\n    }\n    .ci-unit-opt:hover { background: var(--bg-soft); }\n    .ci-unit-opt--active { color: var(--green); font-weight: 600; }\n\n    .ci-hint-line {\n      font-size: 12px;\n      line-height: 1.6;\n      color: var(--gray-650);\n    }\n\n    \/* \u2500\u2500 Formula bar \u2500\u2500 *\/\n    .ci-formula-bar {\n      display: flex;\n      align-items: center;\n      gap: 16px;\n      flex-wrap: wrap;\n      padding: 14px 20px;\n      background: var(--bg-soft);\n      border: 1px solid var(--border);\n      border-radius: var(--radius-md);\n    }\n\n    .ci-formula-tag {\n      font-size: 10px;\n      font-weight: 700;\n      letter-spacing: 0.1em;\n      text-transform: uppercase;\n      color: var(--gray-650);\n      flex-shrink: 0;\n    }\n\n    .ci-formula-spacer { flex: 1; min-width: 0; }\n\n    .ci-formula-toggle {\n      display: inline-flex;\n      align-items: center;\n      gap: 5px;\n      background: none;\n      border: 1px solid var(--green-light);\n      border-radius: var(--radius-sm);\n      cursor: pointer;\n      color: var(--green);\n      font-family: inherit;\n      font-size: 12.5px;\n      font-weight: 600;\n      padding: 5px 10px;\n      transition: background 0.15s, border-color 0.15s;\n      flex-shrink: 0;\n    }\n    .ci-formula-toggle:hover { background: var(--green-xlight); border-color: var(--green-mid); }\n    .ci-formula-toggle svg { transition: transform 0.2s; }\n    .ci-formula-toggle--open svg { transform: rotate(180deg); }\n\n    \/* \u2500\u2500 Formula reference panel \u2500\u2500 *\/\n    .ci-formula-panel {\n      border: 1px solid var(--border);\n      border-radius: var(--radius-md);\n      overflow: hidden;\n    }\n    .ci-formula-panel-body { padding: 18px 20px; display: flex; flex-direction: column; gap: 10px; }\n    .ci-formula-note { font-size: 12.5px; color: var(--text-secondary); line-height: 1.6; }\n    .ci-tex-block { margin: 2px 0 6px; }\n\n    .hidden { display: none; }\n\n    @media (max-width: 900px) {\n      body { padding: 28px 16px 48px; }\n    }\n    @media (max-width: 540px) {\n      .ci-boxes { grid-template-columns: 1fr; }\n    }\n  <\/style>\n<\/head>\n<body>\n\n  <script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"WebApplication\",\n  \"@id\": \"#calc-torque\",\n  \"name\": \"Torque, power and rotation speed calculator\",\n  \"description\": \"Calculate the torque, power and rotation speed of a shaft from any two values, using the relation P = Mt \u00b7 \u03c9 with \u03c9 = 2\u03c0n\/60.\",\n  \"applicationCategory\": \"UtilitiesApplication\",\n  \"operatingSystem\": \"Web\",\n  \"browserRequirements\": \"Requires JavaScript\",\n  \"inLanguage\": \"en\",\n  \"isAccessibleForFree\": true,\n  \"offers\": {\n    \"@type\": \"Offer\",\n    \"price\": \"0\",\n    \"priceCurrency\": \"EUR\"\n  },\n  \"featureList\": [\n    \"Torque from power and rotation speed\",\n    \"Power from torque and rotation speed\",\n    \"Rotation speed from power and torque\",\n    \"Power unit conversion (kW \/ W)\"\n  ],\n  \"about\": [\n    { \"@type\": \"Thing\", \"name\": \"Torque\" },\n    { \"@type\": \"Thing\", \"name\": \"Power\" },\n    { \"@type\": \"Thing\", \"name\": \"Rotation speed\" }\n  ]\n}\n  <\/script>\n\n  <h1 class=\"article__title\">Torque, power and rotation speed calculator<\/h1>\n  <p class=\"article__subtitle\">\n    Calculate the torque, power and rotation speed of a shaft from any two values,\n    using the relation P = M<sub>t<\/sub> \u00b7 \u03c9 with \u03c9 = 2\u03c0n\/60.\n  <\/p>\n\n  <div class=\"ci-host\">\n\n    <!-- Infobox -->\n    <div class=\"infobox\">\n      <div class=\"infobox__title\">\n        <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"><\/line><line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"><\/line><\/svg>\n        Fundamental torque\u2013power relation\n      <\/div>\n      <p class=\"infobox__text\">\n        On a rotating shaft the mechanical power is the product of the torque and the angular velocity:\n        P = M<sub>t<\/sub> \u00b7 \u03c9, with \u03c9 = 2\u03c0n\/60. Given any two of these quantities, the third is\n        uniquely determined.\n      <\/p>\n    <\/div>\n\n    <!-- Calculator panel -->\n    <section class=\"ci-card ci-panel\">\n      <div class=\"ci-panel-head\">\n        <h2 class=\"ci-panel-title\">Enter the values<\/h2>\n        <button class=\"ci-reset-btn\" id=\"btn-reset\" type=\"button\">\n          <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <polyline points=\"1 4 1 10 7 10\"><\/polyline>\n            <path d=\"M3.51 15a9 9 0 1 0 .49-5.66\"><\/path>\n          <\/svg>\n          Reset\n        <\/button>\n      <\/div>\n\n      <div class=\"ci-boxes\" id=\"boxes\">\n        <!-- filled by JS -->\n      <\/div>\n\n      <p class=\"ci-hint-line\">\n        Enter any two values: the third is calculated automatically.\n        Changing the unit of measurement converts the values already entered.\n      <\/p>\n    <\/section>\n\n    <!-- Formula bar -->\n    <div class=\"ci-formula-bar\">\n      <span class=\"ci-formula-tag\">Formula<\/span>\n      <span id=\"formula-main\"><\/span>\n      <div class=\"ci-formula-spacer\"><\/div>\n      <button class=\"ci-formula-toggle\" id=\"btn-formulas\" type=\"button\">\n        <span id=\"formula-toggle-label\">All formulas<\/span>\n        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"6 9 12 15 18 9\"><\/polyline><\/svg>\n      <\/button>\n    <\/div>\n\n    <!-- Formula reference panel -->\n    <div class=\"ci-formula-panel hidden\" id=\"panel-formulas\">\n      <div class=\"ci-formula-panel-body\">\n        <p class=\"ci-formula-note\">\n          General formula in SI units (P in W, M<sub>t<\/sub> in N\u00b7m, \u03c9 in rad\/s):\n        <\/p>\n        <div class=\"ci-tex-block\" id=\"tex-general\"><\/div>\n        <p class=\"ci-formula-note\">Inverse derivations:<\/p>\n        <div class=\"ci-tex-block\" id=\"tex-inverse\"><\/div>\n      <\/div>\n    <\/div>\n\n  <\/div>\n\n  <script>\n    \/* \u2500\u2500 Fields & units \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n       Each unit stores `f` = base SI units per 1 display unit.\n       Base formula (all SI):  P[W] = Mt[N\u00b7m] \u00b7 \u03c9[rad\/s]          *\/\n    const FIELDS = [\n      {\n        id: 'P', label: 'Power', icon: 'zap',\n        units: [\n          { u: 'kW', f: 1000 },\n          { u: 'W',  f: 1 },\n        ],\n      },\n      {\n        id: 'Mt', label: 'Torque', icon: 'refresh',\n        units: [\n          { u: 'N\u00b7m', f: 1 },\n        ],\n      },\n      {\n        id: 'n', label: 'Rotation speed', icon: 'gauge',\n        units: [\n          { u: 'rpm', f: (2 * Math.PI) \/ 60 },\n        ],\n      },\n    ];\n\n    const ICONS = {\n      zap:     '<polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"><\/polygon>',\n      refresh: '<polyline points=\"23 4 23 10 17 10\"><\/polyline><polyline points=\"1 20 1 14 7 14\"><\/polyline><path d=\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\"><\/path>',\n      gauge:   '<path d=\"M12 21a9 9 0 1 0-9-9\"><\/path><path d=\"M3 12h4\"><\/path><path d=\"M12 12l4-3\"><\/path>',\n    };\n\n    const FIELD_BY_ID = Object.fromEntries(FIELDS.map(fld => [fld.id, fld]));\n\n    \/\/ factor (base per display unit) for a field given the selected unit string\n    function factor(id, unit) {\n      return FIELD_BY_ID[id].units.find(x => x.u === unit).f;\n    }\n\n    \/\/ Compute the target in BASE SI units from the two known base values\n    function computeBase(target, Pb, Mtb, wb) {\n      if (target === 'P')  return Mtb * wb;   \/\/ P = Mt \u00b7 \u03c9\n      if (target === 'Mt') return Pb \/ wb;    \/\/ Mt = P \/ \u03c9\n      if (target === 'n')  return Pb \/ Mtb;   \/\/ \u03c9 = P \/ Mt\n      return NaN;\n    }\n\n    function fmt(n) {\n      if (!Number.isFinite(n)) return '';\n      return parseFloat(n.toPrecision(6)).toString();\n    }\n\n    function tex(el, str, block) {\n      if (window.katex) katex.render(str, el, { displayMode: !!block, throwOnError: false });\n      else el.textContent = str;\n    }\n\n    const INITIAL_UNITS = { P: 'kW', Mt: 'N\u00b7m', n: 'rpm' };\n\n    \/\/ \u2500\u2500 State \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    let vals     = { P: '', Mt: '', n: '' };\n    let units    = { ...INITIAL_UNITS };\n    let order    = [];                 \/\/ fields currently holding a manual value, most-recent first\n    let computed = null;\n    let openMenu = null;               \/\/ id of field with open unit menu\n    let formulasOpen = false;\n\n    const base = (id) => {\n      const v = parseFloat(vals[id]);\n      return Number.isFinite(v) ? v * factor(id, units[id]) : NaN;\n    };\n\n    \/\/ Derive the remaining field from the two most-recently-filled ones.\n    \/\/ `order` only ever contains fields the user has manually filled, so an\n    \/\/ emptied field is no longer a candidate input.\n    function recompute() {\n      const ids = FIELDS.map(f => f.id);\n\n      if (order.length >= 2) {\n        \/\/ target = the one field that is not among the two most-recent inputs\n        const target = ids.find(id => id !== order[0] && id !== order[1]);\n        const s1 = base(order[0]);\n        const s2 = base(order[1]);\n\n        if (Number.isFinite(s1) && s1 !== 0 && Number.isFinite(s2) && s2 !== 0) {\n          const resBase = computeBase(target, base('P'), base('Mt'), base('n'));\n          vals[target] = fmt(resBase \/ factor(target, units[target]));\n          computed = target;\n          return;\n        }\n        vals[target] = '';\n        computed = null;\n        return;\n      }\n\n      \/\/ Fewer than two manual inputs: nothing to derive \u2014 clear whatever was computed\n      ids.forEach(id => { if (!order.includes(id)) vals[id] = ''; });\n      computed = null;\n    }\n\n    function handleChange(id, raw) {\n      vals[id] = raw;\n      const filled = Number.isFinite(parseFloat(raw));\n      order = order.filter(f => f !== id);\n      if (filled) order = [id, ...order];\n      recompute();\n      \/\/ Patch in place \u2014 rebuilding the DOM here would drop focus from the\n      \/\/ input being typed. The field just edited (id) is never the computed\n      \/\/ target, so its own value\/caret is left untouched.\n      patch(id);\n    }\n\n    \/\/ Update values, computed highlighting and formula without rebuilding DOM\n    function patch(focusedId) {\n      FIELDS.forEach(({ id }) => {\n        const box   = document.querySelector(`.ci-box[data-field=\"${id}\"]`);\n        const input = box.querySelector('.ci-box-input');\n        const badge = box.querySelector(`[data-badge=\"${id}\"]`);\n        const isComputed = computed === id;\n        box.classList.toggle('ci-box--computed', isComputed);\n        badge.classList.toggle('hidden', !isComputed);\n        if (id !== focusedId && input.value !== vals[id]) input.value = vals[id];\n      });\n      renderFormulas();\n    }\n\n    \/\/ Changing a unit converts the value already in that box (physical value unchanged)\n    function handleUnitChange(id, newUnit) {\n      const v = parseFloat(vals[id]);\n      if (Number.isFinite(v)) {\n        vals[id] = fmt((v * factor(id, units[id])) \/ factor(id, newUnit));\n      }\n      units[id] = newUnit;\n      openMenu = null;\n      recompute();\n      render();\n    }\n\n    function reset() {\n      vals     = { P: '', Mt: '', n: '' };\n      units    = { ...INITIAL_UNITS };\n      order    = [];\n      computed = null;\n      openMenu = null;\n      render();\n    }\n\n    \/\/ \u2500\u2500 Render \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    function svgIcon(name) {\n      return `<svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">${ICONS[name]}<\/svg>`;\n    }\n\n    function render() {\n      const boxes = document.getElementById('boxes');\n      boxes.innerHTML = FIELDS.map(({ id, label, icon, units: opts }) => {\n        const isComputed = computed === id;\n        const unitCtrl = opts.length > 1\n          ? `<div class=\"ci-unit\" data-unit-field=\"${id}\">\n               <button type=\"button\" class=\"ci-unit-btn\" data-unit-toggle=\"${id}\" aria-haspopup=\"listbox\" aria-expanded=\"${openMenu === id}\">\n                 ${units[id]}\n                 <svg class=\"ci-unit-caret${openMenu === id ? ' ci-unit-caret--open' : ''}\" width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"6 9 12 15 18 9\"><\/polyline><\/svg>\n               <\/button>\n               ${openMenu === id ? `<ul class=\"ci-unit-menu\" role=\"listbox\">\n                 ${opts.map(o => `<li role=\"option\" aria-selected=\"${o.u === units[id]}\">\n                   <button type=\"button\" class=\"ci-unit-opt${o.u === units[id] ? ' ci-unit-opt--active' : ''}\" data-unit-pick=\"${id}\" data-unit-value=\"${o.u}\">\n                     ${o.u}${o.u === units[id] ? '<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"><\/polyline><\/svg>' : ''}\n                   <\/button>\n                 <\/li>`).join('')}\n               <\/ul>` : ''}\n             <\/div>`\n          : `<span class=\"ci-box-unit-static\">${units[id]}<\/span>`;\n\n        return `\n          <div class=\"ci-box${isComputed ? ' ci-box--computed' : ''}\" data-field=\"${id}\">\n            <div class=\"ci-box-head\">\n              <span class=\"ci-box-label\">${svgIcon(icon)} ${label}<\/span>\n              <span class=\"ci-box-badge${isComputed ? '' : ' hidden'}\" data-badge=\"${id}\">computed<\/span>\n            <\/div>\n            <div class=\"ci-box-input-wrap\">\n              <input type=\"number\" class=\"ci-box-input\" data-input=\"${id}\" value=\"${vals[id]}\" \/>\n              ${unitCtrl}\n            <\/div>\n          <\/div>`;\n      }).join('');\n\n      renderFormulas();\n    }\n\n    function renderFormulas() {\n      \/\/ Formula bar (main = formula for the currently computed field, default P)\n      const MAIN = {\n        P:  'P = M_t \\\\cdot \\\\omega',\n        Mt: 'M_t = \\\\dfrac{P}{\\\\omega} = \\\\dfrac{60\\\\,P}{2\\\\pi\\\\, n}',\n        n:  'n = \\\\dfrac{60\\\\,P}{2\\\\pi\\\\, M_t}',\n      };\n      tex(document.getElementById('formula-main'), MAIN[computed] || MAIN.P, false);\n\n      \/\/ Formula reference panel\n      tex(document.getElementById('tex-general'),\n        'P = M_t \\\\cdot \\\\omega \\\\qquad \\\\omega = \\\\dfrac{2\\\\pi\\\\, n}{60}', true);\n      tex(document.getElementById('tex-inverse'),\n        'M_t = \\\\dfrac{P}{\\\\omega} = \\\\dfrac{60\\\\,P}{2\\\\pi\\\\, n} \\\\qquad n = \\\\dfrac{60\\\\,P}{2\\\\pi\\\\, M_t}', true);\n    }\n\n    \/\/ \u2500\u2500 Event delegation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    document.getElementById('boxes').addEventListener('input', (e) => {\n      const id = e.target.getAttribute('data-input');\n      if (id) handleChange(id, e.target.value);\n    });\n\n    document.getElementById('boxes').addEventListener('click', (e) => {\n      const toggle = e.target.closest('[data-unit-toggle]');\n      if (toggle) {\n        const id = toggle.getAttribute('data-unit-toggle');\n        openMenu = openMenu === id ? null : id;\n        render();\n        return;\n      }\n      const pick = e.target.closest('[data-unit-pick]');\n      if (pick) {\n        handleUnitChange(pick.getAttribute('data-unit-pick'), pick.getAttribute('data-unit-value'));\n      }\n    });\n\n    \/\/ Close unit menu on outside click \/ Escape\n    document.addEventListener('mousedown', (e) => {\n      if (openMenu && !e.target.closest('.ci-unit')) { openMenu = null; render(); }\n    });\n    document.addEventListener('keydown', (e) => {\n      if (e.key === 'Escape' && openMenu) { openMenu = null; render(); }\n    });\n\n    document.getElementById('btn-reset').addEventListener('click', reset);\n\n    document.getElementById('btn-formulas').addEventListener('click', () => {\n      formulasOpen = !formulasOpen;\n      document.getElementById('panel-formulas').classList.toggle('hidden', !formulasOpen);\n      document.getElementById('btn-formulas').classList.toggle('ci-formula-toggle--open', formulasOpen);\n      document.getElementById('formula-toggle-label').textContent =\n        formulasOpen ? 'Hide' : 'All formulas';\n    });\n\n    \/\/ \u2500\u2500 Boot \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    render();\n    window.addEventListener('load', render);   \/\/ re-render once KaTeX (deferred) is ready\n  <\/script>\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>Calculate the torque, power and rotation speed of a shaft from any two values.<\/p>\n","protected":false},"parent":0,"template":"","meta":{"_acf_changed":false},"campo-applicazione":[5452],"categoria-ct":[5444],"class_list":["post-25669","centro-tecnico","type-centro-tecnico","status-publish","hentry","campo-applicazione-calcolo","categoria-ct-cylindrical-technopolymer-gears"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Torque, Power and Speed Calculator | Stagnoli Gears Shop<\/title>\n<meta name=\"description\" content=\"Calculate torque, power and rotational speed of a shaft from two values. Use the online tool by Stagnoli Gears Shop.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/torque-power-and-rotation-speed-calculator\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Torque, Power and Speed Calculator | Stagnoli Gears Shop\" \/>\n<meta property=\"og:description\" content=\"Calculate torque, power and rotational speed of a shaft from two values. Use the online tool by Stagnoli Gears Shop.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/torque-power-and-rotation-speed-calculator\/\" \/>\n<meta property=\"og:site_name\" content=\"Stagnoli Gears Shop\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/StagnoliGears\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-10T11:44:25+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/technical-hub\\\/torque-power-and-rotation-speed-calculator\\\/\",\"url\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/technical-hub\\\/torque-power-and-rotation-speed-calculator\\\/\",\"name\":\"Torque, Power and Speed Calculator | Stagnoli Gears Shop\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/#website\"},\"datePublished\":\"2026-07-03T12:13:25+00:00\",\"dateModified\":\"2026-07-10T11:44:25+00:00\",\"description\":\"Calculate torque, power and rotational speed of a shaft from two values. Use the online tool by Stagnoli Gears Shop.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/technical-hub\\\/torque-power-and-rotation-speed-calculator\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/technical-hub\\\/torque-power-and-rotation-speed-calculator\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/technical-hub\\\/torque-power-and-rotation-speed-calculator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Torque, power and rotation speed calculator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/\",\"name\":\"Stagnoli\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/#organization\",\"name\":\"Stagnoli Gears\",\"url\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/shop.stagnoligears.com\\\/wp-content\\\/uploads\\\/logo-stagnoli-shop.svg\",\"contentUrl\":\"https:\\\/\\\/shop.stagnoligears.com\\\/wp-content\\\/uploads\\\/logo-stagnoli-shop.svg\",\"width\":1,\"height\":1,\"caption\":\"Stagnoli Gears\"},\"image\":{\"@id\":\"https:\\\/\\\/shop.stagnoligears.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/StagnoliGears\",\"https:\\\/\\\/www.youtube.com\\\/@stagnoli_gears\",\"https:\\\/\\\/www.linkedin.com\\\/showcase\\\/stagnoli-gears\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Torque, Power and Speed Calculator | Stagnoli Gears Shop","description":"Calculate torque, power and rotational speed of a shaft from two values. Use the online tool by Stagnoli Gears Shop.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/torque-power-and-rotation-speed-calculator\/","og_locale":"en_US","og_type":"article","og_title":"Torque, Power and Speed Calculator | Stagnoli Gears Shop","og_description":"Calculate torque, power and rotational speed of a shaft from two values. Use the online tool by Stagnoli Gears Shop.","og_url":"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/torque-power-and-rotation-speed-calculator\/","og_site_name":"Stagnoli Gears Shop","article_publisher":"https:\/\/www.facebook.com\/StagnoliGears","article_modified_time":"2026-07-10T11:44:25+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/torque-power-and-rotation-speed-calculator\/","url":"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/torque-power-and-rotation-speed-calculator\/","name":"Torque, Power and Speed Calculator | Stagnoli Gears Shop","isPartOf":{"@id":"https:\/\/shop.stagnoligears.com\/en\/#website"},"datePublished":"2026-07-03T12:13:25+00:00","dateModified":"2026-07-10T11:44:25+00:00","description":"Calculate torque, power and rotational speed of a shaft from two values. Use the online tool by Stagnoli Gears Shop.","breadcrumb":{"@id":"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/torque-power-and-rotation-speed-calculator\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/shop.stagnoligears.com\/en\/technical-hub\/torque-power-and-rotation-speed-calculator\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/shop.stagnoligears.com\/en\/technical-hub\/torque-power-and-rotation-speed-calculator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/shop.stagnoligears.com\/en\/"},{"@type":"ListItem","position":2,"name":"Torque, power and rotation speed calculator"}]},{"@type":"WebSite","@id":"https:\/\/shop.stagnoligears.com\/en\/#website","url":"https:\/\/shop.stagnoligears.com\/en\/","name":"Stagnoli","description":"","publisher":{"@id":"https:\/\/shop.stagnoligears.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/shop.stagnoligears.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/shop.stagnoligears.com\/en\/#organization","name":"Stagnoli Gears","url":"https:\/\/shop.stagnoligears.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/shop.stagnoligears.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/shop.stagnoligears.com\/wp-content\/uploads\/logo-stagnoli-shop.svg","contentUrl":"https:\/\/shop.stagnoligears.com\/wp-content\/uploads\/logo-stagnoli-shop.svg","width":1,"height":1,"caption":"Stagnoli Gears"},"image":{"@id":"https:\/\/shop.stagnoligears.com\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/StagnoliGears","https:\/\/www.youtube.com\/@stagnoli_gears","https:\/\/www.linkedin.com\/showcase\/stagnoli-gears\/"]}]}},"_links":{"self":[{"href":"https:\/\/shop.stagnoligears.com\/en\/wp-json\/wp\/v2\/centro-tecnico\/25669","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shop.stagnoligears.com\/en\/wp-json\/wp\/v2\/centro-tecnico"}],"about":[{"href":"https:\/\/shop.stagnoligears.com\/en\/wp-json\/wp\/v2\/types\/centro-tecnico"}],"wp:attachment":[{"href":"https:\/\/shop.stagnoligears.com\/en\/wp-json\/wp\/v2\/media?parent=25669"}],"wp:term":[{"taxonomy":"campo-applicazione","embeddable":true,"href":"https:\/\/shop.stagnoligears.com\/en\/wp-json\/wp\/v2\/campo-applicazione?post=25669"},{"taxonomy":"categoria-ct","embeddable":true,"href":"https:\/\/shop.stagnoligears.com\/en\/wp-json\/wp\/v2\/categoria-ct?post=25669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}