{"id":2947,"date":"2026-05-21T00:11:54","date_gmt":"2026-05-20T22:11:54","guid":{"rendered":"https:\/\/acriv.org\/WP\/?page_id=2947"},"modified":"2026-05-21T00:13:09","modified_gmt":"2026-05-20T22:13:09","slug":"calculs-aeronautiques","status":"publish","type":"page","link":"https:\/\/acriv.org\/WP\/calculs-aeronautiques\/","title":{"rendered":"CALCULS AERONAUTIQUES"},"content":{"rendered":"\n<p class=\"has-text-align-center has-vivid-red-color has-text-color has-link-color wp-elements-b0db082034a162f5765762a88e873640 wp-block-paragraph\"><strong>Usage p\u00e9dagogique \u2014 Toujours v\u00e9rifier les donn\u00e9es officielles<\/strong><\/p>\n\n\n\n<!-- COMPUTER ACRIV \u2013 Modules de calcul a\u00e9ronautique -->\n<!-- Coller ce code dans un bloc HTML WordPress -->\n\n<style>\n  :root {\n    --bleu-acriv: #1a3a5c;\n    --bleu-clair: #2563a8;\n    --bleu-accent: #3b82c4;\n    --bleu-bg: #eaf2fb;\n    --bleu-border: #b5d4f4;\n    --gris-bg: #f4f6f9;\n    --gris-border: #d1d9e2;\n    --vert-result: #1a6b3c;\n    --vert-bg: #eaf5ee;\n    --orange-warn: #b45309;\n    --orange-bg: #fff8ee;\n    --text-dark: #1a2535;\n    --text-muted: #5a6a7e;\n    --radius: 10px;\n    --shadow: 0 2px 10px rgba(26,58,92,0.10);\n  }\n  .acriv-computer * { box-sizing: border-box; }\n  .acriv-computer {\n    font-family: 'Segoe UI', Arial, sans-serif;\n    color: var(--text-dark);\n    font-size: 15px;\n    line-height: 1.6;\n  }\n  .page-header {\n    background: var(--bleu-acriv);\n    color: white;\n    padding: 28px 24px 22px;\n    text-align: center;\n  }\n  .page-header h1 {\n    font-size: 22px;\n    font-weight: 700;\n    letter-spacing: 1px;\n    text-transform: uppercase;\n    margin-bottom: 4px;\n  }\n  .page-header p {\n    font-size: 13px;\n    opacity: 0.75;\n    font-style: italic;\n  }\n  .page-header .badge {\n    display: inline-block;\n    background: rgba(255,255,255,0.15);\n    border: 1px solid rgba(255,255,255,0.3);\n    border-radius: 20px;\n    padding: 2px 12px;\n    font-size: 11px;\n    margin-top: 8px;\n    letter-spacing: 0.5px;\n  }\n  .container {\n    max-width: 820px;\n    margin: 0 auto;\n    padding: 24px 16px 48px;\n  }\n  .module {\n    background: white;\n    border-radius: var(--radius);\n    box-shadow: var(--shadow);\n    border: 1px solid var(--bleu-border);\n    margin-bottom: 28px;\n    overflow: hidden;\n  }\n  .module-header {\n    background: var(--bleu-acriv);\n    color: white;\n    padding: 14px 20px;\n    display: flex;\n    align-items: center;\n    gap: 10px;\n  }\n  .module-header .ico {\n    font-size: 20px;\n    opacity: 0.9;\n  }\n  .module-header h2 {\n    font-size: 14px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.8px;\n    flex: 1;\n  }\n  .module-header .sub {\n    font-size: 11px;\n    opacity: 0.65;\n    margin-top: 1px;\n  }\n  .module-body {\n    padding: 20px;\n  }\n  .fields-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n    gap: 14px;\n    margin-bottom: 18px;\n  }\n  .field-group {\n    display: flex;\n    flex-direction: column;\n    gap: 4px;\n  }\n  label {\n    font-size: 12px;\n    font-weight: 600;\n    color: var(--bleu-acriv);\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n  }\n  label .unit {\n    font-weight: 400;\n    color: var(--text-muted);\n    text-transform: none;\n    letter-spacing: 0;\n    font-size: 11px;\n  }\n  input[type=number], select {\n    border: 1.5px solid var(--gris-border);\n    border-radius: 6px;\n    padding: 8px 10px;\n    font-size: 14px;\n    color: var(--text-dark);\n    background: var(--gris-bg);\n    width: 100%;\n    transition: border-color 0.2s;\n  }\n  input[type=number]:focus, select:focus {\n    outline: none;\n    border-color: var(--bleu-accent);\n    background: white;\n  }\n  .hint {\n    font-size: 11px;\n    color: var(--text-muted);\n    font-style: italic;\n  }\n  .btn-calc {\n    background: var(--bleu-clair);\n    color: white;\n    border: none;\n    border-radius: 6px;\n    padding: 10px 24px;\n    font-size: 13px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.8px;\n    cursor: pointer;\n    transition: background 0.2s, transform 0.1s;\n  }\n  .btn-calc:hover { background: var(--bleu-acriv); }\n  .btn-calc:active { transform: scale(0.98); }\n  .btn-reset {\n    background: none;\n    border: 1.5px solid var(--gris-border);\n    color: var(--text-muted);\n    border-radius: 6px;\n    padding: 9px 16px;\n    font-size: 12px;\n    cursor: pointer;\n    transition: border-color 0.2s;\n    margin-left: 8px;\n  }\n  .btn-reset:hover { border-color: var(--bleu-accent); color: var(--bleu-acriv); }\n  .btn-row {\n    display: flex;\n    align-items: center;\n    gap: 0;\n    margin-bottom: 18px;\n  }\n  .results {\n    background: var(--bleu-bg);\n    border: 1.5px solid var(--bleu-border);\n    border-radius: 8px;\n    padding: 16px;\n    display: none;\n  }\n  .results.visible { display: block; }\n  .results-title {\n    font-size: 11px;\n    font-weight: 700;\n    color: var(--bleu-acriv);\n    text-transform: uppercase;\n    letter-spacing: 0.6px;\n    margin-bottom: 12px;\n    border-bottom: 1px solid var(--bleu-border);\n    padding-bottom: 8px;\n  }\n  .result-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n    gap: 10px;\n  }\n  .result-card {\n    background: white;\n    border-radius: 8px;\n    padding: 12px 14px;\n    border: 1px solid var(--bleu-border);\n    text-align: center;\n  }\n  .result-card .rlabel {\n    font-size: 10px;\n    font-weight: 700;\n    color: var(--text-muted);\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    margin-bottom: 4px;\n  }\n  .result-card .rvalue {\n    font-size: 22px;\n    font-weight: 700;\n    color: var(--bleu-acriv);\n    line-height: 1.1;\n  }\n  .result-card .runit {\n    font-size: 12px;\n    color: var(--text-muted);\n    margin-top: 2px;\n  }\n  .result-card.accent { border-color: var(--bleu-clair); }\n  .result-card.accent .rvalue { color: var(--bleu-clair); }\n  .result-card.warn .rvalue { color: #b45309; }\n  .result-card.warn { border-color: #f5c675; }\n  .result-card.good .rvalue { color: var(--vert-result); }\n  .result-card.good { border-color: #9fe1cb; }\n  .formula-box {\n    background: var(--gris-bg);\n    border-left: 3px solid var(--bleu-accent);\n    border-radius: 0 6px 6px 0;\n    padding: 10px 14px;\n    margin-top: 14px;\n    font-size: 12px;\n    color: var(--text-muted);\n    font-style: italic;\n  }\n  .formula-box strong { color: var(--bleu-acriv); font-style: normal; }\n  .separator { border: none; border-top: 1px solid var(--gris-border); margin: 16px 0; }\n  .toggle-row {\n    display: flex;\n    gap: 4px;\n    margin-bottom: 14px;\n    background: var(--gris-bg);\n    border-radius: 6px;\n    padding: 3px;\n    border: 1px solid var(--gris-border);\n  }\n  .toggle-btn {\n    flex: 1;\n    padding: 7px 10px;\n    font-size: 12px;\n    font-weight: 600;\n    border: none;\n    border-radius: 4px;\n    cursor: pointer;\n    background: none;\n    color: var(--text-muted);\n    transition: all 0.2s;\n    text-align: center;\n  }\n  .toggle-btn.active {\n    background: var(--bleu-clair);\n    color: white;\n  }\n  @media (max-width: 540px) {\n    .fields-grid { grid-template-columns: 1fr; }\n    .result-grid { grid-template-columns: 1fr 1fr; }\n    .page-header h1 { font-size: 17px; }\n  }\n<\/style>\n\n<div class=\"acriv-computer\">\n<div class=\"page-header\">\n  <h1>\u2708 Computer ACRIV \u2013 Calculs Navigation<\/h1>\n  <p>Modules de calcul a\u00e9ronautique PPL \/ LAPL<\/p>\n  <span class=\"badge\">Bretagne \u00b7 France \u00b7 VFR<\/span>\n<\/div>\n\n<div class=\"container\">\n\n  <!-- ===== MODULE 1 : VENT ===== -->\n  <div class=\"module\" id=\"mod-vent\">\n    <div class=\"module-header\">\n      <span class=\"ico\">\ud83d\udca8<\/span>\n      <div>\n        <h2>Calcul du Vent<\/h2>\n        <div class=\"sub\">Vent effectif (axial) &amp; vent traversier (cross-wind)<\/div>\n      <\/div>\n    <\/div>\n    <div class=\"module-body\">\n      <div class=\"fields-grid\">\n        <div class=\"field-group\">\n          <label>Direction du vent <span class=\"unit\">(\u00b0V \u2013 d&rsquo;o\u00f9 il vient)<\/span><\/label>\n          <input type=\"number\" id=\"v_dir\" min=\"0\" max=\"360\" placeholder=\"ex: 270\" step=\"1\">\n          <span class=\"hint\">Convention METAR : direction d&rsquo;o\u00f9 vient le vent<\/span>\n        <\/div>\n        <div class=\"field-group\">\n          <label>Force du vent <span class=\"unit\">(kt)<\/span><\/label>\n          <input type=\"number\" id=\"v_force\" min=\"0\" max=\"150\" placeholder=\"ex: 15\" step=\"1\">\n        <\/div>\n        <div class=\"field-group\">\n          <label>Cap de l&rsquo;avion <span class=\"unit\">(\u00b0V \u2013 route vraie)<\/span><\/label>\n          <input type=\"number\" id=\"v_cap\" min=\"0\" max=\"360\" placeholder=\"ex: 180\" step=\"1\">\n        <\/div>\n      <\/div>\n      <div class=\"btn-row\">\n        <button class=\"btn-calc\" onclick=\"calcVent()\">\u25b6 Calculer<\/button>\n        <button class=\"btn-reset\" onclick=\"resetModule('mod-vent')\">\u21ba Reset<\/button>\n      <\/div>\n      <div class=\"results\" id=\"res-vent\">\n        <div class=\"results-title\">\ud83d\udcca R\u00e9sultats \u2013 Composantes du vent<\/div>\n        <div class=\"result-grid\">\n          <div class=\"result-card accent\">\n            <div class=\"rlabel\">Vent effectif (Ve)<\/div>\n            <div class=\"rvalue\" id=\"r_ve\">\u2013<\/div>\n            <div class=\"runit\">kt \u00b7 axial (+ = face, \u2212 = dos)<\/div>\n          <\/div>\n          <div class=\"result-card warn\" id=\"rc_vt\">\n            <div class=\"rlabel\">Vent traversier (Vt)<\/div>\n            <div class=\"rvalue\" id=\"r_vt\">\u2013<\/div>\n            <div class=\"runit\">kt \u00b7 lat\u00e9ral<\/div>\n          <\/div>\n          <div class=\"result-card\">\n            <div class=\"rlabel\">Angle vent\/route<\/div>\n            <div class=\"rvalue\" id=\"r_angle\">\u2013<\/div>\n            <div class=\"runit\">\u00b0<\/div>\n          <\/div>\n          <div class=\"result-card\">\n            <div class=\"rlabel\">D\u00e9rive max estim\u00e9e<\/div>\n            <div class=\"rvalue\" id=\"r_derive\">\u2013<\/div>\n            <div class=\"runit\">\u00b0 (sans TAS)<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"formula-box\">\n          <strong>Formules :<\/strong>\n          \u03b1 = (Dir_vent + 180\u00b0) \u2212 Cap_avion &nbsp;|&nbsp;\n          Ve = W \u00d7 cos(\u03b1) &nbsp;|&nbsp;\n          Vt = W \u00d7 sin(\u03b1)\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- ===== MODULE 2 : PENTE ===== -->\n  <div class=\"module\" id=\"mod-pente\">\n    <div class=\"module-header\">\n      <span class=\"ico\">\ud83d\udcd0<\/span>\n      <div>\n        <h2>Conversion de Pente<\/h2>\n        <div class=\"sub\">Pourcentage (%) \u2194 Degr\u00e9s (\u00b0)<\/div>\n      <\/div>\n    <\/div>\n    <div class=\"module-body\">\n      <div class=\"toggle-row\">\n        <button class=\"toggle-btn active\" id=\"pente-toggle-pct\" onclick=\"setPenteMode('pct')\">% \u2192 degr\u00e9s<\/button>\n        <button class=\"toggle-btn\" id=\"pente-toggle-deg\" onclick=\"setPenteMode('deg')\">\u00b0 \u2192 pourcentage<\/button>\n      <\/div>\n      <div class=\"fields-grid\" style=\"grid-template-columns: 1fr;\">\n        <div class=\"field-group\" id=\"pente-field-pct\">\n          <label>Pente en pourcentage <span class=\"unit\">(%)<\/span><\/label>\n          <input type=\"number\" id=\"p_pct\" placeholder=\"ex: 5.2\" step=\"0.1\">\n          <span class=\"hint\">Pente de descente en % (ex: 5.2 pour un ILS \u00e0 3\u00b0)<\/span>\n        <\/div>\n        <div class=\"field-group\" id=\"pente-field-deg\" style=\"display:none\">\n          <label>Pente en degr\u00e9s <span class=\"unit\">(\u00b0)<\/span><\/label>\n          <input type=\"number\" id=\"p_deg\" placeholder=\"ex: 3.0\" step=\"0.1\">\n          <span class=\"hint\">Angle de descente en degr\u00e9s (ex: 3\u00b0 pour un ILS)<\/span>\n        <\/div>\n      <\/div>\n      <div class=\"btn-row\">\n        <button class=\"btn-calc\" onclick=\"calcPente()\">\u25b6 Convertir<\/button>\n        <button class=\"btn-reset\" onclick=\"resetModule('mod-pente')\">\u21ba Reset<\/button>\n      <\/div>\n      <div class=\"results\" id=\"res-pente\">\n        <div class=\"results-title\">\ud83d\udcca R\u00e9sultat \u2013 Conversion de pente<\/div>\n        <div class=\"result-grid\">\n          <div class=\"result-card accent\">\n            <div class=\"rlabel\" id=\"pente-rl1\">Pente en degr\u00e9s<\/div>\n            <div class=\"rvalue\" id=\"r_pente1\">\u2013<\/div>\n            <div class=\"runit\" id=\"pente-ru1\">\u00b0<\/div>\n          <\/div>\n          <div class=\"result-card good\">\n            <div class=\"rlabel\" id=\"pente-rl2\">Pente en %<\/div>\n            <div class=\"rvalue\" id=\"r_pente2\">\u2013<\/div>\n            <div class=\"runit\" id=\"pente-ru2\">%<\/div>\n          <\/div>\n          <div class=\"result-card\">\n            <div class=\"rlabel\">ft \/ NM<\/div>\n            <div class=\"rvalue\" id=\"r_pente3\">\u2013<\/div>\n            <div class=\"runit\">pieds par mille marin<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"formula-box\">\n          <strong>Formules :<\/strong>\n          pente(\u00b0) = arctan(%) &nbsp;|&nbsp;\n          pente(%) = tan(\u00b0) \u00d7 100 &nbsp;|&nbsp;\n          ft\/NM = tan(\u00b0) \u00d7 6076\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- ===== MODULE 3 : VARIO ===== -->\n  <div class=\"module\" id=\"mod-vario\">\n    <div class=\"module-header\">\n      <span class=\"ico\">\u2198<\/span>\n      <div>\n        <h2>Vitesse de Descente (Vario)<\/h2>\n        <div class=\"sub\">ft\/min et ft\/NM en fonction de la vitesse sol<\/div>\n      <\/div>\n    <\/div>\n    <div class=\"module-body\">\n      <div class=\"fields-grid\">\n        <div class=\"field-group\">\n          <label>Vitesse sol (GS) <span class=\"unit\">(kt)<\/span><\/label>\n          <input type=\"number\" id=\"vr_gs\" min=\"0\" max=\"500\" placeholder=\"ex: 90\" step=\"1\">\n        <\/div>\n        <div class=\"field-group\">\n          <label>Angle de descente <span class=\"unit\">(\u00b0)<\/span><\/label>\n          <input type=\"number\" id=\"vr_angle\" min=\"0\" max=\"30\" placeholder=\"ex: 3.0\" step=\"0.1\">\n          <span class=\"hint\">ou pente ILS 3\u00b0<\/span>\n        <\/div>\n        <div class=\"field-group\">\n          <label style=\"opacity:0.5\">\u2013 OU \u2013<\/label>\n          <label>Pente <span class=\"unit\">(%)<\/span><\/label>\n          <input type=\"number\" id=\"vr_pct\" min=\"0\" max=\"50\" placeholder=\"ex: 5.2\" step=\"0.1\">\n          <span class=\"hint\">Laissez vide si angle d\u00e9j\u00e0 renseign\u00e9<\/span>\n        <\/div>\n      <\/div>\n      <div class=\"btn-row\">\n        <button class=\"btn-calc\" onclick=\"calcVario()\">\u25b6 Calculer<\/button>\n        <button class=\"btn-reset\" onclick=\"resetModule('mod-vario')\">\u21ba Reset<\/button>\n      <\/div>\n      <div class=\"results\" id=\"res-vario\">\n        <div class=\"results-title\">\ud83d\udcca R\u00e9sultats \u2013 Vario de descente<\/div>\n        <div class=\"result-grid\">\n          <div class=\"result-card accent\">\n            <div class=\"rlabel\">Vario requis<\/div>\n            <div class=\"rvalue\" id=\"r_vario_fpm\">\u2013<\/div>\n            <div class=\"runit\">ft\/min<\/div>\n          <\/div>\n          <div class=\"result-card good\">\n            <div class=\"rlabel\">Taux de descente<\/div>\n            <div class=\"rvalue\" id=\"r_vario_fnm\">\u2013<\/div>\n            <div class=\"runit\">ft\/NM<\/div>\n          <\/div>\n          <div class=\"result-card\">\n            <div class=\"rlabel\">Distance pour 1000 ft<\/div>\n            <div class=\"rvalue\" id=\"r_vario_dist\">\u2013<\/div>\n            <div class=\"runit\">NM<\/div>\n          <\/div>\n          <div class=\"result-card\">\n            <div class=\"rlabel\">Angle utilis\u00e9<\/div>\n            <div class=\"rvalue\" id=\"r_vario_angle\">\u2013<\/div>\n            <div class=\"runit\">\u00b0<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"formula-box\">\n          <strong>Formules :<\/strong>\n          Vario (ft\/min) = GS (kt) \u00d7 tan(angle\u00b0) \u00d7 101.3 &nbsp;|&nbsp;\n          ft\/NM = tan(angle\u00b0) \u00d7 6076\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- ===== MODULE 4 : TAS \/ VITESSE PROPRE ===== -->\n  <div class=\"module\" id=\"mod-tas\">\n    <div class=\"module-header\">\n      <span class=\"ico\">\ud83e\udded<\/span>\n      <div>\n        <h2>Vitesse Propre (TAS)<\/h2>\n        <div class=\"sub\">Correction densit\u00e9 &amp; temp\u00e9rature depuis l&rsquo;IAS<\/div>\n      <\/div>\n    <\/div>\n    <div class=\"module-body\">\n      <div class=\"fields-grid\">\n        <div class=\"field-group\">\n          <label>IAS (vitesse badin) <span class=\"unit\">(kt)<\/span><\/label>\n          <input type=\"number\" id=\"t_ias\" min=\"0\" max=\"500\" placeholder=\"ex: 100\" step=\"1\">\n        <\/div>\n        <div class=\"field-group\">\n          <label>Altitude pression <span class=\"unit\">(ft)<\/span><\/label>\n          <input type=\"number\" id=\"t_alt\" min=\"0\" max=\"60000\" placeholder=\"ex: 6000\" step=\"100\">\n          <span class=\"hint\">Altitude-pression (QNH = 1013)<\/span>\n        <\/div>\n        <div class=\"field-group\">\n          <label>Temp\u00e9rature ext\u00e9rieure <span class=\"unit\">(\u00b0C)<\/span><\/label>\n          <input type=\"number\" id=\"t_temp\" min=\"-80\" max=\"60\" placeholder=\"ex: +5\" step=\"1\">\n          <span class=\"hint\">OAT \u2013 temp\u00e9rature hors tout<\/span>\n        <\/div>\n      <\/div>\n      <div class=\"btn-row\">\n        <button class=\"btn-calc\" onclick=\"calcTAS()\">\u25b6 Calculer<\/button>\n        <button class=\"btn-reset\" onclick=\"resetModule('mod-tas')\">\u21ba Reset<\/button>\n      <\/div>\n      <div class=\"results\" id=\"res-tas\">\n        <div class=\"results-title\">\ud83d\udcca R\u00e9sultats \u2013 Vitesse propre<\/div>\n        <div class=\"result-grid\">\n          <div class=\"result-card accent\">\n            <div class=\"rlabel\">TAS (densit\u00e9 seule)<\/div>\n            <div class=\"rvalue\" id=\"r_tas_dens\">\u2013<\/div>\n            <div class=\"runit\">kt<\/div>\n          <\/div>\n          <div class=\"result-card good\">\n            <div class=\"rlabel\">TAS corrig\u00e9e temp\u00e9rature<\/div>\n            <div class=\"rvalue\" id=\"r_tas_temp\">\u2013<\/div>\n            <div class=\"runit\">kt<\/div>\n          <\/div>\n          <div class=\"result-card\">\n            <div class=\"rlabel\">Altitude densit\u00e9<\/div>\n            <div class=\"rvalue\" id=\"r_alt_dens\">\u2013<\/div>\n            <div class=\"runit\">ft<\/div>\n          <\/div>\n          <div class=\"result-card\">\n            <div class=\"rlabel\">Temp. std \u00e0 cette alt.<\/div>\n            <div class=\"rvalue\" id=\"r_tas_isa\">\u2013<\/div>\n            <div class=\"runit\">\u00b0C (ISA)<\/div>\n          <\/div>\n          <div class=\"result-card\">\n            <div class=\"rlabel\">\u00c9cart ISA (\u0394T)<\/div>\n            <div class=\"rvalue\" id=\"r_tas_dt\">\u2013<\/div>\n            <div class=\"runit\">\u00b0C<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"formula-box\">\n          <strong>M\u00e9thode :<\/strong>\n          T_ISA = 15 \u2212 1.98 \u00d7 (alt\/1000) &nbsp;|&nbsp;\n          Alt_densit\u00e9 = alt + 118.8 \u00d7 (OAT \u2212 T_ISA) &nbsp;|&nbsp;\n          TAS \u2248 IAS \u00d7 (1 + 0.02 \u00d7 alt\/1000) &nbsp;|&nbsp;\n          TAS_temp = IAS \u00d7 \u221a(288.15 \/ (OAT + 273.15)) \u00d7 (P_std\/P)\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- ===== MODULE 5 : ALTITUDE VRAIE ===== -->\n  <div class=\"module\" id=\"mod-altv\">\n    <div class=\"module-header\">\n      <span class=\"ico\">\ud83d\udd3a<\/span>\n      <div>\n        <h2>Altitude Vraie Corrig\u00e9e<\/h2>\n        <div class=\"sub\">Correction temp\u00e9rature sur l&rsquo;altitude lue<\/div>\n      <\/div>\n    <\/div>\n    <div class=\"module-body\">\n      <div class=\"fields-grid\">\n        <div class=\"field-group\">\n          <label>Altitude lue <span class=\"unit\">(ft)<\/span><\/label>\n          <input type=\"number\" id=\"a_alt\" min=\"0\" max=\"60000\" placeholder=\"ex: 5000\" step=\"100\">\n          <span class=\"hint\">Altitude indiqu\u00e9e par l&rsquo;altim\u00e8tre<\/span>\n        <\/div>\n        <div class=\"field-group\">\n          <label>Temp\u00e9rature ext\u00e9rieure <span class=\"unit\">(\u00b0C)<\/span><\/label>\n          <input type=\"number\" id=\"a_temp\" min=\"-80\" max=\"60\" placeholder=\"ex: -10\" step=\"1\">\n          <span class=\"hint\">OAT \u2013 temp\u00e9rature hors tout au sol ou en vol<\/span>\n        <\/div>\n        <div class=\"field-group\">\n          <label>Altitude a\u00e9rodrome <span class=\"unit\">(ft)<\/span><\/label>\n          <input type=\"number\" id=\"a_aero\" min=\"0\" max=\"15000\" placeholder=\"ex: 0\" step=\"50\" value=\"0\">\n          <span class=\"hint\">Altitude de l&rsquo;a\u00e9ro de r\u00e9f\u00e9rence (METAR)<\/span>\n        <\/div>\n      <\/div>\n      <div class=\"btn-row\">\n        <button class=\"btn-calc\" onclick=\"calcAltV()\">\u25b6 Calculer<\/button>\n        <button class=\"btn-reset\" onclick=\"resetModule('mod-altv')\">\u21ba Reset<\/button>\n      <\/div>\n      <div class=\"results\" id=\"res-altv\">\n        <div class=\"results-title\">\ud83d\udcca R\u00e9sultats \u2013 Altitude vraie<\/div>\n        <div class=\"result-grid\">\n          <div class=\"result-card accent\">\n            <div class=\"rlabel\">Altitude vraie corrig\u00e9e<\/div>\n            <div class=\"rvalue\" id=\"r_altv\">\u2013<\/div>\n            <div class=\"runit\">ft<\/div>\n          <\/div>\n          <div class=\"result-card good\">\n            <div class=\"rlabel\">Correction appliqu\u00e9e<\/div>\n            <div class=\"rvalue\" id=\"r_altv_corr\">\u2013<\/div>\n            <div class=\"runit\">ft<\/div>\n          <\/div>\n          <div class=\"result-card\">\n            <div class=\"rlabel\">Temp\u00e9rature ISA \u00e0 cette alt.<\/div>\n            <div class=\"rvalue\" id=\"r_altv_isa\">\u2013<\/div>\n            <div class=\"runit\">\u00b0C<\/div>\n          <\/div>\n          <div class=\"result-card warn\">\n            <div class=\"rlabel\">Terrain r\u00e9el (plus bas si froid)<\/div>\n            <div class=\"rvalue\" id=\"r_altv_warn\">\u2013<\/div>\n            <div class=\"runit\">\u26a0 vigilance obstacle<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"formula-box\">\n          <strong>M\u00e9thode OACI (r\u00e8gle de 4\u00b0C) :<\/strong>\n          Correction = Altitude_lue \u00d7 (ISA \u2212 OAT) \/ (ISA + 273) \u00d7 4 &nbsp;|&nbsp;\n          Altitude_vraie = Alt_lue + Correction &nbsp;|&nbsp;\n          Si T < ISA : altitude vraie &lt; altitude lue \u2192 terrain PLUS PROCHE\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n<\/div><!-- \/container -->\n\n<div style=\"background:var(--bleu-acriv);color:white;text-align:center;padding:14px;font-size:12px;opacity:0.9\">\n  ACRIV \u00b7 A\u00e9roclub Rennes Ille-et-Vilaine \u00b7 \n  <a href=\"https:\/\/acriv.org\/WP\/\" style=\"color:#b5d4f4\">acriv.org<\/a> \u00b7 \n  Calculs indicatifs \u2013 V\u00e9rifiez toujours avec les publications officielles\n<\/div>\n\n<script>\n\/\/ \u2500\u2500\u2500 UTILITAIRES \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\nfunction toRad(d) { return d * Math.PI \/ 180; }\nfunction toDeg(r) { return r * 180 \/ Math.PI; }\nfunction norm360(a) { return ((a % 360) + 360) % 360; }\nfunction fmt(v, dec) { return isNaN(v) ? '\u2013' : v.toFixed(dec ?? 1); }\n\nfunction resetModule(id) {\n  const mod = document.getElementById(id);\n  mod.querySelectorAll('input[type=number]').forEach(i => i.value = '');\n  mod.querySelectorAll('.results').forEach(r => r.classList.remove('visible'));\n}\n\n\/\/ \u2500\u2500\u2500 MODULE 1 : VENT \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\nfunction calcVent() {\n  const dir = parseFloat(document.getElementById('v_dir').value);\n  const W   = parseFloat(document.getElementById('v_force').value);\n  const cap = parseFloat(document.getElementById('v_cap').value);\n  if (isNaN(dir) || isNaN(W) || isNaN(cap)) { alert('Remplissez tous les champs.'); return; }\n\n  const alpha = toRad(norm360((dir + 180) - cap));\n  const Ve = W * Math.cos(alpha);\n  const Vt = W * Math.sin(alpha);\n  const angleVentRoute = norm360((dir + 180) - cap);\n  const derive = toDeg(Math.asin(Math.min(1, Math.abs(Vt) \/ Math.max(W, 0.1))));\n\n  document.getElementById('r_ve').textContent = fmt(Ve, 1) + ' kt';\n  document.getElementById('r_vt').textContent = fmt(Math.abs(Vt), 1) + ' kt';\n  document.getElementById('r_angle').textContent = fmt(angleVentRoute > 180 ? 360 - angleVentRoute : angleVentRoute, 0) + '\u00b0';\n  document.getElementById('r_derive').textContent = fmt(derive, 1) + '\u00b0';\n\n  const rcVt = document.getElementById('rc_vt');\n  const absVt = Math.abs(Vt);\n  rcVt.className = 'result-card ' + (absVt > 15 ? 'warn' : absVt > 8 ? 'accent' : 'good');\n\n  document.getElementById('res-vent').classList.add('visible');\n}\n\n\/\/ \u2500\u2500\u2500 MODULE 2 : PENTE \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\nlet penteMode = 'pct';\nfunction setPenteMode(m) {\n  penteMode = m;\n  document.getElementById('pente-field-pct').style.display = m === 'pct' ? '' : 'none';\n  document.getElementById('pente-field-deg').style.display = m === 'deg' ? '' : 'none';\n  document.getElementById('pente-toggle-pct').className = 'toggle-btn' + (m === 'pct' ? ' active' : '');\n  document.getElementById('pente-toggle-deg').className = 'toggle-btn' + (m === 'deg' ? ' active' : '');\n  document.getElementById('res-pente').classList.remove('visible');\n}\nfunction calcPente() {\n  let deg, pct;\n  if (penteMode === 'pct') {\n    pct = parseFloat(document.getElementById('p_pct').value);\n    if (isNaN(pct)) { alert('Entrez la pente en %.'); return; }\n    deg = toDeg(Math.atan(pct \/ 100));\n  } else {\n    deg = parseFloat(document.getElementById('p_deg').value);\n    if (isNaN(deg)) { alert('Entrez la pente en \u00b0.'); return; }\n    pct = Math.tan(toRad(deg)) * 100;\n  }\n  const ftNM = Math.tan(toRad(deg)) * 6076;\n\n  document.getElementById('r_pente1').textContent = fmt(deg, 2) + '\u00b0';\n  document.getElementById('r_pente2').textContent = fmt(pct, 2) + '%';\n  document.getElementById('r_pente3').textContent = fmt(ftNM, 0) + ' ft\/NM';\n\n  if (penteMode === 'pct') {\n    document.getElementById('pente-rl1').textContent = 'Pente en degr\u00e9s';\n    document.getElementById('pente-rl2').textContent = 'Pente en % (v\u00e9rif.)';\n    document.getElementById('pente-ru1').textContent = '\u00b0';\n    document.getElementById('pente-ru2').textContent = '% (confirm\u00e9)';\n  } else {\n    document.getElementById('pente-rl1').textContent = 'Pente en degr\u00e9s (v\u00e9rif.)';\n    document.getElementById('pente-rl2').textContent = 'Pente en %';\n    document.getElementById('pente-ru1').textContent = '\u00b0 (confirm\u00e9)';\n    document.getElementById('pente-ru2').textContent = '%';\n  }\n  document.getElementById('res-pente').classList.add('visible');\n}\n\n\/\/ \u2500\u2500\u2500 MODULE 3 : VARIO \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\nfunction calcVario() {\n  const gs    = parseFloat(document.getElementById('vr_gs').value);\n  let angle   = parseFloat(document.getElementById('vr_angle').value);\n  const pct   = parseFloat(document.getElementById('vr_pct').value);\n  if (isNaN(gs)) { alert('Entrez la vitesse sol.'); return; }\n  if (!isNaN(pct) && isNaN(angle)) angle = toDeg(Math.atan(pct \/ 100));\n  if (isNaN(angle)) { alert('Entrez l\\'angle de descente (\u00b0) ou la pente (%).'); return; }\n\n  const gsFtMin = gs * 101.3;\n  const varioFpm = gsFtMin * Math.tan(toRad(angle));\n  const ftNm = Math.tan(toRad(angle)) * 6076;\n  const dist1000 = 1000 \/ ftNm;\n\n  document.getElementById('r_vario_fpm').textContent = fmt(varioFpm, 0) + ' ft\/min';\n  document.getElementById('r_vario_fnm').textContent = fmt(ftNm, 0) + ' ft\/NM';\n  document.getElementById('r_vario_dist').textContent = fmt(dist1000, 2) + ' NM';\n  document.getElementById('r_vario_angle').textContent = fmt(angle, 1) + '\u00b0';\n  document.getElementById('res-vario').classList.add('visible');\n}\n\n\/\/ \u2500\u2500\u2500 MODULE 4 : TAS \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\nfunction calcTAS() {\n  const ias  = parseFloat(document.getElementById('t_ias').value);\n  const alt  = parseFloat(document.getElementById('t_alt').value);\n  const oat  = parseFloat(document.getElementById('t_temp').value);\n  if (isNaN(ias) || isNaN(alt) || isNaN(oat)) { alert('Remplissez tous les champs.'); return; }\n\n  const tisa = 15 - (alt \/ 1000) * 1.98;\n  const dt   = oat - tisa;\n  \/\/ Altitude densit\u00e9 (OACI)\n  const altDens = alt + 118.8 * dt;\n  \/\/ TAS correction densit\u00e9 seule (m\u00e9thode 2% \/ 1000ft)\n  const tasDens = ias * (1 + 0.02 * alt \/ 1000);\n  \/\/ TAS corrig\u00e9e temp\u00e9rature (m\u00e9thode thermodynamique simplifi\u00e9e)\n  const tasTemp = ias * Math.sqrt((oat + 273.15) \/ (tisa + 273.15)) \/ (1 - alt \/ 145440);\n\n  document.getElementById('r_tas_dens').textContent = fmt(tasDens, 1) + ' kt';\n  document.getElementById('r_tas_temp').textContent = fmt(tasTemp, 1) + ' kt';\n  document.getElementById('r_alt_dens').textContent = fmt(altDens, 0) + ' ft';\n  document.getElementById('r_tas_isa').textContent = fmt(tisa, 1) + '\u00b0C';\n  document.getElementById('r_tas_dt').textContent = (dt >= 0 ? '+' : '') + fmt(dt, 1) + '\u00b0C';\n  document.getElementById('res-tas').classList.add('visible');\n}\n\n\/\/ \u2500\u2500\u2500 MODULE 5 : ALTITUDE VRAIE \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\nfunction calcAltV() {\n  const altLue  = parseFloat(document.getElementById('a_alt').value);\n  const oat     = parseFloat(document.getElementById('a_temp').value);\n  const altAero = parseFloat(document.getElementById('a_aero').value) || 0;\n  if (isNaN(altLue) || isNaN(oat)) { alert('Remplissez altitude et temp\u00e9rature.'); return; }\n\n  const altMoy = (altLue + altAero) \/ 2;\n  const tisa   = 15 - (altMoy \/ 1000) * 1.98;\n  \/\/ M\u00e9thode OACI simplifi\u00e9e : correction = alt \u00d7 (tisa - oat) \/ (tisa + 273.15) * 4\n  \/\/ Plus pr\u00e9cise : facteur d'\u00e9l\u00e9vation de Jepp\n  const correction = altLue * ((tisa - oat) \/ (tisa + 273.15)) * 4;\n  const altVraie   = altLue + correction;\n\n  document.getElementById('r_altv').textContent = fmt(altVraie, 0) + ' ft';\n  document.getElementById('r_altv_corr').textContent = (correction >= 0 ? '+' : '') + fmt(correction, 0) + ' ft';\n  document.getElementById('r_altv_isa').textContent = fmt(tisa, 1) + '\u00b0C';\n\n  const warn = oat < tisa\n    ? 'Alt. vraie INF\u00c9RIEURE \u2013 terrain plus proche !'\n    : 'Alt. vraie sup\u00e9rieure ou \u00e9gale \u00e0 l\\'indiqu\u00e9e';\n  document.getElementById('r_altv_warn').textContent = warn;\n  document.getElementById('r_altv_warn').parentElement.className = oat < tisa\n    ? 'result-card warn' : 'result-card good';\n\n  document.getElementById('res-altv').classList.add('visible');\n}\n<\/script>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Usage p\u00e9dagogique \u2014 Toujours v\u00e9rifier les donn\u00e9es officielles \u2708 Computer ACRIV \u2013 Calculs Navigation Modules de calcul a\u00e9ronautique PPL \/ LAPL Bretagne \u00b7 France \u00b7 VFR \ud83d\udca8 Calcul du Vent Vent effectif (axial) &amp; vent traversier (cross-wind) Direction du vent (\u00b0V \u2013 d&rsquo;o\u00f9 il vient) Convention METAR : direction d&rsquo;o\u00f9 vient le vent Force du vent (kt) Cap de l&rsquo;avion<\/p>\n<p><a class=\"more-link\" href=\"https:\/\/acriv.org\/WP\/calculs-aeronautiques\/\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2947","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/acriv.org\/WP\/wp-json\/wp\/v2\/pages\/2947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/acriv.org\/WP\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/acriv.org\/WP\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/acriv.org\/WP\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/acriv.org\/WP\/wp-json\/wp\/v2\/comments?post=2947"}],"version-history":[{"count":2,"href":"https:\/\/acriv.org\/WP\/wp-json\/wp\/v2\/pages\/2947\/revisions"}],"predecessor-version":[{"id":2949,"href":"https:\/\/acriv.org\/WP\/wp-json\/wp\/v2\/pages\/2947\/revisions\/2949"}],"wp:attachment":[{"href":"https:\/\/acriv.org\/WP\/wp-json\/wp\/v2\/media?parent=2947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}