WaBis

walter.bislins.ch

Code: Coriolis, Centrifugal and Gravitational Forces on the WGS84 Globe Model

This is the JavaScript source code of the Coriolis, Centrifugal and Gravitational Forces on the WGS84 Globe Model Calculator.

#INCLUDE ControlPanel.inc
#INCLUDE JsgVectMat3.inc
#INCLUDE NewtonSolver.inc
#INCLUDE WGS84.inc

<jscript>

var V3 = JsgVect3;

var WGS84MotionModel = {

  // input

  Latitude:   45,
  Longitude:   0,
  Azimuth:    90,
  Elevation:   0,
  Speed:     250,
  Altitude:    0,

  // calculated values

  // Note: don't assign vector arrays to coordinate values,
  // use V3.Set() or V3.CopyTo() to change the array elements,
  // because the array elements are directly referenced by ControlPanels

  PosEcef:               [ 0, 0, 0 ],
  PosLen:                  0,

  GeocentricRadius:        0,
  MeridialRadius:          0,
  PrimeVerticalRadius:     0,
  DirectionalRadius:       0,

  GeocentricRadiusAlt:     0,
  MeridialRadiusAlt:       0,
  PrimeVerticalRadiusAlt:  0,
  DirectionalRadiusAlt:    0,

  VelocityEcef:          [ 0, 0, 0 ],
  VelocityEnu:           [ 0, 0, 0 ],

  CoriolisAccelEcef:     [ 0, 0, 0 ], // Ecef  = earth centered earth fixed coordinate system
  CoriolisAccelLocal:    [ 0, 0, 0 ], // Local = vehicle coordinate system (forwd,right,up)
  CoriolisAccelEnu:      [ 0, 0, 0 ], // Enu   = east/north/vertical coordinate system
  CoriolisAccelAbs:        0,

  CentrifugalAccelEcef:  [ 0, 0, 0 ],
  CentrifugalAccelLocal: [ 0, 0, 0 ],
  CentrifugalAccelEnu:   [ 0, 0, 0 ],
  CentrifugalAccelAbs:     0,

  CoriolisPlusCentrifugalAccelEcef:  [ 0, 0, 0 ],
  CoriolisPlusCentrifugalAccelLocal: [ 0, 0, 0 ],
  CoriolisPlusCentrifugalAccelEnu:   [ 0, 0, 0 ],
  CoriolisPlusCentrifugalAccelAbs:     0,

  GravityAccelMassEcef:  [ 0, 0, 0 ],
  GravityAccelMassLocal: [ 0, 0, 0 ],
  GravityAccelMassEnu:   [ 0, 0, 0 ],
  GravityAccelMassAbs:     0,

  GravityAccelEcef:      [ 0, 0, 0 ],
  GravityAccelLocal:     [ 0, 0, 0 ],
  GravityAccelEnu:       [ 0, 0, 0 ],
  GravityAccelAbs:         0,

  SumAccelEcef:          [ 0, 0, 0 ],
  SumAccelLocal:         [ 0, 0, 0 ],
  SumAccelEnu:           [ 0, 0, 0 ],
  SumAccelAbs:             0,

  Update: function() {

    // position in ECEF coordinates

    var posEcef = WGS84.GeoToEcef( this.Latitude, this.Longitude, this.Altitude );
    V3.Set( this.PosEcef, posEcef );
    this.PosLen = V3.Length( posEcef );

    // radii

    this.GeocentricRadius    = WGS84.GeocentricRadius( this.Latitude );
    this.MeridialRadius      = WGS84.MeridialRadius( this.Latitude );
    this.PrimeVerticalRadius = WGS84.PrimeVerticalRadius( this.Latitude );
    this.DirectionalRadius   = WGS84.DirectionalRadius( this.Azimuth, this.Latitude );

    this.GeocentricRadiusAlt    = this.GeocentricRadius    + this.Altitude;
    this.MeridialRadiusAlt      = this.MeridialRadius      + this.Altitude;
    this.PrimeVerticalRadiusAlt = this.PrimeVerticalRadius + this.Altitude;
    this.DirectionalRadiusAlt   = this.DirectionalRadius   + this.Altitude;


    // local coordinate system vectors in ECEF coordinates; enu = [ east[], north[], up[] ]

    var enu   = WGS84.EnuCoordinateSystem( this.PosEcef, this.Longitude );
    var forwd = WGS84.DirectionFromAzimuthElevation( enu, this.Azimuth, this.Elevation );
    var right = WGS84.DirectionFromAzimuthElevation( enu, this.Azimuth+90, 0 );
    var up    = V3.Mult( right, forwd );
    var local = [ forwd, right, up ];

    // velocity

    var velocityEcef = V3.Scale( forwd, this.Speed );
    V3.Set( this.VelocityEcef, velocityEcef );
    V3.Set( this.VelocityEnu,  WGS84.TransformToCS( enu, velocityEcef ) );

    // coriolis accelerations

    var coriolisEcef = WGS84.Coriolis( velocityEcef );
    V3.Set( this.CoriolisAccelEcef, coriolisEcef );
    this.CoriolisAccelAbs = V3.Length( coriolisEcef );

    V3.Set( this.CoriolisAccelLocal, WGS84.TransformToCS( local, coriolisEcef ) );
    V3.Set( this.CoriolisAccelEnu,   WGS84.TransformToCS(   enu, coriolisEcef ) );

    // centrifugal accelerations

    var centrifugalEcef = WGS84.Centrifugal( this.PosEcef ).accel;
    V3.Set( this.CentrifugalAccelEcef, centrifugalEcef );
    this.CentrifugalAccelAbs = V3.Length( centrifugalEcef );

    V3.Set( this.CentrifugalAccelLocal, WGS84.TransformToCS( local, centrifugalEcef ) );
    V3.Set( this.CentrifugalAccelEnu,   WGS84.TransformToCS(   enu, centrifugalEcef ) );

    // coriolis plus centrifugal accelerations

    var sumAccelEcef = V3.Add( this.CoriolisAccelEcef, this.CentrifugalAccelEcef );
    V3.Set( this.CoriolisPlusCentrifugalAccelEcef, sumAccelEcef );
    this.CoriolisPlusCentrifugalAccelAbs = V3.Length( sumAccelEcef );

    V3.Set( this.CoriolisPlusCentrifugalAccelLocal, WGS84.TransformToCS( local, sumAccelEcef ) );
    V3.Set( this.CoriolisPlusCentrifugalAccelEnu,   WGS84.TransformToCS(   enu, sumAccelEcef ) );

    // gravitational acceleration due to mass of earth

    var gravityEcef = WGS84.GravityMass( posEcef ).accel;
    V3.Set( this.GravityAccelMassEcef, gravityEcef );
    this.GravityAccelMassAbs = V3.Length( gravityEcef );

    V3.Set( this.GravityAccelMassLocal, WGS84.TransformToCS( local, gravityEcef ) );
    V3.Set( this.GravityAccelMassEnu,   WGS84.TransformToCS(   enu, gravityEcef ) );

    // effective gravitational acceleration = mass gravity + centrifugal acceleration

    var gravityEcef = WGS84.Gravity( posEcef ).accel;
    V3.Set( this.GravityAccelEcef, gravityEcef );
    this.GravityAccelAbs = V3.Length( gravityEcef );

    V3.Set( this.GravityAccelLocal, WGS84.TransformToCS( local, gravityEcef ) );
    V3.Set( this.GravityAccelEnu,   WGS84.TransformToCS(   enu, gravityEcef ) );

    // sum of all accelerations

    var sumAccelEcef = V3.Add( this.GravityAccelEcef, this.CoriolisAccelEcef );
    V3.Set( this.SumAccelEcef, sumAccelEcef );
    this.SumAccelAbs = V3.Length( sumAccelEcef );

    V3.Set( this.SumAccelLocal, WGS84.TransformToCS( local, sumAccelEcef ) );
    V3.Set( this.SumAccelEnu,   WGS84.TransformToCS(   enu, sumAccelEcef ) );

    // Update control panel

    ControlPanels.Update();

  },

};

