Board index FlightGear Development Aircraft

A320-family development

Questions and discussion about creating aircraft. Flight dynamics, 3d models, cockpits, systems, animation, textures.

Re: A320-family development

Postby legoboyvdlp » Sun May 16, 2021 8:26 pm

They should already be added to the 3D branch actually. But thank you anyway.
User avatar
legoboyvdlp
 
Posts: 7981
Joined: Sat Jul 26, 2014 2:28 am
Location: Northern Ireland
Callsign: G-LEGO
Version: next
OS: Windows 10 HP

Re: A320-family development

Postby Octal450 » Sun May 16, 2021 9:40 pm

Little update from me, the CFM56 engine is pretty much finished and the NEOs for now will use that, later I'll modify it for NEO.

Will be starting on the IAE V2500s now.

Kind Regards,
Josh
Skillset: JSBsim Flight Dynamics, Systems, Canvas, Autoflight/Control, Instrumentation, Animations
Aircraft: A320-family, MD-11, MD-80, Contribs in a few others

Octal450's GitHub|Launcher Catalog
|Airbus Dev Discord|Octal450 Hangar Dev Discord
User avatar
Octal450
 
Posts: 5565
Joined: Tue Oct 06, 2015 1:51 pm
Location: Huntsville, AL
Callsign: WTF411
Version: next
OS: Windows 11

Re: A320-family development

Postby Octal450 » Mon May 17, 2021 12:19 am

Starting on the IAE, wanted to share 2 little "special" things about the IAE's that are simulated.

Thrust bump:

Image
Image
Image

You can see I am using rated N1 mode for this demo as I still need to add all the EPR calculations.

The second is the auto thrust bump from the FADEC. during the takeoff roll once sufficient speed exists, the FADEC increases the takeoff power from 24800lbs to 26600lbs. This is modelled and you will notice the EPR and N1 indications rise. That is when the PnF calls "Thrust Set" on the V2500s.

Kind Regards,
Josh
Skillset: JSBsim Flight Dynamics, Systems, Canvas, Autoflight/Control, Instrumentation, Animations
Aircraft: A320-family, MD-11, MD-80, Contribs in a few others

Octal450's GitHub|Launcher Catalog
|Airbus Dev Discord|Octal450 Hangar Dev Discord
User avatar
Octal450
 
Posts: 5565
Joined: Tue Oct 06, 2015 1:51 pm
Location: Huntsville, AL
Callsign: WTF411
Version: next
OS: Windows 11

Re: A320-family development

Postby V12 » Tue May 18, 2021 7:57 am

I found another bug in the terrain visualization on the ND. I took off from LHASA rwy 09 SID DM to VNKT via TAKTI, NONIM, STAR ROMEO. Over the big Tibet lakes south of the Lhasa, around 10000 feet AMSL terrain visualization displayed lakes with blue color. This is in direct contradiction with FCOM reference DSC-31-50 EFIS CONTROL :

Low aircraft relative altitude :

Max elev NUMBER
Ref Alti + 2000 High density red
Ref Alti + 1000 High density yellow
Ref Alti - 250 / -500 Low density yellow (*)
Ref Alti - 1000 High density green
Ref Alti - 2000 Low density green
Min elev NUMBER
Sea level - Cyan

Low aircraft relative altitude :

Ref Alti - 250 / -500 Low density yellow (*)
Max elev NUMBER
Highest band - Solid green
Middle band - High density green
Min elev NUMBER
Lowest band - Low density green
Sea level - Cyan

(*)
REF Alti -250 gear down
REF Alti -500 gear up
Fly high, fly fast - fly Concorde !
V12
 
Posts: 2757
Joined: Thu Jan 12, 2017 5:27 pm
Location: LZIB
Callsign: BAWV12

Re: A320-family development

Postby chivers » Tue May 18, 2021 8:12 pm

