@fboes/aerofly-patterns
Advanced tools
Comparing version 1.1.2 to 1.1.3
# Changelog | ||
## 1.1.3 | ||
- Added crosswind component calculator | ||
- Changed runway length output to meters | ||
## 1.1.2 | ||
@@ -4,0 +9,0 @@ |
@@ -19,12 +19,12 @@ # Landing Challenges: Key West / Key West Intl (KEYW) | ||
| :-: | ---------- | ---------: | ------------ | --------------- | ---------: | ------- | ------------------- | | ||
| #1 | 2024-05-02 | 08:00 | 50° @ 9 kn | CLR | 15 SM | 09 (RP) | ↙ To the south-west | | ||
| #2 | 2024-05-01 | 09:00 | 40° @ 6 kn | SCT @ 1,400 ft | 15 SM | 09 (RP) | ↘ To the south-east | | ||
| #3 | 2024-04-29 | 11:00 | 110° @ 17 kn | FEW @ 3,700 ft | 15 SM | 09 (RP) | → To the east | | ||
| #4 | 2024-04-28 | 12:00 | 80° @ 14 kn | OVC @ 3,500 ft | 5 SM | 09 (RP) | ↘ To the south-east | | ||
| #5 | 2024-04-27 | 13:00 | 100° @ 19 kn | SCT @ 2,600 ft | 15 SM | 09 (RP) | ↖ To the north-west | | ||
| #6 | 2024-04-25 | 15:00 | 120° @ 12 kn | CLR | 15 SM | 09 (RP) | ↗ To the north-east | | ||
| #7 | 2024-04-24 | 16:00 | 100° @ 11 kn | CLR | 15 SM | 09 (RP) | ← To the west | | ||
| #8 | 2024-04-23 | 17:00 | 90° @ 13 kn | SCT @ 4,600 ft | 15 SM | 09 (RP) | ↖ To the north-west | | ||
| #9 | 2024-04-22 | 19:00 | 0° @ 0 kn | FEW @ 2,800 ft | 15 SM | 09 (RP) | ↑ To the north | | ||
| #10 | 2024-04-21 | 20:00 | 80° @ 7 kn | CLR | 15 SM | 09 (RP) | ↗ To the north-east | | ||
| #1 | 2024-05-03 | 08:00 | 90° @ 11 kn | CLR | 15 SM | 09 (RP) | ↗ To the north-east | | ||
| #2 | 2024-05-02 | 09:00 | 90° @ 8 kn | SCT @ 2,200 ft | 15 SM | 09 (RP) | ↗ To the north-east | | ||
| #3 | 2024-04-30 | 11:00 | 150° @ 9 kn | FEW @ 4,900 ft | 15 SM | 09 (RP) | → To the east | | ||
| #4 | 2024-04-29 | 12:00 | 110° @ 15 kn | SCT @ 2,600 ft | 15 SM | 09 (RP) | ↙ To the south-west | | ||
| #5 | 2024-04-28 | 13:00 | 100° @ 17 kn | SCT @ 6,000 ft | 15 SM | 09 (RP) | ↓ To the south | | ||
| #6 | 2024-04-26 | 15:00 | 100° @ 17 kn | CLR | 15 SM | 09 (RP) | → To the east | | ||
| #7 | 2024-04-25 | 16:00 | 100° @ 10 kn | CLR | 15 SM | 09 (RP) | ↖ To the north-west | | ||
| #8 | 2024-04-24 | 17:00 | 60° @ 8 kn | FEW @ 3,900 ft | 15 SM | 09 (RP) | ↙ To the south-west | | ||
| #9 | 2024-04-23 | 19:00 | 340° @ 12 kn | BKN @ 1,700 ft | 15 SM | 27 | ↗ To the north-east | | ||
| #10 | 2024-04-22 | 20:00 | 0° @ 0 kn | BKN @ 2,000 ft | 15 SM | 09 (RP) | → To the east | | ||
## Installation instructions | ||
@@ -31,0 +31,0 @@ |
@@ -19,12 +19,12 @@ # Landing Challenges: Vineyard Haven / Martha's Vineyard (KMVY) | ||
| :-: | ---------- | ---------: | ------------ | --------------- | ---------: | ------- | ------------------- | | ||
| #1 | 2024-05-02 | 07:00 | 180° @ 9 kn | CLR | 15 SM | 24 (RP) | ← To the west | | ||
| #2 | 2024-05-01 | 09:00 | 40° @ 9 kn | OVC @ 800 ft | 9 SM | 06 | ↙ To the south-west | | ||
| #3 | 2024-04-29 | 10:00 | 70° @ 14 kn | FEW @ 4,700 ft | 15 SM | 06 | ↙ To the south-west | | ||
| #4 | 2024-04-28 | 11:00 | 190° @ 16 kn | OVC @ 1,700 ft | 15 SM | 24 (RP) | ↑ To the north | | ||
| #5 | 2024-04-27 | 13:00 | 210° @ 11 kn | CLR | 15 SM | 24 (RP) | ↙ To the south-west | | ||
| #6 | 2024-04-25 | 14:00 | 70° @ 8 kn | CLR | 15 SM | 06 | ↑ To the north | | ||
| #7 | 2024-04-24 | 15:00 | 200° @ 11 kn | CLR | 15 SM | 24 (RP) | ↓ To the south | | ||
| #8 | 2024-04-23 | 17:00 | 170° @ 6 kn | CLR | 15 SM | 15 | ↖ To the north-west | | ||
| #9 | 2024-04-21 | 18:00 | 230° @ 9 kn | CLR | 15 SM | 24 (RP) | → To the east | | ||
| #10 | 2024-04-21 | 19:00 | 120° @ 3 kn | OVX @ 0 ft | 0 SM | 15 | ↖ To the north-west | | ||
| #1 | 2024-05-03 | 07:00 | 30° @ 11 kn | OVC @ 1,300 ft | 15 SM | 06 | ← To the west | | ||
| #2 | 2024-05-02 | 09:00 | 190° @ 12 kn | CLR | 15 SM | 24 (RP) | ↖ To the north-west | | ||
| #3 | 2024-04-30 | 10:00 | 120° @ 11 kn | OVC @ 3,500 ft | 15 SM | 15 | ↗ To the north-east | | ||
| #4 | 2024-04-29 | 11:00 | 60° @ 17 kn | FEW @ 4,700 ft | 15 SM | 06 | ↗ To the north-east | | ||
| #5 | 2024-04-28 | 13:00 | 200° @ 12 kn | OVC @ 900 ft | 15 SM | 24 (RP) | ↘ To the south-east | | ||
| #6 | 2024-04-26 | 14:00 | 150° @ 7 kn | FEW @ 5,000 ft | 15 SM | 15 | → To the east | | ||
| #7 | 2024-04-25 | 15:00 | 60° @ 10 kn | CLR | 15 SM | 06 | → To the east | | ||
| #8 | 2024-04-24 | 17:00 | 230° @ 8 kn | CLR | 15 SM | 24 (RP) | ↑ To the north | | ||
| #9 | 2024-04-22 | 18:00 | 150° @ 7 kn | CLR | 15 SM | 15 | ↘ To the south-east | | ||
| #10 | 2024-04-22 | 19:00 | 250° @ 7 kn | CLR | 15 SM | 24 (RP) | ↑ To the north | | ||
## Installation instructions | ||
@@ -31,0 +31,0 @@ |
@@ -110,3 +110,3 @@ // @ts-check | ||
/** | ||
* @type {[number,number]} length, width | ||
* @type {[number,number]} length, width in ft | ||
*/ | ||
@@ -113,0 +113,0 @@ const dimension = [0, 0]; |
@@ -9,3 +9,3 @@ // @ts-check | ||
import { AeroflyAircraftFinder } from "../data/AeroflyAircraft.js"; | ||
import { Degree, degreeDifference } from "./Degree.js"; | ||
import { Degree, degreeDifference, degreeToRad } from "./Degree.js"; | ||
@@ -49,2 +49,7 @@ /** | ||
/** | ||
* @type {number} in feet per second | ||
*/ | ||
this.activeRunwayCrosswindComponent = 0; | ||
/** | ||
* @type {import("./AeroflyPatterns.js").AeroflyPatternsWaypointable[]} | ||
@@ -95,2 +100,7 @@ */ | ||
if (this.weather?.windDirection) { | ||
const crosswindAngle = degreeDifference(this.activeRunway.alignment, this.weather.windDirection); | ||
this.activeRunwayCrosswindComponent = Math.sin(degreeToRad(crosswindAngle)) * this.weather.windSpeed; | ||
} | ||
const activeRunwayEntry = this.activeRunway.position.getPointBy( | ||
@@ -140,8 +150,14 @@ new Vector(finalDistance, Degree(this.activeRunway.alignment + 180)), | ||
const runway = `${this.activeRunway.id} (${Math.round(this.activeRunway.alignment - this.airport.magneticDeclination)}° / ${Math.round(this.activeRunway.dimension[0]).toLocaleString("en")}ft)`; | ||
let crossWind = ""; | ||
if (this.activeRunwayCrosswindComponent > 4.5) { | ||
crossWind = ` / ${Math.ceil(this.activeRunwayCrosswindComponent)} kn crosswind component`; | ||
} | ||
const runway = `${this.activeRunway.id} (${Math.round(this.activeRunway.alignment - this.airport.magneticDeclination)}° / ${Math.round(this.activeRunway.dimension[0] / Units.feetPerMeter).toLocaleString("en")}m${crossWind})`; | ||
let description = `It is ${weatherAdjectives}${Formatter.getLocalDaytime(this.date, this.airport.lstOffset)}, and you are ${this.aircraft.distanceFromAirport} NM to the ${bearing} of the ${towered} airport ${this.airport.name} (${this.airport.id}). `; | ||
description += this.weather | ||
? `As the wind is ${this.weather.windSpeed ?? 0} kn from ${this.weather.windDirection ?? 0}°, the main landing runway is ${runway}. ` | ||
: `The main landing runway is ${runway}. `; | ||
if (this.activeRunway.ilsFrequency) { | ||
@@ -148,0 +164,0 @@ description += `You may want to use the ILS (${this.activeRunway.ilsFrequency.toFixed(2)}MHz). `; |
{ | ||
"name": "@fboes/aerofly-patterns", | ||
"version": "1.1.2", | ||
"version": "1.1.3", | ||
"description": "Landegerät - Create landing pattern lessons for Aerofly FS 4.", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
614674
1753