//----------------------------------------

ControlPanels.NewPanel( {
  Name: 'InputPanel',
  ModelRef: 'WGS84MotionModel',
  OnModelChange: function(field){ WGS84MotionModel.Update(field); },
  PanelFormat: 'InputSmallerWidth',
  NCols: 2,
  Format: 'std',
  Digits: 8

} ).AddHeader( {
  Text: 'Input',
  ColSpan: 4

} ).AddTextField( {
  Name: 'Latitude',
  InputFormat: 'dms',
  Format: 'dmsS',
  Digits: 6,
  LowerLimit: -90,
  UpperLimit: 90,
  Inc: 5,

} ).AddTextField( {
  Name: 'Longitude',
  InputFormat: 'dms',
  Format: 'dmsW',
  Digits: 6,
  LowerLimit: -180,
  UpperLimit: 180,
  Inc: 5,

} ).AddTextField( {
  Name: 'Azimuth',
  Units: '°',
  LowerLimit: 0,
  UpperLimit: 360,
  Inc: 5,

} ).AddTextField( {
  Name: 'Elevation',
  Units: '°',
  LowerLimit: -90,
  UpperLimit: 90,
  Inc: 5,

} ).AddTextField( {
  Name: 'Altitude',
  Units: 'm',
  LowerLimit: -12000,
  UpperLimit: 100000,
  Inc: 100,

} ).AddTextField( {
  Name: 'Speed',
  Units: 'm/s',
  LowerLimit: 0,
  Inc: 10,

} ).Render();

