Skip to content

Planning Form he

Marco edited this page Oct 15, 2026 · 14 revisions

🇬🇧 English

טופס תכנון טיסה

גיליון משולש הרוח: מהירות אווירית מצוינת נכנסת, כיוון מצפני יוצא, שורה לכל קטע. זהו הטופס שתרגיל ניווט CVFR מבקש, וזה גם הטופס שעליו מחשבים יציאה אמיתית.

נפתח בכפתור 📐 טופס תכנון טיסה בתפריט דפיות. כמו תכנית הטיסה הוא צריך מסלול: בלי קטעים הוא אומר שאין עדיין קטעים ושיש להציב לפחות שתי נקודות, ולא נפתח.

טופס תכנון הטיסה

זו אינה תוכנית הטיסה

שני מסמכים שונים, ושניהם נשמרים.

תוכנית טיסה טופס תכנון טיסה
מה זה המסלול כפי שטסים אותו: כיוון מגנטי, מרחק, זמן, דלק החשבון שבין מהירות מצוינת לכיוון מצפני
רוח אין, בכוונה — תוכנית מודפסת לא תשתנה בגלל משיכת מזג אוויר כל העניין
איפה משתמשים באוויר על השולחן, לפני הטיסה

הכלל הזה — שתוכנית הטיסה נטולת רוח — הוא בדיוק הסיבה שהטופס הזה קיים בנפרד.

23 העמודות

קטע · ממקום · למקום · מ.א.מ · גובה לחץ · טמפ · מ.א.א · רוח עוצמה · רוח כיוון · נתיב אמיתי · סחיפה · כיוון אמיתי · נטייה מגנטית · כיוון מגנטי · סטייה מצפנית · כיוון מצפני · מ/ק · מרחק · זמן · זמן מצטבר · תצרוכת דלק · דלק נצרך · דלק מצטבר

בסדר הזה ובניסוח הזה, כי זה הסדר והניסוח של הגיליון שהתרגיל מחלק. שורות נסיקה בירוק, שורות הנמכה בענבר, כדי ששלושת סוגי הקטעים ייקראו במבט אחד.

החשבון, ולמה כל כלל הוא הכלל

כל אחד מאלה משחזר גיליון תשובות שפורסם. היכן שקיימת חלופה מתבקשת, היא מצוינת כאן — כי היא אינה משחזרת אותו.

מהירות אווירית אמיתית היא מ.א.מ חלקי √σ, כש-σ הוא יחס הצפיפות בגובה הצפיפות של הקטע:

ISA = 15 − 2 × PA / 1000          (°C)
DA  = PA + 120 × (T − ISA)
σ   = (1 − 6.8756e−6 × DA) ^ 4.2561

כאשר PA הוא גובה הלחץ (רגל), T הטמפרטורה (°C), ISA הטמפרטורה התקנית באותו גובה, ו-DA גובה הצפיפות.

שתי מעלות לכל 1000 רגל, ולא 1.98 הפיזיקלי: זה המספר שהתרגיל עובד לפיו וזה שאפשר לבדוק בראש. השניים נפרדים בעשירית הראשונה של מ.א.א במקום אחד בגיליון הייחוס — 6,000 רגל, שבו 1.98 נותן 98.24 ו-2 נותן 98.26, כלומר 98.2 מול 98.3. תיקון הגובה שבטיסה נשאר על 1.98; טסים לפיו, לא בודקים אותו ביד.

איפה כל קטע קורא את האוויר שלו. הנסיקה לוקחת 2/3 מהגובה שנצבר, מעל השדה שממנו יצאה; ההנמכה לוקחת 1/2 מהגובה שאבד, מעל השדה שאליו נוחתים. שני השברים הם שדות בטופס, באחוזים, ושניהם מתחילים במספרי התרגיל.