Hello,
currently in nasal is not possible detect when water (liquid) is a sea or a lake or a river and so on.
https://wiki.flightgear.org/Nasal_libra ... info.28.29

I think all water areas must by displayed on cyan color because it warnings crews "it's not solid to land on it" as rivers too.
Terrain on sea level (about) or below haven't on cyan color, Netherlands area as reference.
I didnt find video on real Tibet flight with ND switched on, but I think working in this way has more usefully.
If you can find some videos to use as reference please share here.
chivers
 
Posts: 5
Joined: Tue Dec 08, 2020 2:11 pm

Re: A320-family development

Postby Hooray » Tue May 18, 2021 8:34 pm

you could ask on the developers mailing list for the missing information to be exposed to Nasal space, and/or use a separate ESRI shapefile to obtain the corresponding information - that should not require any core changes (however, there is already a built-in shapefile parser used by the Qt launcher, so that could probably be exposed to Nasal space via cppbind)
Please don't send support requests by PM, instead post your questions on the forum so that all users can contribute and benefit
Thanks & all the best,
Hooray
Help write next month's newsletter !
pui2canvas | MapStructure | Canvas Development | Programming resources
Hooray
 
Posts: 12707
Joined: Tue Mar 25, 2008 9:40 am
Pronouns: THOU

Re: A320-family development

Postby chivers » Tue May 18, 2021 8:46 pm

Hello,
in the references I use to implement terrain ND I found the color used on Thales/Honeywell is not complaint to red/yellow/red used for text and layout.
The yellow one is more amber-ish then yellow.

This is a video:
https://youtu.be/n3TJMro_NzA?t=172

I think is an UX expedient of software engineers because the primary use of ND is security than color compliant.
Using the exact colors as layout could be made unreadable some vital information.
I didnt find on the net the exact RGB info about colors used ND, it seems a real industrial secret to keep in safe from (free) community as us. :D


V12 wrote in Sun Apr 11, 2021 8:38 am:Display optional data (on ND) - FCOM reference DSC-31-50 EFIS CONTROL :

Optional Data Display Pushbutton
Pushing this button displays optional data in addition to the data permanently displayed in
PLAN, ARC, or ROSE NAV modes. The green pushbutton light comes on.
Only one option can be activated at a time.

Without this button pushed, no additional data should be displayed, only when the button is pushed. I will not describe colors of the prediction pseudo waypoints along the route, because this function is not implemented yet.

EGWPS terrain picture (on ND) - FCOM reference DSC-31-45 INDICATIONS ON ND :
Low aircraft relative altitude :

Max elev NUMBER
Ref Alti + 2000 High density red
Ref Alti + 1000 High density yellow
Ref Alti - 250 / -500 Low density yellow (*)
Ref Alti - 1000 High density green
Ref Alti - 2000 Low density green
Min elev NUMBER
Sea level - Cyan

Low aircraft relative altitude :

Ref Alti - 250 / -500 Low density yellow (*)
Max elev NUMBER
Highest band - Solid green
Middle band - High density green
Min elev NUMBER
Lowest band - Low density green
Sea level - Cyan

(*)
REF Alti -250 gear down
REF Alti -500 gear up


As You can see, there are only 4 colors on the ND display, with Terrain on diplay activated.
chivers
 
Posts: 5
Joined: Tue Dec 08, 2020 2:11 pm

Re: A320-family development

Postby V12 » Wed May 19, 2021 7:40 am

chivers wrote in Tue May 18, 2021 8:12 pm:I think all water areas must by displayed on cyan color because it warnings crews "it's not solid to land on it" as rivers too.

Please don't think and read FCOM reference DSC-31-50.

Main problem is in the visualization of the water bodies, according to the FCOM, only the sea level should be rendered with cyan. Not all, as is. For example - airport SLLC - Cocapabana near Titicaca lake, this is from FG's A320family :

Image

and this one as should be rendered, from the commercial sim :

Image