//-----------------------------------------

ControlPanels.NewPanel( {
  Name: 'CoriolisAccelPanel',
  ModelRef: 'WGS84MotionModel',
  ReadOnly: true,
  PanelFormat: 'InputSmallerWidth',
  NCols: 3,
  Format: 'fix',
  Digits: 8

} ).AddHeader( {
  Text: 'Coriolis Accelerations',
  ColSpan: 6

} ).AddTextField( {
  Name: 'CoriolisAccelForwd',
  ValueRef: 'CoriolisAccelLocal[0]',
  Label: 'Forwd',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisAccelRight',
  ValueRef: 'CoriolisAccelLocal[1]',
  Label: 'Right',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisAccelUp',
  ValueRef: 'CoriolisAccelLocal[2]',
  Label: 'Up',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisAccelX',
  ValueRef: 'CoriolisAccelEcef[0]',
  Label: 'ECEF X',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisAccelY',
  ValueRef: 'CoriolisAccelEcef[1]',
  Label: 'Y',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisAccelZ',
  ValueRef: 'CoriolisAccelEcef[2]',
  Label: 'Z',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisAccelEast',
  Label: 'East',
  ValueRef: 'CoriolisAccelEnu[0]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisAccelNorth',
  Label: 'North',
  ValueRef: 'CoriolisAccelEnu[1]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisAccelVert',
  Label: 'Vertical',
  ValueRef: 'CoriolisAccelEnu[2]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisAccelAbs',
  Label: 'Magnitude',
  Units: 'm/s<sup>2</sup>',

} ).Render();

//-----------------------------------------