טבלת המטאורולוגיה וטבלת הסטיות נקראות בערך הקרוב ביותר, לעולם לא באינטרפולציה. זו אינה קירוב: בגיליון הייחוס כיוון מגנטי 050 לוקח את הסטייה של הערך 060 ומדפיס 049, בעוד שאינטרפולציה בין 030 ל-060 נותנת 048. תיקו נופל לשורה הנמוכה, כדי שהבחירה תהיה חד-משמעית.

הסחיפה היא הצד שאליו הרוח דוחפת, כלומר הסימן ההפוך לזווית התיקון שהאפליקציה מחשבת — והיא נגזרת משתי העמודות שלצידה, כך שהגיליון מסתדר עם עצמו: נתיב פחות סחיפה שווה כיוון אמיתי. הסטייה נכתבת כמו הנטייה (2E ולא 2+), כי מזרח מחסיר בשתיהן והטייס מיישם אותן באותה דרך.

נקודת TOC אחת. הנסיקה משדה היציאה היא הרמפה היחידה: זה המקום היחיד שבו המטוס באמת עוזב גובה ידוע. קטע מאוחר יותר שתוכנן גבוה או נמוך יותר נטוס בגובה שלו ואינו מקבל רמפה משלו, כי הטייס אמר באיזה גובה כל קטע נטוס — לא היכן בתוכו הגובה משתנה — וגיליון שמנחש מדפיס TOC בכל נקודת ציון. ההנמכה אל שדה הנחיתה היא הרמפה שבקצה השני.

נסיקה והנמכה מוגבלות בזמן, לא במרחק: שיעור וגובה. המרחק שלהן הוא מה שמהירות הקרקע מספיקה לעשות — ולכן נסיקה יכולה לחרוג מהקטע הראשון ולהמשיך על הנתיב של הקטע הבא.

מה הוא אומר כשאי אפשר לחשב

גיליון קצר עדיין מסתדר עם עצמו, ואינו אומר דבר על הסיבה. לכן:

  • רוח צידית חזקה מהמהירות מדפיסה אין פתרון בתא מהירות הקרקע;
  • נסיקה בלי שיעור נסיקה מדפיסה אין שיעור;
  • הנמכה שאינה נכנסת במסלול מסמנת את השורה האחרונה, כי המטוס מגיע מעל גובה השדה;

והערה מתחת לגיליון אומרת מה מהם קרה, בצבע שבו האפליקציה מזהירה.

טבלת המטאורולוגיה

מוקלדת, כי תרגיל מחלק אחת כזו. ממוינת לפי גובה, איך שלא תגיע.

הוספת גובה מוסיפה גובה שהטיסה הזו באמת קוראת בו את האוויר — הראשון מבין הגבהים שהטופס מבקש מהתחזית ואין לו עדיין שורה, ורק כשהטיסה מכוסה היא חוזרת לאלף רגל מעל הגבוה ביותר. הטמפרטורה בשורה החדשה היא ISA לאותו גובה ולא 15 מעלות אחידות: כל מהירות אוויר אמיתית בטופס יוצאת מהעמודה הזו, ומספר שגוי בה הוא מספר שגוי בכל מקום. הרוח נשארת רגועה, וכך אינה טוענת דבר. הסמן נוחת בגובה של השורה החדשה, והכפתור אומר איזה גובה הוא עומד להוסיף.

משיכת תחזית ממלאת אותה מאותו מקור Open-Meteo שבו משתמשות שכבת הרוח וחלונית גובה הצפיפות — באמצע המסלול, בשעה שאליה מכוון שעון ההסתכלות קדימה המשותף, ובדיוק לגבהים שהגיליון קורא בהם את האוויר שלו (גובה הלחץ של כל שורה, עם גובה אחד מעל ומתחת כדי שלחיפוש השורה הקרובה תמיד יהיה שכן). תכנון נעשה עבור יציאה שטרם קרתה — ולכן המחוון, ולא "עכשיו", קובע.

היא ממלאת את הטבלה, אף פעם לא את החשבון ישירות: מה שנמשך נראה, ניתן לעריכה ונשמר, וכל תא טמפרטורה ורוח אומר ב-tooltip מאיפה הגיע — מהטבלה שהוקלדה, מרוח המסלול, או מהאטמוספירה התקנית. תחזית שהטייס אינו יכול לראות או לתקן אינה נתוני תכנון. משיכה שנכשלה משאירה את הטבלה בדיוק כמו שהייתה.