Titicaca is almost 4000 meters above the sea level.
Fly high, fly fast - fly Concorde !
V12
 
Posts: 2757
Joined: Thu Jan 12, 2017 5:27 pm
Location: LZIB
Callsign: BAWV12

Re: A320-family development

Postby merspieler » Wed May 19, 2021 8:11 am

Hey, V12... if you know it so much better, why don't you patch it and open a pull request?
Nia (you&, she/her)

Please use gender neutral terms when referring to a group of people!

Be the change you wish to see in the world, be an ally to all!

Join the official matrix space
merspieler
 
Posts: 2228
Joined: Thu Oct 26, 2017 11:43 am
Location: Wish to be in YBCS
Pronouns: you&, she/her
Callsign: you&, she/her
IRC name: merspieler
Version: next
OS: NixOS

Re: A320-family development

Postby V12 » Wed May 19, 2021 9:41 am

Dear merspieler, I know how it should be, but I don't know how to do it.
Fly high, fly fast - fly Concorde !
V12
 
Posts: 2757
Joined: Thu Jan 12, 2017 5:27 pm
Location: LZIB
Callsign: BAWV12

Re: A320-family development

Postby merspieler » Wed May 19, 2021 9:43 am

You can always ask for help.
Nia (you&, she/her)

Please use gender neutral terms when referring to a group of people!

Be the change you wish to see in the world, be an ally to all!

Join the official matrix space
merspieler
 
Posts: 2228
Joined: Thu Oct 26, 2017 11:43 am
Location: Wish to be in YBCS
Pronouns: you&, she/her
Callsign: you&, she/her
IRC name: merspieler
Version: next
OS: NixOS

Re: A320-family development

Postby portreekid » Wed May 19, 2021 10:40 am

merspieler wrote in Wed May 19, 2021 9:43 am:You can always ask for help.


And there are so many nice people here prepared to help.
portreekid
 
Posts: 651
Joined: Tue Jan 14, 2014 4:36 pm
Location: Leipzig
Callsign: PORTREE
Version: 2020.2.1
OS: Windows 10

Re: A320-family development

Postby V12 » Wed May 19, 2021 1:55 pm

Problem solved. Change line 430 in the file TERRAIN.symbol to if (elev <=0) grad = 11; #water/cyan :

Code: Select all
# See: http://wiki.flightgear.org/MapStructure
# Class things:

## Airbus Terrain on ND by InuYaksa*2021
## EGPWS device - Applicable to: MSN 0112
## Ident.: DSC-31-45-00009586.0012001 / 22 MAY 12
## Ident.: DSC-31-45-00009586.0009001 / 08 AUG 13

## inspired from work on 787-family - thanks a lots
## and a great help from legoboyvdlp

var name = 'TERRAIN';
var parents = [DotSym];
var __self__ = caller(0)[0];
DotSym.makeinstance( name, __self__ );

var element_type = "group";

var terrain_minalt = props.globals.initNode("/instrumentation/efis[0]/nd/terrain-on-nd/min-altitude", 0,"INT");
var terrain_maxalt = props.globals.initNode("/instrumentation/efis[0]/nd/terrain-on-nd/max-altitude", -9999,"INT");
var terrain_maxcol = props.globals.initNode("/instrumentation/efis[0]/nd/terrain-on-nd/max-color", 0,"INT"); # 0= grn, 1= yel, 2= red

var terrain_alert = props.globals.getNode("/instrumentation/mk-viii/outputs/alert-mode");

var tile_list = [
            nil,"tile_gl.png","tile_gh.png","tile_al.png","tile_ah.png","tile_rh.png", # 0-5  low alt - imho real ND displays as amber-ish color than yellow one
            "tile_gl.png","tile_gh.png","tile_gh.png","tile_gs.png", # 6-9 hi alt
            "tile_ml.png","tile_cl.png",  # 10 magenta - 11 cyan-ish/blue (water)
            "tile_as.png","tile_rs.png"   # 12-13 alert - solid colors
            ];