ControlPanels.NewPanel( {
  Name: 'CentrifugalAccelPanel',
  ModelRef: 'WGS84MotionModel',
  ReadOnly: true,
  PanelFormat: 'InputSmallerWidth',
  NCols: 3,
  Format: 'fix',
  Digits: 8

} ).AddHeader( {
  Text: 'Centrifugal Accelerations',
  ColSpan: 6

} ).AddTextField( {
  Name: 'CentrifugalAccelForwd',
  ValueRef: 'CentrifugalAccelLocal[0]',
  Label: 'Forwd',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CentrifugalAccelRight',
  ValueRef: 'CentrifugalAccelLocal[1]',
  Label: 'Right',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CentrifugalAccelUp',
  ValueRef: 'CentrifugalAccelLocal[2]',
  Label: 'Up',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CentrifugalAccelX',
  ValueRef: 'CentrifugalAccelEcef[0]',
  Label: 'ECEF X',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CentrifugalAccelY',
  ValueRef: 'CentrifugalAccelEcef[1]',
  Label: 'Y',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CentrifugalAccelZ',
  ValueRef: 'CentrifugalAccelEcef[2]',
  Label: 'Z',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CentrifugalAccelEast',
  Label: 'East',
  ValueRef: 'CentrifugalAccelEnu[0]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CentrifugalAccelNorth',
  Label: 'North',
  ValueRef: 'CentrifugalAccelEnu[1]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CentrifugalAccelVert',
  Label: 'Vertical',
  ValueRef: 'CentrifugalAccelEnu[2]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CentrifugalAccelAbs',
  Label: 'Magnitude',
  Units: 'm/s<sup>2</sup>',

} ).Render();

//-----------------------------------------

ControlPanels.NewPanel( {
  Name: 'CoriolisPlusCentrifugalAccelPanel',
  ModelRef: 'WGS84MotionModel',
  ReadOnly: true,
  PanelFormat: 'InputSmallerWidth',
  NCols: 3,
  Format: 'fix',
  Digits: 8

} ).AddHeader( {
  Text: 'Coriolis+Centrifugal Accelerations',
  ColSpan: 6

} ).AddTextField( {
  Name: 'CoriolisPlusCentrifugalAccelForwd',
  ValueRef: 'CoriolisPlusCentrifugalAccelLocal[0]',
  Label: 'Forwd',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisPlusCentrifugalAccelRight',
  ValueRef: 'CoriolisPlusCentrifugalAccelLocal[1]',
  Label: 'Right',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisPlusCentrifugalAccelUp',
  ValueRef: 'CoriolisPlusCentrifugalAccelLocal[2]',
  Label: 'Up',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisPlusCentrifugalAccelX',
  ValueRef: 'CoriolisPlusCentrifugalAccelEcef[0]',
  Label: 'ECEF X',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisPlusCentrifugalAccelY',
  ValueRef: 'CoriolisPlusCentrifugalAccelEcef[1]',
  Label: 'Y',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisPlusCentrifugalAccelZ',
  ValueRef: 'CoriolisPlusCentrifugalAccelEcef[2]',
  Label: 'Z',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisPlusCentrifugalAccelEast',
  Label: 'East',
  ValueRef: 'CoriolisPlusCentrifugalAccelEnu[0]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisPlusCentrifugalAccelNorth',
  Label: 'North',
  ValueRef: 'CoriolisPlusCentrifugalAccelEnu[1]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisPlusCentrifugalAccelVert',
  Label: 'Vertical',
  ValueRef: 'CoriolisPlusCentrifugalAccelEnu[2]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'CoriolisPlusCentrifugalAccelAbs',
  Label: 'Magnitude',
  Units: 'm/s<sup>2</sup>',

} ).Render();

//-----------------------------------------

ControlPanels.NewPanel( {
  Name: 'GravityAccelMassPanel',
  ModelRef: 'WGS84MotionModel',
  ReadOnly: true,
  PanelFormat: 'InputSmallerWidth',
  NCols: 3,
  Format: 'fix',
  Digits: 8

} ).AddHeader( {
  Text: 'Gravitational Accelerations due to Mass',
  ColSpan: 6

} ).AddTextField( {
  Name: 'GravityAccelMassForwd',
  ValueRef: 'GravityAccelMassLocal[0]',
  Label: 'Forwd',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelMassRight',
  ValueRef: 'GravityAccelMassLocal[1]',
  Label: 'Right',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelMassUp',
  ValueRef: 'GravityAccelMassLocal[2]',
  Label: 'Up',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelMassX',
  ValueRef: 'GravityAccelMassEcef[0]',
  Label: 'ECEF X',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelMassY',
  ValueRef: 'GravityAccelMassEcef[1]',
  Label: 'Y',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelMassZ',
  ValueRef: 'GravityAccelMassEcef[2]',
  Label: 'Z',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelMassEast',
  Label: 'East',
  ValueRef: 'GravityAccelMassEnu[0]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelMassNorth',
  Label: 'North',
  ValueRef: 'GravityAccelMassEnu[1]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelMassVert',
  Label: 'Vertical',
  ValueRef: 'GravityAccelMassEnu[2]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelMassAbs',
  Label: 'Magnitude',
  Units: 'm/s<sup>2</sup>',

} ).Render();