טבלת הסטיות

שנים־עשר סימנים בכיוונים של 30 מעלות שבהם מכיילים מצפן, בפריסה של שני זוגות עמודות כפי שהיא מודפסת. רק עמודת "טוס" מוקלדת, בשלוש ספרות כמו העמודה המגנטית שלצידה, והיא נשארת על המעגל: מקלידים 364 ומקבלים 004, מקישים למעלה מ-359 ומקבלים 000. אין מקסימום בתיבה, כי מקסימום היה עוצר את החיצים ב-359 והמצפן אינו נעצר.

הסטייה מתחילה באפס בכל שורה: טבלה מומצאת נראית בדיוק כמו נתונים. לכל תיבת "טוס" יש ↺ משלה, דולק רק כשלכיוון הזה יש סטייה, וזה שליד כותרת הטבלה מנקה את כולה בחזרה ל"לטוס את הכיוון שנמסר". ריקון תיבה עושה אותו דבר לשורה שלה.

מה הטופס ממלא בשבילכם

שדה מאיפה
גובה שדה יציאה / נחיתה מאגר שדות התעופה, כשהקצה הוא שדה שאנחנו מכירים
גובה שיוט מהקטעים של המסלול עצמו — אין שדה כזה, כי שני מקומות לקבוע גובה אחד הם שני מספרים שיסתרו זה את זה
נטייה מגנטית magneticVariationDeg של האפליקציה, בסימן הפוך: האפליקציה סופרת מגנטי = אמיתי + נטייה, ולכן 5- שלה הוא 5E על גיליון
תצרוכת בשיוט פרופיל המטוס

ערך שהוקלד הוא החלטה, והוא שורד שינוי מסלול. ה-↺ שליד השדה מחזיר אותו למה שהאפליקציה יודעת; הוא תמיד שם, מעומעם כשאין מה להחזיר, וריקון התיבה עושה אותו דבר.

לנסות: התרגיל הרצליה ← ראש פינה

קובץ התרגיל — המסלול (5 נקודות, קטעים ב-6,000 רגל), טבלת המטאורולוגיה, טבלת הסטיות, נטייה 4E, ומספרי הנסיקה וההנמכה שהגיליון קובע. פותחים דרך ייבוא/ייצוא ← פתיחה: המסלול נוחת על המפה עם הגבהים שלו, והטופס מתמלא.

איך לשמור. GitHub מגיש את הקישור כטקסט רגיל, ולכן הדפדפן מציג אותו במקום להוריד — לחיצה ימנית על הקישור ← שמירת קישור בשם…, או לפתוח ולשמור את הדף. אפשר גם להעתיק את התוכן מהבלוק שלמטה לקובץ שמסתיים ב-.json; האפליקציה קוראת את הטקסט, לא את השם.