var is_terrain = 0;

var get_elevation = func (lat, lon) {
   var info = geodinfo(lat, lon);
   var elevation = 0;
   if (info != nil) {
      elevation = int(info[0] * 3.2808399);
      me.is_terrain = (info[1] == nil) ? 1 : info[1].solid;
    }
   else { elevation = nil; }
   return elevation;
}

var updateTerrain = func {

   if (me.reference == nil) return;

   if(me.fetching) return;

   me.fetching = 1;

   if (me.request_clear == 1) {
      me.request_clear = 0;
      me.clear();
      me.group.setVisible(1);
   }

   var RAD2DEG = 57.2957795;
   var DEG2RAD = 0.016774532925;

   var pos_lat = me.reference.lat();
   var pos_lon = me.reference.lon();
   
   var heading = me.refheading;
   var altitudeft = me.refaltitudeft;
   var lowaltft = me.reflowaltft;
   var basealtft = me.basealtitudeft;
   var alert_level = me.terrain_alert.getValue();

   var side = (math.mod(me.radar_beacon,2)==0) ? "L" : "R";
   var a = int(me.radar_beacon/2);
    var col = a + 0.5;

   if (side == "R") {
      col = -col;
   }

   var trn = me.terrlayer[side ~ a];

   var len = size(trn);
   var range = me.range;

   var tiles = me.tile_list;

   #var proj_lon = pos_lon + ((col * (range/30) * math.sin(DEG2RAD * (heading - 90))) / 40);
   #var proj_lat = pos_lat + ((col * (range/30) * math.cos(DEG2RAD * (heading - 90))) / 40);

   # if me.tileradiusw == 20
   var range_20f = range / 18.75;
   var heading_sin = math.sin(DEG2RAD * heading);
   var heading_cos = math.cos(DEG2RAD * heading);

   var proj_lon = pos_lon + ((col * range_20f * math.sin(DEG2RAD * (heading - 90))) / 60);
   var proj_lat = pos_lat + ((col * range_20f * math.cos(DEG2RAD * (heading - 90))) / 60);

   var elevft = [];

   me.radar_cleared = 0;

   for (var row = 0; row < len; row += 1) {

      if (trn[row] == nil) {
         append(elevft,-1);
         continue;
      }

      var point_lon = proj_lon + ((row * range_20f / 60) * heading_sin);
      var point_lat = proj_lat + ((row * range_20f / 60) * heading_cos);

      var elev = me.get_elevation(point_lat, point_lon);
      var grad = 0; #black
      if (elev != nil) {         
         if (elev>me.max_altitude) me.max_altitude = elev;
         if (me.is_terrain) {
            if (elev<me.min_altitude) me.min_altitude = elev;
            if (elev < basealtft) grad = 0; # < 400 near runway use blank
            else {
               var diff = elev - altitudeft;
               if (diff>=0) {
                  grad = int(diff/1000) + 3;
                  if (grad>5) grad = 5;
                  if (alert_level > 0 and a < 6 and grad > 3) {
                     if (alert_level == 1 and (grad == 3 or grad == 4)) grad = 12; # solid yellow
                     else if (alert_level == 2 and grad == 5) grad = 13; # solid red
                  }
               } else {
                  if (me.hialtmode == 0) {
                     if (diff>=lowaltft) grad = 3; # lite yellow
                     else {
                        grad = int(diff/1000) + 2;
                        if (grad<0) grad = 0;
                     }                  
                  } else {
                     if (diff>=lowaltft) grad = 3; # lite yellow
                     else {
                         if (me.bands_range > 0 and elev > me.bands_minalt) {
                           grad =  9 - int((me.bands_maxalt - elev) / me.bands_range);
                           if (grad>9) grad = 9; # solid green
                           else if (grad<6) grad = 6; #light green
                        }
                     }
                  }
               }
            }
         } else {
            if (elev <=0) grad = 11; #water/cyan
         }
         append(elevft,grad); # 0-5
      } else {
         append(elevft,0);  # no data - black (magenta)
      }
      
   }

   if (me.min_altitude > me.max_altitude) me.min_altitude = me.max_altitude; # occurs on sea areas

   for (var r=0; r < len; r+=1) {
      var imgx = elevft[r];
      if (imgx == -1) continue;         
      if (imgx < 1) trn[r].hide();
      else trn[r].setFile(me.imgpath ~ me.tile_list[imgx]).show();      
   }

   me.radar_beacon += 1;
   if (me.radar_beacon >= (me.tileradiusw*2)) {
      me.restart_beacon();
   }
   
   me.fetching = 0;
};

