{"id":2365,"date":"2026-02-06T22:42:06","date_gmt":"2026-02-06T20:42:06","guid":{"rendered":"https:\/\/science-x.net\/?page_id=2365"},"modified":"2026-02-06T22:46:39","modified_gmt":"2026-02-06T20:46:39","slug":"wave-calculator","status":"publish","type":"page","link":"https:\/\/science-x.net\/?page_id=2365","title":{"rendered":"Wave Calculator"},"content":{"rendered":"\n<div class=\"eco-tool wp-block-group\" id=\"eco-tool-wave-a13d7\">\n  <div class=\"eco-tool__header\">\n    <h2 class=\"eco-tool__title\">Wave Calculator<\/h2>\n    <p class=\"eco-tool__lead\">\n      Use the wave equation v = f \u00d7 \u03bb. Enter any two values and we\u2019ll calculate the third.\n    <\/p>\n  <\/div>\n\n  <form class=\"eco-tool__form\" id=\"eco-wave-form-a13d7\" novalidate>\n    <div class=\"eco-tool__grid3\">\n      <!-- Speed -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-wave-v-a13d7\">Wave speed<br>(m\/s)<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-wave-v-a13d7\" type=\"number\" step=\"any\" placeholder=\"e.g., 340\" inputmode=\"decimal\" \/>\n        <div class=\"eco-tool__hint\">Leave blank if unknown.<\/div>\n      <\/div>\n\n      <!-- Frequency -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-wave-f-a13d7\">Frequency<br>value<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-wave-f-a13d7\" type=\"number\" step=\"any\" placeholder=\"e.g., 440\" inputmode=\"decimal\" \/>\n        <div class=\"eco-tool__hint\">Enter frequency and choose unit.<\/div>\n      <\/div>\n\n      <!-- Frequency unit -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-wave-fu-a13d7\">Frequency<br>unit<\/label>\n        <select class=\"eco-tool__input\" id=\"eco-wave-fu-a13d7\">\n          <option value=\"hz\" selected>Hz<\/option>\n          <option value=\"khz\">kHz<\/option>\n          <option value=\"mhz\">MHz<\/option>\n          <option value=\"ghz\">GHz<\/option>\n        <\/select>\n        <div class=\"eco-tool__hint\">We convert to Hz internally.<\/div>\n      <\/div>\n\n      <!-- Wavelength -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-wave-l-a13d7\">Wavelength<br>value<\/label>\n        <input class=\"eco-tool__input\" id=\"eco-wave-l-a13d7\" type=\"number\" step=\"any\" placeholder=\"e.g., 0.77\" inputmode=\"decimal\" \/>\n        <div class=\"eco-tool__hint\">Enter wavelength and choose unit.<\/div>\n      <\/div>\n\n      <!-- Wavelength unit -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-wave-lu-a13d7\">Wavelength<br>unit<\/label>\n        <select class=\"eco-tool__input\" id=\"eco-wave-lu-a13d7\">\n          <option value=\"m\" selected>meters (m)<\/option>\n          <option value=\"cm\">centimeters (cm)<\/option>\n          <option value=\"mm\">millimeters (mm)<\/option>\n          <option value=\"km\">kilometers (km)<\/option>\n          <option value=\"nm\">nanometers (nm)<\/option>\n        <\/select>\n        <div class=\"eco-tool__hint\">We convert to meters internally.<\/div>\n      <\/div>\n\n      <!-- Notes -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\">Notes<\/label>\n        <div class=\"eco-tool__noteBox\">\n          You only need any two values. For light in vacuum, v \u2248 299,792,458 m\/s.\n        <\/div>\n        <div class=\"eco-tool__hint\">Useful for sound, light, and radio waves.<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"eco-tool__actions\">\n      <button type=\"button\" class=\"wp-element-button eco-tool__btn\" id=\"eco-wave-calc-a13d7\">Calculate<\/button>\n      <button type=\"button\" class=\"wp-element-button eco-tool__btn eco-tool__btn--ghost\" id=\"eco-wave-reset-a13d7\">Reset<\/button>\n      <div class=\"eco-tool__error\" id=\"eco-wave-error-a13d7\" aria-live=\"polite\"><\/div>\n    <\/div>\n  <\/form>\n\n  <div class=\"eco-tool__result\" id=\"eco-wave-result-a13d7\" hidden>\n    <h3 class=\"eco-tool__subtitle\">Result<\/h3>\n\n    <div class=\"eco-tool__cards\">\n      <div class=\"eco-tool__card\">\n        <div class=\"eco-tool__metric-label\">Wave speed<\/div>\n        <div class=\"eco-tool__metric-value\" id=\"eco-wave-out-v-a13d7\">\u2014<\/div>\n        <div class=\"eco-tool__metric-sub\">m\/s<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__card\">\n        <div class=\"eco-tool__metric-label\">Frequency<\/div>\n        <div class=\"eco-tool__metric-value\" id=\"eco-wave-out-f-a13d7\">\u2014<\/div>\n        <div class=\"eco-tool__metric-sub\" id=\"eco-wave-out-fsub-a13d7\">\u2014<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__card\">\n        <div class=\"eco-tool__metric-label\">Wavelength<\/div>\n        <div class=\"eco-tool__metric-value\" id=\"eco-wave-out-l-a13d7\">\u2014<\/div>\n        <div class=\"eco-tool__metric-sub\" id=\"eco-wave-out-lsub-a13d7\">\u2014<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"eco-tool__card eco-tool__card--wide\">\n      <div class=\"eco-tool__metric-label\">Equation<\/div>\n      <div class=\"eco-tool__metric-sub\" id=\"eco-wave-eq-a13d7\"><\/div>\n    <\/div>\n\n    <p class=\"eco-tool__note\">\n      v = f \u00d7 \u03bb. Make sure you\u2019re using consistent units.\n    <\/p>\n  <\/div>\n<\/div>\n\n<style>\n.eco-tool{\n  border: 1px solid rgba(0,0,0,.12);\n  border-radius: 12px;\n  padding: 16px;\n}\n.eco-tool__grid3{\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 16px;\n}\n@media (min-width: 860px){\n  .eco-tool__grid3{ grid-template-columns: 1fr 1fr 1fr; }\n}\n.eco-tool__field{ display:flex; flex-direction:column; gap:6px; }\n.eco-tool__label{ font-weight:600; }\n.eco-tool__input{\n  height:44px; padding:0 12px;\n  border:1px solid rgba(0,0,0,.2);\n  border-radius:10px; background:#fff; font:inherit; box-sizing:border-box;\n}\n.eco-tool select.eco-tool__input{ appearance:none; padding-right:40px; }\n.eco-tool__hint{ font-size:.92em; opacity:.78; min-height:38px; }\n\n.eco-tool__noteBox{\n  border:1px solid rgba(0,0,0,.12);\n  border-radius:12px;\n  padding:12px;\n  background:rgba(0,0,0,.02);\n  min-height:44px;\n}\n\n.eco-tool__actions{\n  display:flex; gap:10px; margin-top:16px; align-items:center; flex-wrap:wrap;\n}\n.eco-tool__btn{ padding:10px 22px; }\n.eco-tool__btn--ghost{\n  background:transparent !important;\n  border:1px solid rgba(0,0,0,.2) !important;\n}\n.eco-tool__btn--ghost:hover,\n.eco-tool__btn--ghost:focus{\n  background:rgba(0,0,0,.06) !important;\n  border-color:rgba(0,0,0,.35) !important;\n}\n.eco-tool__error{ font-weight:600; min-height:1.2em; flex:1 1 240px; }\n\n.eco-tool__result{ margin-top:16px; }\n.eco-tool__subtitle{ margin:0 0 10px; }\n\n.eco-tool__cards{\n  display:grid; gap:10px; grid-template-columns:1fr;\n}\n@media (min-width: 860px){\n  .eco-tool__cards{ grid-template-columns: 1fr 1fr 1fr; }\n}\n\n.eco-tool__card{\n  border:1px solid rgba(0,0,0,.12);\n  border-radius:12px;\n  padding:12px;\n}\n.eco-tool__card--wide{ margin-top:10px; }\n\n.eco-tool__metric-label{ opacity:.85; font-weight:600; }\n.eco-tool__metric-value{ font-size:1.6em; font-weight:800; margin-top:6px; line-height:1.1; }\n.eco-tool__metric-sub{ opacity:.85; margin-top:6px; }\n.eco-tool__note{ margin-top:10px; opacity:.9; }\n<\/style>\n\n<script>\n(function(){\n  const S=\"a13d7\";\n  const el=id=>document.getElementById(id+\"-\"+S);\n\n  const vIn=el(\"eco-wave-v\");\n  const fIn=el(\"eco-wave-f\");\n  const fu=el(\"eco-wave-fu\");\n  const lIn=el(\"eco-wave-l\");\n  const lu=el(\"eco-wave-lu\");\n\n  const calcBtn=el(\"eco-wave-calc\");\n  const resetBtn=el(\"eco-wave-reset\");\n  const errEl=el(\"eco-wave-error\");\n  const resEl=el(\"eco-wave-result\");\n\n  const outV=el(\"eco-wave-out-v\");\n  const outF=el(\"eco-wave-out-f\");\n  const outFsub=el(\"eco-wave-out-fsub\");\n  const outL=el(\"eco-wave-out-l\");\n  const outLsub=el(\"eco-wave-out-lsub\");\n  const eqEl=el(\"eco-wave-eq\");\n\n  function setError(msg){ errEl.textContent = msg || \"\"; }\n\n  function numOrNull(x){\n    if (x === \"\" || x === null || typeof x === \"undefined\") return null;\n    const n = Number(x);\n    return Number.isFinite(n) ? n : null;\n  }\n\n  function fToHz(val, unit){\n    const mult = {hz:1, khz:1e3, mhz:1e6, ghz:1e9}[unit] || 1;\n    return val * mult;\n  }\n  function hzToNice(hz){\n    const a = Math.abs(hz);\n    if (a >= 1e9) return {v: hz\/1e9, u:\"GHz\"};\n    if (a >= 1e6) return {v: hz\/1e6, u:\"MHz\"};\n    if (a >= 1e3) return {v: hz\/1e3, u:\"kHz\"};\n    return {v: hz, u:\"Hz\"};\n  }\n\n  function lToM(val, unit){\n    const mult = {m:1, cm:1e-2, mm:1e-3, km:1e3, nm:1e-9}[unit] || 1;\n    return val * mult;\n  }\n  function mToNice(m){\n    const a = Math.abs(m);\n    if (a >= 1000) return {v: m\/1000, u:\"km\"};\n    if (a >= 1) return {v: m, u:\"m\"};\n    if (a >= 1e-2) return {v: m*100, u:\"cm\"};\n    if (a >= 1e-3) return {v: m*1000, u:\"mm\"};\n    return {v: m*1e9, u:\"nm\"};\n  }\n\n  function fmt(n, d=4){\n    return Number(n).toLocaleString(undefined,{maximumFractionDigits:d});\n  }\n\n  function calculate(){\n    setError(\"\");\n\n    const V = numOrNull(vIn.value); \/\/ m\/s\n    const Fraw = numOrNull(fIn.value);\n    const Lraw = numOrNull(lIn.value);\n\n    const fKnown = (Fraw !== null);\n    const lKnown = (Lraw !== null);\n    const vKnown = (V !== null);\n\n    const knownCount = [vKnown, fKnown, lKnown].filter(Boolean).length;\n    if (knownCount < 2){\n      setError(\"Please enter any two values (speed, frequency, wavelength).\");\n      resEl.hidden = true;\n      return;\n    }\n\n    let v = V;\n    let fHz = fKnown ? fToHz(Fraw, fu.value) : null;\n    let lM = lKnown ? lToM(Lraw, lu.value) : null;\n\n    if (!vKnown){\n      \/\/ v = f * \u03bb\n      if (fHz === 0 || lM === 0){ setError(\"Frequency and wavelength must be non-zero to compute speed.\"); resEl.hidden=true; return; }\n      v = fHz * lM;\n    } else if (!fKnown){\n      \/\/ f = v \/ \u03bb\n      if (lM === 0){ setError(\"Wavelength cannot be zero.\"); resEl.hidden=true; return; }\n      fHz = v \/ lM;\n    } else if (!lKnown){\n      \/\/ \u03bb = v \/ f\n      if (fHz === 0){ setError(\"Frequency cannot be zero.\"); resEl.hidden=true; return; }\n      lM = v \/ fHz;\n    }\n\n    \/\/ Output\n    outV.textContent = fmt(v, 6);\n    const fNice = hzToNice(fHz);\n    outF.textContent = `${fmt(fNice.v, 6)} ${fNice.u}`;\n    outFsub.textContent = `${fmt(fHz, 6)} Hz`;\n\n    const lNice = mToNice(lM);\n    outL.textContent = `${fmt(lNice.v, 6)} ${lNice.u}`;\n    outLsub.textContent = `${fmt(lM, 9)} m`;\n\n    eqEl.textContent = `v = f \u00d7 \u03bb  \u2192  ${fmt(v,6)} = ${fmt(fHz,6)} \u00d7 ${fmt(lM,9)}`;\n\n    resEl.hidden = false;\n  }\n\n  function reset(){\n    vIn.value = \"\";\n    fIn.value = \"\";\n    lIn.value = \"\";\n    fu.value = \"hz\";\n    lu.value = \"m\";\n    setError(\"\");\n    resEl.hidden = true;\n  }\n\n  calcBtn.addEventListener(\"click\", calculate);\n  resetBtn.addEventListener(\"click\", reset);\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Wave Calculator Use the wave equation v = f \u00d7 \u03bb. Enter any two values and we\u2019ll calculate the third. Wave speed(m\/s) Leave blank if unknown. Frequencyvalue Enter frequency and&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":2354,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"_links":{"self":[{"href":"https:\/\/science-x.net\/index.php?rest_route=\/wp\/v2\/pages\/2365"}],"collection":[{"href":"https:\/\/science-x.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/science-x.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/science-x.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/science-x.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2365"}],"version-history":[{"count":1,"href":"https:\/\/science-x.net\/index.php?rest_route=\/wp\/v2\/pages\/2365\/revisions"}],"predecessor-version":[{"id":2366,"href":"https:\/\/science-x.net\/index.php?rest_route=\/wp\/v2\/pages\/2365\/revisions\/2366"}],"up":[{"embeddable":true,"href":"https:\/\/science-x.net\/index.php?rest_route=\/wp\/v2\/pages\/2354"}],"wp:attachment":[{"href":"https:\/\/science-x.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}