//-----------------------------------------

ControlPanels.NewPanel( {
  Name: 'GravityAccelPanel',
  ModelRef: 'WGS84MotionModel',
  ReadOnly: true,
  PanelFormat: 'InputSmallerWidth',
  NCols: 3,
  Format: 'fix',
  Digits: 8

} ).AddHeader( {
  Text: 'Effective Gravitational Accelerations (Mass+Centrifugal)',
  ColSpan: 6

} ).AddTextField( {
  Name: 'GravityAccelForwd',
  ValueRef: 'GravityAccelLocal[0]',
  Label: 'Forwd',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelRight',
  ValueRef: 'GravityAccelLocal[1]',
  Label: 'Right',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelUp',
  ValueRef: 'GravityAccelLocal[2]',
  Label: 'Up',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelX',
  ValueRef: 'GravityAccelEcef[0]',
  Label: 'ECEF X',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelY',
  ValueRef: 'GravityAccelEcef[1]',
  Label: 'Y',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelZ',
  ValueRef: 'GravityAccelEcef[2]',
  Label: 'Z',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelEast',
  Label: 'East',
  ValueRef: 'GravityAccelEnu[0]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelNorth',
  Label: 'North',
  ValueRef: 'GravityAccelEnu[1]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelVert',
  Label: 'Vertical',
  ValueRef: 'GravityAccelEnu[2]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'GravityAccelAbs',
  Label: 'Magnitude',
  Units: 'm/s<sup>2</sup>',

} ).Render();

//-----------------------------------------

ControlPanels.NewPanel( {
  Name: 'SumAccelPanel',
  ModelRef: 'WGS84MotionModel',
  ReadOnly: true,
  PanelFormat: 'InputSmallerWidth',
  NCols: 3,
  Format: 'fix',
  Digits: 8

} ).AddHeader( {
  Text: 'Sum of all Accelerations',
  ColSpan: 6

} ).AddTextField( {
  Name: 'SumAccelForwd',
  ValueRef: 'SumAccelLocal[0]',
  Label: 'Forwd',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'SumAccelRight',
  ValueRef: 'SumAccelLocal[1]',
  Label: 'Right',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'SumAccelUp',
  ValueRef: 'SumAccelLocal[2]',
  Label: 'Up',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'SumAccelX',
  ValueRef: 'SumAccelEcef[0]',
  Label: 'ECEF X',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'SumAccelY',
  ValueRef: 'SumAccelEcef[1]',
  Label: 'Y',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'SumAccelZ',
  ValueRef: 'SumAccelEcef[2]',
  Label: 'Z',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'SumAccelEast',
  Label: 'East',
  ValueRef: 'SumAccelEnu[0]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'SumAccelNorth',
  Label: 'North',
  ValueRef: 'SumAccelEnu[1]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'SumAccelVert',
  Label: 'Vertical',
  ValueRef: 'SumAccelEnu[2]',
  Units: 'm/s<sup>2</sup>',

} ).AddTextField( {
  Name: 'SumAccelAbs',
  Label: 'Magnitude',
  Units: 'm/s<sup>2</sup>',

} ).Render();

//-------------------------------------------------