var update_altitudes = func {

   me.terrain_minalt.setValue(me.min_altitude);
   me.terrain_maxalt.setValue(me.max_altitude);

   var altdif = me.max_altitude - me.refaltitudeft;
   if (altdif <= 0) {
      if (altdif >= me.reflowaltft) me.terrain_maxcol.setValue(1);
      else me.terrain_maxcol.setValue(0);
   } else {
      if (altdif>2000) me.terrain_maxcol.setValue(2);
      else me.terrain_maxcol.setValue(1);
   }

   if (me.min_altitude == 9999) {
      me.avg_minalt = me.min_altitude;
      me.avg_maxalt = me.max_altitude;
   } else {
      #if (me.min_altitude < me.avg_minalt) me.avg_minalt = me.min_altitude;else       
      me.avg_minalt = math.round((me.avg_minalt * 2 + me.min_altitude) / 3);
      #if (me.max_altitude > me.avg_maxalt) me.avg_maxalt = me.max_altitude;else
      me.avg_maxalt = math.round((me.avg_maxalt * 2 + me.max_altitude) / 3);
   }

   me.avg_peakalt = me.avg_maxalt - me.avg_minalt;

   if (me.onground == 0 and (me.max_altitude + 250) < me.refaltitudeft) {   # 250 ft tollerance
      me.hialtmode = 1;      
      var range = math.min(2400,(me.avg_maxalt - me.avg_minalt)) - 400;
      if (range < 400) {  # min elev number
         me.bands_range = 0;   
      } else {         
         me.bands_range = int(range / 4);
         me.bands_maxalt = me.avg_maxalt;
         me.bands_minalt = math.max( me.avg_maxalt - range, me.avg_minalt + 400 );
      }
   } else {
      me.hialtmode = 0;
      #me.avg_minalt = 9999;
   }

    me.min_altitude = 9999;
   me.max_altitude = -9999;   
   
}

var restart_beacon = func {
   me.radar_beacon = 0;
   me.radar_cycle += 1;
   me.reference = nil;
};

