User:Warty

From FlightGear wiki
Jump to navigation Jump to search

ILS in HUD

This has now been created as ILS in HUD --Warty (talk) 04:02, 30 December 2015 (EST)

Carrier Landing system in HUD

Nimitz Almeria.

This Howto Details modifications to the Canvas-based ILS_in_HUD Wiki.

The Canvas graphics elements

Additions to the new: func(placement)

# ----------------------------------------------------------------- Carrier Landing System
# UP/DOWN:
   	# glide slope indicator for CARRIER
    m.gsiC = m.root.createChild("group", "GSI");
    m.gsiC.createChild("path")
         .moveTo(8, 0)
         .arcSmallCCW(8, 8, 0, -16, 0)
         .arcSmallCCW(8, 8, 0,  16, 0)
         .moveTo(-4, 0)
         .horiz(-150)
         .moveTo(4, 0)
         .horiz(150)
         .setStrokeLineWidth(2.0)
         .setColor(1,1,0);      
      # Slope to CARRIER vertical needle deflection text box (up/down)      
      m.STC =
      m.text.createChild("text")
      		.setFontSize(14, 0.9)
            .setDrawMode(3)
            .setPadding(2)
            .setAlignment("center-top")
            .setTranslation(180, -20)
            .setColor(1,1,0);     
# LEFT/RIGHT:
    # localiser beam indicator for CARRIER  
    m.lbiC = m.root.createChild("group", "GSI");
    m.lbiC.createChild("path")
         .moveTo(8, 0)
         .arcSmallCCW(8, 8, 0, -16, 0)
         .arcSmallCCW(8, 8, 0,  16, 0)
         .moveTo(0, -4)
         .vert(-40)
         .moveTo(0, 4)
         .vert(95)
         .setStrokeLineWidth(2.0)
         .setColor(1,1,0);
    # For Carrier LANDING DECK heading text box
    m.carrierHdgTxt =
      m.text.createChild("text")
      .setFontSize(16, 0.9)
            .setAlignment("right-top")
            .setTranslation(240, 105)
            .setColor(1,1,0); 
    # Bearing TO the carrier text box
    m.carrierBrgTxt =
      m.text.createChild("text")
      .setFontSize(16, 0.9)
            .setAlignment("right-top")
            .setTranslation(240, 90)
            .setColor(1,1,0); 
    # Carrier Offset text box 
    m.carrierOffTxt =
      m.text.createChild("text")
      .setFontSize(16, 0.9)
            .setAlignment("center-top")
            .setTranslation(0, 100)
            .setColor(1,1,0); 
    # Carrier pointer text box 
    m.carrierDiagramTxt =
      m.text.createChild("text")
      .setFontSize(24, 0.9)
            .setAlignment("center-top")
            .setTranslation(0, -70)
            .setColor(1,1,0)
            .setText('=>');
    # relativeDeckHeading text box 
       m.relativeDeckHeadingText =
      m.text.createChild("text")
      .setFontSize(12, 1.0)
            .setAlignment("center-top")
            .setTranslation(0, -55)
            .setColor(1,1,0); 
# ---------------------------------------------------------- end of Carrier Landing System

Drawing them on the HUD

Additions to the update: func()

	# The CARRIER Glide Slope Up/Down needle
	var closestCarrier = 0;
	var slopeToCarrierProp = sprintf("/ai/models/carrier[%d]/controls/flols/angle-degs", closestCarrier);
	var slopeToCarrier = getprop(slopeToCarrierProp);
	me.STC.setText(sprintf("%1.2f", -slopeToCarrier));
	me.STC.setTranslation(185, 20*(slopeToCarrier -3) -5 );
	me.gsiC.setTranslation(0, 20*(slopeToCarrier -3) );
	
	# The CARRIER approach heading Left/Right needle
	var carrierHdgProp = sprintf("/ai/models/carrier[%d]/orientation/true-heading-deg", closestCarrier); 
	var carrierHdg = getprop(carrierHdgProp); 
	me.carrierHdgTxt.setText(sprintf("DeckHdg: %1.0f", carrierHdg-8)); # allow for landing deck offset
	var carrierBrgTo = getprop("/instrumentation/tacan/indicated-bearing-true-deg");
	me.carrierBrgTxt.setText(sprintf("BrgTo: %1.0f", carrierBrgTo)); # heading TO the carrier
	var carrierOffset = carrierHdg - carrierBrgTo -8 ; # landing deck offset
	me.carrierOffTxt.setText(sprintf("%1.1f", -carrierOffset));
	me.carrierOffTxt.setTranslation(-10*(carrierOffset), 100 );
	me.lbiC.setTranslation(-10*(carrierOffset), 0 );
	var currentHeading = getprop("/orientation/heading-deg");
	var relativeDeckHeading = -(currentHeading - carrierHdg +8) ;
	me.relativeDeckHeadingText.setText(sprintf("RelHdg: %1.0f", relativeDeckHeading)); # landing deck offset
 	me.carrierDiagramTxt.setRotation( ((relativeDeckHeading -105 )* math.pi )/ 180);
 	var hdgOffsetToCarrier =  currentHeading - carrierBrgTo;
 	me.carrierDiagramTxt.setTranslation(-10*(hdgOffsetToCarrier), -90 );

Related Topics

ILS_in_HUD