הקובץ, להעתקה
{
  "waypoints": [
    {
      "lat": 32.17944,
      "lng": 34.83444,
      "name": "LLHZ"
    },
    {
      "lat": 32.5,
      "lng": 35,
      "name": "א"
    },
    {
      "lat": 32.66667,
      "lng": 35.5,
      "name": "ב"
    },
    {
      "lat": 32.96667,
      "lng": 35.16667,
      "name": "ג"
    },
    {
      "lat": 32.98111,
      "lng": 35.57194,
      "name": "LLIB"
    }
  ],
  "legs": [
    {
      "inboundAltitude": 6000,
      "outboundAltitude": 6000,
      "flightSpeed": 90,
      "outboundSpeed": 90,
      "inLabel": {
        "a": 0,
        "_default": 1,
        "_m": 1
      },
      "outLabel": {
        "a": 0,
        "_default": 1,
        "_m": 1
      },
      "speedAuto": 1,
      "retSpeedAuto": 1,
      "cumLabel": {
        "a": 0,
        "_default": 1,
        "_m": 1
      },
      "cumLabelRet": {
        "a": 0,
        "_default": 1,
        "_m": 1
      }
    },
    {
      "inboundAltitude": 6000,
      "outboundAltitude": 6000,
      "flightSpeed": 90,
      "outboundSpeed": 90,
      "inLabel": {
        "a": 0,
        "_default": 1,
        "_m": 1
      },
      "outLabel": {
        "a": 0,
        "_default": 1,
        "_m": 1
      },
      "speedAuto": 1,
      "retSpeedAuto": 1,
      "cumLabel": {
        "a": 0,
        "_default": 1,
        "_m": 1
      },
      "cumLabelRet": {
        "a": 0,
        "_default": 1,
        "_m": 1
      }
    },
    {
      "inboundAltitude": 6000,
      "outboundAltitude": 6000,
      "flightSpeed": 90,
      "outboundSpeed": 90,
      "inLabel": {
        "a": 0,
        "_default": 1,
        "_m": 1
      },
      "outLabel": {
        "a": 0,
        "_default": 1,
        "_m": 1
      },
      "speedAuto": 1,
      "retSpeedAuto": 1,
      "cumLabel": {
        "a": 0,
        "_default": 1,
        "_m": 1
      },
      "cumLabelRet": {
        "a": 0,
        "_default": 1,
        "_m": 1
      }
    },
    {
      "inboundAltitude": 6000,
      "outboundAltitude": 6000,
      "flightSpeed": 90,
      "outboundSpeed": 90,
      "inLabel": {
        "a": 0,
        "_default": 1,
        "_m": 1
      },
      "outLabel": {
        "a": 0,
        "_default": 1,
        "_m": 1
      },
      "speedAuto": 1,
      "retSpeedAuto": 1,
      "cumLabel": {
        "a": 0,
        "_default": 1,
        "_m": 1
      },
      "cumLabelRet": {
        "a": 0,
        "_default": 1,
        "_m": 1
      }
    }
  ],
  "notes": [],
  "title": "Herzliya - Rosh Pina (CVFR exercise)",
  "navlog": {
    "cruiseAltFt": 6000,
    "variationDeg": 4,
    "depElevFt": 100,
    "destElevFt": 900,
    "cas": {
      "climb": 70,
      "cruise": 90,
      "descent": 100
    },
    "rates": {
      "climbFpm": 800,
      "descentFpm": 1000
    },
    "fuel": {
      "climbGal": 7,
      "cruiseGph": 8
    },
    "met": [
      {
        "alt": 2000,
        "dir": 315,
        "kt": 17,
        "tempC": 10
      },
      {
        "alt": 3000,
        "dir": 290,
        "kt": 17,
        "tempC": 8
      },
      {
        "alt": 4000,
        "dir": 300,
        "kt": 20,
        "tempC": 6
      },
      {
        "alt": 5000,
        "dir": 300,
        "kt": 22,
        "tempC": 4
      },
      {
        "alt": 6000,
        "dir": 320,
        "kt": 25,
        "tempC": 2
      },
      {
        "alt": 7000,
        "dir": 325,
        "kt": 27,
        "tempC": 0
      }
    ],
    "deviation": [
      {
        "mh": 0,
        "ch": 358
      },
      {
        "mh": 30,
        "ch": 27
      },
      {
        "mh": 60,
        "ch": 59
      },
      {
        "mh": 90,
        "ch": 90
      },
      {
        "mh": 120,
        "ch": 122
      },
      {
        "mh": 150,
        "ch": 152
      },
      {
        "mh": 180,
        "ch": 180
      },
      {
        "mh": 210,
        "ch": 209
      },
      {
        "mh": 240,
        "ch": 241
      },
      {
        "mh": 270,
        "ch": 272
      },
      {
        "mh": 300,
        "ch": 300
      },
      {
        "mh": 330,
        "ch": 332
      }
    ]
  }
}