var init = func {
   #print('TERRAIN init');
   me.tile = 33;
   me.fetching = 0;
   me.fetchRad = me.model.fetchRad; # Radius of radar layer to fetch
   me.range = me.model.rangeNm; # Range of Navigation Display
   me.viewport_radius = me.getOption('viewport_radius', 670);
   me.imgpath = get_local_path('res/terrainv2/');
   me.radar_beacon = 0;
   me.radar_cycle = 0;
   me.radar_cleared = 1;
   me.request_clear = 0;   
   me.min_altitude = 9999;
   me.max_altitude = -9999;
   me.avg_minalt = 9999;
   me.avg_maxalt = -9999;
   me.avg_peakalt = nil;
   me.maxalt_col = 0;  # 0 = grn, 1 = yel, 2 = red
   me.bands_minalt = 0;
   me.bands_maxalt = 0;
   me.bands_range = 0;
   me.basealtitudeft = nil;
   me.reference = nil;
   me.onfailure = 0;
   me.hialtmode = 0; # high aircraft relative altitude mode
   me.checkarrival = 0;
   me.onground = 1;

   var tile = me.tile;

   var gx = int(me.viewport_radius / tile);
   me.tileradius = gx;

   var limx = int((512/tile)+0.5);  # display width is smaller than height
   me.tileradiusw = limx;

   me.terrlayer = {};

   var centx = 0;
   var centy = -me.viewport_radius;

   var group = me.group.createChild("group").set("z-index", -100); #me.element

   for (var c=0; c<limx; c+=1) {
      var hh = c * tile;
      var mx = (c == 0) ? gx : int(math.sqrt(gx*gx-c*c) + 0.5);
      var my = int(c*4/gx);
      var py = centy + (gx-1) * tile;
      var pxr = centx+(c*tile);
      var pxl = centx-(c*tile)-tile;
      var grplx = [];
      var grprx = [];
      for (var r=0; r<mx; r+=1) {
         if (r<my) {
            append(grplx , nil); #skip
            append(grprx , nil);
         } else {
            append(grplx , group.createChild("image").setSize(tile,tile).setTranslation(pxl,py).hide());
            append(grprx , group.createChild("image").setSize(tile,tile).setTranslation(pxr,py).hide());
         }
         py-=tile;
      }
      me.terrlayer["L" ~ c] = grplx;
      me.terrlayer["R" ~ c] = grprx;
   }

   setlistener("/instrumentation/mk-viii/inputs/discretes/ta-tcf-inhibit", func{   # detect GPWS switch status
      me.onfailure = getprop("/instrumentation/mk-viii/inputs/discretes/ta-tcf-inhibit");
   },1,0);

};

var clear = func {

   if (me.radar_cleared == 0) {
      me.radar_cleared = 1;
      for (var c=0; c<me.tileradiusw; c+=1 ) {
         var rowL = me.terrlayer["L" ~ c];         
         var rowR = me.terrlayer["R" ~ c];
         var len = size(rowL);
         for (var r=0; r<len; r+=1) {
            if (rowL[r] != nil) {
               rowL[r].hide();
               rowR[r].hide();
            }
         }
      }      
   }

}