ControlPanels.NewPanel( {
  Name: 'PositionVelocityPanel',
  ModelRef: 'WGS84MotionModel',
  ReadOnly: true,
  PanelFormat: 'InputSmallerWidth',
  NCols: 3,
  Format: 'fix',
  Digits: 3

} ).AddHeader( {
  Text: 'Position and Velocity',
  ColSpan: 6

} ).AddTextField( {
  Name: 'PosX',
  ValueRef: 'PosEcef[0]',
  Label: 'Pos X',
  Units: 'm',

} ).AddTextField( {
  Name: 'PosY',
  ValueRef: 'PosEcef[1]',
  Label: 'Pos Y',
  Units: 'm',

} ).AddTextField( {
  Name: 'PosZ',
  ValueRef: 'PosEcef[2]',
  Label: 'Pos Z',
  Units: 'm',

} ).AddTextField( {
  Name: 'VelocityX',
  ValueRef: 'VelocityEcef[0]',
  Label: 'Velocity X',
  Units: 'm/s',

} ).AddTextField( {
  Name: 'VelocityY',
  ValueRef: 'VelocityEcef[1]',
  Label: 'Velocity Y',
  Units: 'm/s',

} ).AddTextField( {
  Name: 'VelocityZ',
  ValueRef: 'VelocityEcef[2]',
  Label: 'Velocity Z',
  Units: 'm/s',

} ).AddTextField( {
  Name: 'VelocityEast',
  ValueRef: 'VelocityEnu[0]',
  Label: 'Velocity East',
  Units: 'm/s',

} ).AddTextField( {
  Name: 'VelocityNorth',
  ValueRef: 'VelocityEnu[1]',
  Label: 'North',
  Units: 'm/s',

} ).AddTextField( {
  Name: 'VelocityVert',
  ValueRef: 'VelocityEnu[2]',
  Label: 'Vertical',
  Units: 'm/s',

} ).AddTextField( {
  Name: 'PosLen',
  Label: 'Pos Length',
  Units: 'm',

} ).AddTextField( {
  Name: 'Speed',
  Units: 'm/s',

} ).Render();

//-------------------------------------------------

ControlPanels.NewPanel( {
  Name: 'RadiiPanel',
  ModelRef: 'WGS84MotionModel',
  ReadOnly: true,
  PanelFormat: 'InputSmallerWidth',
  NCols: 2,
  Format: 'fix',
  Digits: 3

} ).AddHeader( {
  Text: 'Radii',
  ColSpan: 4

} ).AddTextField( {
  Name: 'GeocentricRadius',
  Label: 'Geocentric',
  Units: 'm',

} ).AddTextField( {
  Name: 'MeridialRadius',
  Label: 'Meridial',
  Units: 'm',

} ).AddTextField( {
  Name: 'DirectionalRadius',
  Label: 'Directional',
  Units: 'm',

} ).AddTextField( {
  Name: 'PrimeVerticalRadius',
  Label: 'Prime Vertical',
  Units: 'm',

} ).Render();

//-------------------------------------------------

ControlPanels.NewPanel( {
  Name: 'RadiiAltPanel',
  ModelRef: 'WGS84MotionModel',
  ReadOnly: true,
  PanelFormat: 'InputSmallerWidth',
  NCols: 2,
  Format: 'fix',
  Digits: 3

} ).AddHeader( {
  Text: 'Radii + Altitude',
  ColSpan: 4

} ).AddTextField( {
  Name: 'GeocentricRadiusAlt',
  Label: 'Geocentric+Alt',
  Units: 'm',

} ).AddTextField( {
  Name: 'MeridialRadiusAlt',
  Label: 'Meridial+Alt',
  Units: 'm',

} ).AddTextField( {
  Name: 'DirectionalRadiusAlt',
  Label: 'Directional+Alt',
  Units: 'm',

} ).AddTextField( {
  Name: 'PrimeVerticalRadiusAlt',
  Label: 'Prime Vertical+Alt',
  Units: 'm',

} ).Render();

//-------------------------------------------------

xOnLoad( function(){ WGS84MotionModel.Update(); } );

</jscript>

More Page Infos / Sitemap
Created Friday, June 9, 2023
Scroll to Top of Page
Changed Friday, June 9, 2023