זהו הגיליון שמולו נבדק החשבון כאן, ולכן מה שיוצא אמור להתאים לתשובות שפורסמו תא מול תא — 74.2 / 98.3 / 105.2 מ.א.א, גבהי לחץ 4033 ו-3450, TOC בתוך הקטע הראשון, ו-14.4 גלון בתחתית.

תרגילים כקבצים

תרגיל הוא קובץ: מסלול, טבלת מטאורולוגיה, טבלת סטיות וסט הנחות. הוא נפתח דרך הפתיחה של האפליקציה עצמה, ב"ייבוא/ייצוא" — דלת אחת, מקום אחד לחפש בו. קובץ שנושא בלוק navlog מזוהה שם, ואם הוא גם עובר את בדיקת המסלול, המסלול נטען בנתיב המסלול הרגיל — כך שהתוכנית נוחתת שלמה, עם הקטעים והגבהים שלה.

שמירה לקובץ כותבת את אותו מבנה בחזרה.

זה JSON של מישהו אחר, ולכן הוא נקרא ככזה: נקודות ציון חייבות להיות נקודות ציון, טבלת המטאורולוגיה מוגבלת ל-60 גבהים וטבלת הסטיות ל-72 ערכים, שמות נחתכים, וקובץ שאין בו לא מסלול ולא הנחה אחת נדחה בהודעה במקום להיטען חצי. החלפת מסלול משורטט נשאלת קודם — ותשובה שלילית עדיין מביאה את טבלת המטאורולוגיה ואת טבלת הסטיות.

החלון

נגרר מכותרתו ונזכר איפה הושם (navaid.navlogPos), ניתן לשינוי גודל מהפינה, וחוזר אחרי רענון או החלפת שפה כמו כל חלון מפה אחר. פתיחת תוכנית הטיסה סוגרת אותו: מפה אחת על המסך.

הוא נפתח ברוחב של הטופס ולא של המסך, והטופס נגלל בתוך החלון בזמן שהכותרת וה-✕ שלה נשארות במקומן. 23 העמודות נגללות לצדדים במסך צר, עם צל בקצה שמעבר לו יש עוד טבלה — פס הגלילה בטלפון מופיע רק בזמן תנועה, ובלעדיו הטופס פשוט נראה חתוך.

המספרים מיושרים לקצה ולא למרכז, והעמודות מחולקות בקווים לשלושת הדברים שהן: מה שנמסר לכם (עד מ.א.א), משולש הרוח שנעשה עליו (עד כיוון מצפני), ומה שיוצא (מ-מ/ק). כל כותרת מקוצרת — נתיב אמיתי, תצרוכת דלק, סטייה — מציגה את שמה המלא בהצבעה.

מפתחות כוונון

מפתח ברירת מחדל מה הוא עושה
featureNavLog true להציע את הטופס בכלל. ה-gist יכול למשוך אותו
magneticVariationDeg -5 הנטייה שממנה הטופס מתחיל

למתחזקים

החשבון נמצא ב-docs/app/core.js — navLogRows() והפונקציות הטהורות סביבה (tasFromCas, navLogSegmentAltFt, navLogMetRow, navLogDeviation, navLogHeadings), בלי DOM ובלי אחסון. החלון הוא docs/app/navlog.js. navaid.navlog מחזיק רק את מה שהוקלד: כל השאר נגזר מחדש, וזה מה שמאפשר לגובה שדה שלא נגעו בו לעקוב אחרי המסלול.

tests/navlog-golden.spec.js משחזר תרגיל שפורסם תא אחר תא מתוך tests/fixtures/navlog-herzliya-rosh-pina.json; navlog-rules.spec.js מכסה כל כלל ואת המקרים שמסלול אמיתי אינו מגיע אליהם; navlog-view.spec.js מפעיל את החלון.

NavAid · 🇮🇱 עברית

For pilots

For developers


🇮🇱 עברית

לטייסים

למפתחים


🌐 Live 🧪 Staging 📦 Repo 💡 Ideas / bugs

Clone this wiki locally