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>