var draw = func {

   if(me.fetching) return;

   if (pts.Sim.pause.getBoolValue()) return;

    if (me.onfailure == 1) {
      me.clear();
      me.restart_beacon();
      return;
   }

   if (me.layer.display_changed == 1) {
      me.layer.display_changed = 0;
      me.clear();
      me.min_altitude = 9999;
      me.max_altitude = -9999;
      terrain_maxalt.setValue(-9999);
      me.reference = nil;
   }

   if (me.reference == nil) {  # update aircraft reference

      var ref = geo.aircraft_position();
      me.reference = ref;
      if (ref != nil) {

         me.refheading = getprop("orientation/heading-magnetic-deg");

         var refalt = int(getprop("/position/altitude-ft"));  #int(ref.alt() * 3.2808399);
         me.refaltitudeft = refalt;         
         me.groundaltft = int(getprop("/position/ground-elev-ft"));
         me.reflowaltft = (pts.Gear.position[1].getValue()) ? -250 : -500;
         me.onground = pts.Gear.wow[0].getValue();

         if (me.min_altitude != 9999) me.update_altitudes();

         var flatalt = (me.avg_peakalt != nil and me.avg_peakalt>499) ? 400 : 140;

         var vspeed30s = int(getprop("velocities/vertical-speed-fps") * 30);
         if (vspeed30s<-500) me.refaltitudeft = math.max(me.avg_minalt , me.refaltitudeft + vspeed30s);

         if (me.basealtitudeft == nil) {  # first basealt set
            me.basealtitudeft = me.groundaltft + flatalt;
            me.flatalt = flatalt;
            me.checkarrival = 1;
            print("set REFALT [init]: "~me.basealtitudeft);
         } else if (fmgc.FMGCInternal.phase < 2) { # starting at phase < 2
           if (me.flatalt != flatalt) {
              me.basealtitudeft = me.groundaltft + flatalt;
              me.flatalt = flatalt;
              print("set REFALT [flat]: "~me.basealtitudeft);
           }          
         } else if (fmgc.FMGCInternal.phase == 5) {
            if (me.checkarrival == 1) {
               me.checkarrival = 0;            
               me.basealtitudeft = nil;
               if (fmgc.FMGCInternal.arrApt != nil) {
                  var airport = airportinfo(fmgc.FMGCInternal.arrApt);
                  if (airport != nil) me.basealtitudeft = flatalt + int(airport.elevation * M2FT);
                  print("set REFALT [arrApt]: "~me.basealtitudeft);
               }
               if (me.basealtitudeft == nil) {
                  me.basealtitudeft = flatalt + me.avg_minalt; # that's fun
               }
            }
         } else if (fmgc.FMGCInternal.phase == 6) {
            if (me.checkarrival == 0) {
               me.checkarrival = 1;
               #me.basealtitudeft = 0;
            }
         } else if (fmgc.FMGCInternal.phase == 7) {
            if (me.checkarrival == 0) {
               me.checkarrival = 1;
               me.basealtitudeft = me.groundaltft + flatalt;
               print("set REFALT [done]: "~me.basealtitudeft);
            }
         } else if (fmgc.FMGCInternal.phase == 2) {
            var expdaltft = me.groundaltft + flatalt;
            if (me.basealtitudeft > expdaltft) {
               me.basealtitudeft = expdaltft;
               print("set REFALT [blwbase]: "~me.basealtitudeft);
            }            
         } else if (fmgc.FMGCInternal.phase >= 2) {      
            me.basealtitudeft = math.avg(me.basealtitudeft,flatalt + me.groundaltft,int(flatalt + me.avg_minalt));
            #if (me.basealtitudeft > me.avg_maxalt) {
            #   if (me.avg_maxalt < 1000) me.basealtitudeft = 0; # 1000ft min elev number
            #   else me.basealtitudeft = int(400 + me.avg_minalt);
            #   print("set REFALT [blwmin]: "~me.basealtitudeft);
            #}
            #else if (me.basealtitudeft == 0 and me.avg_maxalt >= 1000) {  # 1000ft min elev number            
            #   me.basealtitudeft = int(400 + me.avg_minalt);
            #   print("set REFALT [abvmin]: "~me.basealtitudeft);
            #}
         }

      }

   } else {

      var range = me.layer.map.getRange(); # Range of Navigation Display
      var update_size = (range != me.range);
      me.range = range;

      if (update_size) {
         me.request_clear = 1;
      }

      me.updateTerrain(); # left
      me.updateTerrain(); # right

   }

};

Fly high, fly fast - fly Concorde !
V12
 
Posts: 2757
Joined: Thu Jan 12, 2017 5:27 pm
Location: LZIB
Callsign: BAWV12

Re: A320-family development

Postby Mohamed » Wed May 19, 2021 2:10 pm

Image

why does it show blue here ?
Mohamed
 
Posts: 76
Joined: Tue Aug 25, 2020 5:04 pm
Location: Casablanca, Morocco
Version: 2020.3.6

Re: A320-family development

Postby V12 » Wed May 19, 2021 2:28 pm

OKBK is Kuwait international airport. And this airport is near Persian Gulf and ofcourse at sea level. Check https://skyvector.com/?ll=28.7975090002 ... KBK%20OIBB - it is route OIHS > VOR KRD > OKBK > OIBB

EDIT :
This is corrected terrain on the ND at SLCC :
Image
Fly high, fly fast - fly Concorde !
V12
 
Posts: 2757
Joined: Thu Jan 12, 2017 5:27 pm
Location: LZIB
Callsign: BAWV12

PreviousNext

Return to Aircraft

Who is online

Users browsing this forum: No registered users and 5 guests