From f529f2ce7c4b08a6ac0e76f3596ebd026b854d9a Mon Sep 17 00:00:00 2001 From: PlayeRom Date: Sat, 17 Sep 2022 20:32:56 +0200 Subject: [PATCH] Improve the approach to landing --- nasal/aircraft.nas | 96 +++++++++++++++++++++++-------------------- nasal/flight-plan.nas | 8 ++-- 2 files changed, 55 insertions(+), 49 deletions(-) diff --git a/nasal/aircraft.nas b/nasal/aircraft.nas index feb56ae..e17f415 100644 --- a/nasal/aircraft.nas +++ b/nasal/aircraft.nas @@ -26,21 +26,23 @@ var Aircraft = { # speedLimit - max speed # rolling - factor for rolling # minRwyLength - minimum runway length required, in meters + # minFinalLegDist - minimum distance for final leg in meters (for landing) # name - full name of aircraft used in route dialog # nameMenuCall - short name of aircraft for call a plane from menu # modelPath - Path to the aircraft model # - new: func (vs, speed, speedLimit, rolling, minRwyLength, name, nameMenuCall, modelPath) { + new: func (vs, speed, speedLimit, rolling, minRwyLength, minFinalLegDist, name, nameMenuCall, modelPath) { var obj = { parents: [Aircraft] }; - obj.vs = vs; - obj.speed = speed; - obj.speedLimit = speedLimit; - obj.rolling = rolling; - obj.minRwyLength = minRwyLength; - obj.name = name; - obj.nameMenuCall = nameMenuCall; - obj.modelPath = modelPath; + obj.vs = vs; + obj.speed = speed; + obj.speedLimit = speedLimit; + obj.rolling = rolling; + obj.minRwyLength = minRwyLength; + obj.minFinalLegDist = minFinalLegDist; + obj.name = name; + obj.nameMenuCall = nameMenuCall; + obj.modelPath = modelPath; return obj; }, @@ -114,15 +116,16 @@ var AircraftCub = { # new: func () { return { - parents: [Aircraft], - vs: 200, - speed: 55, - speedLimit: 60, - rolling: 1, - minRwyLength: 280, - name: "Piper J3 Cub", - nameMenuCall: "Cub", - modelPath: "Aircraft/Aerotow/Cub/Models/Cub-ai.xml", + parents: [Aircraft], + vs: 200, + speed: 55, + speedLimit: 60, + rolling: 1, + minRwyLength: 280, + minFinalLegDist: 5000, + name: "Piper J3 Cub", + nameMenuCall: "Cub", + modelPath: "Aircraft/Aerotow/Cub/Models/Cub-ai.xml", }; }, }; @@ -140,15 +143,16 @@ var AircraftRobin = { # new: func () { return { - parents: [Aircraft], - vs: 285, - speed: 70, - speedLimit: 75, - rolling: 2, - minRwyLength: 470, - name: "Robin DR400", - nameMenuCall: "DR400", - modelPath: "Aircraft/Aerotow/DR400/Models/dr400-ai.xml", + parents: [Aircraft], + vs: 285, + speed: 70, + speedLimit: 75, + rolling: 2, + minRwyLength: 470, + minFinalLegDist: 5400, + name: "Robin DR400", + nameMenuCall: "DR400", + modelPath: "Aircraft/Aerotow/DR400/Models/dr400-ai.xml", }; }, }; @@ -163,15 +167,16 @@ var AircraftRobin = { var AircraftC182 = { new: func () { return { - parents: [Aircraft], - vs: 295, - speed: 75, - speedLimit: 80, - rolling: 2.2, - minRwyLength: 508, - name: "Cessna 182", - nameMenuCall: "c182", - modelPath: "Aircraft/Aerotow/c182/Models/c182-ai.xml", + parents: [Aircraft], + vs: 295, + speed: 75, + speedLimit: 80, + rolling: 2.2, + minRwyLength: 508, + minFinalLegDist: 5500, + name: "Cessna 182", + nameMenuCall: "c182", + modelPath: "Aircraft/Aerotow/c182/Models/c182-ai.xml", }; }, }; @@ -186,15 +191,16 @@ var AircraftC182 = { var AircraftC47 = { new: func () { return { - parents: [Aircraft], - vs: 310, - speed: 85, - speedLimit: 90, - rolling: 2.2, - minRwyLength: 508, - name: "Douglas C-47", - nameMenuCall: "C47", - modelPath: "Aircraft/Aerotow/C-47/Models/c-47-ai.xml", + parents: [Aircraft], + vs: 310, + speed: 85, + speedLimit: 90, + rolling: 2.2, + minRwyLength: 508, + minFinalLegDist: 6000, + name: "Douglas C-47", + nameMenuCall: "C47", + modelPath: "Aircraft/Aerotow/C-47/Models/c-47-ai.xml", }; }, }; diff --git a/nasal/flight-plan.nas b/nasal/flight-plan.nas index 8b0687d..b7329e7 100644 --- a/nasal/flight-plan.nas +++ b/nasal/flight-plan.nas @@ -315,10 +315,10 @@ var FlightPlan = { me.addWptAir({"shift": {"hdgChange": 90, "dist": halfRwyLenght, "elevation": elevation}, "ktas": aircraft.speed}); # Fly downwind away of threshold, how far depend of the altitude - var desiredElevation = 2000; - var distance = (((elevation - desiredElevation) / (aircraft.vs * 3)) * 1000); - if (distance < 3000) { - distance = 3000; + var desiredElevation = 1400; + var distance = (((elevation - desiredElevation) / (aircraft.vs * 2)) * 1000); + if (distance < aircraft.minFinalLegDist) { + distance = aircraft.minFinalLegDist; } me.addWptAir({"shift": {"hdgChange": -180, "dist": halfRwyLenght + distance, "elevation": desiredElevation}, "ktas": aircraft.speed});