{"id":20916,"date":"2025-12-20T23:28:00","date_gmt":"2025-12-20T23:28:00","guid":{"rendered":"https:\/\/vibromera.eu\/?p=20916"},"modified":"2025-12-21T17:45:09","modified_gmt":"2025-12-21T17:45:09","slug":"online-vector-calculator-for-rotor-balancing","status":"publish","type":"post","link":"https:\/\/vibromera.eu\/lt\/uncategorized\/online-vector-calculator-for-rotor-balancing\/","title":{"rendered":"Internetin\u0117 vektoriaus skai\u010diuokl\u0117 rotoriaus balansavimui"},"content":{"rendered":"<div id=\"pl-20916\"  class=\"panel-layout\" ><div id=\"pg-20916-0\"  class=\"panel-grid panel-no-style\" ><div id=\"pgc-20916-0-0\"  class=\"panel-grid-cell\" ><div id=\"panel-20916-0-0-0\" class=\"widget_text so-panel widget widget_custom_html panel-first-child panel-last-child\" data-index=\"0\" ><h3 class=\"widget-title\">Vektori\u0173 skai\u010diuokl\u0117<\/h3><div class=\"textwidget custom-html-widget\"><!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\n  <style>\n    .vc-container {\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n      max-width: 1400px;\n      margin: 0 auto;\n      padding: 16px;\n      background: #f8fafc;\n      box-sizing: border-box;\n    }\n    .vc-container * {\n      box-sizing: border-box;\n    }\n    .vc-title {\n      text-align: center;\n      font-size: 24px;\n      font-weight: 700;\n      color: #1e3a8a;\n      margin: 0 0 24px 0;\n    }\n    .vc-inputs {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 16px;\n      margin-bottom: 20px;\n    }\n    @media (max-width: 500px) {\n      .vc-inputs { grid-template-columns: 1fr; }\n    }\n    .vc-vector-box {\n      padding: 16px;\n      border-radius: 8px;\n      border: 1px solid #bfdbfe;\n      background: #fff;\n    }\n    .vc-vector-label {\n      font-weight: 500;\n      color: #1e3a8a;\n      margin-bottom: 12px;\n    }\n    .vc-fields {\n      display: flex;\n      gap: 16px;\n    }\n    .vc-field {\n      flex: 1;\n    }\n    .vc-field-label {\n      font-size: 12px;\n      color: #2563eb;\n      font-weight: 500;\n      display: block;\n      margin-bottom: 4px;\n    }\n    .vc-field input {\n      width: 100%;\n      padding: 12px;\n      border: 1px solid #bfdbfe;\n      border-radius: 4px;\n      text-align: center;\n      font-family: monospace;\n      font-size: 18px;\n    }\n    .vc-field input:focus {\n      outline: none;\n      border-color: #3b82f6;\n      box-shadow: 0 0 0 2px rgba(59,130,246,0.3);\n    }\n    .vc-diagram {\n      display: flex;\n      justify-content: center;\n      margin-top: 12px;\n    }\n    .vc-diagram svg {\n      background: #eff6ff;\n      border-radius: 4px;\n    }\n    .vc-operations {\n      background: #fff;\n      border-radius: 8px;\n      border: 1px solid #bfdbfe;\n      padding: 16px;\n      margin-bottom: 20px;\n    }\n    .vc-operations-label {\n      font-size: 14px;\n      font-weight: 500;\n      color: #1e3a8a;\n      margin-bottom: 12px;\n    }\n    .vc-ops-grid {\n      display: grid;\n      grid-template-columns: repeat(5, 1fr);\n      gap: 8px;\n    }\n    @media (max-width: 500px) {\n      .vc-ops-grid { grid-template-columns: repeat(3, 1fr); }\n    }\n    .vc-op-btn {\n      padding: 12px 8px;\n      border-radius: 4px;\n      border: 1px solid #bfdbfe;\n      background: #eff6ff;\n      color: #1d4ed8;\n      cursor: pointer;\n      text-align: center;\n      transition: all 0.2s;\n    }\n    .vc-op-btn:hover {\n      background: #dbeafe;\n    }\n    .vc-op-btn.active {\n      background: #2563eb;\n      color: #fff;\n      border-color: #2563eb;\n    }\n    .vc-op-icon {\n      font-size: 16px;\n      font-weight: 700;\n    }\n    .vc-op-name {\n      font-size: 11px;\n      margin-top: 4px;\n    }\n    .vc-scalar-row {\n      display: none;\n      margin-top: 16px;\n      justify-content: center;\n      align-items: center;\n      gap: 12px;\n    }\n    .vc-scalar-row.visible {\n      display: flex;\n    }\n    .vc-scalar-row label {\n      font-size: 14px;\n      color: #1d4ed8;\n    }\n    .vc-scalar-row input {\n      width: 80px;\n      padding: 8px;\n      border: 1px solid #bfdbfe;\n      border-radius: 4px;\n      text-align: center;\n      font-family: monospace;\n    }\n    .vc-calc-btn {\n      width: 100%;\n      padding: 14px;\n      background: #2563eb;\n      color: #fff;\n      font-size: 16px;\n      font-weight: 600;\n      border: none;\n      border-radius: 8px;\n      cursor: pointer;\n      transition: background 0.2s;\n    }\n    .vc-calc-btn:hover {\n      background: #1d4ed8;\n    }\n    .vc-result {\n      display: none;\n      margin-top: 20px;\n      padding: 20px;\n      background: #fff;\n      border-radius: 8px;\n      border: 2px solid #93c5fd;\n    }\n    .vc-result.visible {\n      display: block;\n    }\n    .vc-result-label {\n      font-size: 14px;\n      color: #2563eb;\n      font-weight: 500;\n      margin-bottom: 8px;\n    }\n    .vc-result-values {\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      gap: 32px;\n    }\n    .vc-result-item {\n      text-align: center;\n    }\n    .vc-result-num {\n      font-size: 28px;\n      font-family: monospace;\n      font-weight: 700;\n      color: #1e3a8a;\n    }\n    .vc-result-unit {\n      font-size: 12px;\n      color: #3b82f6;\n      margin-top: 4px;\n    }\n    .vc-result-sep {\n      font-size: 24px;\n      color: #93c5fd;\n    }\n    .vc-result-cartesian {\n      text-align: center;\n      font-size: 14px;\n      color: #3b82f6;\n      margin-top: 12px;\n      padding-top: 12px;\n      border-top: 1px solid #eff6ff;\n    }\n    .vc-result-note {\n      text-align: center;\n      font-size: 14px;\n      color: #1d4ed8;\n      background: #eff6ff;\n      padding: 8px;\n      border-radius: 4px;\n      border: 1px solid #bfdbfe;\n      margin-top: 12px;\n    }\n    .vc-result-diagram {\n      display: flex;\n      justify-content: center;\n      margin-top: 12px;\n    }\n    .vc-help-toggle {\n      width: 100%;\n      margin-top: 24px;\n      padding: 12px;\n      background: #fff;\n      border: 1px solid #bfdbfe;\n      border-radius: 8px;\n      color: #1d4ed8;\n      font-size: 14px;\n      font-weight: 500;\n      cursor: pointer;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      transition: background 0.2s;\n    }\n    .vc-help-toggle:hover {\n      background: #eff6ff;\n    }\n    .vc-help-icon {\n      color: #93c5fd;\n    }\n    .vc-help-content {\n      display: none;\n      margin-top: 8px;\n      padding: 16px;\n      background: #fff;\n      border: 1px solid #bfdbfe;\n      border-radius: 8px;\n      font-size: 14px;\n      color: #1e3a8a;\n    }\n    .vc-help-content.visible {\n      display: block;\n    }\n    .vc-help-section {\n      margin-bottom: 20px;\n    }\n    .vc-help-section:last-child {\n      margin-bottom: 0;\n    }\n    .vc-help-heading {\n      font-weight: 600;\n      margin-bottom: 8px;\n    }\n    .vc-help-text {\n      color: #1d4ed8;\n      line-height: 1.5;\n    }\n    .vc-help-list {\n      color: #1d4ed8;\n      line-height: 1.6;\n      padding-left: 0;\n      list-style: none;\n    }\n    .vc-help-list li {\n      margin-bottom: 8px;\n    }\n    .vc-help-example {\n      background: #eff6ff;\n      padding: 12px;\n      border-radius: 4px;\n      border: 1px solid #bfdbfe;\n      color: #1e40af;\n      line-height: 1.6;\n    }\n    .vc-help-formulas {\n      font-family: monospace;\n      font-size: 12px;\n      color: #1d4ed8;\n      padding-top: 12px;\n      border-top: 1px solid #eff6ff;\n    }\n  <\/style>\n<\/head>\n<body>\n\n<div class=\"vc-container\">\n  <h1 class=\"vc-title\">Vektori\u0173 skai\u010diuokl\u0117<\/h1>\n\n  <div class=\"vc-inputs\">\n    <div class=\"vc-vector-box\">\n      <div class=\"vc-vector-label\">Vektorius A<\/div>\n      <div class=\"vc-fields\">\n        <div class=\"vc-field\">\n          <label class=\"vc-field-label\">Mas\u0117, g<\/label>\n          <input type=\"number\" id=\"vc-mass1\" value=\"10\" step=\"0.1\" min=\"0\">\n        <\/div>\n        <div class=\"vc-field\">\n          <label class=\"vc-field-label\">Kampas, laipsniai<\/label>\n          <input type=\"number\" id=\"vc-angle1\" value=\"45\" step=\"1\">\n        <\/div>\n      <\/div>\n      <div class=\"vc-diagram\">\n        <svg id=\"vc-svg1\" width=\"80\" height=\"80\"><\/svg>\n      <\/div>\n    <\/div>\n\n    <div class=\"vc-vector-box\">\n      <div class=\"vc-vector-label\">Vektorius B<\/div>\n      <div class=\"vc-fields\">\n        <div class=\"vc-field\">\n          <label class=\"vc-field-label\">Mas\u0117, g<\/label>\n          <input type=\"number\" id=\"vc-mass2\" value=\"8\" step=\"0.1\" min=\"0\">\n        <\/div>\n        <div class=\"vc-field\">\n          <label class=\"vc-field-label\">Kampas, laipsniai<\/label>\n          <input type=\"number\" id=\"vc-angle2\" value=\"180\" step=\"1\">\n        <\/div>\n      <\/div>\n      <div class=\"vc-diagram\">\n        <svg id=\"vc-svg2\" width=\"80\" height=\"80\"><\/svg>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"vc-operations\">\n    <div class=\"vc-operations-label\">Operacija<\/div>\n    <div class=\"vc-ops-grid\">\n      <button class=\"vc-op-btn active\" data-op=\"add\">\n        <div class=\"vc-op-icon\">+<\/div>\n        <div class=\"vc-op-name\">Prid\u0117ti<\/div>\n      <\/button>\n      <button class=\"vc-op-btn\" data-op=\"subtract\">\n        <div class=\"vc-op-icon\">\u2212<\/div>\n        <div class=\"vc-op-name\">Atimti<\/div>\n      <\/button>\n      <button class=\"vc-op-btn\" data-op=\"opposite\">\n        <div class=\"vc-op-icon\">\u00b1180\u00b0<\/div>\n        <div class=\"vc-op-name\">Prie\u0161ingoje pus\u0117je<\/div>\n      <\/button>\n      <button class=\"vc-op-btn\" data-op=\"scale\">\n        <div class=\"vc-op-icon\">k\u00d7<\/div>\n        <div class=\"vc-op-name\">Skal\u0117<\/div>\n      <\/button>\n      <button class=\"vc-op-btn\" data-op=\"cartesian\">\n        <div class=\"vc-op-icon\">\u2192<\/div>\n        <div class=\"vc-op-name\">X, Y<\/div>\n      <\/button>\n    <\/div>\n    <div class=\"vc-scalar-row\" id=\"vc-scalar-row\">\n      <label>Daugiklis k:<\/label>\n      <input type=\"number\" id=\"vc-scalar\" value=\"2\" step=\"0.1\">\n    <\/div>\n  <\/div>\n\n  <button class=\"vc-calc-btn\" id=\"vc-calc-btn\">Apskai\u010diuokite<\/button>\n\n  <div class=\"vc-result\" id=\"vc-result\">\n    <div class=\"vc-result-label\" id=\"vc-result-label\"><\/div>\n    <div class=\"vc-result-values\" id=\"vc-result-values\"><\/div>\n    <div class=\"vc-result-cartesian\" id=\"vc-result-cartesian\"><\/div>\n    <div class=\"vc-result-note\" id=\"vc-result-note\"><\/div>\n    <div class=\"vc-result-diagram\" id=\"vc-result-diagram\"><\/div>\n  <\/div>\n\n  <button class=\"vc-help-toggle\" id=\"vc-help-toggle\">\n    <span>Kaip veikia \u0161i skai\u010diuokl\u0117<\/span>\n    <span class=\"vc-help-icon\" id=\"vc-help-icon\">+<\/span>\n  <\/button>\n\n  <div class=\"vc-help-content\" id=\"vc-help-content\">\n    <div class=\"vc-help-section\">\n      <div class=\"vc-help-heading\">Kam skirta \u0161i skai\u010diuokl\u0117?<\/div>\n      <p class=\"vc-help-text\">\n        \u0160i skai\u010diuokl\u0117 atlieka vektorinius veiksmus naudodama poliarines koordinates (dyd\u012f ir kamp\u0105). Ji skirta rotori\u0173 balansavimo taikymams, kai disbalansas matuojamas kaip mas\u0117 tam tikroje kampin\u0117je pad\u0117tyje. Skai\u010diuokl\u0117 padeda sujungti kelis disbalanso rodmenis, nustatyti korekcinio svorio i\u0161d\u0117stym\u0105 ir konvertuoti tarp koordina\u010di\u0173 sistem\u0173.\n      <\/p>\n    <\/div>\n\n    <div class=\"vc-help-section\">\n      <div class=\"vc-help-heading\">\u012evesties formatas<\/div>\n      <p class=\"vc-help-text\">\n        Kiekvienas vektorius apibr\u0117\u017eiamas dviem reik\u0161m\u0117mis: mase (gramais arba kitais savavali\u0161kais vienetais) ir kampu (laipsniais nuo 0 iki 360). Atskaitos kampas 0\u00b0 rodo \u012f vir\u0161\u0173 (12 valandos pad\u0117tis), o kampai did\u0117ja pagal laikrod\u017eio rodykl\u0119. Tai atitinka daugumos balansavimo prietais\u0173 naudojam\u0105 konvencij\u0105, kai faz\u0117s atskaitos ta\u0161kas paprastai pa\u017eym\u0117tas rotoriaus vir\u0161uje.\n      <\/p>\n    <\/div>\n\n    <div class=\"vc-help-section\">\n      <div class=\"vc-help-heading\">Operacijos<\/div>\n      <ul class=\"vc-help-list\">\n        <li><strong>Papildymas (+)<\/strong> \u2014 Sujungia du vektorius \u012f vien\u0105 rezultatin\u012f vektori\u0173. Naudokite tai, kai reikia rasti bendr\u0105 disbalans\u0105 i\u0161 keli\u0173 \u0161altini\u0173 arba sujungti du korekcijos svorius \u012f vien\u0105.<\/li>\n        <li><strong>Atimtis (\u2212)<\/strong> \u2014 Apskai\u010diuoja skirtum\u0105 tarp dviej\u0173 vektori\u0173 (A minus B). Naudinga nustatant likus\u012f disbalans\u0105 po korekcijos.<\/li>\n        <li><strong>Prie\u0161inga (\u00b1180\u00b0)<\/strong> \u2014 Prie vektoriaus A kampo pridedama 180\u00b0. Taip nurodoma pad\u0117tis, kurioje tur\u0117t\u0173 b\u016bti dedamas korekcinis svoris.<\/li>\n        <li><strong>Mastelis (k\u00d7)<\/strong> \u2014 Mas\u0119 daugina i\u0161 koeficiento k. Svarbu perskai\u010diuojant korekcin\u0119 mas\u0119 skirtingam montavimo spinduliui: m2 = m1 \u00d7 (r1 \/ r2).<\/li>\n        <li><strong>Dekartin\u0117 (X, Y)<\/strong> \u2014 Konvertuoja poliarines koordinates \u012f Dekarto koordinates: X = m \u00d7 cos(kampas), Y = m \u00d7 sin(kampas).<\/li>\n      <\/ul>\n    <\/div>\n\n    <div class=\"vc-help-section\">\n      <div class=\"vc-help-heading\">Tipin\u0117s taikymo sritys<\/div>\n      <ul class=\"vc-help-list\">\n        <li><strong>Vienos plok\u0161tumos balansavimas:<\/strong> I\u0161matuokite disbalans\u0105, naudokite prie\u0161ingos krypties funkcij\u0105 korekcijos kampui rasti, pritvirtinkite svor\u012f ir patikrinkite.<\/li>\n        <li><strong>Svori\u0173 derinimas:<\/strong> Pakeiskite du sumontuotus korekcinius svarelius vienu lygiaver\u010diu svareliu, naudodami sud\u0117ties funkcij\u0105.<\/li>\n        <li><strong>Spindulio konvertavimas:<\/strong> Nor\u0117dami perskai\u010diuoti mas\u0119, kai korekcin\u012f svor\u012f perkeliate kitu spinduliu, naudokite skal\u0119.<\/li>\n        <li><strong>Padalinti svoriai:<\/strong> Kai tikslaus kampo nustatyti ne\u012fmanoma, korekcin\u0119 mas\u0119 paskirstykite dviem gretimiems peiliukams.<\/li>\n      <\/ul>\n    <\/div>\n\n    <div class=\"vc-help-section\">\n      <div class=\"vc-help-heading\">1 pavyzdys: Korekcinio svorio pad\u0117ties nustatymas<\/div>\n      <div class=\"vc-help-example\">\n        Balansavimo priemon\u0117 rodo disbalans\u0105 <strong>15 gram\u0173 esant 72\u00b0 temperat\u016brai<\/strong>.<br><br>\n        \u012eveskite vektori\u0173 A: mas\u0117 = 15, kampas = 72<br>\n        Pasirinkite <strong>Prie\u0161inga (\u00b1180\u00b0)<\/strong> ir spustel\u0117kite \u201eSkai\u010diuoti\u201c.<br><br>\n        Rezultatas: <strong>15 gram\u0173 esant 252\u00b0 temperat\u016brai<\/strong><br><br>\n        252\u00b0 pad\u0117tyje pritvirtinkite 15 gram\u0173 korekcin\u012f svor\u012f, kad kompensuotum\u0117te disbalans\u0105.\n      <\/div>\n    <\/div>\n\n    <div class=\"vc-help-section\">\n      <div class=\"vc-help-heading\">2 pavyzdys: dviej\u0173 svori\u0173 sujungimas \u012f vien\u0105<\/div>\n      <div class=\"vc-help-example\">\n        Po keli\u0173 balansavimo iteracij\u0173 ant rotoriaus sumontuoti du korekciniai svareliai: \n        <strong>5 gramai esant 30\u00b0 temperat\u016brai<\/strong> ir <strong>8 gramai esant 75\u00b0 temperat\u016brai<\/strong>. Norite juos pakeisti vienu svoriu.<br><br>\n        \u012eveskite vektori\u0173 A: mas\u0117 = 5, kampas = 30<br>\n        \u012eveskite vektori\u0173 B: mas\u0117 = 8, kampas = 75<br>\n        Pasirinkite <strong>Papildymas (+)<\/strong> ir spustel\u0117kite \u201eSkai\u010diuoti\u201c.<br><br>\n        Rezultatas: <strong>12,05 gramo ties 57,9\u00b0<\/strong><br><br>\n        Nuimkite abu svarmenis ir ma\u017edaug 58\u00b0 kampu u\u017ed\u0117kite vien\u0105 12 gram\u0173 svarel\u012f. \u0160is vienas svarelis sukuria tok\u012f pat\u012f balansavimo efekt\u0105, kaip ir du pradiniai svareliai kartu.\n      <\/div>\n    <\/div>\n\n    <div class=\"vc-help-section\">\n      <div class=\"vc-help-heading\">3 pavyzdys: Korekcijos spindulio keitimas<\/div>\n      <div class=\"vc-help-example\">\n        Balansavimo sistema apskai\u010diavo korekcij\u0105 <strong>20 gram\u0173<\/strong> spinduliu <strong>100 mm<\/strong>. Ta\u010diau svor\u012f reikia sumontuoti spinduliu <strong>80 mm<\/strong> d\u0117l erdv\u0117s apribojim\u0173.<br><br>\n        Kadangi balansavimo efektas priklauso nuo mas\u0117s ir spindulio sandaugos (m \u00d7 r = const), reikia perskai\u010diuoti: k = 100 \/ 80 = 1,25<br><br>\n        \u012eveskite vektori\u0173 A: mas\u0117 = 20, kampas = (j\u016bs\u0173 korekcijos kampas)<br>\n        Nustatykite daugikl\u012f k = 1,25<br>\n        Pasirinkite <strong>Mastelis (k\u00d7)<\/strong> ir spustel\u0117kite \u201eSkai\u010diuoti\u201c.<br><br>\n        Rezultatas: <strong>25 gramai<\/strong> tuo pa\u010diu kampu<br><br>\n        Esant ma\u017eesniam 80 mm spinduliui, norint pasiekti t\u0105 pa\u010di\u0105 korekcij\u0105, reikia 25 gram\u0173, o ne 20 gram\u0173.\n      <\/div>\n    <\/div>\n\n    <div class=\"vc-help-section\">\n      <div class=\"vc-help-heading\">4 pavyzdys: Svorio paskirstymas tarp dviej\u0173 a\u0161men\u0173<\/div>\n      <div class=\"vc-help-example\">\n        Reikalingas pataisymas yra <strong>10 gram\u0173 esant 110\u00b0 temperat\u016brai<\/strong>, bet svarmenis galite pritvirtinti tik prie ventiliatoriaus men\u010di\u0173, esan\u010di\u0173 <strong>90\u00b0<\/strong> ir <strong>126\u00b0<\/strong> (5 a\u0161menys, 36\u00b0 kampu vienas nuo kito).<br><br>\n        Koregavimo kampas 110\u00b0 yra tarp \u0161i\u0173 dviej\u0173 a\u0161men\u0173. Nor\u0117dami su\u017einoti, kiek svorio tenka kiekvienam peiliui, \n        naudokite tiksl\u0173 trigonometrin\u012f padalijim\u0105 (paprastas proporcingas mas\u0117s padalijimas pagal kamp\u0105 yra tik apytikslis ir keliais procentais nepataiso balanso mas\u0117s):<br><br>\n        Kampinis atstumas iki ment\u0117s ties 90\u00b0: \u03b1 = 110\u00b0 \u2212 90\u00b0 = 20\u00b0<br>\n        Kampinis atstumas iki ment\u0117s ties 126\u00b0: \u03b2 = 126\u00b0 \u2212 110\u00b0 = 16\u00b0<br>\n        Kampas tarp men\u010di\u0173: \u03b1 + \u03b2 = 36\u00b0<br><br>\n        Svoris ant 90\u00b0 ment\u0117s: 10 \u00d7 sin(16\u00b0) \/ sin(36\u00b0) = <strong>4.69 g<\/strong><br>\n        Svoris ant 126\u00b0 ment\u0117s: 10 \u00d7 sin(20\u00b0) \/ sin(36\u00b0) = <strong>5.82 g<\/strong><br><br>\n        Nor\u0117dami patikrinti, naudokite papildym\u0105:<br>\n        Vektorius A: mas\u0117 = 4.69, kampas = 90<br>\n        Vektorius B: mas\u0117 = 5.82, kampas = 126<br>\n        Rezultatas: <strong>10 gram\u0173 esant 110\u00b0 temperat\u016brai<\/strong> \u2013 atitinka pradin\u012f reikalavim\u0105.\n      <\/div>\n    <\/div>\n\n    <div class=\"vc-help-section\">\n      <div class=\"vc-help-formulas\">\n        <div class=\"vc-help-heading\">Formul\u0117s<\/div>\n        I\u0161 poliarin\u0117s \u012f Dekarto sistem\u0105: X = m \u00d7 cos(a), Y = m \u00d7 sin(a)<br>\n        Dekartinis \u012f poliarin\u012f: m = sqrt(X\u00b2 + Y\u00b2), a = atan2(Y, X)<br>\n        Spindulio korekcija: m2 = m1 \u00d7 (r1 \/ r2)<br>\n        Svorio padalijimas (tiksliai): m1 = M \u00d7 sin(\u03b2) \/ sin(\u03b1 + \u03b2), m2 = M \u00d7 sin(\u03b1) \/ sin(\u03b1 + \u03b2), kur \u03b1 yra kampinis atstumas nuo korekcijos kampo iki 1-osios ment\u0117s, o \u03b2 yra kampinis atstumas iki 2-osios ment\u0117s\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n(function() {\n  let operation = 'add';\n\n  const mass1 = document.getElementById('vc-mass1');\n  const angle1 = document.getElementById('vc-angle1');\n  const mass2 = document.getElementById('vc-mass2');\n  const angle2 = document.getElementById('vc-angle2');\n  const scalarInput = document.getElementById('vc-scalar');\n  const scalarRow = document.getElementById('vc-scalar-row');\n  const calcBtn = document.getElementById('vc-calc-btn');\n  const resultDiv = document.getElementById('vc-result');\n  const resultLabel = document.getElementById('vc-result-label');\n  const resultValues = document.getElementById('vc-result-values');\n  const resultCartesian = document.getElementById('vc-result-cartesian');\n  const resultNote = document.getElementById('vc-result-note');\n  const resultDiagram = document.getElementById('vc-result-diagram');\n  const helpToggle = document.getElementById('vc-help-toggle');\n  const helpContent = document.getElementById('vc-help-content');\n  const helpIcon = document.getElementById('vc-help-icon');\n  const opBtns = document.querySelectorAll('.vc-op-btn');\n\n  function toCartesian(m, angleDeg) {\n    const rad = angleDeg * Math.PI \/ 180;\n    return { x: m * Math.cos(rad), y: m * Math.sin(rad) };\n  }\n\n  function toPolar(x, y) {\n    const m = Math.sqrt(x * x + y * y);\n    let a = Math.atan2(y, x) * 180 \/ Math.PI;\n    if (a < 0) a += 360;\n    return { mass: m, angle: a };\n  }\n\n  function formatNum(n, dec) {\n    dec = dec || 2;\n    if (Math.abs(n) < 0.0001) return '0';\n    return parseFloat(n.toFixed(dec)).toString();\n  }\n\n  function normalizeAngle(a) {\n    while (a < 0) a += 360;\n    while (a >= 360) a -= 360;\n    return a;\n  }\n\n  function drawVector(svgId, m, a, color) {\n    const svg = document.getElementById(svgId);\n    const cx = 40, cy = 40, r = 25;\n    const rad = (a - 90) * Math.PI \/ 180;\n    const ex = cx + r * Math.cos(rad);\n    const ey = cy + r * Math.sin(rad);\n    \n    svg.innerHTML = `\n      <circle cx=\"${cx}\" cy=\"${cy}\" r=\"30\" fill=\"none\" stroke=\"#bfdbfe\" stroke-width=\"1\"\/>\n      <line x1=\"${cx}\" y1=\"${cy}\" x2=\"${cx}\" y2=\"10\" stroke=\"#93c5fd\" stroke-width=\"1\"\/>\n      <text x=\"43\" y=\"9\" font-size=\"8\" fill=\"#3b82f6\">0<\/text>\n      ${m > 0 ? `<line x1=\"${cx}\" y1=\"${cy}\" x2=\"${ex}\" y2=\"${ey}\" stroke=\"${color}\" stroke-width=\"2\"\/>\n      <circle cx=\"${ex}\" cy=\"${ey}\" r=\"3\" fill=\"${color}\"\/>` : ''}\n      <circle cx=\"${cx}\" cy=\"${cy}\" r=\"2\" fill=\"#1e3a8a\"\/>\n    `;\n  }\n\n  function drawResultVector(m, a) {\n    const cx = 50, cy = 50, r = 35;\n    const rad = (a - 90) * Math.PI \/ 180;\n    const ex = cx + r * Math.cos(rad);\n    const ey = cy + r * Math.sin(rad);\n    \n    resultDiagram.innerHTML = `\n      <svg width=\"100\" height=\"100\" style=\"background:#eff6ff;border-radius:4px;\">\n        <circle cx=\"${cx}\" cy=\"${cy}\" r=\"40\" fill=\"none\" stroke=\"#bfdbfe\" stroke-width=\"1\"\/>\n        <line x1=\"${cx}\" y1=\"${cy}\" x2=\"${cx}\" y2=\"10\" stroke=\"#93c5fd\" stroke-width=\"1\"\/>\n        <line x1=\"${cx}\" y1=\"${cy}\" x2=\"90\" y2=\"${cy}\" stroke=\"#93c5fd\" stroke-width=\"1\"\/>\n        <text x=\"52\" y=\"8\" font-size=\"8\" fill=\"#3b82f6\">0<\/text>\n        <text x=\"92\" y=\"53\" font-size=\"8\" fill=\"#3b82f6\">90<\/text>\n        ${m > 0 ? `<line x1=\"${cx}\" y1=\"${cy}\" x2=\"${ex}\" y2=\"${ey}\" stroke=\"#1d4ed8\" stroke-width=\"2\"\/>\n        <circle cx=\"${ex}\" cy=\"${ey}\" r=\"4\" fill=\"#1d4ed8\"\/>` : ''}\n        <circle cx=\"${cx}\" cy=\"${cy}\" r=\"2\" fill=\"#1e3a8a\"\/>\n      <\/svg>\n    `;\n  }\n\n  function updateDiagrams() {\n    const m1 = parseFloat(mass1.value) || 0;\n    const a1 = normalizeAngle(parseFloat(angle1.value) || 0);\n    const m2 = parseFloat(mass2.value) || 0;\n    const a2 = normalizeAngle(parseFloat(angle2.value) || 0);\n    drawVector('vc-svg1', m1, a1, '#1d4ed8');\n    drawVector('vc-svg2', m2, a2, '#1d4ed8');\n  }\n\n  function calculate() {\n    const m1 = parseFloat(mass1.value) || 0;\n    const a1 = normalizeAngle(parseFloat(angle1.value) || 0);\n    const m2 = parseFloat(mass2.value) || 0;\n    const a2 = normalizeAngle(parseFloat(angle2.value) || 0);\n    const k = parseFloat(scalarInput.value) || 1;\n\n    const c1 = toCartesian(m1, a1);\n    const c2 = toCartesian(m2, a2);\n\n    let label = '', mass = 0, angle = 0, cart = null, note = '', isCartesian = false;\n\n    switch (operation) {\n      case 'add':\n        const sumX = c1.x + c2.x;\n        const sumY = c1.y + c2.y;\n        const sumP = toPolar(sumX, sumY);\n        label = 'Sum of vectors A + B';\n        mass = sumP.mass;\n        angle = sumP.angle;\n        cart = { x: sumX, y: sumY };\n        break;\n      case 'subtract':\n        const diffX = c1.x - c2.x;\n        const diffY = c1.y - c2.y;\n        const diffP = toPolar(diffX, diffY);\n        label = 'Difference A \u2212 B';\n        mass = diffP.mass;\n        angle = diffP.angle;\n        cart = { x: diffX, y: diffY };\n        break;\n      case 'opposite':\n        label = 'Correction weight position for vector A';\n        mass = m1;\n        angle = normalizeAngle(a1 + 180);\n        note = 'Place the correction mass at this angle to compensate for imbalance';\n        break;\n      case 'scale':\n        label = 'Vector A \u00d7 ' + k;\n        mass = m1 * k;\n        angle = a1;\n        break;\n      case 'cartesian':\n        label = 'Cartesian coordinates of vector A';\n        isCartesian = true;\n        cart = c1;\n        break;\n    }\n\n    resultDiv.classList.add('visible');\n    resultLabel.textContent = label;\n\n    if (isCartesian) {\n      resultValues.innerHTML = `\n        <div class=\"vc-result-item\">\n          <div class=\"vc-result-num\">X = ${formatNum(cart.x)}<\/div>\n        <\/div>\n        <div class=\"vc-result-item\">\n          <div class=\"vc-result-num\">Y = ${formatNum(cart.y)}<\/div>\n        <\/div>\n      `;\n      resultCartesian.style.display = 'none';\n      resultNote.style.display = 'none';\n      resultDiagram.innerHTML = '';\n    } else {\n      resultValues.innerHTML = `\n        <div class=\"vc-result-item\">\n          <div class=\"vc-result-num\">${formatNum(mass)}<\/div>\n          <div class=\"vc-result-unit\">grams<\/div>\n        <\/div>\n        <div class=\"vc-result-sep\">\/<\/div>\n        <div class=\"vc-result-item\">\n          <div class=\"vc-result-num\">${formatNum(angle, 1)}\u00b0<\/div>\n          <div class=\"vc-result-unit\">angle<\/div>\n        <\/div>\n      `;\n\n      if (cart) {\n        resultCartesian.textContent = 'X = ' + formatNum(cart.x) + ', Y = ' + formatNum(cart.y);\n        resultCartesian.style.display = 'block';\n      } else {\n        resultCartesian.style.display = 'none';\n      }\n\n      if (note) {\n        resultNote.textContent = note;\n        resultNote.style.display = 'block';\n      } else {\n        resultNote.style.display = 'none';\n      }\n\n      drawResultVector(mass, angle);\n    }\n  }\n\n  opBtns.forEach(function(btn) {\n    btn.addEventListener('click', function() {\n      opBtns.forEach(function(b) { b.classList.remove('active'); });\n      btn.classList.add('active');\n      operation = btn.getAttribute('data-op');\n      if (operation === 'scale') {\n        scalarRow.classList.add('visible');\n      } else {\n        scalarRow.classList.remove('visible');\n      }\n    });\n  });\n\n  calcBtn.addEventListener('click', calculate);\n\n  helpToggle.addEventListener('click', function() {\n    if (helpContent.classList.contains('visible')) {\n      helpContent.classList.remove('visible');\n      helpIcon.textContent = '+';\n    } else {\n      helpContent.classList.add('visible');\n      helpIcon.textContent = '\u2212';\n    }\n  });\n\n  mass1.addEventListener('input', updateDiagrams);\n  angle1.addEventListener('input', updateDiagrams);\n  mass2.addEventListener('input', updateDiagrams);\n  angle2.addEventListener('input', updateDiagrams);\n\n  updateDiagrams();\n})();\n<\/script>\n\n<\/body>\n<\/html><\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Vector Calculator Vector Calculator Vector A Mass, g Angle, deg Vector B Mass, g Angle, deg Operation + Add \u2212 Subtract \u00b1180\u00b0 Opposite k\u00d7 Scale \u2192 X, Y Multiplier k: Calculate How this calculator works + What is this calculator for? This calculator performs vector operations using polar coordinates (magnitude [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":20918,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ai_generated_summary":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-20916","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/vibromera.eu\/lt\/wp-json\/wp\/v2\/posts\/20916","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibromera.eu\/lt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vibromera.eu\/lt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vibromera.eu\/lt\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/vibromera.eu\/lt\/wp-json\/wp\/v2\/comments?post=20916"}],"version-history":[{"count":5,"href":"https:\/\/vibromera.eu\/lt\/wp-json\/wp\/v2\/posts\/20916\/revisions"}],"predecessor-version":[{"id":20927,"href":"https:\/\/vibromera.eu\/lt\/wp-json\/wp\/v2\/posts\/20916\/revisions\/20927"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vibromera.eu\/lt\/wp-json\/wp\/v2\/media\/20918"}],"wp:attachment":[{"href":"https:\/\/vibromera.eu\/lt\/wp-json\/wp\/v2\/media?parent=20916"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibromera.eu\/lt\/wp-json\/wp\/v2\/categories?post=20916"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibromera.eu\/lt\/wp-json\/wp\/v2\/tags?post=20916"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}