450
Aerospace Toolbox User’s Guide R2012a

Aerospace Toolbox User Guide Matlab

  • Upload
    ramksree

  • View
    1.121

  • Download
    14

Embed Size (px)

Citation preview

Page 1: Aerospace Toolbox User Guide Matlab

Aerospace Toolbox

User’s Guide

R2012a

Page 2: Aerospace Toolbox User Guide Matlab

How to Contact MathWorks

www.mathworks.com Webcomp.soft-sys.matlab Newsgroupwww.mathworks.com/contact_TS.html Technical Support

[email protected] Product enhancement [email protected] Bug [email protected] Documentation error [email protected] Order status, license renewals, [email protected] Sales, pricing, and general information

508-647-7000 (Phone)

508-647-7001 (Fax)

The MathWorks, Inc.3 Apple Hill DriveNatick, MA 01760-2098For contact information about worldwide offices, see the MathWorks Web site.

Aerospace Toolbox User’s Guide

© COPYRIGHT 2006–2012 by The MathWorks, Inc.The software described in this document is furnished under a license agreement. The software may be usedor copied only under the terms of the license agreement. No part of this manual may be photocopied orreproduced in any form without prior written consent from The MathWorks, Inc.

FEDERAL ACQUISITION: This provision applies to all acquisitions of the Program and Documentationby, for, or through the federal government of the United States. By accepting delivery of the Programor Documentation, the government hereby agrees that this software or documentation qualifies ascommercial computer software or commercial computer software documentation as such terms are usedor defined in FAR 12.212, DFARS Part 227.72, and DFARS 252.227-7014. Accordingly, the terms andconditions of this Agreement and only those rights specified in this Agreement, shall pertain to and governthe use, modification, reproduction, release, performance, display, and disclosure of the Program andDocumentation by the federal government (or other entity acquiring for or through the federal government)and shall supersede any conflicting contractual terms or conditions. If this License fails to meet thegovernment’s needs or is inconsistent in any respect with federal procurement law, the government agreesto return the Program and Documentation, unused, to The MathWorks, Inc.

Trademarks

MATLAB and Simulink are registered trademarks of The MathWorks, Inc. Seewww.mathworks.com/trademarks for a list of additional trademarks. Other product or brandnames may be trademarks or registered trademarks of their respective holders.

Patents

MathWorks products are protected by one or more U.S. patents. Please seewww.mathworks.com/patents for more information.

Page 3: Aerospace Toolbox User Guide Matlab

Revision HistorySeptember 2006 Online only New for Version 1.0 (Release 2006b)March 2007 Online only Revised for Version 1.1 (Release 2007a)September 2007 First printing Revised for Version 2.0 (Release 2007b)March 2008 Online only Revised for Version 2.1 (Release 2008a)October 2008 Online only Revised for Version 2.2 (Release 2008b)March 2009 Online only Revised for Version 2.3 (Release 2009a)September 2009 Online only Revised for Version 2.4 (Release 2009b)March 2010 Online only Revised for Version 2.5 (Release 2010a)September 2010 Online only Revised for Version 2.6 (Release 2010b)April 2011 Online only Revised for Version 2.7 (Release 2011a)September 2011 Online only Revised for Version 2.8 (Release 2011b)March 2012 Online only Revised for Version 2.9 (Release 2012a)

Page 4: Aerospace Toolbox User Guide Matlab
Page 5: Aerospace Toolbox User Guide Matlab

Contents

Getting Started

1Product Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2Key Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2

Aerospace Toolbox and Aerospace Blockset . . . . . . . . . . 1-3

Using Aerospace Toolbox

2Defining Coordinate Systems . . . . . . . . . . . . . . . . . . . . . . . 2-2Fundamental Coordinate System Concepts . . . . . . . . . . . . 2-2Coordinate Systems for Modeling . . . . . . . . . . . . . . . . . . . . 2-4Coordinate Systems for Navigation . . . . . . . . . . . . . . . . . . . 2-7Coordinate Systems for Display . . . . . . . . . . . . . . . . . . . . . . 2-10References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-11

Aerospace Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-12

Digital DATCOM Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-14Digital DATCOM Data Overview . . . . . . . . . . . . . . . . . . . . . 2-14Example of a USAF Digital DATCOM File . . . . . . . . . . . . . 2-14Data from DATCOM Files . . . . . . . . . . . . . . . . . . . . . . . . . . 2-15Imported DATCOM Data . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-15Missing DATCOM Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-17Aerodynamic Coefficients . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-22

3-D Flight Data Playback . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-26Aerospace Toolbox Animation Objects . . . . . . . . . . . . . . . . . 2-26

Aero.Animation Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-27Running the Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-27

v

Page 6: Aerospace Toolbox User Guide Matlab

Simulated and Actual Flight Data . . . . . . . . . . . . . . . . . . . . 2-27

Aero.VirtualRealityAnimation Objects . . . . . . . . . . . . . . . 2-36Running the Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-36Visualize Aircraft Takeoff via Virtual Reality AnimationObject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-37

Aero.FlightGearAnimation Objects . . . . . . . . . . . . . . . . . . 2-52About the FlightGear Interface . . . . . . . . . . . . . . . . . . . . . . 2-52Configuring Your Computer for FlightGear . . . . . . . . . . . . 2-53Install and Start FlightGear . . . . . . . . . . . . . . . . . . . . . . . . 2-56Flight Simulator Interface Example . . . . . . . . . . . . . . . . . . 2-57Running the Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-59Flight Trajectory Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-60

Function Reference

3Animation Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3

Body Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4

Camera Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5

FlightGear Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6

Geometry Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-7

Node Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8

Viewpoint Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-9

Virtual Reality Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-10

Axes Transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-11

vi Contents

Page 7: Aerospace Toolbox User Guide Matlab

Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-13

File Reading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-14

Flight Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-15

Gas Dynamics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-16

Quaternion Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-17

Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-18

Unit Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-19

Alphabetical List

4

AC3D Files and Thumbnails

AOverview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-2

Index

vii

Page 8: Aerospace Toolbox User Guide Matlab

viii Contents

Page 9: Aerospace Toolbox User Guide Matlab

1

Getting Started

• “Product Description” on page 1-2

• “Aerospace Toolbox and Aerospace Blockset” on page 1-3

Page 10: Aerospace Toolbox User Guide Matlab

1 Getting Started

Product DescriptionAerospace reference standards, environmental models, andaerodynamic coefficient importing

Aerospace Toolbox provides reference standards, environmental models,and aerodynamic coefficient importing for performing advanced aerospaceanalysis to develop and evaluate your designs. Options for visualizing vehicledynamics include a six-degrees-of-freedom MATLAB® animation object andinterfaces to FlightGear flight simulator and Simulink® 3D Animation™software. These options let you visualize flight data in a three-dimensional(3-D) environment and reconstruct behavioral anomalies in flight-test results.

Key Features

• Includes standards-based environmental models for atmosphere, gravity,geoid height, wind, and magnetic field

• Converts units and transforms coordinate systems and spatialrepresentations

• Implements predefined utilities for aerospace parameter calculations, timecalculations, and quaternion math

• Imports aerodynamic coefficients from the U.S. Air Force Digital DataCompendium (Datcom)

• Provides options for visualizing vehicle dynamics in a 3-D environment,including an interface to FlightGear flight simulator

1-2

Page 11: Aerospace Toolbox User Guide Matlab

Aerospace Toolbox and Aerospace Blockset™

Aerospace Toolbox and Aerospace BlocksetThe Aerospace product family includes the Aerospace Toolbox and AerospaceBlockset products. The toolbox provides static data analysis capabilities,while the blockset provides an environment for dynamic modeling andvehicle component modeling and simulation. The Aerospace Blockset™software uses part of the functionality of the toolbox as an engine. Use theseproducts together to model aerospace systems in the MATLAB and Simulinkenvironments.

1-3

Page 12: Aerospace Toolbox User Guide Matlab

1 Getting Started

1-4

Page 13: Aerospace Toolbox User Guide Matlab

2

Using Aerospace Toolbox

• “Defining Coordinate Systems” on page 2-2

• “Aerospace Units” on page 2-12

• “Digital DATCOM Data” on page 2-14

• “3-D Flight Data Playback” on page 2-26

• “Aero.Animation Objects” on page 2-27

• “Aero.VirtualRealityAnimation Objects” on page 2-36

• “Aero.FlightGearAnimation Objects” on page 2-52

Page 14: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

Defining Coordinate Systems

In this section...

“Fundamental Coordinate System Concepts” on page 2-2

“Coordinate Systems for Modeling” on page 2-4

“Coordinate Systems for Navigation” on page 2-7

“Coordinate Systems for Display” on page 2-10

“References” on page 2-11

Fundamental Coordinate System ConceptsCoordinate systems allow you to keep track of an aircraft or spacecraft’sposition and orientation in space. The Aerospace Toolbox coordinate systemsare based on these underlying concepts from geodesy, astronomy, and physics.

DefinitionsThe Aerospace Toolbox software uses right-handed (RH) Cartesian coordinatesystems. The right-hand rule establishes the x-y-z sequence of coordinateaxes.

An inertial frame is a nonaccelerating motion reference frame. Looselyspeaking, acceleration is defined with respect to the distant cosmos. In aninertial frame, Newton’s second law (force = mass X acceleration) holds.

Strictly defined, an inertial frame is a member of the set of all frames notaccelerating relative to one another. A noninertial frame is any frameaccelerating relative to an inertial frame. Its acceleration, in general, includesboth translational and rotational components, resulting in pseudoforces(pseudogravity, as well as Coriolis and centrifugal forces).

The toolbox models the Earth’s shape (the geoid) as an oblate spheroid, aspecial type of ellipsoid with two longer axes equal (defining the equatorialplane) and a third, slightly shorter (geopolar) axis of symmetry. The equatoris the intersection of the equatorial plane and the Earth’s surface. Thegeographic poles are the intersection of the Earth’s surface and the geopolaraxis. In general, the Earth’s geopolar and rotation axes are not identical.

2-2

Page 15: Aerospace Toolbox User Guide Matlab

Defining Coordinate Systems

Latitudes parallel the equator. Longitudes parallel the geopolar axis. Thezero longitude or prime meridian passes through Greenwich, England.

ApproximationsThe Aerospace Toolbox software makes three standard approximations indefining coordinate systems relative to the Earth.

• The Earth’s surface or geoid is an oblate spheroid, defined by its longerequatorial and shorter geopolar axes. In reality, the Earth is slightlydeformed with respect to the standard geoid.

• The Earth’s rotation axis and equatorial plane are perpendicular, so thatthe rotation and geopolar axes are identical. In reality, these axes areslightly misaligned, and the equatorial plane wobbles as the Earth rotates.This effect is negligible in most applications.

• The only noninertial effect in Earth-fixed coordinates is due to the Earth’srotation about its axis. This is a rotating, geocentric system. The toolboxignores the Earth’s motion around the Sun, the Sun’s motion in the Galaxy,and the Galaxy’s motion through cosmos. In most applications, only theEarth’s rotation matters.

This approximation must be changed for spacecraft sent into deep space,i.e., outside the Earth-Moon system, and a heliocentric system is preferred.

Motion with Respect to Other PlanetsThe Aerospace Toolbox software uses the standard WGS-84 geoid to modelthe Earth. You can change the equatorial axis length, the flattening, andthe rotation rate.

You can represent the motion of spacecraft with respect to any celestial bodythat is well approximated by an oblate spheroid by changing the spheroidsize, flattening, and rotation rate. If the celestial body is rotating westward(retrogradely), make the rotation rate negative.

2-3

Page 16: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

Coordinate Systems for ModelingModeling aircraft and spacecraft is simplest if you use a coordinate systemfixed in the body itself. In the case of aircraft, the forward direction ismodified by the presence of wind, and the craft’s motion through the air isnot the same as its motion relative to the ground.

Body CoordinatesThe noninertial body coordinate system is fixed in both origin and orientationto the moving craft. The craft is assumed to be rigid.

The orientation of the body coordinate axes is fixed in the shape of body.

• The x-axis points through the nose of the craft.

• The y-axis points to the right of the x-axis (facing in the pilot’s direction ofview), perpendicular to the x-axis.

• The z-axis points down through the bottom of the craft, perpendicular tothe x-y plane and satisfying the RH rule.

Translational Degrees of Freedom. Translations are defined by movingalong these axes by distances x, y, and z from the origin.

Rotational Degrees of Freedom. Rotations are defined by the Euler anglesP, Q, R or Φ, Θ, Ψ. They are

• P or Φ: Roll about the x-axis

• Q or Θ: Pitch about the y-axis

• R or Ψ: Yaw about the z-axis

2-4

Page 17: Aerospace Toolbox User Guide Matlab

Defining Coordinate Systems

Wind CoordinatesThe noninertial wind coordinate system has its origin fixed in the rigidaircraft. The coordinate system orientation is defined relative to the craft’svelocity V.

The orientation of the wind coordinate axes is fixed by the velocity V.

• The x-axis points in the direction of V.

• The y-axis points to the right of the x-axis (facing in the direction of V),perpendicular to the x-axis.

• The z-axis points perpendicular to the x-y plane in whatever way needed tosatisfy the RH rule with respect to the x- and y-axes.

Translational Degrees of Freedom. Translations are defined by movingalong these axes by distances x, y, and z from the origin.

2-5

Page 18: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

Rotational Degrees of Freedom. Rotations are defined by the Eulerangles Φ, γ, χ. They are

• Φ: Bank angle about the x-axis

• γ: Flight path about the y-axis

• χ: Heading angle about the z-axis

2-6

Page 19: Aerospace Toolbox User Guide Matlab

Defining Coordinate Systems

Coordinate Systems for NavigationModeling aerospace trajectories requires positioning and orienting the aircraftor spacecraft with respect to the rotating Earth. Navigation coordinates aredefined with respect to the center and surface of the Earth.

Geocentric and Geodetic LatitudesThe geocentric latitude λ on the Earth’s surface is defined by the anglesubtended by the radius vector from the Earth’s center to the surface pointwith the equatorial plane.

The geodetic latitude μ on the Earth’s surface is defined by the anglesubtended by the surface normal vector n and the equatorial plane.

2-7

Page 20: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

NED CoordinatesThe north-east-down (NED) system is a noninertial system with its originfixed at the aircraft or spacecraft’s center of gravity. Its axes are orientedalong the geodetic directions defined by the Earth’s surface.

• The x-axis points north parallel to the geoid surface, in the polar direction.

• The y-axis points east parallel to the geoid surface, along a latitude curve.

• The z-axis points downward, toward the Earth’s surface, antiparallel to thesurface’s outward normal n.

Flying at a constant altitude means flying at a constant z above the Earth’ssurface.

2-8

Page 21: Aerospace Toolbox User Guide Matlab

Defining Coordinate Systems

ECI CoordinatesThe Earth-centered inertial (ECI) system is a mixed inertial system. It isoriented with respect to the Sun. Its origin is fixed at the center of the Earth.

• The z-axis points northward along the Earth’s rotation axis.

• The x-axis points outward in the Earth’s equatorial plane exactly at theSun. (This rule ignores the Sun’s oblique angle to the equator, which varieswith season. The actual Sun always remains in the x-z plane.)

• The y-axis points into the eastward quadrant, perpendicular to the x-zplane so as to satisfy the RH rule.

Earth-Centered Coordinates

2-9

Page 22: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

ECEF CoordinatesThe Earth-center, Earth-fixed (ECEF) system is a noninertial system thatrotates with the Earth. Its origin is fixed at the center of the Earth.

• The z-axis points northward along the Earth’s rotation axis.

• The x-axis points outward along the intersection of the Earth’s equatorialplane and prime meridian.

• The y-axis points into the eastward quadrant, perpendicular to the x-zplane so as to satisfy the RH rule.

Coordinate Systems for DisplayThe Aerospace Toolbox software lets you use FlightGear coordinates forrendering motion.

FlightGear is an open-source, third-party flight simulator with an interfacesupported by the Aerospace Toolbox product.

• “Flight Simulator Interface Example” on page 2-57 discusses the toolboxinterface to FlightGear.

• See the FlightGear documentation at www.flightgear.org for completeinformation about this flight simulator.

The FlightGear coordinates form a special body-fixed system, rotated from thestandard body coordinate system about the y-axis by -180 degrees:

• The x-axis is positive toward the back of the vehicle.

• The y-axis is positive toward the right of the vehicle.

• The z-axis is positive upward, e.g., wheels typically have the lowest zvalues.

2-10

Page 23: Aerospace Toolbox User Guide Matlab

Defining Coordinate Systems

ReferencesRecommended Practice for Atmospheric and Space Flight Vehicle CoordinateSystems, R-004-1992, ANSI/AIAA, February 1992.

Mapping Toolbox User’s Guide, The MathWorks, Inc., Natick, Massachusetts.www.mathworks.com/help/toolbox/map/.

Rogers, R. M., Applied Mathematics in Integrated Navigation Systems, AIAA,Reston, Virginia, 2000.

Stevens, B. L., and F. L. Lewis, Aircraft Control and Simulation, 2nd ed.,Wiley-Interscience, New York, 2003.

Thomson, W. T., Introduction to Space Dynamics, John Wiley & Sons, NewYork, 1961/Dover Publications, Mineola, New York, 1986.

World Geodetic System 1984 (WGS 84),http://earth-info.nga.mil/GandG/wgs84.

2-11

Page 24: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

Aerospace UnitsThe Aerospace Toolbox functions support standard measurement systems.The Unit Conversion functions provide means for converting commonmeasurement units from one system to another, such as converting velocityfrom feet per second to meters per second and vice versa.

The unit conversion functions support all units listed in this table.

Quantity MKS (SI) English

Acceleration meters/second2 (m/s2),kilometers/second2

(km/s2),(kilometers/hour)/second(km/h-s), g-unit (g)

inches/second2 (in/s2),feet/second2 (ft/s2),(miles/hour)/second(mph/s), g-unit (g)

Angle radian (rad), degree(deg), revolution

radian (rad), degree(deg), revolution

Angular acceleration radians/second2 (rad/s2),degrees/second2 (deg/s2)

radians/second2 (rad/s2),degrees/second2 (deg/s2)

Angular velocity radians/second (rad/s),degrees/second (deg/s),revolutions/minute(rpm),revolutions/second (rps)

radians/second (rad/s),degrees/second (deg/s),revolutions/minute(rpm), revolutions/second(rps)

Density kilogram/meter3 (kg/m3) pound mass/foot3

(lbm/ft3), slug/foot3

(slug/ft3), poundmass/inch3 (lbm/in3)

Force newton (N) pound (lb)

Inertia kilogram-meter2 (kg-m2) slug-foot2 (slug-ft2)

Length meter (m) inch (in), foot (ft), mile(mi), nautical mile (nm)

Mass kilogram (kg) slug (slug), pound mass(lbm)

2-12

Page 25: Aerospace Toolbox User Guide Matlab

Aerospace Units

Quantity MKS (SI) English

Pressure pascal (Pa) pound/inch2 (psi),pound/foot2 (psf),atmosphere (atm)

Temperature kelvin (K), degreesCelsius (oC)

degrees Fahrenheit (oF),degrees Rankine (oR)

Torque newton-meter (N-m) pound-feet (lb-ft)

Velocity meters/second (m/s),kilometers/second(km/s), kilometers/hour(km/h)

inches/second (in/sec),feet/second (ft/sec),feet/minute (ft/min),miles/hour (mph), knots

2-13

Page 26: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

Digital DATCOM Data

In this section...

“Digital DATCOM Data Overview” on page 2-14

“Example of a USAF Digital DATCOM File” on page 2-14

“Data from DATCOM Files” on page 2-15

“Imported DATCOM Data” on page 2-15

“Missing DATCOM Data” on page 2-17

“Aerodynamic Coefficients” on page 2-22

Digital DATCOM Data OverviewThe Aerospace Toolbox product enables bringing United States Air Force(USAF) Digital DATCOM files into the MATLAB environment by usingthe datcomimport function. For more information, see the datcomimportfunction reference page. This section explains how to import data from aUSAF Digital DATCOM file.

The example used in the following topics is available as an Aerospace Toolboxexample. You can run the example either by entering astimportddatcom inthe MATLAB Command Window or by finding the example entry (Importingfrom USAF Digital DATCOM Files) in the MATLAB Online Help and clickingRun in the Command Window on its example page.

Example of a USAF Digital DATCOM FileThe following is a sample input file for USAF Digital DATCOM for awing-body-horizontal tail-vertical tail configuration running over five alphas,two Mach numbers, and two altitudes and calculating static and dynamicderivatives. You can also view this file by entering type astdatcom.in in theMATLAB Command Window.

$FLTCON NMACH=2.0,MACH(1)=0.1,0.2$

$FLTCON NALT=2.0,ALT(1)=5000.0,8000.0$

$FLTCON NALPHA=5.,ALSCHD(1)=-2.0,0.0,2.0,

ALSCHD(4)=4.0,8.0,LOOP=2.0$

$OPTINS SREF=225.8,CBARR=5.75,BLREF=41.15$

2-14

Page 27: Aerospace Toolbox User Guide Matlab

Digital DATCOM Data

$SYNTHS XCG=7.08,ZCG=0.0,XW=6.1,ZW=-1.4,ALIW=1.1,XH=20.2,

ZH=0.4,ALIH=0.0,XV=21.3,ZV=0.0,VERTUP=.TRUE.$

$BODY NX=10.0,

X(1)=-4.9,0.0,3.0,6.1,9.1,13.3,20.2,23.5,25.9,

R(1)=0.0,1.0,1.75,2.6,2.6,2.6,2.0,1.0,0.0$

$WGPLNF CHRDTP=4.0,SSPNE=18.7,SSPN=20.6,CHRDR=7.2,SAVSI=0.0,CHSTAT=0.25,

TWISTA=-1.1,SSPNDD=0.0,DHDADI=3.0,DHDADO=3.0,TYPE=1.0$

NACA-W-6-64A412

$HTPLNF CHRDTP=2.3,SSPNE=5.7,SSPN=6.625,CHRDR=0.25,SAVSI=11.0,

CHSTAT=1.0,TWISTA=0.0,TYPE=1.0$

NACA-H-4-0012

$VTPLNF CHRDTP=2.7,SSPNE=5.0,SSPN=5.2,CHRDR=5.3,SAVSI=31.3,

CHSTAT=0.25,TWISTA=0.0,TYPE=1.0$

NACA-V-4-0012

CASEID SKYHOGG BODY-WING-HORIZONTAL TAIL-VERTICAL TAIL CONFIG

DAMP

NEXT CASE

The output file generated by USAF Digital DATCOM for the samewing-body-horizontal tail-vertical tail configuration running over five alphas,two Mach numbers, and two altitudes can be viewed by entering typeastdatcom.out in the MATLAB Command Window.

Data from DATCOM FilesUse the datcomimport function to bring the Digital DATCOM data into theMATLAB environment.

alldata = datcomimport('astdatcom.out', true, 0);

Imported DATCOM DataThe datcomimport function creates a cell array of structures containing thedata from the Digital DATCOM output file.

data = alldata{1}

data =

case: 'SKYHOGG BODY-WING-HORIZONTAL TAIL-VERTICAL TAIL CONFIG'

mach: [0.1000 0.2000]

alt: [5000 8000]

2-15

Page 28: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

alpha: [-2 0 2 4 8]

nmach: 2

nalt: 2

nalpha: 5

rnnub: []

hypers: 0

loop: 2

sref: 225.8000

cbar: 5.7500

blref: 41.1500

dim: 'ft'

deriv: 'deg'

stmach: 0.6000

tsmach: 1.4000

save: 0

stype: []

trim: 0

damp: 1

build: 1

part: 0

highsym: 0

highasy: 0

highcon: 0

tjet: 0

hypeff: 0

lb: 0

pwr: 0

grnd: 0

wsspn: 18.7000

hsspn: 5.7000

ndelta: 0

delta: []

deltal: []

deltar: []

ngh: 0

grndht: []

config: [1x1 struct]

cd: [5x2x2 double]

cl: [5x2x2 double]

cm: [5x2x2 double]

2-16

Page 29: Aerospace Toolbox User Guide Matlab

Digital DATCOM Data

cn: [5x2x2 double]

ca: [5x2x2 double]

xcp: [5x2x2 double]

cla: [5x2x2 double]

cma: [5x2x2 double]

cyb: [5x2x2 double]

cnb: [5x2x2 double]

clb: [5x2x2 double]

qqinf: [5x2x2 double]

eps: [5x2x2 double]

depsdalp: [5x2x2 double]

clq: [5x2x2 double]

cmq: [5x2x2 double]

clad: [5x2x2 double]

cmad: [5x2x2 double]

clp: [5x2x2 double]

cyp: [5x2x2 double]

cnp: [5x2x2 double]

cnr: [5x2x2 double]

clr: [5x2x2 double]

Missing DATCOM DataBy default, missing data points are set to 99999 and data points are set toNaN where no DATCOM methods exist or where the method is not applicable.

It can be seen in the Digital DATCOM output file and examining the imported

data that CYβ , Cnβ , Clq , and Cmq have data only in the first alpha value.Here are the imported data values.

data.cyb

ans(:,:,1) =

1.0e+004 *

-0.0000 -0.0000

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

2-17

Page 30: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

ans(:,:,2) =

1.0e+004 *

-0.0000 -0.0000

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

data.cnb

ans(:,:,1) =

1.0e+004 *

0.0000 0.0000

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

ans(:,:,2) =

1.0e+004 *

0.0000 0.0000

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

data.clq

ans(:,:,1) =

1.0e+004 *

0.0000 0.0000

2-18

Page 31: Aerospace Toolbox User Guide Matlab

Digital DATCOM Data

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

ans(:,:,2) =

1.0e+004 *

0.0000 0.0000

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

data.cmq

ans(:,:,1) =

1.0e+004 *

-0.0000 -0.0000

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

ans(:,:,2) =

1.0e+004 *

-0.0000 -0.0000

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

9.9999 9.9999

The missing data points will be filled with the values for the first alpha, sincethese data points are meant to be used for all alpha values.

2-19

Page 32: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

aerotab = {'cyb' 'cnb' 'clq' 'cmq'};

for k = 1:length(aerotab)

for m = 1:data.nmach

for h = 1:data.nalt

data.(aerotab{k})(:,m,h) = data.(aerotab{k})(1,m,h);

end

end

end

Here are the updated imported data values.

data.cyb

ans(:,:,1) =

-0.0035 -0.0035

-0.0035 -0.0035

-0.0035 -0.0035

-0.0035 -0.0035

-0.0035 -0.0035

ans(:,:,2) =

-0.0035 -0.0035

-0.0035 -0.0035

-0.0035 -0.0035

-0.0035 -0.0035

-0.0035 -0.0035

data.cnb

ans(:,:,1) =

1.0e-003 *

0.9142 0.8781

0.9142 0.8781

0.9142 0.8781

0.9142 0.8781

0.9142 0.8781

2-20

Page 33: Aerospace Toolbox User Guide Matlab

Digital DATCOM Data

ans(:,:,2) =

1.0e-003 *

0.9190 0.8829

0.9190 0.8829

0.9190 0.8829

0.9190 0.8829

0.9190 0.8829

data.clq

ans(:,:,1) =

0.0974 0.0984

0.0974 0.0984

0.0974 0.0984

0.0974 0.0984

0.0974 0.0984

ans(:,:,2) =

0.0974 0.0984

0.0974 0.0984

0.0974 0.0984

0.0974 0.0984

0.0974 0.0984

data.cmq

ans(:,:,1) =

-0.0892 -0.0899

-0.0892 -0.0899

-0.0892 -0.0899

-0.0892 -0.0899

-0.0892 -0.0899

2-21

Page 34: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

ans(:,:,2) =

-0.0892 -0.0899

-0.0892 -0.0899

-0.0892 -0.0899

-0.0892 -0.0899

-0.0892 -0.0899

Aerodynamic CoefficientsYou can now plot the aerodynamic coefficients:

• “Plotting Lift Curve Moments” on page 2-22

• “Plotting Drag Polar Moments” on page 2-23

• “Plotting Pitching Moments” on page 2-24

Plotting Lift Curve Moments

h1 = figure;

figtitle = {'Lift Curve' ''};

for k=1:2

subplot(2,1,k)

plot(data.alpha,permute(data.cl(:,k,:),[1 3 2]))

grid

ylabel(['Lift Coefficient (Mach =' num2str(data.mach(k)) ')'])

title(figtitle{k});

end

xlabel('Angle of Attack (deg)')

2-22

Page 35: Aerospace Toolbox User Guide Matlab

Digital DATCOM Data

Plotting Drag Polar Moments

h2 = figure;

figtitle = {'Drag Polar' ''};

for k=1:2

subplot(2,1,k)

plot(permute(data.cd(:,k,:),[1 3 2]),permute(data.cl(:,k,:),[1 3 2]))

grid

ylabel(['Lift Coefficient (Mach =' num2str(data.mach(k)) ')'])

title(figtitle{k})

end

xlabel('Drag Coefficient')

2-23

Page 36: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

Plotting Pitching Moments

h3 = figure;

figtitle = {'Pitching Moment' ''};

for k=1:2

subplot(2,1,k)

plot(permute(data.cm(:,k,:),[1 3 2]),permute(data.cl(:,k,:),[1 3 2]))

grid

ylabel(['Lift Coefficient (Mach =' num2str(data.mach(k)) ')'])

title(figtitle{k})

end

xlabel('Pitching Moment Coefficient')

2-24

Page 37: Aerospace Toolbox User Guide Matlab

Digital DATCOM Data

2-25

Page 38: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

3-D Flight Data Playback

Aerospace Toolbox Animation ObjectsTo visualize flight data in the Aerospace Toolbox environment, you canuse the following animation objects and their associated methods. Theseanimation objects use the MATLAB time series object, timeseries tovisualize flight data.

• Aero.Animation— Visualize flight data without any other tool or toolbox.The following objects support this object.

- Aero.Body

- Aero.Camera

- Aero.Geometry

For more information, see “Aero.Animation Objects” on page 2-27.

• Aero.VirtualRealityAnimation — Visualize flight data with theSimulink 3D Animation product. The following objects support this object.

- Aero.Node

- Aero.Viewpoint

For more information, see “Aero.VirtualRealityAnimation Objects” on page2-36.

• Aero.FlightGearAnimation— Visualize flight data with the FlightGearsimulator. For more information, see “Aero.FlightGearAnimation Objects”on page 2-52.

2-26

Page 39: Aerospace Toolbox User Guide Matlab

Aero.Animation Objects

Aero.Animation ObjectsThe toolbox interface to animation objects uses the Handle Graphics® product.The Overlaying Simulated and Actual Flight Data (astmlanim) examplevisually compares simulated and actual flight trajectory data by creatinganimation objects, creating bodies for those objects, and loading the flighttrajectory data.

• Create and configure an animation object.

• Load recorded data for flight trajectories.

• Display body geometries in a figure window.

• Play back flight trajectories using the animation object.

• Manipulate the camera.

• Move and reposition bodies.

• Create a transparency in the first body.

• Change the color of the second body.

• Turn off the landing gear of the second body.

Running the Example

1 Start the MATLAB software.

2 Either enter astmlanim in the MATLAB Command Window or by findthe example entry (Overlaying Simulated and Actual Flight Data) in theMATLAB Online Help. Then, click Run in the Command Window onits example page.

While running, the example performs several steps by issuing a series ofcommands.

Simulated and Actual Flight Data

Creating and Configuring an Animation ObjectThis series of commands creates an animation object and configures the object.

2-27

Page 40: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

1 Create an animation object.

h = Aero.Animation;

2 Configure the animation object to set the number of frames per second(FramesPerSecond) property. This configuration controls the rate at whichframes are displayed in the figure window.

h.FramesPerSecond = 10;

3 Configure the animation object to set the seconds of animation data persecond time scaling (TimeScaling) property.

h.TimeScaling = 5;

The combination of FramesPerSecond and TimeScaling property determinethe time step of the simulation. These settings result in a time step ofapproximately 0.5 s.

4 Create and load bodies for the animation object. This example uses thesebodies to work with and display the simulated and actual flight trajectories.The first body is orange; it represents simulated data. The second body isblue; it represents the actual flight data.

idx1 = h.createBody('pa24-250_orange.ac','Ac3d');idx2 = h.createBody('pa24-250_blue.ac','Ac3d');

Both bodies are AC3D format files. AC3D is one of several file formats thatthe animation objects support. FlightGear uses the same file format. Theanimation object reads in the bodies in the AC3D format and stores themas patches in the geometry object within the animation object.

Loading Recorded Data for Flight TrajectoriesThis series of commands loads the recorded flight trajectory data, which iscontained in files in the matlabroot\toolbox\aero\astdemos folder.

• simdata – Contains simulated flight trajectory data, which is set up as a6DoF array.

• fltdata – Contains actual flight trajectory data which is set up in a customformat. To access this custom format data, the example must set the body

2-28

Page 41: Aerospace Toolbox User Guide Matlab

Aero.Animation Objects

object TimeSeriesSourceType parameter to Custom and then specify acustom read function.

1 Load the flight trajectory data.

load simdataload fltdata

2 Set the time series data for the two bodies.

h.Bodies{1}.TimeSeriesSource = simdata;h.Bodies{2}.TimeSeriesSource = fltdata;

3 Identify the time series for the second body as custom.

h.Bodies{2}.TimeSeriesSourceType = 'Custom';

4 Specify the custom read function to access the data in fltdata forthe second body. The example provides the custom read function inmatlabroot\toolbox\aero\astdemos\CustomReadBodyTSData.m.

h.Bodies{2}.TimeseriesReadFcn = @CustomReadBodyTSData;

Displaying Body Geometries in a Figure WindowThis command creates a figure object for the animation object.

h.show();

Playing Back Flight Trajectories Using the Animation ObjectThis command plays back the animation bodies for the duration of the timeseries data. This playback illustrates the differences between the simulatedand actual flight data.

h.play();

2-29

Page 42: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

Manipulating the CameraThis command series describes how you can manipulate the camera onthe two bodies and redisplay the animation. The PositionFcn propertyof a camera object controls the camera position relative to the bodies inthe animation. In the section, “Playing Back Flight Trajectories Using theAnimation Object” on page 2-29, the camera object uses a default value forthe PositionFcn property. In this command series, the example referencesa custom PositionFcn function which uses a static position based on theposition of the bodies. No dynamics are involved. The custom PositionFcnfunction is located in the matlabroot\toolbox\aero\astdemos folder.

1 Set the camera PositionFcn to the custom functionstaticCameraPosition.

h.Camera.PositionFcn = @staticCameraPosition;

2-30

Page 43: Aerospace Toolbox User Guide Matlab

Aero.Animation Objects

2 Run the animation again.

h.play();

Moving and Repositioning BodiesThis series of commands illustrates how to move and reposition bodies.

1 Set the starting time to 0.

t = 0;

2 Move the body to the starting position that is based on the time series data.Use the Aero.Animation object Aero.Animation.updateBodies method.

h.updateBodies(t);

3 Update the camera position using the custom PositionFcnfunction set in the previous section. Use the Aero.Animation objectAero.Animation.updateCamera method.

h.updateCamera(t);

4 Reposition the bodies by first getting the current body position, thenseparating the bodies.

a Get the current body positions and rotations from the objects of bothbodies.

pos1 = h.Bodies{1}.Position;rot1 = h.Bodies{1}.Rotation;pos2 = h.Bodies{2}.Position;rot2 = h.Bodies{2}.Rotation;

b Separate and reposition the bodies by moving them to new positions.

h.moveBody(1,pos1 + [0 0 -3],rot1);h.moveBody(2,pos1 + [0 0 0],rot2);

2-31

Page 44: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

Creating a Transparency in the First BodyThis series of commands illustrates how to create and attach a transparencyto a body. The animation object stores the body geometry as patches. Thisexample manipulates the transparency properties of these patches (see“Creating 3-D Models with Patches” in the MATLAB documentation).

Note The use of transparencies might decrease animation speed onplatforms that use software OpenGL® rendering (see opengl in the MATLABdocumentation).

1 Change the body patch properties. Use the Aero.Body PatchHandlesproperty to get the patch handles for the first body.

patchHandles2 = h.Bodies{1}.PatchHandles;

2 Set the face and edge alpha values that you want for the transparency.

2-32

Page 45: Aerospace Toolbox User Guide Matlab

Aero.Animation Objects

desiredFaceTransparency = .3;desiredEdgeTransparency = 1;

3 Get the current face and edge alpha data and change all values to the alphavalues that you want. In the figure, the first body now has a transparency.

for k = 1:size(patchHandles2,1)

tempFaceAlpha = get(patchHandles2(k),'FaceVertexAlphaData');

tempEdgeAlpha = get(patchHandles2(k),'EdgeAlpha');

set(patchHandles2(k),...

'FaceVertexAlphaData',repmat(desiredFaceTransparency,size(tempFaceAlpha)));

set(patchHandles2(k),...

'EdgeAlpha',repmat(desiredEdgeTransparency,size(tempEdgeAlpha)));

end

Changing the Color of the Second BodyThis series of commands illustrates how to change the color of a body.The animation object stores the body geometry as patches. This examplemanipulates the FaceVertexColorData property of these patches.

2-33

Page 46: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

1 Change the body patch properties. Use the Aero.Body PatchHandlesproperty to get the patch handles for the first body.

patchHandles3 = h.Bodies{2}.PatchHandles;

2 Set the patch color to red.

desiredColor = [1 0 0];

3 Get the current face color and data and propagate the new patch color,red, to the face.

• The if condition prevents the windows from being colored.

• The name property is stored in the body geometry data(h.Bodies{2}.Geometry.FaceVertexColorData(k).name).

• The code changes only the indices in patchHandles3 with nonwindowcounterparts in the body geometry data.

Note If you cannot access the name property to determine the parts ofthe vehicle to color, you must use an alternative way to selectively coloryour vehicle.

for k = 1:size(patchHandles3,1)

tempFaceColor = get(patchHandles3(k),'FaceVertexCData');

tempName = h.Bodies{2}.Geometry.FaceVertexColorData(k).name;

if isempty(strfind(tempName,'Windshield')) &&...

isempty(strfind(tempName,'front-windows')) &&...

isempty(strfind(tempName,'rear-windows'))

set(patchHandles3(k),...

'FaceVertexCData',repmat(desiredColor,[size(tempFaceColor,1),1]));

end

end

Turning Off the Landing Gear of the Second BodyThis command series illustrates how to turn off the landing gear on thesecond body by turning off the visibility of all the vehicle parts associatedwith the landing gear.

2-34

Page 47: Aerospace Toolbox User Guide Matlab

Aero.Animation Objects

Note The indices into the patchHandles3 vector are determined from thename property. If you cannot access the name property to determine theindices, you must use an alternative way to determine the indices thatcorrespond to the geometry parts.

for k = [1:8,11:14,52:57]set(patchHandles3(k),'Visible','off')

end

2-35

Page 48: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

Aero.VirtualRealityAnimation ObjectsThe Aerospace Toolbox interface to virtual reality animation objectsuses the Simulink 3D Animation software. For more information, seeAero.VirtualRealityAnimation, Aero.Node, and Aero.Viewpoint.

• Create, configure, and initialize an animation object.

• Enable the tracking of changes to virtual worlds.

• Load the animation world.

• Load time series data for simulation.

• Set coordination information for the object.

• Add a chase helicopter to the object.

• Load time series data for chase helicopter simulation.

• Set coordination information for the new object.

• Add a new viewpoint for the helicopter.

• Play the animation.

• Create a new viewpoint.

• Add a route.

• Add another helicopter.

• Remove bodies.

• Revert to the original world.

Running the Example

1 Start the MATLAB software.

2 Either enter astvranim in the MATLAB Command Window or find theexample entry (Visualize Aircraft Takeoff via the Simulink 3D Animationproduct) in the MATLAB Online Help. Then, click Run in the CommandWindow on its example page.

While running, the example performs several steps by issuing a series ofcommands.

2-36

Page 49: Aerospace Toolbox User Guide Matlab

Aero.VirtualRealityAnimation Objects

Visualize Aircraft Takeoff via Virtual RealityAnimation ObjectVisualize aircraft takeoff and chase helicopter with the virtualreality animation object. This example shows how you can use theAero.VirtualRealityAnimation object to set up a virtual reality animationbased on the asttkoff.wrl file. The scene simulates an aircraft takeoff. Theexample adds a chase vehicle to the simulation and a chase viewpointassociated with the new vehicle.

Create the Animation Object

This code creates an instance of the Aero.VirtualRealityAnimation object.

h = Aero.VirtualRealityAnimation;

Set the Animation Object Properties

This code sets the number of frames per second and the seconds of animationdata per second time scaling. 'FramesPerSecond' controls the rate at whichframes are displayed in the figure window. 'TimeScaling' is the seconds ofanimation data per second time scaling.

The 'TimeScaling' and 'FramesPerSecond' properties determine the timestep of the simulation. The settings in this example result in a time step ofapproximately 0.5s. The equation is:

(1/FramesPerSecond)*TimeScaling + extra terms to handle for sub-secondprecision.

h.FramesPerSecond = 10;h.TimeScaling = 5;

This code sets the .wrl file to be used in the virtual reality animation.

h.VRWorldFilename = [matlabroot,'/toolbox/aero/astdemos/asttkoff.wrl'];

Change Directory

The VirtualRealityAnimation object methods use temporary .wrl files to keeptrack of changes to the world. This requires the directory containing the

2-37

Page 50: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

original .wrl file to be writable. This code runs the example from a temporarydirectory to ensure there are no issues with directory permissions. Note if youare running a demonstration copy of the Simulink 3D Animation™ softwareyou will receive an error.

% Copy file to temporary directorycopyfile(h.VRWorldFilename,[tempdir,'asttkoff.wrl'],'f');% Set world filename to the copied .wrl file.h.VRWorldFilename = [tempdir,'asttkoff.wrl'];

Initialize the Virtual Reality Animation Object

The initialize method loads the animation world described in the'VRWorldFilename' field of the animation object. When parsing the world,node objects are created for existing nodes with DEF names. The initializemethod also opens the Simulink 3D Animation viewer.

h.initialize();

2-38

Page 51: Aerospace Toolbox User Guide Matlab

Aero.VirtualRealityAnimation Objects

Set Additional Node Information

This code sets simulation timeseries data. takeoffData.mat contains loggedsimulated data. takeoffData is set up as a 'StructureWithTime', which isone of the default data formats.

load takeoffData[~, idxPlane] = find(strcmp('Plane', h.nodeInfo));h.Nodes{idxPlane}.TimeseriesSource = takeoffData;h.Nodes{idxPlane}.TimeseriesSourceType = 'StructureWithTime';

Set Coordinate Transform Function

The virtual reality animation object expects positions and rotations inaerospace body coordinates. If the input data is different, you must create a

2-39

Page 52: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

coordinate transformation function in order to correctly line up the positionand rotation data with the surrounding objects in the virtual world. This codesets the coordinate transformation function for the virtual reality animation.

In this particular case, if the input translation coordinatesare [x1,y1,z1], they must be adjusted as follows: [X,Y,Z] =-[y1,x1,z1]. The custom transform function can be seen here:matlabroot/toolbox/aero/astdemos/vranimCustomTransform.m

h.Nodes{idxPlane}.CoordTransformFcn = @vranimCustomTransform;

Add a Chase Helicopter

This code shows how to add a chase helicopter to the animation object.

You can view all the nodes currently in the virtual reality animation objectby using the nodeInfo method. When called with no output argument, thismethod prints the node information to the command window. With an outputargument, the method sets node information to that argument.

h.nodeInfo;

Node Information1 Camera12 Plane3 _V24 Block5 Terminal6 _v37 Lighthouse8 _v1

This code moves the camera angle of the virtual reality figure to view theaircraft.

set(h.VRFigure,'CameraDirection',[0.45 0 -1]);

2-40

Page 53: Aerospace Toolbox User Guide Matlab

Aero.VirtualRealityAnimation Objects

Use the addNode method to add another node to the object. By default,each time you add or remove a node or route, or when you call the saveasmethod, Aerospace Toolbox displays a message about the current .wrl filelocation. To disable this message, set the 'ShowSaveWarning' property inthe VirtualRealityAnimation object.

h.ShowSaveWarning = false;h.addNode('Lynx',[matlabroot,'/toolbox/aero/astdemos/chaseHelicopter.wrl'])

2-41

Page 54: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

Another call to nodeInfo shows the newly added Node objects.

h.nodeInfo

Node Information1 Camera12 Plane3 _V24 Block5 Terminal6 _v37 Lighthouse8 _v1

2-42

Page 55: Aerospace Toolbox User Guide Matlab

Aero.VirtualRealityAnimation Objects

9 Lynx10 Lynx_Inline

Adjust newly added helicopter to sit on runway.

[~, idxLynx] = find(strcmp('Lynx',h.nodeInfo));h.Node{idxLynx}.VRNode.translation = [0 1.5 0];

This code sets data properties for the chase helicopter. The'TimeseriesSourceType' is the default 'Array6DoF', so no additionalproperty changes are needed. The same coordinate transform function(vranimCustomTransform) is used for this node as the preceding node. Theprevious call to nodeInfo returned the node index (2).

load chaseDatah.Nodes{idxLynx}.TimeseriesSource = chaseData;h.Nodes{idxLynx}.CoordTransformFcn = @vranimCustomTransform;

Create New Viewpoint

This code uses the addViewpoint method to create a new viewpoint named’chaseView’. The new viewpoint will appear in the viewpoint pulldown menuin the virtual reality window as "View From Helicopter". Another call tonodeInfo shows the newly added node objects. The node is created as a childof the chase helicopter.

h.addViewpoint(h.Nodes{idxLynx}.VRNode,'children','chaseView','View From He

2-43

Page 56: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

Play Animation

The play method runs the simulation for the specified timeseries data.

h.play();

Play Animation From Helicopter

This code sets the orientation of the viewpoint via the vrnode object associatedwith the node object for the viewpoint. In this case, it will change theviewpoint to look out the left side of the helicopter at the plane.

[~, idxChaseView] = find(strcmp('chaseView',h.nodeInfo));h.Nodes{idxChaseView}.VRNode.orientation = [0 1 0 convang(200,'deg','rad')]set(h.VRFigure,'Viewpoint','View From Helicopter');

2-44

Page 57: Aerospace Toolbox User Guide Matlab

Aero.VirtualRealityAnimation Objects

Add ROUTE

This code calls the addRoute method to add a ROUTE command to connectthe plane position to the Camera1 node. This will allow for the "Ride on thePlane" viewpoint to function as intended.

h.addRoute('Plane','translation','Camera1','translation');

2-45

Page 58: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

The scene from the helicopter viewpoint

This code plays the animation.

h.play();

2-46

Page 59: Aerospace Toolbox User Guide Matlab

Aero.VirtualRealityAnimation Objects

Add Another Body

This code adds another helicopter to the scene. It also changes to anotherviewpoint to view all three bodies in the scene at once.

set(h.VRFigure,'Viewpoint','See Whole Trajectory');h.addNode('Lynx1',[matlabroot,'/toolbox/aero/astdemos/chaseHelicopter.wrl']h.nodeInfo

Node Information1 Camera12 Plane3 _V24 Block

2-47

Page 60: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

5 Terminal6 _v37 Lighthouse8 _v19 Lynx10 Lynx_Inline11 chaseView12 Lynx113 Lynx1_Inline

Adjust newly added helicopter to sit above runway.

[~, idxLynx1] = find(strcmp('Lynx1',h.nodeInfo));h.Node{idxLynx1}.VRNode.translation = [0 1.3 0];

2-48

Page 61: Aerospace Toolbox User Guide Matlab

Aero.VirtualRealityAnimation Objects

Remove Body

This code uses the removeNode method to remove the second helicopter.removeNode takes either the node name or node index (as obtained fromnodeInfo). The associated inline node is removed as well.

h.removeNode('Lynx1');h.nodeInfo

Node Information1 Camera12 Plane3 _V24 Block5 Terminal6 _v37 Lighthouse8 _v19 Lynx10 Lynx_Inline11 chaseView

2-49

Page 62: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

Revert To Original World

The original filename is stored in the 'VRWorldOldFilename' property of theanimation object. To bring up the original world, set 'VRWorldFilename' tothe original name and reinitializing it.

h.VRWorldFilename = h.VRWorldOldFilename{1};h.initialize();

2-50

Page 63: Aerospace Toolbox User Guide Matlab

Aero.VirtualRealityAnimation Objects

Close and Delete World

To close and delete

h.delete();

2-51

Page 64: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

Aero.FlightGearAnimation ObjectsThe Aerospace Toolbox interface to the FlightGear flight simulator enablesyou to visualize flight data in a three-dimensional environment. Thethird-party FlightGear simulator is an open source software package availablethrough a GNU® General Public License (GPL). This section describes howto obtain and install the third-party FlightGear flight simulator. It alsodescribes how to play back 3-D flight data by using a FlightGear example,provided with your Aerospace Toolbox software.

In this section...

“About the FlightGear Interface” on page 2-52

“Configuring Your Computer for FlightGear” on page 2-53

“Install and Start FlightGear” on page 2-56

“Flight Simulator Interface Example” on page 2-57

“Running the Example” on page 2-59

“Flight Trajectory Data” on page 2-60

About the FlightGear InterfaceThe FlightGear flight simulator interface included with the Aerospace Toolboxproduct is a unidirectional transmission link from the MATLAB software toFlightGear. It uses FlightGear’s published net_fdm binary data exchangeprotocol. Data is transmitted via UDP network packets to a running instanceof FlightGear. The toolbox supports multiple standard binary distributions ofFlightGear. For interface details, see “Flight Simulator Interface Example”on page 2-57.

FlightGear is a separate software entity that is not created, owned, ormaintained by MathWorks.

• To report bugs in or request enhancements to the Aerospace ToolboxFlightGear interface, contact MathWorks technical support athttp://www.mathworks.com/support/contact_us/index.html?s_cid=contact_us_support_c

• To report bugs or request enhancements to FlightGear itself, go towww.flightgear.org and use the contact page.

2-52

Page 65: Aerospace Toolbox User Guide Matlab

Aero.FlightGearAnimation Objects

Obtaining FlightGear SoftwareYou can obtain FlightGear software from www.flightgear.org in thedownload area or by ordering CDs from FlightGear. The download areacontains extensive documentation for installation and configuration. BecauseFlightGear is an open source project, source downloads are also available forcustomization and porting to custom environments.

Configuring Your Computer for FlightGearYou must have a high performance graphics card with stable drivers to useFlightGear. For more information, see the FlightGear CD distribution or thehardware requirements and documentation areas of the FlightGear Website, www.flightgear.org.

MathWorks tests of FlightGear performance and stability indicate significantsensitivity to computer video cards, driver versions, and driver settings.You must have OpenGL support with hardware acceleration activated.The OpenGL settings are particularly important. Without proper setup,performance can drop from about a 30 frames-per-second (fps) update rate toless than 1 fps.

Graphics Recommendations for Microsoft WindowsFor Windows® users, it is a best practice to use the following graphicsrecommendations:

• A graphics card with good OpenGL performance.

• The latest tested and stable driver release for your video card. Test thedriver thoroughly on a few computers before deploying to others.

For Microsoft® Windows XP systems running on x86 (32-bit) orAMD-64/EM64T chip architectures, the graphics card operates in theunprotected kernel space known as Ring Zero. Problems in the driver cancause the Windows operating system to lock or crash. Before buying a largenumber of computers for 3-D applications, with your vendor, test one or twocomputers to find a combination of hardware, operating system, drivers,and settings that are stable for your applications.

2-53

Page 66: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

Setting Up OpenGL Graphics on WindowsFor complete information on Silicon Graphics OpenGL settings, refer to thedocumentation at the OpenGL Web site, www.opengl.org.

Follow these steps to optimize your video card settings. Your driver’s panesmight look different.

1 Ensure that you have activated the OpenGL hardware acceleration onyour video card. On Windows, access this configuration through Start >Settings > Control Panel > Display, which opens the following dialogbox. Select the Settings tab.

2 In the lower right of the dialog box, click the Advanced button, whichopens the graphics card custom configuration dialog box. Go to theOpenGL tab. For an ATI Mobility Radeon 9000 video card, the OpenGLpane looks like the following graphic.

2-54

Page 67: Aerospace Toolbox User Guide Matlab

Aero.FlightGearAnimation Objects

3 For best performance, near the top of the dialog box, move the MainSettings slider to the Performance end of the slider.

4 If stability is a problem, try other screen resolutions, other color depths inthe Displays pane, and other OpenGL acceleration modes.

Many cards perform much better at 16 bits-per-pixel color depth (also knownas 65536 color mode, 16-bit color). For example, on an ATI Mobility Radeon9000 running a given model, 30 fps are achieved in 16-bit color mode, while 2fps are achieved in 32-bit color mode.

Setup on Linux, Mac OS X, and Other PlatformsFlightGear distributions are available for Linux®, Mac OS® X, and otherUNIX® platforms from the FlightGear Web site, www.flightgear.org.Installation on these platforms, like Windows, requires careful configurationof graphics cards and drivers. Consult the documentation and hardwarerequirements sections at the FlightGear Web site.

2-55

Page 68: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

MATLAB Graphics Controls to Configure Your OpenGL SettingsYou can also control your OpenGL rendering from the MATLAB commandline with the MATLAB Graphics opengl command. For more information,consult the opengl command reference.

Install and Start FlightGearThe extensive FlightGear documentation guides you through the installation.For complete installation instructions, consult the documentation section ofthe FlightGear Web site www.flightgear.org.

Note:

• Generous central processor speed, system and video RAM, and virtualmemory are essential for good flight simulator performance.

Have a minimum of 512 megabytes of system RAM and 128 megabytes ofvideo RAM for reasonable performance.

• Have sufficient disk space for the FlightGear download and installation.

• Before you install FlightGear, configure your computer graphics card. Seethe preceding section, “Configuring Your Computer for FlightGear” onpage 2-53.

• Before installing FlightGear, shut down all running applications (includingthe MATLAB software).

• The operational stability of FlightGear is especially sensitive duringstartup. It is best to not move, resize, mouse over, overlap, or cover upthe FlightGear window until the initial simulation scene appears afterthe startup splash screen fades out.

• The current releases of FlightGear are optimized for flight visualization ataltitudes below 100,000 feet. FlightGear does not work well or at all withvery high altitude and orbital views.

The Aerospace Toolbox product supports FlightGear on a number of platforms(http://www.mathworks.com/products/aerotb/requirements.html). Thefollowing table lists the properties to be aware of before you start usingFlightGear.

2-56

Page 69: Aerospace Toolbox User Guide Matlab

Aero.FlightGearAnimation Objects

FlightGearProperty

Folder Description Platforms Typical Location

Windows C:\Program Files\FlightGear(default)

Sun™Solaris™ orLinux

Directory into which you installedFlightGear

FlightGearBase-Directory

FlightGearinstallation folder.

Mac® /Applications(folder into which you dragged theFlightGear icon)

Windows C:\Program Files\-FlightGear\data\-Aircraft\HL20(default)

Solaris orLinux

$FlightGearBaseDirectory/-data/Aircraft/HL20

GeometryModelName Model geometryfolder

Mac $FlightGearBaseDirectory/-FlightGear.app/Contents/-Resources/data/Aircraft/HL20

Flight Simulator Interface ExampleThe Aerospace Toolbox product provides an example named DisplayingFlight Trajectory Data. This example shows you how you can visualize flighttrajectories with FlightGear Animation object. The example is intended to bemodified depending on the particulars of your FlightGear installation. Usethis example to play back your own 3-D flight data with FlightGear.

Before attempting to simulate this model, you must have FlightGear installedand configured. See “About the FlightGear Interface” on page 2-52.

To run the example:

• Import the aircraft geometry into FlightGear.

• Run the example. The example performs the following steps:

- Loads recorded trajectory data.

2-57

Page 70: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

- Creates a time series object from trajectory data.

- Creates a FlightGearAnimation object.

• Modify the animation object properties, if needed.

• Create a run script for launching the FlightGear flight simulator.

• Start the FlightGear flight simulator.

• Play back the flight trajectory.

Import the Aircraft Geometry into FlightGearBefore running the example, copy the aircraft geometry model intoFlightGear. From the following procedures, choose the one appropriate foryour platform. This section assumes that you have read “Install and StartFlightGear” on page 2-56.

If your platform is Windows:

1 Go to your installed FlightGear folder. Open the data folder, and then theAircraft folder: FlightGear\data\Aircraft\.

2 If you have previously run the Aerospace Blockset NASA HL-20 withFlightGear Interface example, you might already have an HL20 subfolderthere.

Otherwise, copy the HL20 folder from thematlabroot\toolbox\aero\aerodemos\ folder to theFlightGear\data\Aircraft\ folder. This folder contains thepreconfigured geometries for the HL-20 simulation and HL20-set.xml.The file matlabroot\toolbox\aero\aerodemos\HL20\models\HL20.xmldefines the geometry.

If your platform is Solaris or Linux:

1 Go to your installed FlightGear folder. Open the data folder, then theAircraft folder: $FlightGearBaseDirectory/data/Aircraft/.

2 If you have previously run the Aerospace Blockset NASA HL-20 withFlightGear Interface example, you might already have an HL20 subfolder

2-58

Page 71: Aerospace Toolbox User Guide Matlab

Aero.FlightGearAnimation Objects

there. If that is the case, you do not have to do anything, because you canuse the existing geometry model.

Otherwise, copy the HL20 folder from thematlabroot/toolbox/aero/aerodemos/ folder to the$FlightGearBaseDirectory/data/Aircraft/ folder. This folder containsthe preconfigured geometries for the HL-20 simulation and HL20-set.xml.The file matlabroot/toolbox/aero/aerodemos/HL20/models/HL20.xmldefines the geometry.

If your platform is Mac:

1 Open a terminal.

2 List the contents of the Aircraft folder. For example, type:

ls $FlightGearBaseDirectory/data/Aircraft/

3 If you have previously run the Aerospace Blockset NASA HL-20 withFlightGear Interface example, you might already have an HL20 subfolderthere. In this case, you do not have to do anything, because you can use theexisting geometry model. Continue to “Running the Example” on page 2-27.

Otherwise, copy the HL20 folder from the

matlabroot/toolbox/aero/aerodemos/

folder to the

$FlightGearBaseDirectory/FlightGear.app/Contents/Resources/data/Aircraft/

folder. This folder contains the preconfigured geometriesfor the HL-20 simulation and HL20-set.xml. The filematlabroot/toolbox/aero/aerodemos/HL20/models/HL20.xmldefines the geometry.

Running the Example

1 Start the MATLAB software.

2-59

Page 72: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

2 Either enter astfganim in the MATLAB Command Window or find theexample entry (Displaying Flight Trajectory Data) in the MATLAB OnlineHelp. Then, click Run in the Command Window on its example page.

While running, the example performs several steps by issuing a series ofcommands.

Flight Trajectory Data

Loading Recorded Flight Trajectory DataThe flight trajectory data for this example is stored in a comma separatedvalue formatted file. Using dlmread, the data is read from the file starting atrow 1 and column 0, which omits the header information.

tdata = dlmread('asthl20log.csv',',',1,0);

Creating a Time Series Object from Trajectory Data!

The time series object, ts, is created from the latitude, longitude, altitude,Euler angle data, and the time array in tdata using the MATLAB timeseriescommand. Latitude, longitude, and Euler angles are also converted fromdegrees to radians using the convang function.

ts = timeseries([convang(tdata(:,[3 2]),'deg','rad') ...

tdata(:,4) convang(tdata(:,5:7),'deg','rad')],tdata(:,1));

Creating a FlightGearAnimation ObjectThis series of commands creates a FlightGearAnimation object:

1 Open a FlightGearAnimation object.

h = fganimation;

2 Set FlightGearAnimation object properties for the time series.

h.TimeseriesSourceType = 'Timeseries';h.TimeseriesSource = ts;

2-60

Page 73: Aerospace Toolbox User Guide Matlab

Aero.FlightGearAnimation Objects

3 Set FlightGearAnimation object properties relating to FlightGear.These properties include the path to the installation folder, the versionnumber, the aircraft geometry model, and the network information for theFlightGear flight simulator.

h.FlightGearBaseDirectory = 'C:\Program Files\FlightGear20';h.FlightGearVersion = '2.0';h.GeometryModelName = 'HL20';h.DestinationIpAddress = '127.0.0.1';h.DestinationPort = '5502';

4 Set the initial conditions (location and orientation) for the FlightGearflight simulator.

h.AirportId = 'KSFO';h.RunwayId = '10L';h.InitialAltitude = 7224;h.InitialHeading = 113;h.OffsetDistance = 4.72;h.OffsetAzimuth = 0;

5 Set the seconds of animation data per second of wall-clock time.

h.TimeScaling = 5;

6 Check the FlightGearAnimation object properties and their values.

get(h)

The example stops running and returns the FlightGearAnimation object, h:

TimeseriesSource: [196x1 timeseries]TimeseriesSourceType: 'Timeseries'

TimeseriesReadFcn: @TimeseriesReadTimeScaling: 5

FramesPerSecond: 12FlightGearVersion: '2.0'

OutputFileName: 'runfg.bat'FlightGearBaseDirectory: 'C:\Program Files\FlightGear20'

GeometryModelName: 'HL20'DestinationIpAddress: '127.0.0.1'

DestinationPort: '5502'

2-61

Page 74: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

AirportId: 'KSFO'RunwayId: '10L'

InitialAltitude: 7224InitialHeading: 113OffsetDistance: 4.7200OffsetAzimuth: 0

You can now set the object properties for data playback (see “Modifying theFlightGearAnimation Object Properties” on page 2-62).

Modifying the FlightGearAnimation Object PropertiesModify the FlightGearAnimation object properties as needed. If yourFlightGear installation folder is other than that in the example (for example,FlightGear), modify the FlightGearBaseDirectory property by issuingthe following command:

h.FlightGearBaseDirectory = 'C:\Program Files\FlightGear';

Similarly, if you want to use a particular file name for the run script, modifythe OutputFileName property.

Verify the FlightGearAnimation object properties:

get(h)

You can now generate the run script (see “Generating the Run Script” onpage 2-62).

Generating the Run ScriptTo start FlightGear with the initial conditions (location, date, time, weather,operating modes) that you want, it is best to create a run script by usingthe GenerateRunScript command:

GenerateRunScript(h)

By default, GenerateRunScript saves the run script as a text filenamed runfg.bat. You can specify a different name by modifying theOutputFileName property of the FlightGearAnimation object, as describedin the previous step.

2-62

Page 75: Aerospace Toolbox User Guide Matlab

Aero.FlightGearAnimation Objects

This file does not need to be generated each time the data is viewed, onlywhen the initial conditions or FlightGear information changes.

You are now ready to start FlightGear (see “Starting the FlightGear FlightSimulator” on page 2-63).

Installing Additional FlightGear SceneryWhen you install the FlightGear software, the installation provides a basiclevel of scenery files. The FlightGear documentation guides you throughinstalling scenery as part the general FlightGear installation.

If you need to install more FlightGear scenery files, see the instructions athttp://www.flightgear.org. Those instructions describe how to install theadditional scenery in a default location.

If you must install additional scenery in a non-standard location, trysetting the FG_SCENERY environment variable in the script output from theGenerateRunScript function. For a description of the FG_SCENERY variable,see the documentation at http://www.flightgear.org.

Note Each time that you run the GenerateRunScript function, it creates anew script. It overwrites any edits that you have added.

Starting the FlightGear Flight SimulatorTo start FlightGear from the MATLAB command prompt, use the systemcommand to execute the run script. Provide the name of the output filecreated by GenerateRunScript as the argument:

system('runfg.bat &');

FlightGear starts in a separate window.

Tip With the FlightGear window in focus, press the V key to alternatebetween the different aircraft views: cockpit, helicopter, chase, and so on.

2-63

Page 76: Aerospace Toolbox User Guide Matlab

2 Using Aerospace Toolbox

You are now ready to play back data (see “Playing Back the Flight Trajectory”on page 2-64).

Playing Back the Flight TrajectoryOnce FlightGear is running, the FlightGearAnimation object can start tocommunicate with FlightGear. To animate the flight trajectory data, usethe play command:

play(h)

The following illustration shows a snapshot of flight data playback in towerview without yaw.

2-64

Page 77: Aerospace Toolbox User Guide Matlab

3

Function Reference

Animation Objects (p. 3-3) Manipulate Aero.Animation objects

Body Objects (p. 3-4) Manipulate Aero.Body objects

Camera Objects (p. 3-5) Manipulate Aero.Camera objects

FlightGear Objects (p. 3-6) ManipulateAero.FlightGearAnimation objects

Geometry Objects (p. 3-7) Manipulate Aero.Geometry objects

Node Objects (p. 3-8) Manipulate Aero.Node objects

Viewpoint Objects (p. 3-9) Manipulate Aero.Viewpoint objects

Virtual Reality Objects (p. 3-10) ManipulateAero.VirtualRealityAnimationobjects

Axes Transformations (p. 3-11) Transform axes of coordinatesystems to different types, such asEuler angles to quaternions and viceversa

Environment (p. 3-13) Simulate various aspects of aircraftenvironment, such as atmosphereconditions, gravity, magnetic fields,and wind

File Reading (p. 3-14) Read standard aerodynamic fileformats into the MATLAB interface

Flight Parameters (p. 3-15) Various flight parameters, includingideal airspeed correction, Machnumber, and dynamic pressure

Gas Dynamics (p. 3-16) Various gas dynamics tables

Page 78: Aerospace Toolbox User Guide Matlab

3 Function Reference

Quaternion Math (p. 3-17) Common mathematical andmatrix operations, includingquaternion multiplication, division,normalization, and rotating vectorby quaternion

Time (p. 3-18) Time calculations, including Juliandates, decimal year, and leap year

Unit Conversion (p. 3-19) Convert common measurement unitsfrom one system to another, such asconverting acceleration from feet persecond to meters per second and viceversa

3-2

Page 79: Aerospace Toolbox User Guide Matlab

Animation Objects

Animation Objects

addBody (Aero.Animation) Add loaded body to animation objectand generate its patches

Aero.Animation Construct animation object

createBody (Aero.Animation) Create body and its associatedpatches in animation

delete (Aero.Animation) Destroy animation object

hide (Aero.Animation) Hide animation figure

initialize (Aero.Animation) Create animation object figure andaxes and build patches for bodies

initIfNeeded (Aero.Animation) Initialize animation graphics ifneeded

moveBody (Aero.Animation) Move body in animation object

play (Aero.Animation) Animate Aero.Animation objectgiven position/angle time series

removeBody (Aero.Animation) Remove one body from animation

show (Aero.Animation) Show animation object figure

updateBodies (Aero.Animation) Update bodies of animation object

updateCamera (Aero.Animation) Update camera in animation object

3-3

Page 80: Aerospace Toolbox User Guide Matlab

3 Function Reference

Body Objects

Body (Aero.Body) Construct body object for use withanimation object

findstartstoptimes (Aero.Body) Return start and stop times of timeseries data

generatePatches (Aero.Body) Generate patches for body withloaded face, vertex, and color data

load (Aero.Body) Get geometry data from source

move (Aero.Body) Change animation body position andorientation

update (Aero.Body) Change body position and orientationas function of time

3-4

Page 81: Aerospace Toolbox User Guide Matlab

Camera Objects

Camera Objects

Camera (Aero.Camera) Construct camera object for use withanimation object

update (Aero.Camera) Update camera position based ontime and position of other Aero.Bodyobjects

3-5

Page 82: Aerospace Toolbox User Guide Matlab

3 Function Reference

FlightGear Objects

ClearTimer(Aero.FlightGearAnimation)

Clear and delete timer for animationof FlightGear flight simulator

delete (Aero.FlightGearAnimation) Destroy FlightGear animation object

fganimation(Aero.FlightGearAnimation)

Construct FlightGear animationobject

GenerateRunScript(Aero.FlightGearAnimation)

Generate run script for FlightGearflight simulator

initialize(Aero.FlightGearAnimation)

Set up FlightGear animation object

play (Aero.FlightGearAnimation) Animate FlightGear flight simulatorusing given position/angle timeseries

SetTimer(Aero.FlightGearAnimation)

Set name of timer for animation ofFlightGear flight simulator

update (Aero.FlightGearAnimation) Update position data to FlightGearanimation object

3-6

Page 83: Aerospace Toolbox User Guide Matlab

Geometry Objects

Geometry Objects

Geometry (Aero.Geometry) Construct 3-D geometry for use withanimation object

read (Aero.Geometry) Read geometry data using currentreader

3-7

Page 84: Aerospace Toolbox User Guide Matlab

3 Function Reference

Node Objects

findstartstoptimes (Aero.Node) Return start and stop times for timeseries data

move (Aero.Node) Change node translation androtation

Node (Aero.Node) Create node object for use withvirtual reality animation

update (Aero.Node) Change node position andorientation versus time data

3-8

Page 85: Aerospace Toolbox User Guide Matlab

Viewpoint Objects

Viewpoint Objects

Viewpoint (Aero.Viewpoint) Create viewpoint object for use invirtual reality animation

3-9

Page 86: Aerospace Toolbox User Guide Matlab

3 Function Reference

Virtual Reality ObjectsaddNode(Aero.VirtualRealityAnimation)

Add existing node to current virtualreality world

addRoute(Aero.VirtualRealityAnimation)

Add VRML ROUTE statement tovirtual reality animation

addViewpoint(Aero.VirtualRealityAnimation)

Add viewpoint for virtual realityanimation

delete(Aero.VirtualRealityAnimation)

Destroy virtual reality animationobject

initialize(Aero.VirtualRealityAnimation)

Create and populate virtual realityanimation object

nodeInfo(Aero.VirtualRealityAnimation)

Create list of nodes associated withvirtual reality animation object

play (Aero.VirtualRealityAnimation) Animate virtual reality world forgiven position and angle in timeseries data

removeNode(Aero.VirtualRealityAnimation)

Remove node from virtual realityanimation object

removeViewpoint(Aero.VirtualRealityAnimation)

Remove viewpoint node from virtualreality animation

saveas(Aero.VirtualRealityAnimation)

Save virtual reality world associatedwith virtual reality animation object

updateNodes(Aero.VirtualRealityAnimation)

Change virtual reality animationnode position and orientation asfunction of time

VirtualRealityAnimation(Aero.VirtualRealityAnimation)

Construct virtual reality animationobject

3-10

Page 87: Aerospace Toolbox User Guide Matlab

Axes Transformations

Axes Transformationsangle2dcm Create direction cosine matrix from

rotation angles

angle2quat Convert rotation angles toquaternion

dcm2alphabeta Convert direction cosine matrix toangle of attack and sideslip angle

dcm2angle Create rotation angles from directioncosine matrix

dcm2latlon Convert direction cosine matrix togeodetic latitude and longitude

dcm2quat Convert direction cosine matrix toquaternion

dcmbody2wind Convert angle of attack and sideslipangle to direction cosine matrix

dcmecef2ned Convert geodetic latitude andlongitude to direction cosine matrix

ecef2lla Convert Earth-centered Earth-fixed(ECEF) coordinates to geodeticcoordinates

flat2lla Estimate array of geodetic latitude,longitude, and altitude coordinatesfrom flat Earth position

geoc2geod Convert geocentric latitude togeodetic latitude

geod2geoc Convert geodetic latitude togeocentric latitude

igrf11magm Calculate Earth’s magneticfield using 11th generationof International GeomagneticReference Field

3-11

Page 88: Aerospace Toolbox User Guide Matlab

3 Function Reference

lla2ecef Convert geodetic coordinates toEarth-centered Earth-fixed (ECEF)coordinates

lla2flat Estimate flat Earth position fromgeodetic latitude, longitude, andaltitude

quat2angle Convert quaternion to rotationangles

quat2dcm Convert quaternion to directioncosine matrix

3-12

Page 89: Aerospace Toolbox User Guide Matlab

Environment

Environmentatmoscira Use COSPAR International

Reference Atmosphere 1986 model

atmoscoesa Use 1976 COESA model

atmosisa Use International StandardAtmosphere model

atmoslapse Use Lapse Rate Atmosphere model

atmosnonstd Use climatic data fromMIL-STD-210or MIL-HDBK-310

atmosnrlmsise00 Implement mathematicalrepresentation of 2001 UnitedStates Naval Research LaboratoryMass Spectrometer and IncoherentScatter Radar Exosphere

atmospalt Calculate pressure altitude based onambient pressure

geoidegm96 Calculate geoid height as determinedfrom EGM96 Geopotential Model

geoidheight Calculate geoid height

gravitycentrifugal Implement centrifugal effect ofplanetary gravity

gravitysphericalharmonic Implement spherical harmonicrepresentation of planetary gravity

gravitywgs84 Implement 1984 World GeodeticSystem (WGS84) representation ofEarth’s gravity

gravityzonal Implement zonal harmonicrepresentation of planetary gravity

wrldmagm Use World Magnetic Model

3-13

Page 90: Aerospace Toolbox User Guide Matlab

3 Function Reference

File Readingdatcomimport Bring DATCOM file into MATLAB

environment

3-14

Page 91: Aerospace Toolbox User Guide Matlab

Flight Parameters

Flight Parametersairspeed Airspeed from velocity

alphabeta Incidence and sideslip angles

dpressure Compute dynamic pressure usingvelocity and density

geocradius Estimate radius of ellipsoid planetat geocentric latitude

machnumber Compute Mach number usingvelocity and speed of sound

rrdelta Compute relative pressure ratio

rrsigma Compute relative density ratio

rrtheta Compute relative temperature ratio

3-15

Page 92: Aerospace Toolbox User Guide Matlab

3 Function Reference

Gas Dynamics

flowfanno Fanno line flow relations

flowisentropic Isentropic flow ratios

flownormalshock Normal shock relations

flowprandtlmeyer Calculate Prandtl-Meyer functionsfor expansion waves

flowrayleigh Rayleigh line flow relations

3-16

Page 93: Aerospace Toolbox User Guide Matlab

Quaternion Math

Quaternion Mathquatconj Calculate conjugate of quaternion

quatdivide Divide quaternion by anotherquaternion

quatinv Calculate inverse of quaternion

quatmod Calculate modulus of quaternion

quatmultiply Calculate product of two quaternions

quatnorm Calculate norm of quaternion

quatnormalize Normalize quaternion

quatrotate Rotate vector by quaternion

3-17

Page 94: Aerospace Toolbox User Guide Matlab

3 Function Reference

Timedecyear Calculate decimal year

juliandate Calculate Julian date

leapyear Determine leap year

mjuliandate Calculate modified Julian date

3-18

Page 95: Aerospace Toolbox User Guide Matlab

Unit Conversion

Unit Conversionconvacc Convert from acceleration units to

desired acceleration units

convang Convert from angle units to desiredangle units

convangacc Convert from angular accelerationunits to desired angular accelerationunits

convangvel Convert from angular velocity unitsto desired angular velocity units

convdensity Convert from density units to desireddensity units

convforce Convert from force units to desiredforce units

convlength Convert from length units to desiredlength units

convmass Convert from mass units to desiredmass units

convpres Convert from pressure units todesired pressure units

convtemp Convert from temperature units todesired temperature units

convvel Convert from velocity units todesired velocity units

3-19

Page 96: Aerospace Toolbox User Guide Matlab

3 Function Reference

3-20

Page 97: Aerospace Toolbox User Guide Matlab

4

Alphabetical List

Page 98: Aerospace Toolbox User Guide Matlab

Aero.Animation.addBody

Purpose Add loaded body to animation object and generate its patches

Syntax idx = addBody(h,b)idx = h.addBody(b)

Description idx = addBody(h,b) and idx = h.addBody(b) add a loaded body, b,to the animation object h and generates its patches. idx is the index ofthe body to be added.

InputArguments

h Animation object.

b Loaded body.

OutputArguments

idx Index of the body to be added.

Examples Add a second body to the list that is a pointer to the first body. Thismeans that if you change the properties of one body, the properties ofthe other body change correspondingly.

h = Aero.Animation;idx1 = h.createBody('pa24-250_orange.ac','Ac3d');b = h.Bodies{1};idx2 = h.addBody(b);

4-2

Page 99: Aerospace Toolbox User Guide Matlab

addNode (Aero.VirtualRealityAnimation)

Purpose Add existing node to current virtual reality world

Syntax addNode(h, node_name, wrl_file)h.addNode(node_name, wrl_file)

Description addNode(h, node_name, wrl_file) and h.addNode(node_name,wrl_file) add an existing node, node_name, to the current virtualreality world. The wrl_file is the file from which the new node istaken. addNode adds a new node named node_name, which contains (orpoints to) the wrl_file. node_name must be unique from other nodenames in the same .wrl file. wrl_file must contain the node to beadded. You must specify the full path for this file. The vrnode objectassociated with the node object must be defined using a DEF statementin the .wrl file. This method creates a node object on the world of typeTransform.

When you use the addNode method to add a node, all the objects in the.wrl file will be added to the virtual reality animation object under onenode. If you want to add separate nodes for the objects in the .wrl file,place each node in a separate .wrl file.

Examples Add node to world defined in chaseHelicopter.wrl.

h = Aero.VirtualRealityAnimation;

h.VRWorldFilename = [matlabroot,'/toolbox/aero/astdemos/asttkoff.wrl'];

copyfile(h.VRWorldFilename,[tempdir,'asttkoff.wrl'],'f');

h.VRWorldFilename = [tempdir,'asttkoff.wrl'];

h.initialize();

h.addNode('Lynx',[matlabroot,'/toolbox/aero/astdemos/chaseHelicopter.wrl']);

See Also Aero.Node | move | removeNode | updateNodes |Aero.VirtualRealityAnimation

4-3

Page 100: Aerospace Toolbox User Guide Matlab

addRoute (Aero.VirtualRealityAnimation)

Purpose Add VRML ROUTE statement to virtual reality animation

Syntax addRoute(h, nodeOut, eventOut, nodeIn, eventIn)h.addNode(nodeOut, eventOut, nodeIn, eventIn)

Description addRoute(h, nodeOut, eventOut, nodeIn, eventIn) andh.addNode(nodeOut, eventOut, nodeIn, eventIn) add a VRMLROUTE statement to the virtual reality animation, where nodeOutis the node from which information is routed, eventOut is the event(property), nodeIn is the node to which information is routed, andeventIn is the receiving event (property).

Examples Add a ROUTE command to connect the Plane position to the Camera1node.

h = Aero.VirtualRealityAnimation;

h.VRWorldFilename = [matlabroot,'/toolbox/aero/astdemos/asttkoff.wrl'];

copyfile(h.VRWorldFilename,[tempdir,'asttkoff.wrl'],'f');

h.VRWorldFilename = [tempdir,'asttkoff.wrl'];

h.initialize();

h.addNode('Lynx',[matlabroot,'/toolbox/aero/astdemos/chaseHelicopter.wrl']);

h.addRoute('Plane','translation','Camera1','translation');

See Also addViewpoint

4-4

Page 101: Aerospace Toolbox User Guide Matlab

addViewpoint (Aero.VirtualRealityAnimation)

Purpose Add viewpoint for virtual reality animation

Syntax addViewpoint(h, parent_node, parent_field, node_name)h.addViewpoint(parent_node, parent_field, node_name)addViewpoint(h, parent_node, parent_field, node_name,

description)h.addViewpoint(parent_node, parent_field, node_name,

description)addViewpoint(h, parent_node, parent_field, node_name,

description, position)h.addViewpoint(parent_node, parent_field, node_name,

description, position)addViewpoint(h, parent_node, parent_field, node_name,

description, position, orientation)h.addViewpoint(parent_node, parent_field, node_name,

description, position, orientation)

Description addViewpoint(h, parent_node, parent_field, node_name) andh.addViewpoint(parent_node, parent_field, node_name) add aviewpoint named node_name whose parent_node is the parent nodefield of the vrnode object and whose parent_field is a valid parentfield of the vrnode object to the virtual world animation object, h.

addViewpoint(h, parent_node, parent_field, node_name,description)and h.addViewpoint(parent_node, parent_field,node_name, description) add a viewpoint named node_name whoseparent_node is the parent node field of the vrnode object and whoseparent_field is a valid parent field of the vrnode object to the virtualworld animation object, h. description is the string you want todescribe the viewpoint.

addViewpoint(h, parent_node, parent_field, node_name,description, position) and h.addViewpoint(parent_node,parent_field, node_name, description, position) add aviewpoint named node_name whose parent_node is the parent nodefield of the vrnode object and whose parent_field is a valid parentfield of the vrnode object to the virtual world animation object, h.description is the string you want to describe the viewpoint and

4-5

Page 102: Aerospace Toolbox User Guide Matlab

addViewpoint (Aero.VirtualRealityAnimation)

position is the position of the viewpoint. Specify position usingVRML coordinates (x y z).

addViewpoint(h, parent_node, parent_field,node_name, description, position, orientation) andh.addViewpoint(parent_node, parent_field, node_name,description, position, orientation) add a viewpoint namednode_name whose parent_node is the parent node field of the vrnodeobject and whose parent_field is a valid parent field of the vrnodeobject to the virtual world animation object, h. description is the stringyou want to describe the viewpoint, position is the position of theviewpoint, and orientation is the orientation of the viewpoint. Specifyposition using VRML coordinates (x y z). Specify orientation in aVRML axes angle format (x y z Θ).

Note If you call addViewpoint with only the description argument,you must set the position and orientation of the viewpoint with theSimulink 3D Animation vrnode/setfield function. This requires youto use VRML coordinates.

Examples Add a viewpoint named chaseView.

h = Aero.VirtualRealityAnimation;

h.VRWorldFilename = [matlabroot,'/toolbox/aero/astdemos/asttkoff.wrl'];

copyfile(h.VRWorldFilename,[tempdir,'asttkoff.wrl'],'f');

h.VRWorldFilename = [tempdir,'asttkoff.wrl'];

h.initialize();

h.addViewpoint(h.Nodes{2}.VRNode,'children','chaseView','View From Helicopter');

See Also addRoute | removeViewpoint

4-6

Page 103: Aerospace Toolbox User Guide Matlab

Aero.Animation

Purpose Visualize aerospace animation

Description Use the Aero.Animation class to visualize flight data without any othertool or toolbox. You only need the Aerospace Toolbox to visualize thisdata.

Construction Aero.Animation Construct animation object

Methods addBody Add loaded body to animationobject and generate its patches

createBody Create body and its associatedpatches in animation

delete Destroy animation object

hide Hide animation figure

initialize Create animation object figureand axes and build patches forbodies

initIfNeeded Initialize animation graphics ifneeded

moveBody Move body in animation object

play Animate Aero.Animation objectgiven position/angle time series

removeBody Remove one body from animation

show Show animation object figure

updateBodies Update bodies of animation object

updateCamera Update camera in animationobject

4-7

Page 104: Aerospace Toolbox User Guide Matlab

Aero.Animation

Properties Bodies Specify name of animation object

Camera Specify camera that animationobject contains

Figure Specify name of figure object

FigureCustomizationFcn Specify figure customizationfunction

FramesPerSecond Animation rate

Name Specify name of animation object

TCurrent Current time

TFinal End time

TimeScaling Scaling time

TStart Start time

See Also Aero.FlightGearAnimation | Aero.VirtualRealityAnimation

How To • “Aero.Animation Objects” on page 2-27

4-8

Page 105: Aerospace Toolbox User Guide Matlab

Aero.Animation

Purpose Construct animation object

Syntax h = Aero.Animation

Description h = Aero.Animation constructs an animation object. The animationobject is returned to h.

Note The Aero.Animation constructor does not retain the propertiesof previously created animation objects, even those that you have savedto a MAT-file. This means that subsequent calls to the animation objectconstructor always create animation objects with default properties.

Examples h=Aero.Animation

4-9

Page 106: Aerospace Toolbox User Guide Matlab

Aero.Body

Purpose Create body object for use with animation object

Syntax h = Aero.Body

Description h = Aero.Body constructs a body for an animation object. Theanimation object is returned in h. To use the Aero.Body object, youtypically:

1 Create the animation body.

2 Configure or customize the body object.

3 Load the body.

4 Generate patches for the body (requires an axes from a figure).

5 Set time series data source.

6 Move or update the body.

By default, an Aero.Body object natively uses aircraft x-y-z coordinatesfor the body geometry and the time series data. It expects the rotationorder z-y-x (psi, theta, phi).

Convert time series data from other coordinate systems on the fly byregistering a different CoordTransformFcn function.

ConstructorSummary

Constructor Description

Body Construct body object for use with animationobject.

4-10

Page 107: Aerospace Toolbox User Guide Matlab

Aero.Body

MethodSummary

Method Description

findstartstoptimes Return start and stop times of time seriesdata.

generatePatches Generate patches for body with loaded face,vertex, and color data.

load Get geometry data from source.

move Change Aero.Body position and orientation.

update Changes body position and orientationversus time data.

PropertySummary

Property Description Values

CoordTransformFcn Specify a function thatcontrols the coordinatetransformation.

string

Name Specify name of body.

Position Specify position ofbody.

MATLAB array

Rotation Specify rotation ofbody.

MATLAB array

Geometry Specify geometry ofbody.

handle

PatchGeneration-Fcn

Specify patchgeneration function.

MATLAB array

PatchHandles Specify patch handles. MATLAB array

ViewingTransform Specify viewingtransform.

MATLAB array

TimeseriesSource Specify time seriessource.

MATLAB array

4-11

Page 108: Aerospace Toolbox User Guide Matlab

Aero.Body

Property Description Values

TimeseriesSource-Type

Specify the type of timeseries data stored in'TimeseriesSource'.Five values areavailable. They arelisted in the followingtable. The defaultvalue is 'Array6DoF'.

string

TimeseriesReadFcn Specify time seriesread function.

MATLAB array

The time series data, stored in the property 'TimeseriesSource', isinterpreted according to the 'TimeseriesSourceType' property, whichcan be one of:

'Timeseries' MATLAB time series data with sixvalues per time:

lat lon alt phi theta psi

The values are resampled.

'StructureWithTime' Simulink struct with time (forexample, Simulink root outportlogging 'Structure with time'):

• signals(1).values: lat lonalt

• signals(2).values: phi thetapsi

Signals are linearly interpolated vs.time using interp1.

4-12

Page 109: Aerospace Toolbox User Guide Matlab

Aero.Body

'Array6DoF' A double-precision array in n rowsand 7 columns for 6-DoF data: timelat lon alt phi theta psi. If adouble-precision array of 8 or morecolumns is in 'TimeseriesSource',the first 7 columns are used as 6-DoFdata.

'Array3DoF' A double-precision array in n rowsand 4 columns for 3-DoF data: timelat alt theta. If a double-precisionarray of 5 or more columns is in'TimeseriesSource', the first 4columns are used as 3-DoF data.

'Custom' Position and angle data is retrievedfrom 'TimeseriesSource'by the currently registered'TimeseriesReadFcn'.

See Also Aero.Geometry

4-13

Page 110: Aerospace Toolbox User Guide Matlab

Aero.Camera

Purpose Construct camera object for use with animation object

Syntax h = Aero.Camera

Description h = Aero.Camera constructs a camera object h for use with ananimation object. The camera object uses the registered coordinatetransform. By default, this is an aerospace body coordinate system.Axes of custom coordinate systems must be orthogonal.

By default, an Aero.Body object natively uses aircraft x-y-z coordinatesfor the body geometry and the time series data. Convert time seriesdata from other coordinate systems on the fly by registering a differentCoordTransformFcn function.

ConstructorSummary

Constructor Description

Camera Construct camera object for use with animationobject.

MethodSummary

Method Description

update Update camera position based on time andposition of other Aero.Body objects.

PropertySummary

Property Description Values

CoordTransformFcn Specify a function thatcontrols the coordinatetransformation.

MATLAB array

PositionFcn Specify a function thatcontrols the position ofa camera relative to ananimation body.

MATLAB array

Position Specify position ofcamera.

MATLAB array[-150,-50,0]

4-14

Page 111: Aerospace Toolbox User Guide Matlab

Aero.Camera

Property Description Values

Offset Specify offset ofcamera.

MATLAB array[-150,-50,0]

AimPoint Specify aim point ofcamera.

MATLAB array[0,0,0]

UpVector Specify up vector ofcamera.

MATLAB array[0,0,-1]

ViewAngle Specify view angle ofcamera.

MATLAB array {3}

ViewExtent Specify view extent ofcamera.

MATLAB array{[-50,50]}

xlim Specify x-axis limit ofcamera.

MATLAB array{[-50,50]}

ylim Specify y-axis limit ofcamera.

MATLAB array{[-50,50]}

zlim Specify z-axis limit ofcamera.

MATLAB array{[-50,50]}

PrevTime Specify previous timeof camera.

MATLAB array {0}

UserData Specify custom data. MATLAB array {[]}

See Also Aero.Geometry

4-15

Page 112: Aerospace Toolbox User Guide Matlab

Aero.FlightGearAnimation

Purpose Construct FlightGear animation object

Syntax h = Aero.FlightGearAnimation

Description h = Aero.FlightGearAnimation constructs a FlightGear animationobject. The FlightGear animation object is returned to h.

Constructor Method Description

fganimation Construct FlightGear animation object.

MethodSummary

Method Description

ClearTimer Clear and delete timer for animation of FlightGearflight simulator

delete Destroy FlightGear animation object.

GenerateRunScriptGenerate run script for FlightGear flight simulator

initialize Set up FlightGear animation object.

play Animate FlightGear flight simulator using givenposition/angle time series.

SetTimer Set name of timer for animation of FlightGear flightsimulator

update Update position data to FlightGear animation object.

PropertySummary

Properties Description

TimeseriesSource Specify variable that contains the time seriesdata.

TimeseriesSource-Type

Specify the type of time series data storedin 'TimeseriesSource'. Five values areavailable. They are listed in the following table.The default value is 'Array6DoF'.

4-16

Page 113: Aerospace Toolbox User Guide Matlab

Aero.FlightGearAnimation

Properties Description

TimeseriesReadFcn Specify a function to read the time series data if'TimeseriesSourceType' is 'Custom'.

TimeScaling Specify the seconds of animation data persecond of wall-clock time. The default ratio is 1.

FramesPerSecond Specify the number of frames per second used toanimate the 'TimeseriesSource'. The defaultvalue is 12 frames per second.

FlightGearVersion Select your FlightGear software version:'0.9.3', '0.9.8', '0.9.9', '0.9.10', '1.0','1.9.1', or '2.0'. The default version is '2.0'.

OutputFileName Specify the name of the output file. The filename is the name of the command you willuse to start FlightGear with these initialparameters. The default value is 'runfg.bat'.

FlightGearBase-Directory

Specify the name of your FlightGearinstallation folder. The default value is'D:\Applications\FlightGear'.

GeometryModelName Specify the name of the folder containingthe desired model geometry in theFlightGear\data\Aircraft folder. Thedefault value is 'HL20'.

DestinationIp-Address

Specify your destination IP address. The defaultvalue is '127.0.0.1'.

DestinationPort Specify your network flight dynamics model(fdm) port. This destination port should be anunused port that you can use when you launchFlightGear. The default value is '5502'.

AirportId Specify the airport ID. The list of supportedairports is available in the FlightGear interface,under Location. The default value is 'KSFO'.

4-17

Page 114: Aerospace Toolbox User Guide Matlab

Aero.FlightGearAnimation

Properties Description

RunwayId Specify the runway ID. The default value is'10L'.

InitialAltitude Specify the initial altitude of the aircraft, infeet. The default value is 7224 feet.

InitialHeading Specify the initial heading of the aircraft, indegrees. The default value is 113 degrees.

OffsetDistance Specify the offset distance of the aircraft fromthe airport, in miles. The default value is 4.72miles.

OffsetAzimuth Specify the offset azimuth of the aircraft, indegrees. The default value is 0 degrees.

TStart Specify start time as a double.

TFinal Specify end time as a double.

The time series data, stored in the property 'TimeseriesSource', isinterpreted according to the 'TimeseriesSourceType' property, whichcan be one of:

'Timeseries' MATLAB time series data with sixvalues per time:

lat lon alt phi theta psi

The values are resampled.

'StructureWithTime' Simulink struct with time (forexample, Simulink root outportlogging 'Structure with time'):

• signals(1).values: lat lonalt

• signals(2).values: phi thetapsi

4-18

Page 115: Aerospace Toolbox User Guide Matlab

Aero.FlightGearAnimation

Signals are linearly interpolated vs.time using interp1.

'Array6DoF' A double-precision array in n rowsand 7 columns for 6-DoF data: timelat lon alt phi theta psi. If adouble-precision array of 8 or morecolumns is in 'TimeseriesSource',the first 7 columns are used as 6-DoFdata.

'Array3DoF' A double-precision array in n rowsand 4 columns for 3-DoF data: timelat alt theta. If a double-precisionarray of 5 or more columns is in'TimeseriesSource', the first 4columns are used as 3-DoF data.

'Custom' Position and angle data is retrievedfrom 'TimeseriesSource'by the currently registered'TimeseriesReadFcn'.

Examples Construct a FlightGear animation object, h:

h = fganimation

See Also fganimation | generaterunscript | play

4-19

Page 116: Aerospace Toolbox User Guide Matlab

Aero.Geometry

Purpose Construct 3-D geometry for use with animation object

Syntax h = Aero.Geometry

Description h = Aero.Geometry defines a 3-D geometry for use with an animationobject.

This object supports the attachment of transparency data from an Ac3dfile to patch generation.

ConstructorSummary

Constructor Description

Geometry Construct 3-D geometry for use with animationobject.

MethodSummary

Method Description

read Read geometry data using current reader.

PropertySummary

Property Description Values

Name Specify name ofgeometry.

string

Source Specify geometrydata source.

string {['Auto'], 'Variable','MatFile', 'Ac3dFile', 'Custom'}

Reader Specify geometryreader.

MATLAB array

4-20

Page 117: Aerospace Toolbox User Guide Matlab

Aero.Geometry

Property Description Values

MATLAB structure with the followingfields

name String that containsthe name of thegeometry beingloaded.

faces See Faces on PatchProperties in theMATLAB FunctionReference.

vertices See Vertices onPatch Propertiesin the MATLABFunction Reference.

cdata See CData on PatchProperties in theMATLAB FunctionReference.

FaceVertexColorData Specify the color ofthe geometry facevertex.

alpha SeeFaceVertexAlphaDataon PatchProperties in theMATLAB FunctionReference.

See Also read

4-21

Page 118: Aerospace Toolbox User Guide Matlab

Aero.Node

Purpose Create node object for use with virtual reality animation

Syntax h = Aero.Node

Description h = Aero.Node creates a node object for use with virtual realityanimation. Typically, you do not need to create a node object withthis method. This is because the .wrl file stores the information for avirtual reality scene. During the initialization of the virtual realityanimation object, any node with a DEF statement in the specified .wrlfile has a node object created.

When working with nodes, consider the translation and rotation.Translation is a 1-by-3 matrix in the aerospace body coordinate systemdefined for the VirtualRealityAnimation object or another coordinatesystem. In the latter case, you can use the CoordTransformFcn functionto move it into the defined aerospace body coordinate system. Thedefined aerospace body coordinate system is defined relative to thescreen as x-left, y-in, z-down.

Rotation is a 1-by-3 matrix, in radians, that specifies the rotationsabout the right-hand x-y-z sequence of coordinate axes. The orderof application of the rotation is z-y-x (r-q-p). This function uses theCoordTransformFcn to apply the translation and rotation from theinput coordinate system to the defined aerospace body coordinatesystem. The function then moves the translation and rotation fromthe defined aerospace body coordinate system to the defined VRMLx-y-z coordinates for the VirtualRealityAnimation object. The definedVRML coordinate system is defined relative to the screen as x-right,y-up, z-out.

ConstructorSummary

Constructor Description

Node Create node object for use with virtual realityanimation.

4-22

Page 119: Aerospace Toolbox User Guide Matlab

Aero.Node

MethodSummary

Method Description

findstart-stoptimes

Return start and stop times for time series data.

move Change node translation and rotation.

update Change node position and orientation versus timedata.

PropertySummary

Property Description Values

Name Specify name of thenode object.

string

VRNode Return the handleto the vrnode objectassociated with thenode object (seethe Simulink 3DAnimation User’sGuide).

MATLAB array

CoordtransformFcn Specify a function thatcontrols the coordinatetransformation.

MATLAB array

TimeseriesSource Specify time seriessource.

MATLAB array

4-23

Page 120: Aerospace Toolbox User Guide Matlab

Aero.Node

Property Description Values

Timeseries-SourceType

Specify the type of timeseries data stored in'TimeseriesSource'.Five values areavailable. They arelisted in the followingtable. The defaultvalue is 'Array6DoF'.

string

Timeseries-ReadFcn

Specify time seriesread function.

MATLAB array

The time series data, stored in the property 'TimeseriesSource', isinterpreted according to the 'TimeseriesSourceType' property, whichcan be one of:

'Timeseries' MATLAB time series data with sixvalues per time:

lat lon alt phi theta psi

The values are resampled.

'StructureWithTime' Simulink struct with time (forexample, Simulink root outportlogging 'Structure with time'):

• signals(1).values: lat lonalt

• signals(2).values: phi thetapsi

Signals are linearly interpolated vs.time using interp1.

4-24

Page 121: Aerospace Toolbox User Guide Matlab

Aero.Node

'Array6DoF' A double-precision array in n rowsand 7 columns for 6-DoF data: timelat lon alt phi theta psi. If adouble-precision array of 8 or morecolumns is in 'TimeseriesSource',the first 7 columns are used as 6-DoFdata.

'Array3DoF' A double-precision array in n rowsand 4 columns for 3-DoF data: timelat alt theta. If a double-precisionarray of 5 or more columns is in'TimeseriesSource', the first 4columns are used as 3-DoF data.

'Custom' Position and angle data is retrievedfrom 'TimeseriesSource'by the currently registered'TimeseriesReadFcn'.

4-25

Page 122: Aerospace Toolbox User Guide Matlab

Aero.Viewpoint

Purpose Create viewpoint object for use in virtual reality animation

Syntax h = Aero.Viewpoint

Description h = Aero.Viewpoint creates a viewpoint object for use with virtualreality animation.

ConstructorSummary

Constructor Description

Viewpoint Create node object for use with virtual realityanimation.

PropertySummary

Property Description Values

Name Specify name of thenode object.

string

Node Specify node objectthat contains theviewpoint node.

MATLAB array

4-26

Page 123: Aerospace Toolbox User Guide Matlab

Aero.VirtualRealityAnimation

Purpose Construct virtual reality animation object

Syntax h = Aero.VirtualRealityAnimation

Description h = Aero.VirtualRealityAnimation constructs a virtual realityanimation object. The animation object is returned to h. The animationobject has the following methods and properties.

ConstructorSummary

Constructor Description

VirtualReality-Animation

Construct virtual reality animation object.

MethodSummary

Method Description

addNode Add existing node to current virtual realityworld.

addRoute Add VRML ROUTE statement to virtual realityanimation.

addViewpoint Add viewpoint for virtual reality animation.

delete Destroy virtual reality animation object.

initialize Create and populate virtual reality animationobject.

nodeInfo Create list of nodes associated with virtualreality animation object.

play Animate virtual reality world for given positionand angle in time series data.

removeNode Remove node from virtual reality animationobject.

removeViewpoint Remove viewpoint node from virtual realityanimation.

4-27

Page 124: Aerospace Toolbox User Guide Matlab

Aero.VirtualRealityAnimation

Method Description

saveas Save virtual reality world associated withvirtual reality animation object.

updateNodes Set new translation and rotation of moveableitems in virtual reality animation.

Notes on Aero.VirtualRealityAnimation MethodsAero.VirtualRealityAnimation methods that change the current virtualreality world use a temporary .wrl file to manage those changes. Thesemethods include:

• addNode

• removeNode

• addViewpoint

• removeViewpoint

• addRoute

Be aware of the following behavior:

• After the methods make the changes, they reinitialize the world,using the information stored in the temporary .wrl file.

• When you delete the virtual reality animation object, this actiondeletes the temporary file.

• Use the saveas method to save the temporary .wrl file.

• These methods do not affect user-created .wrl files.

PropertySummary

Property Description Values

Name Specify name of theanimation object.

string

VRWorld Returns the vrworldobject associated withthe animation object.

MATLAB array

4-28

Page 125: Aerospace Toolbox User Guide Matlab

Aero.VirtualRealityAnimation

Property Description Values

VRWorldFilename Specify the .wrl filefor the vrworld.

string

VRWorld-OldFilename

Specify the old .wrlfiles for the vrworld.

MATLAB array

VRWorld-TempFilename

Specify the temporary.wrl file for theanimation object.

string

VRFigure Returns the vrfigureobject associated withthe animation object.

MATLAB array

Nodes Specify the nodes thatthe animation objectcontains.

MATLAB array

Viewpoints Specify the viewpointsthat the animationobject contains.

MATLAB array

TimeScaling Specify the timescaling, in seconds.

double

Tstart Specify the time, inseconds.

double

TFinal Specify end time, inseconds.

double

TCurrent Specify current time,in seconds.

double

FramesPerSecond Specify rate, in framesper second.

double

ShowSaveWarning Specify save warningdisplay setting.

double

4-29

Page 126: Aerospace Toolbox User Guide Matlab

airspeed

Purpose Airspeed from velocity

Syntax airspeed = airspeed(velocities)

Description airspeed = airspeed(velocities) computes m airspeeds, airspeed,from an m-by-3 array of velocities, velocities.

Examples Determine the airspeed for velocity one array:

as = airspeed([84.3905 33.7562 10.1269])

as =

91.4538

Determine the airspeed for velocity for multiple arrays:

as = airspeed([50 20 6; 5 0.5 2])

as =

54.18495.4083

See Also alphabeta | correctairspeed | dpressure | machnumber

4-30

Page 127: Aerospace Toolbox User Guide Matlab

alphabeta

Purpose Incidence and sideslip angles

Syntax [incidence sideslip] = alphabeta(velocities)

Description [incidence sideslip] = alphabeta(velocities) computes mincidence and sideslip angles, incidence and sideslip , between thevelocity vector and the body. velocities is an m-by-3 array of velocitiesin body axes. incidence and sideslip are in radians.

Examples Determine the incidence and sideslip angles for velocity for one array:

[alpha beta] = alphabeta([84.3905 33.7562 10.1269])

alpha =

0.1194

beta =

0.3780

Determine the incidence and sideslip angles for velocity for two arrays:

[alpha beta] = alphabeta([50 20 6; 5 0.5 2])

alpha =

0.11940.3805

beta =

0.37800.0926

4-31

Page 128: Aerospace Toolbox User Guide Matlab

alphabeta

See Also airspeed | machnumber

4-32

Page 129: Aerospace Toolbox User Guide Matlab

angle2dcm

Purpose Create direction cosine matrix from rotation angles

Syntax dcm = angle2dcm(rotationAng1, rotationAng2, rotationAng3)dcm = angle2dcm(rotationAng1, rotationAng2, rotationAng3,

rotationSequence)

Description dcm = angle2dcm(rotationAng1, rotationAng2, rotationAng3)calculates the direction cosine matrix given three sets of rotation angles.

dcm = angle2dcm(rotationAng1, rotationAng2, rotationAng3,rotationSequence) calculates the direction cosine matrix using arotation sequence.

InputArguments

rotationAng1

m-by-1 array of first rotation angles, in radians.

rotationAng2

m-by-1 array of second rotation angles, in radians.

rotationAng3

m-by-1 array of third rotation angles, in radians.

rotationSequence

String that defines rotation sequence. For example, the default'ZYX' represents a sequence where rotationAng1 is z-axis rotation,rotationAng2 is y-axis rotation, and rotationAng3 is x-axis rotation.

'ZYX''ZYZ''ZXY''ZXZ''YXZ''YXY''YZX''YZY'

4-33

Page 130: Aerospace Toolbox User Guide Matlab

angle2dcm

'XYZ''XZY''XYX''XZX''ZYX' (default)

OutputArguments

dcm

3-by-3-by-m matrix containing m direction cosine matrices.

Examples Determine the direction cosine matrix from rotation angles:

yaw = 0.7854;pitch = 0.1;roll = 0;dcm = angle2dcm( yaw, pitch, roll )

dcm =

0.7036 0.7036 -0.0998-0.7071 0.7071 00.0706 0.0706 0.9950

Determine the direction cosine matrix from rotation angles and rotationsequence:

yaw = [0.7854 0.5];pitch = [0.1 0.3];roll = [0 0.1];dcm = angle2dcm( pitch, roll, yaw, 'YXZ' )

dcm(:,:,1) =

0.7036 0.7071 -0.0706-0.7036 0.7071 0.07060.0998 0 0.9950

4-34

Page 131: Aerospace Toolbox User Guide Matlab

angle2dcm

dcm(:,:,2) =

0.8525 0.4770 -0.2136-0.4321 0.8732 0.22540.2940 -0.0998 0.9506

See Also angle2quat | dcm2angle | dcm2quat | quat2dcm | quat2angle

4-35

Page 132: Aerospace Toolbox User Guide Matlab

angle2quat

Purpose Convert rotation angles to quaternion

Syntax quaternion = angle2quat(rotationAng1,rotationAng2,rotationAng3)

quaternion = angle2quat(rotationAng1,rotationAng2,rotationAng3,rotationSequence)

Description quaternion =angle2quat(rotationAng1,rotationAng2,rotationAng3) calculatesthe quaternion for three rotation angles.

quaternion =angle2quat(rotationAng1,rotationAng2,rotationAng3,rotationSequence)calculates the quaternion using a rotation sequence.

InputArguments

rotationAng1

m-by-1 array of first rotation angles, in radians.

rotationAng2

m-by-1 array of second rotation angles, in radians.

rotationAng3

m-by-1 array of third rotation angles, in radians.

rotationSequence

String that defines rotation sequence. For example, the default'ZYX' represents a sequence where rotationAng1 is z-axis rotation,rotationAng2 is y-axis rotation, and rotationAng3 is x-axis rotation.

'ZYX''ZYZ''ZXY''ZXZ''YXZ''YXY'

4-36

Page 133: Aerospace Toolbox User Guide Matlab

angle2quat

'YZX''YZY''XYZ''XZY''XYX''XZX''ZYX' (default)

OutputArguments

quaternion

m-by-4 matrix containing m quaternions. quaternion has its scalarnumber as the first column.

Examples Determine the quaternion from rotation angles:

yaw = 0.7854;pitch = 0.1;roll = 0;q = angle2quat(yaw, pitch, roll)q =

0.9227 -0.0191 0.0462 0.3822

Determine the quaternion from rotation angles and rotation sequence:

yaw = [0.7854 0.5];pitch = [0.1 0.3];roll = [0 0.1];q = angle2quat(pitch, roll, yaw, 'YXZ')q =

0.9227 0.0191 0.0462 0.38220.9587 0.0848 0.1324 0.2371

See Also angle2dcm | dcm2angle | dcm2quat | quat2angle | quat2dcm

4-37

Page 134: Aerospace Toolbox User Guide Matlab

atmoscoesa

Purpose Use 1976 COESA model

Syntax [T, a, P, Rho] = atmoscoesa(height, action)

Description Committee on Extension to the Standard Atmosphere has theacronym COESA. [T, a, P, Rho] = atmoscoesa(height, action)implements the mathematical representation of the 1976 COESAUnited States standard lower atmospheric values. These values areabsolute temperature, pressure, density, and speed of sound for theinput geopotential altitude.

Below the geopotential altitude of 0 m (0 feet) and above thegeopotential altitude of 84,852 m (approximately 278,386 feet), thefunction extrapolates values. It extrapolates temperature valueslinearly and pressure values logarithmically.

InputArguments

height

Array of m-by-1 geopotential heights, in meters.

action

String that defines action for out-of-range input. Specify one:

'Error''Warning' (default)'None'

OutputArguments

T

Array of m-by-1 temperatures, in kelvin.

a

Array of m-by-1 speeds of sound, in meters per second. The functioncalculates speed of sound using a perfect gas relationship.

P

Array of m-by-1 pressures, in pascal.

4-38

Page 135: Aerospace Toolbox User Guide Matlab

atmoscoesa

Rho

Array of m-by-1 densities, in kilograms per meter cubed. The functioncalculates density using a perfect gas relationship.

Examples Calculate the COESA model at 1000 m with warnings for out-of-rangeinputs:

[T, a, P, rho] = atmoscoesa(1000)

T =

281.6500

a =

336.4341

P =

8.9875e+004

rho =

1.1116

Calculate the COESA model at 1000, 11,000, and 20,000 m with errorsfor out-of-range inputs:

[T, a, P, rho] = atmoscoesa([1000 11000 20000], 'Error')

T =

281.6500 216.6500 216.6500

a =

4-39

Page 136: Aerospace Toolbox User Guide Matlab

atmoscoesa

336.4341 295.0696 295.0696

P =

1.0e+004 *

8.9875 2.2632 0.5475

rho =

1.1116 0.3639 0.0880

References U.S. Standard Atmosphere, 1976, U.S. Government Printing Office,Washington, D.C.

See Also atmoscira | atmosisa | atmoslapse | atmosnonstd | atmospalt

4-40

Page 137: Aerospace Toolbox User Guide Matlab

atmoscira

Purpose Use COSPAR International Reference Atmosphere 1986 model

Syntax [T altitude zonalWind] = atmoscira(latitude, ctype, coord,mtype, month, action)

Description [T altitude zonalWind] = atmoscira(latitude, ctype, coord,mtype, month, action) implements the mathematical representationof the Committee on Space Research (COSPAR) International ReferenceAtmosphere (CIRA) from 1986 model. The CIRA 1986 model providesa mean climatology. The mean climatology consists of temperature,zonal wind, and geopotential height or pressure. It encompasses nearlypole-to-pole coverage (80 degrees S to 80 degrees N) for 0 km to 120 km.This provision also encompasses the troposphere, middle atmosphere,and lower thermosphere. Use this mathematical representation as afunction of pressure or geopotential height.

This function uses a corrected version of the CIRA data files providedby J. Barnett in July 1990 in ASCII format.

This function has the limitations of the CIRA 1986 model and limits thevalues for the CIRA 1986 model.

The CIRA 1986 model limits values to the regions of 80 degrees S to 80degrees N on Earth. It also limits geopotential heights from 0 km to120 km. In each monthly mean data set, the model omits values at 80degrees S for 101,300 pascal or 0 m. It omits these values because theselevels are within the Antarctic land mass. For zonal mean pressure inconstant altitude coordinates, pressure data is not available below 20km. Therefore, this value is the bottom level of the CIRA climatology.

InputArguments

latitude

Array of m geopotential heights, in meters.

ctype

String that defines representation of coordinate type. Specify:

4-41

Page 138: Aerospace Toolbox User Guide Matlab

atmoscira

'Pressure' Pressure in pascal

'GPHeight' Geopotential height in meters

coord

Depending on the value of ctype, this argument specifies one of thefollowing arrays:

m Pressures in pascal

m Geopotential height in meters

mtype

String that selects one of the following mean value types:

'Monthly'(default)

Monthly values.

'Annual' Annual values. Valid when ctype has a value of'Pressure'.

month

Scalar value that selects the month in which the model takes themean values. This argument applies only when mtype has a value of'Monthly'.

1 (default) January

2 February

3 March

4 April

5 May

6 June

4-42

Page 139: Aerospace Toolbox User Guide Matlab

atmoscira

7 July

8 August

9 September

10 October

11 November

12 December

action

String that defines action for out-of-range input. Specify one:

'Error''Warning' (default)'None'

OutputArguments

T

Array of temperatures:

If m is 'Monthly' Array of m temperatures, in kelvin

If mtype is 'Annual' Array of m-by-7 values:

• Annual mean temperature in kelvin

• Annual temperature cycle amplitudein kelvin

• Annual temperature cycle phase inmonth of maximum

• Semiannual temperature cycleamplitude in kelvin

• Semiannual temperature cycle phasein month of maximum

4-43

Page 140: Aerospace Toolbox User Guide Matlab

atmoscira

• Terannual temperature cycleamplitude in kelvin

• Terannual temperature cycle phase inmonth of maximum

altitude

If mtype is 'Monthly', an array of m geopotential heights or m airpressures:

If ctype is 'Pressure' Array m geopotential heights

If ctype is 'GPHeight' Array m air pressure

If mtype is 'Annual', an array of m-by-7 values for geopotential heights.The function defines this array only for the northern hemisphere(latitude is greater than 0).

• Annual mean geopotential heights in meters

• Annual geopotential heights cycle amplitude in meters

• Annual geopotential heights cycle phase in month of maximum

• Semiannual geopotential heights cycle amplitude in meters

• Semiannual geopotential heights cycle phase in month of maximum

• Terannual geopotential heights cycle amplitude in meters

• Terannual geopotential heights cycle phase in month of maximum

zonalWind

Array of zonal winds:

4-44

Page 141: Aerospace Toolbox User Guide Matlab

atmoscira

If mtype is 'Monthly' Array in meters per second.

If mtype is 'Annual' Array of m-by-7 values:

• Annual mean zonal winds in metersper second

• Annual zonal winds cycle amplitude inmeters per second

• Annual zonal winds cycle phase inmonth of maximum

• Semiannual zonal winds cycleamplitude in meters per second

• Semiannual zonal winds cycle phase inmonth of maximum

• Terannual zonal winds cycle amplitudein meters per second

• Terannual zonal winds cycle phase inmonth of maximum

Examples Using the CIRA 1986 model at 45 degrees latitude and 101,300 pascalfor January with out-of-range actions generating warnings, calculatethe mean monthly values. Calculate values for temperature (T),geopotential height (alt), and zonal wind (zwind).

[T alt zwind] = atmoscira( 45, 'Pressure', 101300 )T =

280.6000alt =

-18zwind =

3.3000

4-45

Page 142: Aerospace Toolbox User Guide Matlab

atmoscira

Using the CIRA 1986 model at 45 degrees latitude and 20,000 m forOctober with out-of-range actions generating warnings, calculate themean monthly values. Calculate values for temperature (T), pressure(pres), and zonal wind (zwind).

[T pres zwind] = atmoscira( 45, 'GPHeight', 20000, 'Monthly', 10)

T =

215.8500

pres =

5.5227e+003

zwind =

9.5000

Use the CIRA 1986 model at 45 and –30 degrees latitude and 20,000m for October with out-of-range actions generating errors. Calculatevalues for temperature (T), pressure (pres), and zonal wind (zwind).

[T pres zwind] = atmoscira( [45 -30], 'GPHeight', 20000, 10, 'error')

T =

215.8500 213.9000

pres =

1.0e+003 *

5.5227 5.6550

zwind =

9.5000 4.3000

For September, with out-of-range actions generating warnings, usethe CIRA 1986 model at 45 degrees latitude and –30 degrees latitude.Also use the model at 2000 pascal and 101,300 pascal. Calculate meanmonthly values for temperature (T), geopotential height (alt), andzonal wind (zwind).

[T alt zwind] = atmoscira( [45 -30], 'Pressure', [2000 101300], 9)

T =

223.5395 290.9000

4-46

Page 143: Aerospace Toolbox User Guide Matlab

atmoscira

alt =

1.0e+004 *

2.6692 0.0058

zwind =

0.6300 -1.1000

Using the CIRA 1986 model at 45 degrees latitude and 2000 pascalwith out-of-range actions generating warnings, calculate annual values.Calculate values for temperature (T), geopotential height (alt), andzonal wind (zwind).

[T alt zwind] = atmoscira( 45, 'Pressure', 2000, 'Annual' )

T =

221.9596 5.0998 6.5300 1.9499 1.3000 1.0499 1.3000

alt =

1.0e+004 *

2.6465 0.0417 0.0007 0.0087 0.0001 0.0015 0.0002

zwind =

4.6099 14.7496 0.6000 1.6499 4.6000 0.5300 1.4000

References Fleming, E. L., Chandra, S., Shoeberl, M. R., Barnett, J. J., MonthlyMean Global Climatology of Temperature, Wind, Geopotential Heightand Pressure for 0-120 km, NASA TM100697, February 1988

http://modelweb.gsfc.nasa.gov/atmos/cospar1.html

See Also atmoscoesa | atmosisa | atmoslapse | atmosnonstd |atmosnrlmsise00 | atmospalt

4-47

Page 144: Aerospace Toolbox User Guide Matlab

atmosisa

Purpose Use International Standard Atmosphere model

Syntax [T, a, P, rho] = atmosisa(height)

Description [T, a, P, rho] = atmosisa(height) implements the mathematicalrepresentation of the International Standard Atmosphere values forambient temperature, pressure, density, and speed of sound for theinput geopotential altitude.

This function assumes that below the geopotential altitude of 0 km andabove the geopotential altitude of the tropopause, temperature andpressure values are held.

InputArguments

height

Array of m-by-1 geopotential heights, in meters.

OutputArguments

T

Array of m temperatures, in kelvin.

a

Array of m speeds of sound, in meters per second. The function calculatesspeed of sound using a perfect gas relationship.

rho

Array of m densities, in kilograms per meter cubed. The functioncalculates density using a perfect gas relationship.

P

Array of m pressures, in pascal.

Examples Calculate the International Standard Atmosphere at 1000 m:

[T, a, P, rho] = atmosisa(1000)

4-48

Page 145: Aerospace Toolbox User Guide Matlab

atmosisa

T =

281.6500

a =

336.4341

P =

8.9875e+004

rho =

1.1116

Calculate the International Standard Atmosphere at 1000, 11,000,and 20,000 m:

[T, a, P, rho] = atmosisa([1000 11000 20000])

T =

281.6500 216.6500 216.6500

a =

336.4341 295.0696 295.0696

P =

1.0e+004 *

8.9875 2.2632 0.5475

rho =

4-49

Page 146: Aerospace Toolbox User Guide Matlab

atmosisa

1.1116 0.3639 0.0880

References U.S. Standard Atmosphere, 1976, U.S. Government Printing Office,Washington, D.C.

See Also atmoscira | atmoscoesa | atmoslapse | atmosnonstd | atmospalt

4-50

Page 147: Aerospace Toolbox User Guide Matlab

atmoslapse

Purpose Use Lapse Rate Atmosphere model

Syntax [T, a, P, rho] = atmoslapse(height, g, heatRatio,characteristicGasConstant, lapseRate, heightTroposphere,heightTropopause, density0, pressure0, temperature0)

Description [T, a, P, rho] = atmoslapse(height, g, heatRatio,characteristicGasConstant, lapseRate, heightTroposphere,heightTropopause, density0, pressure0, temperature0)implements the mathematical representation of the lapse rateatmospheric equations for ambient temperature, pressure, density, andspeed of sound for the input geopotential altitude. To customize thisatmospheric model, specify the atmospheric properties in the functioninput.

The function holds temperature and pressure values below thegeopotential altitude of 0 km and above the geopotential altitude ofthe tropopause.

InputArguments

height

Array of m-by-1 geopotential heights, in meters.

g

Scalar of acceleration due to gravity, in meters per second squared.

heatRatio

Scalar of specific heat ratio.

characteristicGasConstant

Scalar of characteristic gas constant, in joule per kilogram-kelvin.

lapseRate

Scalar of lapse rate, in kelvin per meter.

4-51

Page 148: Aerospace Toolbox User Guide Matlab

atmoslapse

heightTroposphere

Scalar of height of troposphere, in meters.

heightTropopause

Scalar of height of tropopause, in meters.

density0

Scalar of air density at mean sea level, in kilograms per meter cubed.

pressure0

Scalar of static pressure at mean sea level, in pascal.

temperature0

Scalar of absolute temperature at mean sea level, in kelvin.

OutputArguments

T

Array of m-by-1 temperatures, in kelvin.

a

Array of m-by-1 speeds of sound, in meters per second. The functioncalculates speed of sound using a perfect gas relationship.

P

Array of m-by-1 pressures, in pascal.

rho

Array of m-by-1 densities, in kilograms per meter cubed. The functioncalculates density using a perfect gas relationship.

Examples Calculate the atmosphere at 1000 m with the International StandardAtmosphere input values:

4-52

Page 149: Aerospace Toolbox User Guide Matlab

atmoslapse

[T, a, P, rho] = atmoslapse(1000, 9.80665, 1.4, 287.0531, 0.0065, ...

11000, 20000, 1.225, 101325, 288.15 )

T =

281.6500

a =

336.4341

P =

8.9875e+004

rho =

1.1116

References U.S. Standard Atmosphere, 1976, U.S. Government Printing Office,Washington, D.C.

See Also atmoscira | atmoscoesa | atmosisa | atmosnonstd | atmospalt

4-53

Page 150: Aerospace Toolbox User Guide Matlab

atmosnonstd

Purpose Use climatic data from MIL-STD-210 or MIL-HDBK-310

Syntax [T, a, P, rho] = atmosnonstd(height, atmosphericType,extremeParameter, frequency, extremeAltitude, action,specification)

Description [T, a, P, rho] = atmosnonstd(height, atmosphericType,extremeParameter, frequency, extremeAltitude, action,specification) implements a portion of the climatic data of theMIL-STD-210C or MIL-HDBK-310 worldwide air environment to80 km geometric (or approximately 262,000 feet geometric). Thisimplementation provides absolute temperature, pressure, density, andspeed of sound for the input geopotential altitude.

This function holds all values below the geometric altitude of 0 m (0feet) and above the geometric altitude of 80,000 m (approximately262,000 feet). The envelope atmospheric model has exceptions wherevalues are held below the geometric altitude of 1 km (approximately3281 feet). It also has exceptions above the geometric altitude of 30,000m (approximately 98,425 feet). These exceptions are due to lack of datain MIL-STD-210 or MIL-HDBK-310 for these conditions.

In general, this function interpolates temperature values linearly anddensity values logarithmically. It calculates pressure and speed ofsound using a perfect gas relationship. The envelope atmospheric modelhas exceptions where the extreme value is the only value providedas an output. In these cases, the function interpolates pressurelogarithmically. These envelope atmospheric model exceptions applyto all cases of high and low pressure, high and low temperature, andhigh and low density. These exceptions exclude the extreme values and1% frequency of occurrence. These exceptions are due to lack of data inMIL-STD-210 or MIL-HDBK-310 for these conditions.

A limitation is that MIL-STD-210 and MIL-HDBK-310 exclude fromconsideration climatic data for the region south of 60 degrees S latitude.

This function uses the metric version of data from the MIL-STD-210or MIL-HDBK-310 specifications. A limitation is some inconsistentdata between the metric and English data. Locations where these

4-54

Page 151: Aerospace Toolbox User Guide Matlab

atmosnonstd

inconsistencies occur are within the envelope data for low density, lowtemperature, high temperature, low pressure, and high pressure. Themost noticeable differences occur in the following values:

• For low density envelope data with 5% frequency, the density valuesin metric units are inconsistent at 4 km and 18 km. In addition, thedensity values in English units are inconsistent at 14 km.

• For low density envelope data with 10% frequency, the density valuesin metric units are inconsistent at 18 km. In addition, the densityvalues in English units are inconsistent at 14 km.

• For low density envelope data with 20% frequency, the density valuesin English units are inconsistent at 14 km.

• For high-pressure envelope data with 10% frequency, the pressurevalues at 8 km are inconsistent.

InputArguments

height

Array of m-by-1 geopotential heights, in meters.

atmosphericType

String selecting the representation of 'Profile' or 'Envelope' forthe atmospheric data:

'Profile' Is the realistic atmospheric profiles associated withextremes at specified altitudes. Use 'Profile'for simulation of vehicles vertically traversing theatmosphere, or when you need the total influence ofthe atmosphere.

'Envelope' Uses extreme atmospheric values at each altitude.Use 'Envelope' for vehicles traversing theatmosphere horizontally, without much change inaltitude.

extremeParameter

4-55

Page 152: Aerospace Toolbox User Guide Matlab

atmosnonstd

String selecting the atmospheric parameter that is the extreme value.Atmospheric parameters that you can specify are:

'High temperature''Low temperature''High density''Low density''High pressure', available only if atmosphericType is 'Envelope''Low pressure', available only if atmosphericType is 'Envelope'

frequency

String selecting percent of time that extreme values would occur. Whenusing atmosphericType of 'Envelope' and frequency of '5%', '10%’,and '20%', only the extreme* parameter that you specify (temperature,density, or pressure) has a valid output. All other parameter outputsare zero.

'Extreme values', available only if atmosphericType is'Envelope''1%''5%', available only if atmosphericType is 'Envelope''10%'20%', available only if atmosphericType is 'Envelope'

extremeAltitude

Scalar value, in kilometers, selecting geometric altitude at whichthe extreme values occur. extremeAltitude applies only whenatmosphericType is 'Profile'.

5 16404 ft

10 32808 ft

20 65617 ft

30 98425 ft

40 131234 ft

4-56

Page 153: Aerospace Toolbox User Guide Matlab

atmosnonstd

action

String that defines action for out-of-range input:

'Error''Warning' (default)'None'

specification

String specifying the atmosphere model:

'210c' MIL-STD-210C

'310' MIL-HDBK-310 (default)

OutputArguments

T

Array of m-by-1 temperatures, in kelvin. This function interpolatestemperature values linearly.

a

Array of m-by-1 speeds of sound, in meters per second. This functioncalculates speed of sound using a perfect gas relationship.

P

Array of m-by-1 pressures, in pascal. This function calculates pressureusing a perfect gas relationship.

rho

Array of m-by-1 densities, in kilograms per meter cubed. This functioninterpolates density values logarithmically.

Examples Calculate the nonstandard atmosphere profile. Use high densityoccurring 1% of the time at 5 km from MIL-HDBK-310 at 1000 m withwarnings for out-of-range inputs:

4-57

Page 154: Aerospace Toolbox User Guide Matlab

atmosnonstd

[T, a, P, rho] = atmosnonstd( 1000,'Profile','High density','1%',5 )

T =

248.1455

a =

315.7900

P =

8.9893e+004

rho =

1.2620

Calculate the nonstandard atmosphere envelope with high pressure.Assume that high pressure occurs 20% of the time from MIL-STD-210Cat 1000, 11,000, and 20,000 m with errors for out-of-range inputs:

[T, a, P, rho] = atmosnonstd([1000 11000 20000],'Envelope', ...

'High pressure','20%','Error','210c' )

T =

0 0 0

a =

0 0 0

P =

1.0e+004 *

4-58

Page 155: Aerospace Toolbox User Guide Matlab

atmosnonstd

9.1598 2.5309 0.6129

rho =

0 0 0

References Global Climatic Data for DevelopingMilitary Products (MIL-STD-210C),9 January 1987, Department of Defense, Washington, D.C.

Global Climatic Data for Developing Military Products(MIL-HDBK-310), 23 June 1997, Department of Defense, Washington,D.C.

See Also atmoscira | atmoscoesa | atmosisa | atmoslapse | atmospalt

4-59

Page 156: Aerospace Toolbox User Guide Matlab

atmosnrlmsise00

Purpose Implement mathematical representation of 2001 United States NavalResearch Laboratory Mass Spectrometer and Incoherent Scatter RadarExosphere

Syntax [T rho] = atmosnrlmsise00(altitude, latitude, longitude,year, dayOfYear, UTseconds)

[T rho] = atmosnrlmsise00(altitude, latitude, longitude,year, dayOfYear, UTseconds, localApparentSolarTime)

[T rho] = atmosnrlmsise00(altitude, latitude, longitude,year, dayOfYear, UTseconds, f107Average, f107Daily,magneticIndex)

[T rho] = atmosnrlmsise00(altitude, latitude, longitude,year, dayOfYear, UTseconds, flags)

[T rho] = atmosnrlmsise00(altitude, latitude, longitude,year, dayOfYear, UTseconds, otype)

[T rho] = atmosnrlmsise00(altitude, latitude, longitude,year, dayOfYear, UTseconds, action)

Description [T rho] = atmosnrlmsise00(altitude, latitude, longitude,year, dayOfYear, UTseconds) implements the mathematicalrepresentation of the 2001 United States Naval Research LaboratoryMass Spectrometer and Incoherent Scatter Radar Exosphere(NRLMSISE-00). NRLMSISE-00 calculates the neutral atmosphereempirical model from the surface to lower exosphere (0 m to 1,000,000m). Optionally, it performs this calculation including contributions fromanomalous oxygen that can affect satellite drag above 500,000 m.

[T rho] = atmosnrlmsise00(altitude, latitude, longitude,year, dayOfYear, UTseconds, localApparentSolarTime) specifiesan array of m local apparent solar time (hours).

[T rho] = atmosnrlmsise00(altitude, latitude, longitude,year, dayOfYear, UTseconds, f107Average, f107Daily,magneticIndex) specifies arrays of m 81 day average of F10.7 flux(centered on doy), m-by-1 daily F10.7 flux for previous day, and m-by-7 ofmagnetic index information.

4-60

Page 157: Aerospace Toolbox User Guide Matlab

atmosnrlmsise00

[T rho] = atmosnrlmsise00(altitude, latitude, longitude,year, dayOfYear, UTseconds, flags) specifies an array of 23 toenable or disable particular variations for the outputs.

[T rho] = atmosnrlmsise00(altitude, latitude, longitude,year, dayOfYear, UTseconds, otype) specifies a string for totalmass density output.

[T rho] = atmosnrlmsise00(altitude, latitude, longitude,year, dayOfYear, UTseconds, action) specifies out-of-range inputaction.

This function has the limitations of the NRLMSISE-00 model. For moreinformation, see the NRLMSISE-00 model documentation.

The NRLMSISE-00 model uses UTseconds, localApparentSolarTime,and longitude independently. These arguments are not of equalimportance for every situation. For the most physically realisticcalculation, choose these three variables to be consistent by default:

localApparentSolarTime = UTseconds/3600 + longitude/15

If available, you can include departures from this equation forlocalApparentSolarTime, but they are of minor importance.

InputArguments

action

String that defines action for out-of-range input. Specify one:

'Error''Warning' (default)'None'

altitude

Array of m-by-1 altitudes, in meters.

dayOfYear

Array m-by-1 day of year.

4-61

Page 158: Aerospace Toolbox User Guide Matlab

atmosnrlmsise00

f107Average

Array of m-by-1 81 day average of F10.7 flux (centered on day ofyear (dayOfYear)). If you specifyf107Average, you must also specifyf107Daily and magneticIndex. The effects of f107Average are notlarge or established below 80,000 m; therefore, the default value is 150.

These f107Average values correspond to the 10.7 cm radioflux at the actual distance of the Earth from the Sun. Thef107Average values do not correspond to the radio flux at1 AU. The following site provides both classes of values:ftp://ftp.ngdc.noaa.gov/STP/SOLAR_DATA/SOLAR_RADIO/FLUX/

See the limitations in “Description” on page 4-60 for more information.

f107Daily

Array of m-by-1 daily F10.7 flux for previous day. If you specifyf107Daily, you must also specify f107Average and magneticIndex.The effects of f107Daily are not large or established below 80,000 m;therefore, the default value is 150.

These f107Daily values correspond to the 10.7 cm radioflux at the actual distance of the Earth from the Sun. Thef107Daily values do not correspond to the radio flux at1 AU. The following site provides both classes of values:ftp://ftp.ngdc.noaa.gov/STP/SOLAR_DATA/SOLAR_RADIO/FLUX/

See the limitations in “Description” on page 4-60 for more information.

flags

Array of 23 to enable or disable particular variations for the outputs.If flags array length, m, is 23 and you have not specified all availableinputs, this function assumes that flags is set.

The flags, associated with the flags input, enable or disable particularvariations for the outputs:

4-62

Page 159: Aerospace Toolbox User Guide Matlab

atmosnrlmsise00

Field Description

Flags(1) F10.7 effect on mean

Flags(2) Independent of time

Flags(3) Symmetrical annual

Flags(4) Symmetrical semiannual

Flags(5) Asymmetrical annual

Flags(6) Asymmetrical semiannual

Flags(7) Diurnal

Flags(8) Semidiurnal

Flags(9) Daily AP. If you set this field to -1, the block uses theentire matrix of magnetic index information (APH)instead of APH(:,1).

Flags(10) All UT, longitudinal effects

Flags(11) Longitudinal

Flags(12) UT and mixed UT, longitudinal

Flags(13) Mixed AP, UT, longitudinal

Flags(14) Terdiurnal

Flags(15) Departures from diffusive equilibrium

Flags(16) All exospheric temperature variations

Flags(17) All variations from 120,000 meter temperature (TLB)

Flags(18) All lower thermosphere (TN1) temperature variations

Flags(19) All 120,000 meter gradient (S) variations

Flags(20) All upper stratosphere (TN2) temperature variations

Flags(21) All variations from 120,000 meter values (ZLB)

Flags(22) All lower mesosphere temperature (TN3) variations

Flags(23) Turbopause scale height variations

4-63

Page 160: Aerospace Toolbox User Guide Matlab

atmosnrlmsise00

latitude

Array of m-by-1 geodetic latitudes, in meters.

longitude

Array of m-by-1 longitudes, in degrees.

localApparentSolarTime

Array of m-by-1 local apparent solar time (hours). To obtain aphysically realistic value, the function sets localApparentSolarTimeto (sec/3600 + lon/15) by default. See “Description” on page 4-60for more information.

magneticIndex

An array of m-by-7 of magnetic index information. If you specifymagneticIndex, you must also specify f107Average and f107Daily.This information consists of:

Daily magnetic index (AP)3 hour AP for current time3 hour AP for 3 hours before current time3 hour AP for 6 hours before current time3 hour AP for 9 hours before current timeAverage of eight 3 hour AP indices from 12 to 33 hours before currenttimeAverage of eight 3 hour AP indices from 36 to 57 hours before currenttime

The effects of daily magnetic index are not large or established below80,000 m. As a result, the function sets the default value to 4. See thelimitations in “Description” on page 4-60 for more information.

otype

String for total mass density output:

4-64

Page 161: Aerospace Toolbox User Guide Matlab

atmosnrlmsise00

`Oxygen' Total mass density outputs include anomalousoxygen number density.

`NoOxygen' Total mass density outputs do not include anomalousoxygen number density.

UTseconds

Array of m-by-1 seconds in day in universal time (UT)

year

This function ignores the value of year.

OutputArguments

T

Array of N-by-2 values of temperature, in kelvin. The first column isexospheric temperature, in kelvin. The second column is temperatureat altitude, in kelvin.

rho

An array of N-by-9 values of densities (kg/m3 or 1/m3) in selected densityunits. The column order is:

Density of He, in 1/m3

Density of O, in 1/m3

Density of N2, in 1/m3

Density of O2, in 1/m3

Density of Ar, in 1/m3

Total mass density, in 1/kg3

Density of H, in 1/m3

Density of N, in 1/m3

Anomalous oxygen number density, in 1/m3

density(6), total mass density, is the sum of the mass densities ofHe, O, N2, O2, Ar, H, and N. Optionally, density(6) can include themass density of anomalous oxygen making density(6), the effectivetotal mass density for drag.

4-65

Page 162: Aerospace Toolbox User Guide Matlab

atmosnrlmsise00

Examples Calculate the temperatures, densities not including anomalous oxygenusing the NRLMSISE-00 model at 10,000 m, 45 degrees latitude, -50degrees longitude. This calculation uses the date January 4, 2007 at 0UT. It uses default values for flux, magnetic index data, and local solartime with out-of-range actions generating warnings:

[T rho] = atmosnrlmsise00( 10000, 45, -50, 2007, 4, 0)

T =

281.6500 216.6500 216.6500

a =

336.4341 295.0696 295.0696

P =

1.0e+004 *

8.9875 2.2632 0.5475

rho =

1.1116 0.3639 0.0880

>> [T rho] = atmosnrlmsise00( 10000, 45, -50, 2007, 4, 0)

T =

1.0e+003 *

1.0273 0.2212

rho =

1.0e+024 *

4-66

Page 163: Aerospace Toolbox User Guide Matlab

atmosnrlmsise00

0.0000 0 6.6824 1.7927 0.0799 0.0000 0 0 0

Calculate the temperatures, densities not including anomalous oxygenusing the NRLMSISE-00 model. Use the model at 10,000 m, 45 degreeslatitude, –50 degrees longitude and 25,000 m, 47 degrees latitude, –55degrees longitude.

This calculation uses the date January 4, 2007 at 0 UT. It usesdefault values for flux, magnetic index data, and local solar time without-of-range actions generating warnings:

[T rho] = atmosnrlmsise00( [10000; 25000], [45; 47], ...

[-50; -55], [2007; 2007], [4; 4], [0; 0])

[-50; -55], [2007; 2007], [4; 4], [0; 0])

T =

1.0e+003 *

1.0273 0.2212

1.0273 0.2116

rho =

1.0e+024 *

0.0000 0 6.6824 1.7927 0.0799 0.0000 0 0 0

0.0000 0 0.6347 0.1703 0.0076 0.0000 0 0 0

Calculate the temperatures, densities including anomalous oxygenusing the NRLMSISE-00 model at 10,000 m, 45 degrees latitude, –50degrees longitude. This calculation uses the date January 4, 2007 at 0

4-67

Page 164: Aerospace Toolbox User Guide Matlab

atmosnrlmsise00

UT. It uses default values for flux, magnetic index data, and local solartime with out-of-range actions generating errors:

[T rho] = atmosnrlmsise00( 10000, 45, -50, 2007, ...

4, 0, 'Oxygen', 'Error')

T =

1.0e+003 *

1.0273 0.2212

rho =

1.0e+024 *

0.0000 0 6.6824 1.7927 0.0799 0.0000 0 0 0

Calculate the temperatures, densities including anomalous oxygenusing the NRLMSISE-00 model at 100,000 m, 45 degrees latitude, –50degrees longitude. This calculation uses the date January 4, 2007 at0 UT. It uses defined values for flux, and magnetic index data, anddefault local solar time. It specifies that the out-of-range action is togenerate no message:

aph = [17.375 15 20 15 27 (32+22+15+22+9+18+12+15)/8 (39+27+9+32+39+9+7+12)/8]

f107 = 87.7

nov_6days = [ 78.6 78.2 82.4 85.5 85.0 84.1]

dec_31daymean = 84.5

jan_31daymean = 83.5

feb_13days = [ 89.9 90.3 87.3 83.7 83.0 81.9 82.0 78.4 76.7 75.9 74.7 73.6 72.7]

f107a = (sum(nov_6days) + sum(feb_13days) + (dec_31daymean + jan_31daymean)*31)/81

flags = ones(1,23)

flags(9) = -1

[T rho] = atmosnrlmsise00( 100000, 45, -50, 2007, 4, 0, f107a, f107, ...

4-68

Page 165: Aerospace Toolbox User Guide Matlab

atmosnrlmsise00

aph, flags, 'Oxygen', 'None')

aph =

17.3750 15.0000 20.0000 15.0000 27.0000 18.1250 21.7500

f107 =

87.7000

nov_6days =

78.6000 78.2000 82.4000 85.5000 85.0000 84.1000

dec_31daymean =

84.5000

jan_31daymean =

83.5000

feb_13days =

Columns 1 through 10

89.9000 90.3000 87.3000 83.7000 83.0000 81.9000 82.0000 78.4000 76.7000 75.9000

Columns 11 through 13

74.7000 73.6000 72.7000

4-69

Page 166: Aerospace Toolbox User Guide Matlab

atmosnrlmsise00

f107a =

83.3568

flags =

Columns 1 through 17

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Columns 18 through 23

1 1 1 1 1 1

flags =

Columns 1 through 17

1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1

Columns 18 through 23

1 1 1 1 1 1

T =

1.0e+003 *

1.0273 0.1917

rho =

1.0e+018 *

4-70

Page 167: Aerospace Toolbox User Guide Matlab

atmosnrlmsise00

0.0001 0.4241 7.8432 1.9721 0.0808 0.0000 0.0000 0.0000 0.0000

References http://ccmc.gsfc.nasa.gov/modelweb/atmos/nrlmsise00.html

See Also atmoscira

4-71

Page 168: Aerospace Toolbox User Guide Matlab

atmospalt

Purpose Calculate pressure altitude based on ambient pressure

Syntax pressureAltitude = atmospalt(pressure, action)

Description pressureAltitude = atmospalt(pressure, action) computes thepressure altitude based on ambient pressure. Pressure altitude isthe altitude with specified ambient pressure in the 1976 Committeeon Extension to the Standard Atmosphere (COESA) United Statesstandard. Pressure altitude is the same as the mean sea level (MSL)altitude.

This function extrapolates altitude values logarithmically below thepressure of 0.3961 Pa (approximately 0.00006 psi) and above thepressure of 101,325 Pa (approximately 14.7 psi).

This function assumes that air is dry and an ideal gas.

InputArguments

pressure

Array of m-by-1 ambient pressures, in pascal.

action

String that defines action for out-of-range input. Specify one:

'Error''Warning' (default)'None'

OutputArguments

pressureAltitude

Array of m-by-1 pressure altitudes or MSL altitudes, in meters.

Examples Calculate the pressure altitude at a static pressure of 101,325 Pa withwarnings for out-of-range inputs:

h = atmospalt(101325)

4-72

Page 169: Aerospace Toolbox User Guide Matlab

atmospalt

h =

0

Calculate the pressure altitude at static pressures of 101,325 Pa and26,436 Pa with errors for out-of-range inputs:

h = atmospalt([101325 26436], 'Error' )

h =

1.0e+004 *

0 1.0000

References U.S. Standard Atmosphere, 1976, U.S. Government Printing Office,Washington, D.C.

See Also atmoscira | atmoscoesa | atmosisa | atmoslapse | atmosnonstd

4-73

Page 170: Aerospace Toolbox User Guide Matlab

Body (Aero.Body)

Purpose Construct body object for use with animation object

Syntax h = Aero.Body

Description h = Aero.Body constructs a body for an animation object. Theanimation object is returned in h. To use the Aero.Body object, youtypically:

1 Create the animation body.

2 Configure or customize the body object.

3 Load the body.

4 Generate patches for the body (requires an axes from a figure).

5 Set the source for the time series data.

6 Move or update the body.

The animation object has the following properties:

By default, an Aero.Body object natively uses aerospace bodycoordinates for the body geometry and the time series data. Converttime series data from other coordinate systems on the fly by registeringa different CoordTransformFcn function.

See Aero.Body for further details.

See Also Aero.Body

4-74

Page 171: Aerospace Toolbox User Guide Matlab

Camera (Aero.Camera)

Purpose Construct camera object for use with animation object

Syntax h = Aero.Camera

Description h = Aero.Camera constructs a camera object h for use with ananimation object. The camera object uses the registered coordinatetransform. By default, this is an aerospace body coordinate system.Axes of custom coordinate systems must be orthogonal.

The animation object has the following properties:

By default, an Aero.Body object natively uses aerospace bodycoordinates for the body geometry and the time series data. Converttime series data from other coordinate systems on the fly by registeringa different CoordTransformFcn function.

See Aero.Camera for further details.

See Also Aero.Camera

4-75

Page 172: Aerospace Toolbox User Guide Matlab

ClearTimer (Aero.FlightGearAnimation)

Purpose Clear and delete timer for animation of FlightGear flight simulator

Syntax ClearTimer(h)h.ClearTimer

Description ClearTimer(h) and h.ClearTimer clear and delete the MATLAB timerfor the animation of the FlightGear flight simulator.

Examples Clear and delete the MATLAB timer for animation of the FlightGearanimation object, h:

h = Aero.FlightGearAnimationh.SetTimerh.ClearTimerh.SetTimer('FGTimer')

See Also SetTimer

4-76

Page 173: Aerospace Toolbox User Guide Matlab

convacc

Purpose Convert from acceleration units to desired acceleration units

Syntax convertedValues = convacc(valuesToConvert, inputAccelUnits,outputAccelUnits)

Description convertedValues = convacc(valuesToConvert, inputAccelUnits,outputAccelUnits) computes the conversion factor from specifiedinput acceleration units to specified output acceleration units. It thenapplies the conversion factor to the input to produce the output in thedesired units.

InputArguments

valuesToConvert

Floating-point array of size m-by-n values that the function is to convert.All values must have the same unit conversions from inputAccelUnitsto outputAccelUnits.

inputAccelUnits

Specified input acceleration units, as strings. Supported unit stringsare:

'ft/s^2' Feet per second squared

'm/s^2' Meters per second squared

'km/s^2' Kilometers per second squared

'in/s^2' Inches per second squared

'km/h-s' Kilometers per hour per second

'mph/s' Miles per hour per second

'G''s' g-units

outputAccelUnits

Specified output acceleration units, as strings. Supported unit stringsare:

4-77

Page 174: Aerospace Toolbox User Guide Matlab

convacc

'ft/s^2' Feet per second squared

'm/s^2' Meters per second squared

'km/s^2' Kilometers per second squared

'in/s^2' Inches per second squared

'km/h-s' Kilometers per hour per second

'mph/s' Miles per hour per second

'G''s' g-units

OutputArguments

convertedValues

Floating-point array of size m-by-n values that the function hasconverted.

Examples Convert three accelerations from feet per second squared to metersper second squared:

a = convacc([3 10 20],'ft/s^2','m/s^2')

a =

0.9144 3.0480 6.0960

See Also convang | convangacc | convangvel | convdensity | convforce |convlength | convmass | convpres | convtemp | convvel

4-78

Page 175: Aerospace Toolbox User Guide Matlab

convang

Purpose Convert from angle units to desired angle units

Syntax convertedValues = convang(valuesToConvert, inputAngleUnits,outputAngleUnits)

Description convertedValues = convang(valuesToConvert, inputAngleUnits,outputAngleUnits) computes the conversion factor from specifiedinput angle units to specified output angle units. It then applies theconversion factor to the input to produce the output in the desired units.inputAngleUnits and outputAngleUnits are strings.

InputArguments

valuesToConvert

Floating-point array of size m-by-n values the function is to convert. Allvalues must have the same unit conversions from inputAngleUnits tooutputAngleUnits.

inputAngleUnits

Specified input angle units, as strings. Supported unit strings are:

'deg' Degrees

'rad' Radians

'rev' Revolutions

outputAngleUnits

Specified output angle units, as strings. Supported unit strings are:

'deg' Degrees

'rad' Radians

'rev' Revolutions

4-79

Page 176: Aerospace Toolbox User Guide Matlab

convang

OutputArguments

convertedValues

Floating-point array of size m-by-n values that the function hasconverted.

Examples Convert three angles from degrees to radians:

a = convang([3 10 20],'deg','rad')

a =

0.0524 0.1745 0.3491

See Also convacc | convangacc | convangvel | convdensity | convforce |convlength | convmass | convpres | convtemp | convvel

4-80

Page 177: Aerospace Toolbox User Guide Matlab

convangacc

Purpose Convert from angular acceleration units to desired angular accelerationunits

Syntax convertedValues = convangacc(valuesToConvert,inputAngularUnits, outputAngularUnits)

Description convertedValues = convangacc(valuesToConvert,inputAngularUnits, outputAngularUnits) computes the conversionfactor from specified input angular acceleration units to specified outputangular acceleration units. It then applies the conversion factor to theinput to produce the output in the desired units.

InputArguments

valuesToConvert

Floating-point array of size m-by-n values that the function is toconvert. All values must have the same unit conversions frominputAngularUnits to outputAngularUnits.

inputAngularUnits

Specified input angular acceleration units, as strings. Supported unitstrings are:

'deg/s^2' Degrees per second squared

'rad/s^2' Radians per second squared

'rpm/s' Revolutions per minute per second

outputAngularUnits

Specified output angular acceleration units, as strings. Supported unitstrings are:

'deg/s^2' Degrees per second squared

'rad/s^2' Radians per second squared

'rpm/s' Revolutions per minute per second

4-81

Page 178: Aerospace Toolbox User Guide Matlab

convangacc

OutputArguments

convertedValues

Floating-point array of size m-by-n values that the function hasconverted.

Examples Convert three angular accelerations from degrees per second squared toradians per second squared:

a = convangacc([0.3 0.1 0.5],'deg/s^2','rad/s^2')

a =

0.0052 0.0017 0.0087

See Also convacc | convang | convangvel | convdensity | convforce |convlength | convmass | convpres | convtemp | convvel

4-82

Page 179: Aerospace Toolbox User Guide Matlab

convangvel

Purpose Convert from angular velocity units to desired angular velocity units

Syntax convertedValues = convangvel(valuesToConvert,inputAngularVelocityUnits, outputAngularVelocityUnits)

Description convertedValues = convangvel(valuesToConvert,inputAngularVelocityUnits, outputAngularVelocityUnits)computes the conversion factor from specified input angular velocityunits to specified output angular velocity units. It then applies theconversion factor to the input to produce the output in the desired units.

InputArguments

valuesToConvert

Floating-point array of size m-by-n values that the function is toconvert. All values must have the same unit conversions frominputAngularVelocityUnits to outputAngularVelocityUnits.

inputAngularVelocityUnits

Specified input angular velocity units, as strings. Supported unitstrings are:

'deg/s' Degrees per second

'rad/s' Radians per second

'rpm' Revolutions per minute

outputAngularVelocityUnits

Specified output angular velocity units, as strings. Supported unitstrings are:

'deg/s' Degrees per second

'rad/s' Radians per second

'rpm' Revolutions per minute

4-83

Page 180: Aerospace Toolbox User Guide Matlab

convangvel

OutputArguments

convertedValues

Floating-point array of size m-by-n values that the function hasconverted.

Examples Convert three angular velocities from degrees per second to radiansper second:

a = convangvel([0.3 0.1 0.5],'deg/s','rad/s')

a =

0.0052 0.0017 0.0087

See Also convacc | convang | convangacc | convdensity | convforce |convlength | convmass | convpres | convtemp | convvel

4-84

Page 181: Aerospace Toolbox User Guide Matlab

convdensity

Purpose Convert from density units to desired density units

Syntax convertedValues = convdensity(valuesToConvert,inputDensityUnits, outputDensityUnits)

Description convertedValues = convdensity(valuesToConvert,inputDensityUnits, outputDensityUnits) computes the conversionfactor from specified input density units to specified output densityunits. It then applies the conversion factor to the input to produce theoutput in the desired units.

InputArguments

valuesToConvert

Floating-point array of size m-by-n values that the function is toconvert. All values must have the same unit conversions frominputDensityUnits to outputDensityUnits.

inputDensityUnits

Specified input density units, as strings. Supported unit strings are:

'lbm/ft^3' Pound mass per feet cubed

'kg/m^3' Kilograms per meters cubed

'slug/ft^3' Slugs per feet cubed

'lbm/in^3' Pound mass per inch cubed

outputDensityUnits

Specified output density units, as strings. Supported unit strings are:

'lbm/ft^3' Pound mass per feet cubed

'kg/m^3' Kilograms per meters cubed

'slug/ft^3' Slugs per feet cubed

'lbm/in^3' Pound mass per inch cubed

4-85

Page 182: Aerospace Toolbox User Guide Matlab

convdensity

OutputArguments

convertedValues

Floating-point array of size m-by-n values that the function hasconverted.

Examples Convert three densities from pound mass per feet cubed to kilogramsper meters cubed:

a = convdensity([0.3 0.1 0.5],'lbm/ft^3','kg/m^3')

a =

4.8055 1.6018 8.0092

See Also convacc | convang | convangacc | convangvel | convforce |convlength | convmass | convpres | convtemp | convvel

4-86

Page 183: Aerospace Toolbox User Guide Matlab

convforce

Purpose Convert from force units to desired force units

Syntax convertedValues = convforce(valuesToConvert,inputForceUnits,

outputForceUnits)

Description convertedValues = convforce(valuesToConvert,inputForceUnits, outputForceUnits) computes theconversion factor from specified input force units to specified outputforce units. It then applies the conversion factor to the input to producethe output in the desired units.

InputArguments

valuesToConvert

Floating-point array of size m-by-n values that the function is to convert.All values must have the same unit conversions from inputForceUnitsto outputForceUnits.

inputForceUnits

Specified input force units, as strings. Supported unit strings are:

'lbf' Pound force

'N' Newton

outputForceUnits

Specified output force units, as strings. Supported unit strings are:

'lbf' Pound force

'N' Newton

OutputArguments

convertedValues

Floating-point array of size m-by-n values that the function hasconverted.

4-87

Page 184: Aerospace Toolbox User Guide Matlab

convforce

Examples Convert three forces from pound force to newtons:

a = convforce([120 1 5],'lbf','N')

a =

533.7866 4.4482 22.2411

See Also convacc | convang | convangacc | convangvel | convdensity |convlength | convmass | convpres | convtemp | convvel

4-88

Page 185: Aerospace Toolbox User Guide Matlab

convlength

Purpose Convert from length units to desired length units

Syntax convertedValues = convlength(valuesToConvert,inputLengthUnits, outputLengthUnits)

m

Description convertedValues = convlength(valuesToConvert,inputLengthUnits, outputLengthUnits) computes the conversionfactor from specified input length units to specified output length units.It then applies the conversion factor to the input to produce the outputin the desired units.

InputArguments

valuesToConvert

Floating-point array of size m-by-n values that the function is toconvert. All values must have the same unit conversions frominputLengthUnits to outputLengthUnits.

inputLengthUnits

Specified input length units, as strings. Supported unit strings are:

'ft' Feet

'm' Meters

'km' Kilometers

'in' Inches

'mi' Miles

'naut mi' Nautical miles

outputLengthUnits

Specified output length units, as strings. Supported unit strings are:

4-89

Page 186: Aerospace Toolbox User Guide Matlab

convlength

'ft' Feet

'm' Meters

'km' Kilometers

'in' Inches

'mi' Miles

'naut mi' Nautical miles

OutputArguments

convertedValues

Floating-point array of size m-by-n values that the function hasconverted.

Examples Convert three lengths from feet to meters:

a = convlength([3 10 20],'ft','m')

a =

0.9144 3.0480 6.0960

See Also convacc | convang | convangacc | convangvel | convdensity |convforce | convmass | convpres | convtemp | convvel

4-90

Page 187: Aerospace Toolbox User Guide Matlab

convmass

Purpose Convert from mass units to desired mass units

Syntax convertedValues = convmass(valuesToConvert, inputMassUnits,outputMassUnits)

Description convertedValues = convmass(valuesToConvert, inputMassUnits,outputMassUnits) computes the conversion factor from specifiedinput mass units to specified output mass units. It then applies theconversion factor to the input to produce the output in the desired units.

InputArguments

valuesToConvert

Floating-point array of size m-by-n values that the function is to convert.All values must have the same unit conversions from inputMassUnitsto outputMassUnits.

inputMassUnits

Specified input mass units, as strings. Supported unit strings are:

'lbm' Pound mass

'kg' Kilograms

'slugs' Slugs

outputMassUnits

Specified output mass units, as strings. Supported unit strings are:

'lbm' Pound mass

'kg' Kilograms

'slugs' Slugs

OutputArguments

convertedValues

Floating-point array of size m-by-n values that the function hasconverted.

4-91

Page 188: Aerospace Toolbox User Guide Matlab

convmass

Examples Convert three masses from pound mass to kilograms:

a = convmass([3 1 5],'lbm','kg')

a =

1.3608 0.4536 2.2680

See Also convacc | convang | convangacc | convangvel | convdensity |convforce | convlength | convpres | convtemp | convvel

4-92

Page 189: Aerospace Toolbox User Guide Matlab

convpres

Purpose Convert from pressure units to desired pressure units

Syntax convertedValues= convpres(valuesToConvert,inputPressureUnits, outputPressureUnits)

Description convertedValues= convpres(valuesToConvert,inputPressureUnits, outputPressureUnits) computes theconversion factor from specified input pressure units to specified outputpressure units. It then applies the conversion factor to the input toproduce the output in the desired units.

InputArguments

valuesToConvert

Floating-point array of size m-by-n values that the function is toconvert. All values must have the same unit conversions frominputPressureUnits to outputPressureUnits.

inputPressureUnits

Specified input pressure units, as strings. Supported unit strings are:

'psi' Pound force per square inch

'Pa' Pascal

'psf' Pound force per square foot

'atm' Atmosphere

outputPressureUnits

Specified output pressure units, as strings. Supported unit strings are:

'psi' Pound force per square inch

'Pa' Pascal

'psf' Pound force per square foot

'atm' Atmosphere

4-93

Page 190: Aerospace Toolbox User Guide Matlab

convpres

OutputArguments

convertedValues

Floating-point array of size m-by-n values that the function hasconverted.

Examples Convert two pressures from pound force per square inch to atmospheres:

a = convpres([14.696 35],'psi','atm')

a =

1.0000 2.3816

See Also convacc | convang | convangacc | convangvel | convdensity |convforce | convlength | convmass | convtemp | convvel

4-94

Page 191: Aerospace Toolbox User Guide Matlab

convtemp

Purpose Convert from temperature units to desired temperature units

Syntax convertedValues = convtemp(valuesToConvert,inputTemperatureUnits, outputTemperatureUnits)

Description convertedValues = convtemp(valuesToConvert,inputTemperatureUnits, outputTemperatureUnits)computes the conversion factor from specified input temperature unitsto specified output temperature units. It then applies the conversionfactor to the input, to produce the output in the desired units.

InputArguments

valuesToConvert

Floating-point array of size m-by-n values that the function is toconvert. All values must have the same unit conversions frominputTemperatureUnits to outputTemperatureUnits.

inputTemperatureUnits

Specified input temperature units, as strings. Supported unit stringsare:

'K' Kelvin

'F' Degrees Fahrenheit

'C' Degrees Celsius

'R' Degrees Rankine

outputTemperatureUnits

Specified output temperature units, as strings. Supported unit stringsare:

'K' Kelvin

'F' Degrees Fahrenheit

4-95

Page 192: Aerospace Toolbox User Guide Matlab

convtemp

'C' Degrees Celsius

'R' Degrees Rankine

OutputArguments

convertedValues

Floating-point array of size m-by-n values that the function hasconverted.

Examples Convert three temperatures from degrees Celsius to degrees Fahrenheit:

a = convtemp([0 100 15],'C','F')

a =

32.0000 212.0000 59.0000

See Also convacc | convang | convangacc | convangvel | convdensity |convforce | convlength | convmass | convpres | convvel

4-96

Page 193: Aerospace Toolbox User Guide Matlab

convvel

Purpose Convert from velocity units to desired velocity units

Syntax convertedValues = convvel(valuesToConvert,inputVelocityUnits, outputVelocityUnits)

Description convertedValues = convvel(valuesToConvert,inputVelocityUnits, outputVelocityUnits) computes theconversion factor from specified input velocity units to specified outputvelocity units. It then applies the conversion factor to the input toproduce the output in the desired units.

InputArguments

valuesToConvert

Floating-point array of size m-by-n values that the function is toconvert. All values must have the same unit conversions frominputVelocityUnits to outputVelocityUnits.

inputVelocityUnits

Specified input velocity units, as strings. Supported unit strings are:

'ft/s' Feet per second

'm/s' Meters per second

'km/s' Kilometers per second

'in/s' Inches per second

'km/h' Kilometers per hour

'mph' Miles per hour

'kts' Knots

'ft/min' Feet per minute

outputVelocityUnits

Specified output velocity units, as strings. Supported unit strings are:

4-97

Page 194: Aerospace Toolbox User Guide Matlab

convvel

'ft/s' Feet per second

'm/s' Meters per second

'km/s' Kilometers per second

'in/s' Inches per second

'km/h' Kilometers per hour

'mph' Miles per hour

'kts' Knots

'ft/min' Feet per minute

OutputArguments

convertedValues

Floating-point array of size m-by-n values that the function hasconverted.

Examples Convert three velocities from feet per minute to meters per second:

a = convvel([30 100 250],'ft/min','m/s')

a =

0.1524 0.5080 1.2700

See Also convacc | convang | convangacc | convangvel | convdensity |convforce | convlength | convmass | convpres | convtemp

4-98

Page 195: Aerospace Toolbox User Guide Matlab

correctairspeed

Purpose Calculate equivalent airspeed (EAS), calibrated airspeed (CAS), or trueairspeed (TAS) from one of other two airspeeds

Syntax outputAirpseed = correctairspeed(inputAirspeed,speedOfSound,

pressure0, inputAirspeedType, outputAirspeedType)

Description outputAirpseed = correctairspeed(inputAirspeed,speedOfSound, pressure0, inputAirspeedType,outputAirspeedType) computes the conversion factor fromspecified input airspeed to specified output airspeed using speed ofsound and static pressure. The function applies the conversion factor tothe input airspeed to produce the output in the desired airspeed.

This function is based on an assumption of compressible, isentropic(subsonic flow), dry air with constant specific heat ratio (gamma).

InputArguments

inputAirspeed

Floating-point array of size m-by-1 of airspeeds in meters persecond. All values must have the same airspeed conversions frominputAirspeedType to outputAirspeedType.

speedOfSound

Floating-point array of size m-by-1 of speeds of sound, in meters persecond.

pressure0

Floating-point array of size m-by-1 of static air pressures, in pascal.

inputAirspeedType

Input airspeed string. Supported airspeed strings are:

4-99

Page 196: Aerospace Toolbox User Guide Matlab

correctairspeed

'TAS' True airspeed

'CAS' Calibrated airspeed

'EAS' Equivalent airspeed

outputAirspeedType

Output airspeed string. Supported airspeed strings are:

'TAS' True airspeed

'CAS' Calibrated airspeed

'EAS' Equivalent airspeed

OutputArguments

outputAirpseed

Floating-point array of size m-by-1 of airspeeds in meters per second.

Examples Convert three airspeeds from true airspeed to equivalent airspeed at1000 ms:

as = correctairspeed([25.7222; 10.2889; 3.0867], 336.4, 89874.6,'TAS','EAS')

as =

24.5057

9.8023

2.9407

Convert airspeeds from true airspeed to equivalent airspeed at 1000m and 0 m:

ain = [25.7222; 10.2889; 3.0867];sos = [336.4; 340.3; 340.3];P0 = [89874.6; 101325; 101325];as = correctairspeed(ain, sos, P0,'TAS','EAS')

4-100

Page 197: Aerospace Toolbox User Guide Matlab

correctairspeed

as =

24.505710.28873.0866

References Lowry, J.T., Performance of Light Aircraft, AIAA Education Series,Washington, D.C., 1999

Aeronautical Vestpocket Handbook, United Technologies Pratt &Whitney, August1986

See Also airspeed

4-101

Page 198: Aerospace Toolbox User Guide Matlab

Aero.Animation.createBody

Purpose Create body and its associated patches in animation

Syntax idx = createBody(h,bodyDataSrc)idx = h.createBody(bodyDataSrc)idx = createBody(h,bodyDataSrc,geometrysource)idx = h.createBody(bodyDataSrc,geometrysource)

Description idx = createBody(h,bodyDataSrc) and idx =h.createBody(bodyDataSrc) create a new body using thebodyDataSrc, makes its patches, and adds it to the animation object h.This command assumes a default geometry source type set to Auto.

idx = createBody(h,bodyDataSrc,geometrysource) and idx =h.createBody(bodyDataSrc,geometrysource) create a new bodyusing the bodyDataSrc file, makes its patches, and adds it to theanimation object h. geometrysource is the geometry source type forthe body.

InputArguments

bodyDataSrc Source of data for body.

geometrysource Geometry source type for body:• Auto — Recognizes .mat extensions asMAT-files, .ac extensions as Ac3d files,and structures containing fields of name,faces, vertices, and cdata as MATLABvariables. Default.

• Variable — Recognizes structurescontaining fields of name, faces, vertices,and cdata as MATLAB variables.

• MatFile— Recognizes .mat extensions asMAT-files.

• Ac3d— Recognizes .ac extensions as Ac3dfiles.

• Custom— Recognizes custom extensions.

4-102

Page 199: Aerospace Toolbox User Guide Matlab

Aero.Animation.createBody

OutputArguments

idx Index of the body to be created.

Examples Create a body for the animation object, h. Use the Ac3d format datasource pa24-250_orange.ac, for the body.

h = Aero.Animation;idx1 = h.createBody('pa24-250_orange.ac','Ac3d');

4-103

Page 200: Aerospace Toolbox User Guide Matlab

datcomimport

Purpose Bring DATCOM file into MATLAB environment

Syntax aero = datcomimport(file)aero = datcomimport(file, usenan)aero = datcomimport(file, usenan, verbose)aero = datcomimport(file, usenan, verbose, filetype)

Description aero = datcomimport(file) takes a file name, file, as a string (or acell array of file names as strings), and imports aerodynamic data fromfile into a cell array of structures, aero. Before reading the DATCOMfile, the function initializes values to 99999 to show when there is not afull set of data for the DATCOM case.

aero = datcomimport(file, usenan) is an alternate method allowingthe replacement of data points with NaN or zero where no DATCOMmethods exist or where the method is not applicable. The default valuefor usenan is true.

aero = datcomimport(file, usenan, verbose) is an alternatemethod to display the status of the DATCOM file being read. Thedefault value for verbose is 2, which displays a wait bar. Other optionsare 0, which displays no information, and 1, which displays text to theMATLAB Command Window.

aero = datcomimport(file, usenan, verbose, filetype) is analternate method that allows you to specify which type of DATCOM fileto read. The possible values are listed in this table:

filetype Value Output File from DATCOM

6 (Default) for006.dat output by all DATCOMversions

21 for021.dat output by DATCOM 2007,DATCOM 2008, and DATCOM 2011

42 for042.csv output by DATCOM 2008 andDATCOM 2011

4-104

Page 201: Aerospace Toolbox User Guide Matlab

datcomimport

When filetype is 6, the function reads the for006.dat file output byDATCOM.

Note If filetype is 21, the function collates the breakpoints and datafrom all the cases and appends them as the last entry of aero.

The next option is 21, which reads the for021.dat file output byDATCOM 2007. The last option is 42, which reads the for042.csv fileoutput by DATCOM 2008 and DATCOM 2011.

Fields for the 1976, 1999, 2007, 2008, and 2011 versions of the type 6output files are described:

• “Fields for 1976 Version (File Type 6)” on page 4-105

• “Fields for 1999 Version (File Type 6)” on page 4-125

• “Fields for 2007, 2008, and 2011 Versions (File Type 6)” on page 4-131

Fields for 2007, 2008, and 2011 versions of the type 21 output file aredescribed in:

• “Fields for 2007, 2008, and 2011 Versions (File Type 21)” on page4-135

Fields for 2008 and 2011 versions of the type 42 output file are describedin:

• “Fields for 2008 and 2011 Version (File Type 42)” on page 4-141

Fields for 1976 Version (File Type 6)

The fields of aero depend on the data within the DATCOM file.

4-105

Page 202: Aerospace Toolbox User Guide Matlab

datcomimport

Common Fields for the 1976 Version (File Type 6)

Field Description Default

case String containing the case ID. []

mach Array of Mach numbers. []

alt Array of altitudes. []

alpha Array of angles of attack. []

nmach Number of Mach numbers. 0

nalt Number of altitudes. 0

nalpha Number of angles of attack. 0

rnnub Array of Reynolds numbers. []

hypers Logical denoting, when true, thatmach numbers above tsmach arehypersonic. Default values aresupersonic.

false

loop Scalar denoting the type of loopingdone to generate the DATCOM file.When loop is 1, mach and alt arevaried together. When loop is 2, machvaries while alt is fixed. Altitudeis then updated and Mach numbersare cycled through again. When loopis 3, mach is fixed while alt varies.mach is then updated and altitudesare cycled through again.

1

sref Scalar denoting the reference areafor the case.

[]

cbar Scalar denoting the longitudinalreference length.

[]

4-106

Page 203: Aerospace Toolbox User Guide Matlab

datcomimport

Common Fields for the 1976 Version (File Type 6) (Continued)

Field Description Default

blref Scalar denoting the lateral referencelength.

[]

dim String denoting the specified systemof units for the case.

'ft'

deriv String denoting the specified angleunits for the case.

'deg'

stmach Scalar value setting the upper limitof subsonic Mach numbers.

0.6

tsmach Scalar value setting the lower limit ofsupersonic Mach numbers.

1.4

save Logical denoting whether the inputvalues for this case are used in thenext case.

false

stype Scalar denoting the type ofasymmetric flap for the case.

[]

trim Logical denoting the reading of trimdata for the case. When trim runs areread, this value is set to true.

false

damp Logical denoting the reading ofdynamic derivative data for the case.When dynamic derivative runs areread, this value is set to true.

false

build Scalar denoting the reading of builddata for the case. When build runsare read, this value is set to 10.

1

4-107

Page 204: Aerospace Toolbox User Guide Matlab

datcomimport

Common Fields for the 1976 Version (File Type 6) (Continued)

Field Description Default

part Logical denoting the reading ofpartial data for the case. Whenpartial runs are written for eachMach number, this value is set totrue.

false

highsym Logical denoting the reading ofsymmetric flap high-lift data for thecase. When symmetric flap runs areread, this value is set to true.

false

highasy Logical denoting the reading ofasymmetric flap high-lift data for thecase. When asymmetric flap runs areread, this value is set to true.

false

highcon Logical denoting the reading ofcontrol/trim tab high-lift data for thecase. When control/trim tab runs areread, this value is set to true.

false

tjet Logical denoting the reading oftransverse-jet control data for thecase. When transverse-jet controlruns are read, this value is set totrue.

false

hypeff Logical denoting the reading ofhypersonic flap effectiveness datafor the case. When hypersonic flapeffectiveness runs are read, thisvalue is set to true.

false

4-108

Page 205: Aerospace Toolbox User Guide Matlab

datcomimport

Common Fields for the 1976 Version (File Type 6) (Continued)

Field Description Default

lb Logical denoting the reading of lowaspect ratio wing or lifting body datafor the case. When low aspect ratiowing or lifting body runs are read,this value is set to true.

false

pwr Logical denoting the reading of powereffects data for the case. When powereffects runs are read, this value is setto true.

false

grnd Logical denoting the reading ofground effects data for the case.When ground effects runs are read,this value is set to true.

false

wsspn Scalar denoting the semi-spantheoretical panel for wing. Thisvalue is used to determine if theconfiguration contains a canard.

1

hsspn Scalar denoting the semi-spantheoretical panel for horizontal tail.This value is used to determine if theconfiguration contains a canard.

1

ndelta Number of control surface deflections:delta, deltal, or deltar.

0

delta Array of control-surface streamwisedeflection angles.

[]

deltal Array of left lifting surfacestreamwise control deflectionangles, which are defined positive fortrailing-edge down.

[]

4-109

Page 206: Aerospace Toolbox User Guide Matlab

datcomimport

Common Fields for the 1976 Version (File Type 6) (Continued)

Field Description Default

deltar Array of right lifting surfacestreamwise control deflection angles,which are defined positive fortrailing-edge down.

[]

ngh Scalar denoting the number of groundaltitudes.

0

grndht Array of ground heights. []

config Structure of logicals denotingwhether the case contains horizontaltails.

false, as follows.

config.downwash = false;config.body = false;config.wing = false;config.htail = false;config.vtail = false;config.vfin = false;

version Version of DATCOM file. 1976

Static Longitude and Lateral Stability Fields Available for the 1976 Version (FileType 6)

Field Matrix of... Function of...

cd Drag coefficients, which are definedpositive for an aft-acting load.

alpha, mach, alt, build, grndht,delta

cl Lift coefficients, which are definedpositive for an up-acting load.

alpha, mach, alt, build, grndht,delta

4-110

Page 207: Aerospace Toolbox User Guide Matlab

datcomimport

Static Longitude and Lateral Stability Fields Available for the 1976 Version (FileType 6) (Continued)

Field Matrix of... Function of...

cm Pitching-moment coefficients, whichare defined positive for a nose-uprotation.

alpha, mach, alt, build, grndht,delta

cn Normal-force coefficients, which aredefined positive for a normal force inthe +Z direction.

alpha, mach, alt, build, grndht,delta

ca Axial-force coefficients, which aredefined positive for a normal force inthe +X direction.

alpha, mach, alt, build, grndht,delta

xcp Distances between moment referencecenter and the center of pressuredivided by the longitudinal referencelength. Distances are defined positivefor a location forward of the center ofgravity.

alpha, mach, alt, build, grndht,delta

cla Derivatives of lift coefficients withrespect to alpha.

alpha, mach, alt, build, grndht,delta

cma Derivatives of pitching-momentcoefficients with respect to alpha.

alpha, mach, alt, build, grndht,delta

cyb Derivatives of side-force coefficientswith respect to sideslip angle.

alpha, mach, alt, build, grndht,delta

cnb Derivatives of yawing-momentcoefficients with respect to sideslipangle.

alpha, mach, alt, build, grndht,delta

clb Derivatives of rolling-momentcoefficients with respect to sideslipangle.

alpha, mach, alt, build, grndht,delta

4-111

Page 208: Aerospace Toolbox User Guide Matlab

datcomimport

Static Longitude and Lateral Stability Fields Available for the 1976 Version (FileType 6) (Continued)

Field Matrix of... Function of...

qqinf Ratios of dynamic pressure at thehorizontal tail to the freestreamvalue.

alpha, mach, alt, build, grndht,delta

eps Downwash angle at horizontal tail indegrees.

alpha, mach, alt, build, grndht,delta

depsdalp Downwash angle with respect toangle of attack.

alpha, mach, alt, build, grndht,delta

Dynamic Derivative Fields for the 1976 Version (File Type 6)

Field Matrix of... Function of...

clq Rolling-moment derivatives due to pitchrate.

alpha, mach, alt, build

cmq Pitching-moment derivatives due to pitchrate.

alpha, mach, alt, build

clad Lift-force derivatives due to rate of angle ofattack.

alpha, mach, alt, build

cmad Pitching-moment derivatives due to rate ofangle of attack.

alpha, mach, alt, build

clp Rolling-moment derivatives due to roll rate. alpha, mach, alt, build

cyp Lateral-force derivatives due to roll rate. alpha, mach, alt, build

cnp Yawing-moment derivatives due to roll rate. alpha, mach, alt, build

cnr Yawing-moment derivatives due to yawrate.

alpha, mach, alt, build

clr Rolling-moment derivatives due to yaw rate. alpha, mach, alt, build

4-112

Page 209: Aerospace Toolbox User Guide Matlab

datcomimport

High-Lift and Control Fields for Symmetric Flaps for the 1976 Version (File Type 6)

Field Matrix of... Function of...

dcl_sym Incremental lift coefficients due to deflectionof control surface, valid in the linear-liftangle of attack range.

delta, mach, alt

dcm_sym Incremental pitching-moment coefficientsdue to deflection of control surface, valid inthe linear-lift angle of attack range.

delta, mach, alt

dclmax_sym Incremental maximum lift coefficients. delta, mach, alt

dcdmin_sym Incremental minimum drag coefficients dueto control or flap deflection.

delta, mach, alt

clad_sym Lift-curve slope of the deflected, translatedsurface.

delta, mach, alt

cha_sym Control-surface hinge-moment derivativesdue to angle of attack. These derivatives,when defined positive, will tend to rotatethe flap trailing edge down.

delta, mach, alt

chd_sym Control-surface hinge-moment derivativesdue to control deflection. When definedpositive, these derivatives will tend torotate the flap trailing edge down.

delta, mach, alt

dcdi_sym Incremental induced drag coefficients dueto flap detection.

alpha, delta, mach, alt

4-113

Page 210: Aerospace Toolbox User Guide Matlab

datcomimport

High-Lift and Control Fields Available for Asymmetric Flaps for the 1976 Version(File Type 6)

Field Matrix of... Function of...

xsc Streamwise distances from wingleading edge to spoiler tip.

delta, mach, alt

hsc Projected height of spoiler measuredfrom normal to airfoil meanline.

delta, mach, alt

ddc Projected height of deflector forspoiler-slot-deflector control.

delta, mach, alt

dsc Projected height of spoiler control. delta, mach, alt

clroll Incremental rolling-momentcoefficients due to asymmetricaldeflection of control surface. Thecoefficients are defined positivewhen right wing is down.

delta, mach, and alt, or alpha,delta, mach, and alt for differentialhorizontal stabilizer

cn_asy Incremental yawing-momentcoefficients due to asymmetricaldeflection of control surface. Thecoefficients are defined positivewhen nose is right.

delta, mach, and alt, or alpha,delta, mach, and alt for plain flaps

High-Lift and Control Fields Available for Control/Trim Tabs for the 1976 Version(File Type 6)

Field Matrix of... Function of...

fc_con Stick forces or stick force coefficients. alpha, delta, mach, alt

fhmcoeff_free Flap-hinge moment coefficients tabfree.

alpha, delta, mach, alt

fhmcoeff_lock Flap-hinge moment coefficients tablocked.

alpha, delta, mach, alt

4-114

Page 211: Aerospace Toolbox User Guide Matlab

datcomimport

High-Lift and Control Fields Available for Control/Trim Tabs for the 1976 Version(File Type 6) (Continued)

Field Matrix of... Function of...

fhmcoeff_gear Flap-hinge moment coefficients due togearing.

alpha, delta, mach, alt

ttab_def Trim-tab deflections for zero stickforce.

alpha, delta, mach, alt

High-Lift and Control Fields Available for Trim for the 1976 Version (File Type 6)

Field Matrix of... Function of...

cl_utrim Untrimmed lift coefficients, which aredefined positive for an up-acting load.

alpha, mach, alt

cd_utrim Untrimmed drag coefficients, which aredefined positive for an aft-acting load.

alpha, mach, alt

cm_utrim Untrimmed pitching-moment coefficients,which are defined positive for a nose-uprotation.

alpha, mach, alt

delt_trim Trimmed control-surface streamwisedeflection angles.

alpha, mach, alt

dcl_trim Trimmed incremental lift coefficients inthe linear-lift angle of attack range due todeflection of control surface.

alpha, mach, alt

dclmax_trim Trimmed incremental maximum liftcoefficients.

alpha, mach, alt

dcdi_trim Trimmed incremental induced dragcoefficients due to flap deflection.

alpha, mach, alt

dcdmin_trim Trimmed incremental minimum dragcoefficients due to control or flap deflection.

alpha, mach, alt

4-115

Page 212: Aerospace Toolbox User Guide Matlab

datcomimport

High-Lift and Control Fields Available for Trim for the 1976 Version (File Type6) (Continued)

Field Matrix of... Function of...

cha_trim Trimmed control-surface hinge-momentderivatives due to angle of attack.

alpha, mach, alt

chd_trim Trimmed control-surface hinge-momentderivatives due to control deflection.

alpha, mach, alt

cl_tailutrim Untrimmed stabilizer lift coefficients,which are defined positive for an up-actingload.

alpha, mach, alt

cd_tailutrim Untrimmed stabilizer drag coefficients,which are defined positive for an aft-actingload.

alpha, mach, alt

cm_tailutrim Untrimmed stabilizer pitching-momentcoefficients, which are defined positive fora nose-up rotation.

alpha, mach, alt

hm_tailutrim Untrimmed stabilizer hinge-momentcoefficients, which are defined positive fora stabilizer rotation with leading edge upand trailing edge down.

alpha, mach, alt

aliht_tailtrim Stabilizer incidence required to trim. alpha, mach, alt

cl_tailtrim Trimmed stabilizer lift coefficients, whichare defined positive for an up-acting load.

alpha, mach, alt

cd_tailtrim Trimmed stabilizer drag coefficients, whichare defined positive for an aft-acting load.

alpha, mach, alt

cm_tailtrim Trimmed stabilizer pitching-momentcoefficients, which are defined positive fora nose-up rotation.

alpha, mach, alt

4-116

Page 213: Aerospace Toolbox User Guide Matlab

datcomimport

High-Lift and Control Fields Available for Trim for the 1976 Version (File Type6) (Continued)

Field Matrix of... Function of...

hm_tailtrim Trimmed stabilizer hinge-momentcoefficients, which are defined positive fora stabilizer rotation with leading edge upand trailing edge down.

alpha, mach, alt

cl_trimi Lift coefficients at trim incidence. Thesecoefficients are defined positive for anup-acting load.

alpha, mach, alt

cd_trimi Drag coefficients at trim incidence. Thesecoefficients are defined positive for anaft-acting load.

alpha, mach, alt

Transverse Jet Control Fields for the 1976 Version (File Type 6)

Field Description Stored with Indices of...

time Matrix of times. mach, alt, alpha

ctrlfrc Matrix of control forces. mach, alt, alpha

locmach Matrix of local Mach numbers. mach, alt, alpha

reynum Matrix of Reynolds numbers. mach, alt, alpha

locpres Matrix of local pressures. mach, alt, alpha

dynpres Matrix of dynamic pressures. mach, alt, alpha

blayer Cell array of strings containing the state ofthe boundary layer.

mach, alt, alpha

ctrlcoeff Matrix of control force coefficients. mach, alt, alpha

corrcoeff Matrix of corrected force coefficients. mach, alt, alpha

sonicamp Matrix of sonic amplification factors. mach, alt, alpha

4-117

Page 214: Aerospace Toolbox User Guide Matlab

datcomimport

Transverse Jet Control Fields for the 1976 Version (File Type 6) (Continued)

Field Description Stored with Indices of...

ampfact Matrix of amplification factors. mach, alt, alpha

vacthr Matrix of vacuum thrusts. mach, alt, alpha

minpres Matrix of minimum pressure ratios. mach, alt, alpha

minjet Matrix of minimum jet pressures. mach, alt, alpha

jetpres Matrix of jet pressures. mach, alt, alpha

massflow Matrix of mass flow rates. mach, alt, alpha

propelwt Matrix of propellant weights. mach, alt, alpha

Hypersonic Fields for the 1976 Version (File Type 6)

Field Matrix of... Stored with Indices of...

df_normal Increments in normal force per spanwisefoot of control.

alpha, delta, mach

df_axial Increments in axial force per spanwise footof control.

alpha, delta, mach

cm_normal Increments in pitching moment due tonormal force per spanwise foot of control.

alpha, delta, mach

cm_axial Increments in pitching moment due to axialforce per spanwise foot of control.

alpha, delta, mach

cp_normal Center of pressure locations of normal force. alpha, delta, mach

cp_axial Center of pressure locations of axial force. alpha, delta, mach

4-118

Page 215: Aerospace Toolbox User Guide Matlab

datcomimport

Auxiliary and Partial Fields Available for the 1976 Version (File Type 6)

Field Matrix of... Stored with Indices of...

wetarea_b Body wetted area. mach, alt, number of runs

xcg_b Longitudinal locations of thecenter of gravity.

mach, alt, number of runs(normally 1, 2 for hypers =true)

zcg_b Vertical locations of the center ofgravity.

mach, alt, number of runs(normally 1, 2 for hypers =true)

basearea_b Body base area. mach, alt, number of runs(normally 1, 2 for hypers =true)

cd0_b Body zero lift drags. mach, alt, number of runs(normally 1, 2 for hypers =true)

basedrag_b Body base drags. mach, alt, number of runs(normally 1, 2 for hypers =true)

fricdrag_b Body friction drags. mach, alt, number of runs(normally 1, 2 for hypers =true)

presdrag_b Body pressure drags. mach, alt, number of runs(normally 1, 2 for hypers =true)

lemac Leading edge mean aerodynamicchords.

mach, alt

sidewash sidewash mach, alt

hiv_b_w iv-b(w) alpha, mach, alt

hiv_w_h iv-w(h) alpha, mach, alt

hiv_b_h iv-b(h) alpha, mach, alt

4-119

Page 216: Aerospace Toolbox User Guide Matlab

datcomimport

Auxiliary and Partial Fields Available for the 1976 Version (File Type 6)(Continued)

Field Matrix of... Stored with Indices of...

gamma gamma*2*pi*alpha*v*r alpha, mach, alt

gamma2pialpvr gamma*(2*pi*alpha*v*r)t alpha, mach, alt

clpgammacl0 clp(gamma=cl=0) mach, alt

clpgammaclp clp(gamma)/cl (gamma=0) mach, alt

cnptheta cnp/theta mach, alt

cypgamma cyp/gamma mach, alt

cypcl cyp/cl (cl=0) mach, alt

clbgamma clb/gamma mach, alt

cmothetaw (cmo/theta)w mach, alt

cmothetah (cmo/theta)h mach, alt

espeff (epsoln)eff alpha, mach, and alt

despdalpeff d(epsoln)/d(alpha) eff alpha, mach, alt

dragdiv drag divergence mach number mach, alt

cd0mach Four Mach numbers for the zerolift drag.

index, mach, alt

cd0 Four zero lift drags. index, mach, alt

clbclmfb_**** (clb/cl)mfb, where **** iseither wb (wing-body) or bht(body-horizontal tail).

mach, alt.

cnam14_**** (cna)m=1.4, where **** iseither wb (wing-body) or bht(body-horizontal tail).

mach,alt

4-120

Page 217: Aerospace Toolbox User Guide Matlab

datcomimport

Auxiliary and Partial Fields Available for the 1976 Version (File Type 6)(Continued)

Field Matrix of... Stored with Indices of...

area_*_** Areas, where * is either w (wing),ht (horizontal tail), vt (verticaltail), or vf (ventral fin) and ** iseither tt (total theoretical), ti(theoretical inboard), te (totalexposed), ei (exposed inboard),or o (outboard).

mach, alt, number of runs(normally 1, 2 for hypers =true)

taperratio_*_** Taper ratios, where * is eitherw (wing), ht (horizontal tail),vt (vertical tail), or vf (ventralfin) and ** is either tt (totaltheoretical), ti (theoreticalinboard), te (total exposed),ei (exposed inboard), or o(outboard).

mach, alt, number of runs(normally 1, 2 for hypers =true)

aspectratio_*_** Aspect ratios, where * is eitherw (wing), ht (horizontal tail),vt (vertical tail), or vf (ventralfin) and ** is either tt (totaltheoretical), ti (theoreticalinboard), te (total exposed),ei (exposed inboard), or o(outboard).

mach, alt, number of runs(normally 1, 2 for hypers =true)

4-121

Page 218: Aerospace Toolbox User Guide Matlab

datcomimport

Auxiliary and Partial Fields Available for the 1976 Version (File Type 6)(Continued)

Field Matrix of... Stored with Indices of...

qcsweep_*_** Quarter chord sweeps, where *is either w (wing), ht (horizontaltail), vt (vertical tail), or vf(ventral fin) and ** is either tt(total theoretical), ti (theoreticalinboard), te (total exposed),ei (exposed inboard), or o(outboard).

mach, alt, number of runs(normally 1, 2 for hypers =true)

mac_*_** Mean aerodynamic chords,where * is either w (wing), ht(horizontal tail), vt (verticaltail), or vf (ventral fin) and ** iseither tt (total theoretical), ti(theoretical inboard), te (totalexposed), ei (exposed inboard),or o (outboard).

mach, alt, number of runs(normally 1, 2 for hypers =true)

qcmac_*_** Quarter chord x(mac), where *is either w (wing), ht (horizontaltail), vt (vertical tail), or vf(ventral fin) and ** is either tt(total theoretical), ti (theoreticalinboard), te (total exposed),ei (exposed inboard), or o(outboard).

mach, alt, number of runs(normally 1, 2 for hypers =true)

4-122

Page 219: Aerospace Toolbox User Guide Matlab

datcomimport

Auxiliary and Partial Fields Available for the 1976 Version (File Type 6)(Continued)

Field Matrix of... Stored with Indices of...

ymac_*_** y(mac), where * is either w (wing),ht (horizontal tail), vt (verticaltail), or vf (ventral fin) and ** iseither tt (total theoretical), ti(theoretical inboard), te (totalexposed), ei (exposed inboard),or o (outboard).

mach, alt, number of runs(normally 1, 2 for hypers =true)

cd0_*_** Zero lift drags, where * is eitherw (wing), ht (horizontal tail),vt (vertical tail), or vf (ventralfin) and ** is either tt (totaltheoretical), ti (theoreticalinboard), te (total exposed),ei (exposed inboard), or o(outboard).

mach, alt, number of runs(normally 1, 2 for hypers =true)

friccoeff_*_** Friction coefficients, where * iseither w (wing), ht (horizontaltail), vt (vertical tail), or vf(ventral fin) and ** is either tt(total theoretical), ti (theoreticalinboard), te (total exposed),ei (exposed inboard), or o(outboard).

mach, alt, number of runs(normally 1, 2 for hypers =true)

cla_b_*** cla-b(***), where *** is eitherw (wing) or ht (stabilizer).

mach, alt, number of runs(normally 1, 2 for hypers =true)

cla_***_b cla-***(b), where *** is eitherw (wing) or ht (stabilizer).

mach, alt, number of runs(normally 1, 2 for hypers =true)

4-123

Page 220: Aerospace Toolbox User Guide Matlab

datcomimport

Auxiliary and Partial Fields Available for the 1976 Version (File Type 6)(Continued)

Field Matrix of... Stored with Indices of...

k_b_*** k-b(***), where *** is either w(wing) or ht (stabilizer).

mach, alt, number of runs(normally 1, 2 for hypers =true)

k_***_b k-***(b), where *** is either w(wing) or ht (stabilizer).

mach, alt, number of runs(normally 1, 2 for hypers =true)

xacc_b_*** xac/c-b(***), where *** iseither w (wing) or ht (stabilizer).

mach, alt, number of runs(normally 1, 2 for hypers =true)

cdlcl2_*** cdl/cl^2, where *** is either w(wing) or ht (stabilizer).

mach, alt

clbcl_*** clb/cl, where *** is either w(wing) or ht (stabilizer).

mach, alt

fmach0_*** Force break Mach numbers withzero sweep, where *** is either w(wing) or ht (stabilizer).

mach, alt

fmach_*** Force break Mach numbers withsweep, where *** is either w(wing) or ht (stabilizer).

mach, alt

macha_*** mach(a), where *** is either w(wing) or ht (stabilizer).

mach, alt

machb_*** mach(b), where *** is either w(wing) or ht (stabilizer).

mach, alt

claa_*** cla(a), where *** is either w(wing) or ht (stabilizer).

mach, alt

clab_*** cla(b), where *** is either w(wing) or ht (stabilizer).

mach, alt

4-124

Page 221: Aerospace Toolbox User Guide Matlab

datcomimport

Auxiliary and Partial Fields Available for the 1976 Version (File Type 6)(Continued)

Field Matrix of... Stored with Indices of...

clbm06_*** (clb/cl)m=0.6, where *** iseither w (wing) or ht (stabilizer).

mach, alt

clbm14_*** (clb/cl)m=1.4, where *** iseither w (wing) or ht (stabilizer).

mach, alt

clalpmach_*** Five Mach numbers for the liftcurve slope, where *** is either w(wing) or ht (stabilizer).

index, mach, alt

clalp_*** Five lift-curve slope values,where *** is either w (wing) or ht(stabilizer).

index, mach, alt

Fields for 1999 Version (File Type 6)

Common Fields for the 1999 Version (File Type 6)

Field Description Default

case String containing the case ID. []

mach Array of Mach numbers. []

alt Array of altitudes. []

alpha Array of angles of attack. []

nmach Number of Mach numbers. 0

nalt Number of altitudes. 1

nalpha Number of angles of attack. 0

rnnub Array of Reynolds numbers. []

4-125

Page 222: Aerospace Toolbox User Guide Matlab

datcomimport

Common Fields for the 1999 Version (File Type 6) (Continued)

Field Description Default

beta Scalar containing sideslip angle. 0

phi Scalar containing aerodynamic roll angle. 0

loop Scalar denoting the type of loopingperformed to generate the DATCOM file.When loop is 1, mach and alt are variedtogether. The only loop option for the 1999version of DATCOM is loop is equal to 1.

1

sref Scalar denoting the reference area for thecase.

[]

cbar Scalar denoting the longitudinal referencelength.

[]

blref Scalar denoting the lateral referencelength.

[]

dim String denoting the specified system ofunits for the case.

'ft'

deriv String denoting the specified angle unitsfor the case.

'deg'

save Logical denoting whether the input valuesfor this case are used in the next case.

false

stype Scalar denoting the type of asymmetricflap for the case.

[]

trim Logical denoting the reading of trim datafor the case. When trim runs are read,this value is set to true.

false

4-126

Page 223: Aerospace Toolbox User Guide Matlab

datcomimport

Common Fields for the 1999 Version (File Type 6) (Continued)

Field Description Default

damp Logical denoting the reading of dynamicderivative data for the case. Whendynamic derivative runs are read, thisvalue is set to true.

false

build Scalar denoting the reading of builddata for the case. When build runs areread, this value is set to the numberof build runs depending on the vehicleconfiguration.

1

part Logical denoting the reading of partialdata for the case. When partial runs arewritten for each Mach number, this valueis set to true.

false

hypeff Logical denoting the reading of hypersonicdata for the case. When hypersonic datais read, this value is set to true.

false

ngh Scalar denoting the number of groundaltitudes.

0

nolat Logical denoting the calculation of thelateral-direction derivatives is inhibited.

false

4-127

Page 224: Aerospace Toolbox User Guide Matlab

datcomimport

Common Fields for the 1999 Version (File Type 6) (Continued)

Field Description Default

config Structure of logicals and structuresdetailing the case configuration and findeflections.

config.body = falseconfig.fin1.avail = false;config.fin1.npanel = [];config.fin1.delta = [];config.fin2.avail = false;config.fin2.npanel = [];config.fin2.delta = [];config.fin3.avail = false;config.fin3.npanel = [];config.fin3.delta = [];config.fin4.avail = false;config.fin4.npanel = [];config.fin4.delta = [];

version Version of DATCOM file. 1999

Static Longitude and Lateral Stability Fields Available for the 1999 Version (FileType 6)

Field Matrix of... Function of...

cd Drag coefficients, which are defined positive foran aft-acting load.

alpha, mach, alt, build

cl Lift coefficients, which are defined positive for anup-acting load.

alpha, mach, alt, build

cm Pitching-moment coefficients, which are definedpositive for a nose-up rotation.

alpha, machalt, build

cn Normal-force coefficients, which are definedpositive for a normal force in the +Z direction.

alpha, mach, alt, build

4-128

Page 225: Aerospace Toolbox User Guide Matlab

datcomimport

Static Longitude and Lateral Stability Fields Available for the 1999 Version (FileType 6) (Continued)

Field Matrix of... Function of...

ca Axial-force coefficients, which are defined positivefor a normal force in the +X direction.

alpha, mach, alt, build

xcp Distances between moment reference center andthe center of pressure divided by the longitudinalreference length. These distances are definedpositive for a location forward of the center ofgravity.

alpha, mach, alt, build

cna Derivatives of normal-force coefficients withrespect to alpha.

alpha, mach, alt, build

cma Derivatives of pitching-moment coefficients withrespect to alpha.

alpha, mach, alt, build

cyb Derivatives of side-force coefficients with respectto sideslip angle.

alpha, mach, alt, build

cnb Derivatives of yawing-moment coefficients withrespect to sideslip angle.

alpha, mach, alt, build

clb Derivatives of rolling-moment coefficients withrespect to sideslip angle.

alpha, mach, alt, build

clod Ratios of lift coefficient to drag coefficient. alpha, mach, alt, build

cy Side-force coefficients. alpha, mach, alt, build

cln Yawing-moment coefficient in body-axis. alpha, mach, alt, build

cll Rolling-moment coefficient in body-axis. alpha, mach, alt, build

4-129

Page 226: Aerospace Toolbox User Guide Matlab

datcomimport

Dynamic Derivative Fields for the 1999 Version (File Type 6)

Field Matrix of... Function of...

cnq Normal-force derivatives due to pitchrate.

alpha, mach, alt, build

cmq Pitching-moment derivatives due topitch rate.

alpha, mach, alt, build

caq Axial-force derivatives due to pitchrate.

alpha, mach, alt, build

cnad Normal-force derivatives due to rate ofangle of attack.

alpha, mach, alt, build

cmad Pitching-moment derivatives due torate of angle of attack.

alpha, mach, alt, build

clp Rolling-moment derivatives due to rollrate.

alpha, mach, alt, build

cyp Lateral force derivatives due to rollrate.

alpha, mach, alt, build

cnp Yawing-moment derivatives due to rollrate.

alpha, mach, alt, build

cnr Yawing-moment derivatives due toyaw rate.

alpha, mach, alt, build

clr Rolling-moment derivatives due to yawrate.

alpha, mach, alt, build

cyr Side force derivatives due to yaw rate. alpha, mach, alt, build

4-130

Page 227: Aerospace Toolbox User Guide Matlab

datcomimport

Fields for 2007, 2008, and 2011 Versions (File Type 6)

Common Fields for the 2007, 2008, and 2011 Versions (File Type 6)

Field Description Default

case String containing the case ID. []

mach Array of Mach numbers. []

alt Array of altitudes. []

alpha Array of angles of attack. []

nmach Number of Mach numbers. 0

nalt Number of altitudes. 1

nalpha Number of angles of attack. 0

rnnub Array of Reynolds numbers. []

beta Scalar containing sideslip angle. 0

phi Scalar containing aerodynamic rollangle.

0

loop Scalar denoting the type of loopingperformed to generate the DATCOMfile. When loop is 1, mach and alt arevaried together. The only loop optionfor the 2007 version of DATCOM isloop is equal to 1.

1

sref Scalar denoting the reference area forthe case.

[]

cbar Scalar denoting the longitudinalreference length.

[]

4-131

Page 228: Aerospace Toolbox User Guide Matlab

datcomimport

Common Fields for the 2007, 2008, and 2011 Versions (File Type 6) (Continued)

Field Description Default

blref Scalar denoting the lateral referencelength.

[]

dim String denoting the specified system ofunits for the case.

'ft'

deriv String denoting the specified angleunits for the case.

'deg'

save Logical denoting whether the inputvalues for this case are used in the nextcase.

false

stype Scalar denoting the type of asymmetricflap for the case.

[]

trim Logical denoting the reading of trimdata for the case. When trim runs areread, this value is set to true.

false

damp Logical denoting the reading of dynamicderivative data for the case. Whendynamic derivative runs are read, thisvalue is set to true.

false

build Scalar denoting the reading of builddata for the case. When build runs areread, this value is set to the numberof build runs depending on the vehicleconfiguration.

1

part Logical denoting the reading of partialdata for the case. When partial runsare written for each Mach number, thisvalue is set to true.

false

4-132

Page 229: Aerospace Toolbox User Guide Matlab

datcomimport

Common Fields for the 2007, 2008, and 2011 Versions (File Type 6) (Continued)

Field Description Default

hypeff Logical denoting the reading ofhypersonic data for the case. Whenhypersonic data is read, this value isset to true.

false

ngh Scalar denoting the number of groundaltitudes.

0

nolat Logical denoting the calculation ofthe lateral-direction derivatives isinhibited.

false

config Structure of logicals and structuresdetailing the case configuration and findeflections.

config.body = false;config.fin1.avail = false;config.fin1.npanel = [];config.fin1.delta = [];config.fin2.avail = false;config.fin2.npanel = [];config.fin2.delta = [];config.fin3.avail = false;config.fin3.npanel = [];config.fin3.delta = [];config.fin4.avail = false;config.fin4.npanel = [];config.fin4.delta = [];

nolat_-namelist

Logical denoting the calculation of thelateral-direction derivatives is inhibitedin the DATCOM input case.

false

version Version of DATCOM file. 2007

4-133

Page 230: Aerospace Toolbox User Guide Matlab

datcomimport

Static Longitude and Lateral Stability Fields Available for the 2007, 2008, and2011 Versions (File Type 6)

Field Matrix of... Function of...

cd Drag coefficients, which are defined positive foran aft-acting load.

alpha, mach, alt, build

cl Lift coefficients, which are defined positive for anup-acting load.

alpha, mach, alt, build

cm Pitching-moment coefficients, which are definedpositive for a nose-up rotation.

alpha, machalt, build

cn Normal-force coefficients, which are definedpositive for a normal force in the +Z direction.

alpha, mach, alt, build

ca Axial-force coefficients, which are defined positivefor a normal force in the +X direction.

alpha, mach, alt, build

xcp Distances between moment reference center andthe center of pressure divided by the longitudinalreference length. These distances are definedpositive for a location forward of the center ofgravity.

alpha, mach, alt, build

cna Derivatives of normal-force coefficients withrespect to alpha.

alpha, mach, alt, build

cma Derivatives of pitching-moment coefficients withrespect to alpha.

alpha, mach, alt, build

cyb Derivatives of side-force coefficients with respectto sideslip angle.

alpha, mach, alt, build

cnb Derivatives of yawing-moment coefficients withrespect to sideslip angle.

alpha, mach, alt, build

clb Derivatives of rolling-moment coefficients withrespect to sideslip angle.

alpha, mach, alt, build

clod Ratios of lift coefficient to drag coefficient. alpha, mach, alt, build

4-134

Page 231: Aerospace Toolbox User Guide Matlab

datcomimport

Static Longitude and Lateral Stability Fields Available for the 2007, 2008, and2011 Versions (File Type 6) (Continued)

Field Matrix of... Function of...

cy Side-force coefficients. alpha, mach, alt, build

cln Yawing-moment coefficient in body-axis. alpha, mach, alt, build

cll Rolling-moment coefficient in body-axis. alpha, mach, alt, build

Dynamic Derivative Fields for the 2007, 2008, and 2011 Versions (File Type 6)

Field Matrix of... Function of...

cnq Normal-force derivatives due to pitch rate. alpha, mach, alt, build

cmq Pitching-moment derivatives due to pitchrate.

alpha, mach, alt, build

caq Axial-force derivatives due to pitch rate. alpha, mach, alt, build

cnad Normal-force derivatives due to rate of angleof attack.

alpha, mach, alt, build

cmad Pitching-moment derivatives due to rate ofangle of attack.

alpha, mach, alt, build

clp Rolling-moment derivatives due to roll rate. alpha, mach, alt, build

cyp Lateral-force derivatives due to roll rate. alpha, mach, alt, build

cnp Yawing-moment derivatives due to roll rate. alpha, mach, alt, build

cnr Yawing-moment derivatives due to yaw rate. alpha, mach, alt, build

clr Rolling-moment derivatives due to yaw rate alpha, mach, alt, build

cyr Side-force derivatives due to yaw rate. alpha, mach, alt, build

Fields for 2007, 2008, and 2011 Versions (File Type 21)

For 2008 and 2011, the version is 2008. There are no discernibledifferences in the outputs of these versions.

4-135

Page 232: Aerospace Toolbox User Guide Matlab

datcomimport

Common Fields for the 2007, 2008, and 2011 Versions (File Type 21)

Field Description Default

mach Array of Mach numbers. []

alt Array of altitudes. []

alpha Array of angles of attack. []

nalpha Number of angles of attack. 0

beta Scalar containing sideslipangle.

0

total_col Scalar denoting the type oflooping performed to generatethe DATCOM file. When loopis 1, mach and alt are variedtogether. The only loop optionfor the 2007, 2008, and 2011versions of DATCOM is loopequal to 1.

[]

deriv_col Logical denoting thecalculation of thelateral-direction derivatives isinhibited.

0

config Structure of logicals andstructures detailing thecase configuration and findeflections.

config.fin1.delta = zeros(1,8);config.fin2.delta = zeros(1,8);config.fin3.delta = zeros(1,8);config.fin4.delta = zeros(1,8);

version Version of DATCOM file. 2007

4-136

Page 233: Aerospace Toolbox User Guide Matlab

datcomimport

Static Longitude and Lateral Stability Fields Available for the 2007, 2008, and2011 Versions (File Type 21)

Field Matrix of... Function of...

cn Normal-force coefficients, which are definedpositive for a normal force in the +Z direction.

alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cm Pitching-moment coefficients, which are definedpositive for a nose-up rotation.

alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

ca Axial-force coefficients, which are defined positivefor a normal force in the +X direction.

alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cy Side-force coefficients. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cln Yawing-moment coefficient in body-axis. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cll Rolling-moment coefficient in body-axis. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

4-137

Page 234: Aerospace Toolbox User Guide Matlab

datcomimport

Dynamic Derivative Fields for the 2007, 2008, and 2011 Versions (File Type 21)

Field Matrix of... Function of...

cnad Normal-force derivatives due to rate of angleof attack.

alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cmad Pitching-moment derivatives due to rate ofangle of attack.

alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cnq Normal-force derivatives due to pitch rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cmq Pitching-moment derivatives due to pitch rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

caq Axial-force derivatives due to pitch rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cyq Side-force due to pitch rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

4-138

Page 235: Aerospace Toolbox User Guide Matlab

datcomimport

Dynamic Derivative Fields for the 2007, 2008, and 2011 Versions (File Type 21)(Continued)

Field Matrix of... Function of...

clnq Yawing-moment due to pitch rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cllq Rolling-moment due to pitch rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cnp Yawing-moment derivatives due to roll rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cap Axial-force due to roll rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cyp Lateral-force derivatives due to roll rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

4-139

Page 236: Aerospace Toolbox User Guide Matlab

datcomimport

Dynamic Derivative Fields for the 2007, 2008, and 2011 Versions (File Type 21)(Continued)

Field Matrix of... Function of...

clnp Yawing-moment due to roll rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cllp Rolling-moment due to roll rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cnr Yawing-moment derivatives due to yaw rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

car Axial-force due to yaw rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cyr Side-force derivatives due to yaw rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

4-140

Page 237: Aerospace Toolbox User Guide Matlab

datcomimport

Dynamic Derivative Fields for the 2007, 2008, and 2011 Versions (File Type 21)(Continued)

Field Matrix of... Function of...

clnr Yawing-moment due to yaw rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

cllr Rolling-moment due to yaw rate. alpha, mach, alt, beta,config.fin1.delta,config.fin2.delta,config.fin3.delta,config.fin4.delta

Fields for 2008 and 2011 Version (File Type 42)

Fields for the 2008 and 2011 Version (File Type 42)

Field Description Default

case String containing the case ID. []

totalCol Scalar containing number of columnsof data in file.

[]

mach Array of Mach numbers. []

alt Array of altitudes. []

alpha Array of angles of attack. []

nmach Number of Mach numbers. 0

nalpha Number of angles of attack. 0

rnnub Array of Reynolds numbers. []

q Dynamic pressure. []

4-141

Page 238: Aerospace Toolbox User Guide Matlab

datcomimport

Fields for the 2008 and 2011 Version (File Type 42) (Continued)

Field Description Default

beta Scalar containing sideslip angle. 0

phi Scalar containing aerodynamic rollangle.

0

sref Scalar denoting the reference areafor the case.

[]

cbar Scalar denoting the longitudinalreference length.

[]

blref Scalar denoting the lateral referencelength.

[]

xcg Distance from nose to center ofgravity.

[]

xmrp Distance from nose to center ofgravity, measured in calibers.

[]

deriv String denoting the specified angleunits for the case.

'deg'

trim Logical denoting the reading of trimdata for the case. When trim runs areread, this value is set to true.

false

damp Logical denoting the reading ofdynamic derivative data for the case.When dynamic derivative runs areread, this value is set to true.

false

build Scalar denoting the reading of partialdata for the case. This value is set tothe number of partial runs dependingon the vehicle configuration.

1

4-142

Page 239: Aerospace Toolbox User Guide Matlab

datcomimport

Fields for the 2008 and 2011 Version (File Type 42) (Continued)

Field Description Default

part Logical denoting the reading ofpartial data for the case. Whenpartial runs are written for eachMach number, this value is set totrue.

false

nolat Logical denoting the calculation ofthe lateral-direction derivatives isinhibited.

true

config Structure of logicals and structuresdetailing the case configuration andfin deflections.

config.body = false;config.fin1.avail = false;config.fin1.npanel = [];config.fin1.delta = [];config.fin2.avail = false;config.fin2.npanel = [];config.fin2.delta = [];config.fin3.avail = false;config.fin3.npanel = [];config.fin3.delta = [];config.fin4.avail = false;config.fin4.npanel = [];

version Version of DATCOM file. 2008

Static Longitude and Lateral Stability Fields Available for the 2008 and 2011Versions (File Type 42)

Field Matrix of... Function of...

delta Trim deflection angles. alpha, mach

cd Drag coefficients, which are definedpositive for an aft-acting load.

alpha, mach, build

4-143

Page 240: Aerospace Toolbox User Guide Matlab

datcomimport

Static Longitude and Lateral Stability Fields Available for the 2008 and 2011Versions (File Type 42) (Continued)

Field Matrix of... Function of...

cl Lift coefficients, which are definedpositive for an up-acting load.

alpha, mach, build

cm Pitching-moment coefficients, whichare defined positive for a nose-uprotation.

alpha, mach, build

cn Normal-force coefficients, which aredefined positive for a normal force inthe +Z direction.

alpha, mach, build

ca Axial-force coefficients, which aredefined positive for a normal force inthe +X direction.

alpha, mach, build

caZeroBase Axial-force coefficient with no basedrag included.

alpha, mach, build

caFullBase Axial-force coefficient with full basedrag included.

alpha, mach, build

xcp Distance from nose to center ofpressure.

alpha, mach, build

cna Derivatives of normal-forcecoefficients with respect to alpha.

alpha, mach, build

cma Derivatives of pitching-momentcoefficients with respect to alpha.

alpha, mach, build

cyb Derivatives of side-force coefficientswith respect to sideslip angle.

alpha, mach, build

cnb Derivatives of yawing-momentcoefficients with respect to sideslipangle.

alpha, mach, build

4-144

Page 241: Aerospace Toolbox User Guide Matlab

datcomimport

Static Longitude and Lateral Stability Fields Available for the 2008 and 2011Versions (File Type 42) (Continued)

Field Matrix of... Function of...

clb Derivatives of rolling-momentcoefficients with respect to sideslipangle.

alpha, mach, build

clod Ratios of lift coefficient to dragcoefficient.

alpha, mach, build

cy Side-force coefficient. alpha, mach, build

cln Yawing-moment coefficient. alpha, mach, build

cll Rolling-moment coefficient. alpha, mach, build

Dynamic Derivative Fields for the 2008 and 2011 Version (File Type 42)

Field Matrix of... Function of...

cnq Normal-force derivatives due to pitch rate. alpha, mach, alt, build

cmq Pitching-moment derivatives due to pitchrate.

alpha, mach, alt, build

caq Axial-force derivatives due to pitch rate. alpha, mach, alt, build

cnad Normal-force derivatives due to rate ofangle of attack.

alpha, mach, alt, build

cmad Pitching-moment derivatives due to rate ofangle of attack.

alpha, mach, alt, build

cyq Lateral-force derivatives due to pitch rate. alpha, mach, alt, build

clnq Yawing-moment derivatives due to pitchrate.

alpha, mach, alt, build

cllq Rolling-moment derivatives due to pitchrate.

alpha, mach, alt, build

4-145

Page 242: Aerospace Toolbox User Guide Matlab

datcomimport

Dynamic Derivative Fields for the 2008 and 2011 Version (File Type 42)(Continued)

Field Matrix of... Function of...

cyr Side-force derivatives due to yaw rate. alpha, mach, alt, build

clnr Yawing-moment derivatives due to yawrate.

alpha, mach, alt, build

cllr Rolling-moment derivatives due to yaw rate. alpha, mach, alt, build

cyp Lateral-force derivatives due to roll rate. alpha, mach, alt, build

clnp Yawing-moment derivatives due to roll rate. alpha, mach, alt, build

cllp Rolling-moment derivatives due to roll rate. alpha, mach, alt, build

cnp Normal-force derivatives due to roll rate. alpha, mach, alt, build

cmp Pitching-moment derivatives due to rollrate.

alpha, mach, alt, build

cap Axial-force derivatives due to roll rate. alpha, mach, alt, build

cnr Normal-force derivatives due to yaw rate. alpha, mach, alt, build

cmr Pitching-moment derivatives due to rollrate.

alpha, mach, alt, build

car Axial-force derivatives due to yaw rate. alpha, mach, alt, build

Examples Read the 1976 version Digital DATCOM output file astdatcom.out:

aero = datcomimport('astdatcom.out')

Read the 1976 Digital DATCOM output file astdatcom.out using zerosto replace data points where no DATCOM methods exist and displayingstatus information in the MATLAB Command Window:

usenan = false;aero = datcomimport('astdatcom.out', usenan, 1 )

4-146

Page 243: Aerospace Toolbox User Guide Matlab

datcomimport

AssumptionsandLimitations

The operational limitations of the 1976 version DATCOM apply tothe data contained in AERO. For more information on DATCOMlimitations, see [1], section 2.4.5.

USAF Digital DATCOM data for wing section, horizontal tail section,vertical tail section, and ventral fin section are not read.

References 1. AFFDL-TR-79-3032: The USAF Stability and Control DATCOM,Volume 1, User’s Manual

2. AFRL-VA-WP-TR-1998-3009: MISSILE DATCOM, User’s Manual –1997 FORTRAN 90 Revision

3. AFRL-RB-WP-TR-2009-3015: MISSILE DATCOM, User’s Manual– 2008 Revision

4. AFRL-RB-WP-TR-2011-3071: MISSILE DATCOM, User’s Manual– 2011 Revision

4-147

Page 244: Aerospace Toolbox User Guide Matlab

dcm2alphabeta

Purpose Convert direction cosine matrix to angle of attack and sideslip angle

Syntax [a b] = dcm2alphabeta(n)

Description [a b] = dcm2alphabeta(n) calculates the angle of attack and sideslipangle, a and b, for a given direction cosine matrix, n. n is a 3-by-3-by-mmatrix containing m orthogonal direction cosine matrices. a is an marray of angles of attack. b is an m array of sideslip angles. n performsthe coordinate transformation of a vector in body-axes into a vector inwind-axes. Angles of attack and sideslip angles are output in radians.

Examples Determine the angle of attack and sideslip angle from direction cosinematrix:

dcm = [ 0.8926 0.1736 0.4162; ...-0.1574 0.9848 -0.0734; ...-0.4226 0 0.9063];

[alpha beta] = dcm2alphabeta(dcm)

alpha =

0.4363

beta =

0.1745

Determine the angle of attack and sideslip angle from multiple directioncosine matrices:

dcm = [ 0.8926 0.1736 0.4162; ...-0.1574 0.9848 -0.0734; ...-0.4226 0 0.9063];

dcm(:,:,2) = [ 0.9811 0.0872 0.1730; ...-0.0859 0.9962 -0.0151; ...-0.1736 0 0.9848];

4-148

Page 245: Aerospace Toolbox User Guide Matlab

dcm2alphabeta

[alpha beta] = dcm2alphabeta(dcm)

alpha =

0.43630.1745

beta =

0.17450.0873

See Also angle2dcm | dcm2angle | dcmbody2wind

4-149

Page 246: Aerospace Toolbox User Guide Matlab

dcm2angle

Purpose Create rotation angles from direction cosine matrix

Syntax [r1 r2 r3] = dcm2angle(n)[r1 r2 r3] = dcm2angle(n, s)[r1 r2 r3] = dcm2angle(n, s, lim)

Description [r1 r2 r3] = dcm2angle(n) calculates the set of rotation angles, r1,r2, r3, for a given direction cosine matrix, n. n is a 3-by-3-by-m matrixcontaining m direction cosine matrices. r1 returns an m array of firstrotation angles. r2 returns an m array of second rotation angles. r3returns an m array of third rotation angles. Rotation angles are outputin radians.

[r1 r2 r3] = dcm2angle(n, s) calculates the set of rotation angles,r1, r2, r3, for a given direction cosine matrix, n, and a specified rotationsequence, s.

The default rotation sequence is 'ZYX', where r1 is z-axis rotation, r2is y-axis rotation, and r3 is x-axis rotation.

Supported rotation sequence strings are 'ZYX', 'ZYZ', 'ZXY', 'ZXZ','YXZ', 'YXY', 'YZX', 'YZY', 'XYZ', 'XYX', 'XZY', and 'XZX'.

[r1 r2 r3] = dcm2angle(n, s, lim) calculates the set of rotationangles, r1, r2, r3, for a given direction cosine matrix, n, a specifiedrotation sequence, s, and a specified angle constraint, lim. lim is astring specifying either 'Default' or 'ZeroR3'. See “Assumptions andLimitations” on page 4-151 for full definitions of angle constraints.

Examples Determine the rotation angles from direction cosine matrix:

dcm = [1 0 0; 0 1 0; 0 0 1];[yaw, pitch, roll] = dcm2angle( dcm )yaw =

0

pitch =

4-150

Page 247: Aerospace Toolbox User Guide Matlab

dcm2angle

0

roll =

0

Determine the rotation angles from multiple direction cosine matrices:

dcm = [ 1 0 0; 0 1 0; 0 0 1];

dcm(:,:,2) = [ 0.85253103550038 0.47703040785184 -0.21361840626067; ...

-0.43212157513194 0.87319830445628 0.22537893734811; ...

0.29404383655186 -0.09983341664683 0.95056378592206];

[pitch, roll, yaw] = dcm2angle( dcm, 'YXZ' )

pitch =

0

0.3000

roll =

0

0.1000

yaw =

0

0.5000

AssumptionsandLimitations

The 'Default' limitations for the 'ZYX', 'ZXY', 'YXZ', 'YZX', 'XYZ',and 'XZY' implementations generate an r2 angle that lies between ±90degrees, and r1 and r3 angles that lie between ±180 degrees.

The 'Default' limitations for the 'ZYZ', 'ZXZ', 'YXY', 'YZY', 'XYX',and 'XZX' implementations generate an r2 angle that lies between 0and 180 degrees, and r1 and r3 angles that lie between ±180 degrees.

4-151

Page 248: Aerospace Toolbox User Guide Matlab

dcm2angle

The 'ZeroR3' limitations for the 'ZYX', 'ZXY', 'YXZ', 'YZX', 'XYZ',and 'XZY' implementations generate an r2 angle that lies between ±90degrees, and r1 and r3 angles that lie between ±180 degrees. However,when r2 is ±90 degrees, r3 is set to 0 degrees.

The 'ZeroR3' limitations for the 'ZYZ', 'ZXZ', 'YXY', 'YZY', 'XYX',and 'XZX' implementations generate an r2 angle that lies between 0and 180 degrees, and r1 and r3 angles that lie between ±180 degrees.However, when r2 is 0 or ±180 degrees, r3 is set to 0 degrees.

See Also angle2dcm | dcm2quat | quat2dcm | quat2angle

4-152

Page 249: Aerospace Toolbox User Guide Matlab

dcm2latlon

Purpose Convert direction cosine matrix to geodetic latitude and longitude

Syntax [lat lon] = dcm2latlon(n)

Description [lat lon] = dcm2latlon(n) calculates the geodetic latitude andlongitude, lat and lon, for a given direction cosine matrix, n. n is a3-by-3-by-m matrix containing m orthogonal direction cosine matrices.lat is an m array of geodetic latitudes. lon is an m array of longitudes. nperforms the coordinate transformation of a vector in Earth-centeredEarth-fixed (ECEF) axes into a vector in north-east-down (NED) axes.Geodetic latitudes and longitudes are output in degrees.

Examples Determine the geodetic latitude and longitude from direction cosinematrix:

dcm = [ 0.3747 0.5997 0.7071; ...0.8480 -0.5299 0; ...0.3747 0.5997 -0.7071];

[lat lon] = dcm2latlon(dcm)

lat =

44.9995

lon =

-122.0005

Determine the geodetic latitude and longitude from multiple directioncosine matrices:

dcm = [ 0.3747 0.5997 0.7071; ...0.8480 -0.5299 0; ...0.3747 0.5997 -0.7071];

dcm(:,:,2) = [-0.0531 0.6064 0.7934; ...0.9962 0.0872 0; ...

4-153

Page 250: Aerospace Toolbox User Guide Matlab

dcm2latlon

-0.0691 0.7903 -0.6088];[lat lon] = dcm2latlon(dcm)

lat =

44.999537.5028

lon =

-122.0005-84.9975

See Also angle2dcm | dcm2angle | dcmecef2ned

4-154

Page 251: Aerospace Toolbox User Guide Matlab

dcm2quat

Purpose Convert direction cosine matrix to quaternion

Syntax q = dcm2quat(n)

Description q = dcm2quat(n) calculates the quaternion, q, for a given directioncosine matrix, n. Input n is a 3-by-3-by-m matrix of orthogonal directioncosine matrices. The direction cosine matrix performs the coordinatetransformation of a vector in inertial axes to a vector in body axes. qreturns an m-by-4 matrix containing m quaternions. q has its scalarnumber as the first column.

Examples Determine the quaternion from direction cosine matrix:

dcm = [0 1 0; 1 0 0; 0 0 1];q = dcm2quat(dcm)

q =

0.7071 0 0 0

Determine the quaternions from multiple direction cosine matrices:

dcm = [ 0 1 0; 1 0 0; 0 0 1];dcm(:,:,2) = [ 0.4330 0.2500 -0.8660; ...

0.1768 0.9186 0.3536; ...0.8839 -0.3062 0.3536];

q = dcm2quat(dcm)

q =

0.7071 0 0 00.8224 0.2006 0.5320 0.0223

See Also angle2dcm | dcm2angle | angle2quat | quat2dcm | quat2angle

4-155

Page 252: Aerospace Toolbox User Guide Matlab

dcmbody2wind

Purpose Convert angle of attack and sideslip angle to direction cosine matrix

Syntax n = dcmbody2wind(a, b)

Description n = dcmbody2wind(a, b) calculates the direction cosine matrix, n, forgiven angle of attack and sideslip angle, a, b. a is an m array of anglesof attack. b is an m array of sideslip angles. n returns a 3-by-3-by-mmatrix containing m direction cosine matrices. n performs the coordinatetransformation of a vector in body-axes into a vector in wind-axes.Angles of attack and sideslip angles are input in radians.

Examples Determine the direction cosine matrix from angle of attack and sideslipangle:

alpha = 0.4363;beta = 0.1745;dcm = dcmbody2wind(alpha, beta)

dcm =

0.8926 0.1736 0.4162-0.1574 0.9848 -0.0734-0.4226 0 0.9063

Determine the direction cosine matrix from multiple angles of attackand sideslip angles:

alpha = [0.4363 0.1745];beta = [0.1745 0.0873];dcm = dcmbody2wind(alpha, beta)

dcm(:,:,1) =

0.8926 0.1736 0.4162-0.1574 0.9848 -0.0734-0.4226 0 0.9063

4-156

Page 253: Aerospace Toolbox User Guide Matlab

dcmbody2wind

dcm(:,:,2) =

0.9811 0.0872 0.1730-0.0859 0.9962 -0.0151-0.1736 0 0.9848

See Also angle2dcm | dcm2alphabeta | dcm2angle

4-157

Page 254: Aerospace Toolbox User Guide Matlab

dcmecef2ned

Purpose Convert geodetic latitude and longitude to direction cosine matrix

Syntax n = dcmecef2ned(lat, lon)

Description n = dcmecef2ned(lat, lon) calculates the direction cosine matrix, n,for a given set of geodetic latitude and longitude, lat, lon. lat is an marray of geodetic latitudes. lon is an m array of longitudes. n returns a3-by-3-by-m matrix containing m direction cosine matrices. n performsthe coordinate transformation of a vector in Earth-centered Earth-fixed(ECEF) axes into a vector in north-east-down (NED) axes. Geodeticlatitudes and longitudes are input in degrees.

Examples Determine the direction cosine matrix from geodetic latitude andlongitude:

lat = 45;lon = -122;dcm = dcmecef2ned(lat, lon)

dcm =

0.3747 0.5997 0.70710.8480 -0.5299 00.3747 0.5997 -0.7071

Determine the direction cosine matrix from multiple geodetic latitudesand longitudes:

lat = [45 37.5];lon = [-122 -85];dcm = dcmecef2ned(lat, lon)

dcm(:,:,1) =

0.3747 0.5997 0.70710.8480 -0.5299 00.3747 0.5997 -0.7071

4-158

Page 255: Aerospace Toolbox User Guide Matlab

dcmecef2ned

dcm(:,:,2) =

-0.0531 0.6064 0.79340.9962 0.0872 0

-0.0691 0.7903 -0.6088

See Also angle2dcm | dcm2angle | dcm2latlon

4-159

Page 256: Aerospace Toolbox User Guide Matlab

decyear

Purpose Calculate decimal year

Syntax dy = decyear(v)dy = decyear(s,f)dy = decyear(y,mo,d)dy = decyear([y,mo,d])dy = decyear(y,mo,d,h,mi,s)dy = decyear([y,mo,d,h,mi,s])

Description dy = decyear(v) converts one or more date vectors, v, into decimalyear, dy. Input v can be an m-by-6 or m-by-3 matrix containing m full orpartial date vectors, respectively. decyear returns a column vectorof m decimal years.

A date vector contains six elements, specifying year, month, day,hour, minute, and second. A partial date vector has three elements,specifying year, month, and day. Each element of v must be a positivedouble-precision number.

dy = decyear(s,f) converts one or more date strings, s, to decimalyear, dy, using format string f. s can be a character array where eachrow corresponds to one date string, or a one-dimensional cell array ofstrings. decyear returns a column vector of m decimal years, where m isthe number of strings in s.

All of the date strings in s must have the same format f, which mustbe composed of date format symbols listed in the datestr functionreference page. Formats containing the letter Q are not accepted bydecyear.

Certain formats may not contain enough information to compute a datenumber. In those cases, hours, minutes, and seconds default to 0, daysdefault to 1, months default to January, and years default to the currentyear. Date strings with two-character years are interpreted to be withinthe 100 years centered around the current year.

dy = decyear(y,mo,d) and dy = decyear([y,mo,d]) return thedecimal year for corresponding elements of the y,mo,d (year,month,day)

4-160

Page 257: Aerospace Toolbox User Guide Matlab

decyear

arrays. y, mo, and d must be arrays of the same size (or any of themcan be a scalar).

dy = decyear(y,mo,d,h,mi,s) and dy = decyear([y,mo,d,h,mi,s])return the decimal year for corresponding elements of they,mo,d,h,mi,s (year,month,day,hour,minute,second) arrays. The sixarguments must be arrays of the same size (or any of them can be ascalar).

Examples Calculate decimal year for May 24, 2005:

dy = decyear('24-May-2005','dd-mmm-yyyy')

dy =

2.0054e+003

Calculate decimal year for December 19, 2006:

dy = decyear(2006,12,19)

dy =

2.0070e+003

Calculate decimal year for October 10, 2004, at 12:21:00 p.m.:

dy = decyear(2004,10,10,12,21,0)

dy =

2.0048e+003

AssumptionsandLimitations

The calculation of decimal year does not take into account leap seconds.

See Also juliandate | leapyear | mjuliandate

4-161

Page 258: Aerospace Toolbox User Guide Matlab

Aero.Animation.delete

Purpose Destroy animation object

Syntax delete(h)h.delete

Description delete(h) and h.delete destroy the animation object h. This functionalso destroys the animation object figure, and any objects that theanimation object contained (for example, bodies, camera, and geometry).

InputArguments

h Animation object.

Examples Delete the animation object, h.

h=Aero.Animation;h.delete;

4-162

Page 259: Aerospace Toolbox User Guide Matlab

delete (Aero.FlightGearAnimation)

Purpose Destroy FlightGear animation object

Syntax delete(h)h.delete

Description delete(h) and h.delete destroy the FlightGear animation object h.This function also destroys the animation object timer, and closes thesocket that the FlightGear animation animation object contains.

Examples Delete the FlightGear animation object, h.

h=Aero.FlightGearAnimation;h.delete;

See Also initialize

4-163

Page 260: Aerospace Toolbox User Guide Matlab

delete (Aero.VirtualRealityAnimation)

Purpose Destroy virtual reality animation object

Syntax delete(h)h.delete

Description delete(h) and h.delete destroy the virtual reality animation objecth. This function also destroys the temporary file, if it exists, cleans upthe vrfigure object, the animation object timer, and closes the vrworldobject.

Examples Delete the virtual reality animation object, h.

h=Aero.VirtualRealityAnimation;h.delete;

See Also initialize

4-164

Page 261: Aerospace Toolbox User Guide Matlab

dpressure

Purpose Compute dynamic pressure using velocity and density

Syntax q = dpressure(v, r)

Description q = dpressure(v, r) computes m dynamic pressures, q, from an m-by-3array of velocities, v, and an array of m densities, r. v and r must havethe same length units.

Examples Determine dynamic pressure for velocity in feet per second and densityin slugs per feet cubed:

q = dpressure([84.3905 33.7562 10.1269], 0.0024)

q =

10.0365

Determine dynamic pressure for velocity in meters per second anddensity in kilograms per meters cubed:

q = dpressure([25.7222 10.2889 3.0867], [1.225 0.3639])

q =

475.9252141.3789

Determine dynamic pressure for velocity in meters per second anddensity in kilograms per meters cubed:

q = dpressure([50 20 6; 5 0.5 2], [1.225 0.3639])

q =

4-165

Page 262: Aerospace Toolbox User Guide Matlab

dpressure

1.0e+003 *

1.79830.0053

See Also airspeed | machnumber

4-166

Page 263: Aerospace Toolbox User Guide Matlab

ecef2lla

Purpose Convert Earth-centered Earth-fixed (ECEF) coordinates to geodeticcoordinates

Syntax lla = ecef2lla(p)lla = ecef2lla(p, model)lla = ecef2lla(p, f, Re)

Description lla = ecef2lla(p) converts the m-by-3 array of ECEF coordinates,p, to an m-by-3 array of geodetic coordinates (latitude, longitude andaltitude), lla. lla is in [degrees degrees meters]. p is in meters. Thedefault ellipsoid planet is WGS84.

lla = ecef2lla(p, model) is an alternate method for converting thecoordinates for a specific ellipsoid planet. Currently only 'WGS84' issupported for model.

lla = ecef2lla(p, f, Re) is another alternate method for convertingthe coordinates for a custom ellipsoid planet defined by flattening, f,and the equatorial radius, Re, in meters.

Examples Determine latitude, longitude, and altitude at a coordinate:

lla = ecef2lla([4510731 4510731 0])

lla =

0 45.0000 999.9564

Determine latitude, longitude, and altitude at multiple coordinates,specifying WGS84 ellipsoid model:

lla = ecef2lla([4510731 4510731 0; 0 4507609 4498719], 'WGS84')

lla =

0 45.0000 999.9564

4-167

Page 264: Aerospace Toolbox User Guide Matlab

ecef2lla

45.1358 90.0000 999.8659

Determine latitude, longitude, and altitude at multiple coordinates,specifying custom ellipsoid model:

f = 1/196.877360;

Re = 3397000;

lla = ecef2lla([4510731 4510731 0; 0 4507609 4498719], f, Re)

lla =

1.0e+006 *

0 0.0000 2.9821

0.0000 0.0001 2.9801

See Also geoc2geod | geod2geoc | lla2ecef

4-168

Page 265: Aerospace Toolbox User Guide Matlab

fganimation (Aero.FlightGearAnimation)

Purpose Construct FlightGear animation object

Syntax h = fganimationh = Aero.FlightGearAnimation

Description h = fganimation and h = Aero.FlightGearAnimation constructa FlightGear animation object. The FlightGear animation object isreturned to h.

Examples Construct a FlightGear animation object, h:

h = fganimation

See Also Aero.FlightGearAnimation

4-169

Page 266: Aerospace Toolbox User Guide Matlab

findstartstoptimes (Aero.Body)

Purpose Return start and stop times of time series data

Syntax [tstart,tstop] = findstartstoptimes(h,tsdata)[tstart,stop] = h.findstartstoptimes(tsdata)

Description [tstart,tstop] = findstartstoptimes(h,tsdata) and[tstart,stop] = h.findstartstoptimes(tsdata) return the startand stop times of time series data tsdata for the animation body objecth.

Examples Find the start and stop times of the time series data, tsdata.

b=Aero.Body;b.load('pa24-250_orange.ac','Ac3d');tsdata = [ ...

0, 1,1,1, 0,0,0; ...10 2,2,2, 1,1,1; ];

b.TimeSeriesSource = tsdata;[tstart,tstop] = findstartstoptimes(b,tsdata);

See Also load

4-170

Page 267: Aerospace Toolbox User Guide Matlab

findstartstoptimes (Aero.Node)

Purpose Return start and stop times for time series data

Syntax [tstart,tstop] = findstartstoptimes(h,tsdata)[tstart,stop] = h.findstartstoptimes(tsdata)

Description [tstart,tstop] = findstartstoptimes(h,tsdata) and[tstart,stop] = h.findstartstoptimes(tsdata) return the startand stop times of time series data tsdata for the virtual realityanimation object h.

Examples Find the start and stop times of the time series data, takeoffData.

h = Aero.VirtualRealityAnimation;

h.VRWorldFilename = [matlabroot,'/toolbox/aero/astdemos/asttkoff.wrl'];

copyfile(h.VRWorldFilename,[tempdir,'asttkoff.wrl'],'f');

h.VRWorldFilename = [tempdir,'asttkoff.wrl'];

h.initialize();

load takeoffData;

h.Nodes{7}.TimeseriesSource = takeoffData;

h.Nodes{7}.TimeseriesSourceType = 'StructureWith Time';

[tstart,stop]=h.Nodes{7}.findstartstoptimes;

4-171

Page 268: Aerospace Toolbox User Guide Matlab

flat2lla

Purpose Estimate array of geodetic latitude, longitude, and altitude coordinatesfrom flat Earth position

Syntax lla = flat2lla(flatearth_pos, llo, psio, href)lla = flat2lla(flatearth_pos, llo, psio, href,

ellipsoidModel)lla = flat2lla(flatearth_pos, llo, psio, href, flattening,

equatorialRadius)

Description lla = flat2lla(flatearth_pos, llo, psio, href) estimatesan array of geodetic coordinates, lla, from an array of flat Earthcoordinates, flatearth_pos. This function estimates the lla valuewith respect to a reference location that llo, psio, and href define.

lla = flat2lla(flatearth_pos, llo, psio, href,ellipsoidModel) estimates the coordinates for a specific ellipsoidplanet.

lla = flat2lla(flatearth_pos, llo, psio, href, flattening,equatorialRadius) estimates the coordinates for a custom ellipsoidplanet defined by flattening and equatorialRadius.

InputArguments

flatearth_pos

Flat Earth position coordinates, in meters.

llo

Reference location, in degrees, of latitude and longitude, for the originof the estimation and the origin of the flat Earth coordinate system.

psio

Angular direction of flat Earth x-axis (degrees clockwise from north),which is the angle in degrees used for converting flat Earth x and ycoordinates to North and East coordinates.

href

4-172

Page 269: Aerospace Toolbox User Guide Matlab

flat2lla

Reference height from the surface of the Earth to the flat Earth framewith regard to the flat Earth frame, in meters.

ellipsoidModel

String that specifies the specific ellipsoid planet model. This functionsupports only 'WGS84'.

Default: WGS84

flattening

Custom ellipsoid planet defined by flattening.

equatorialRadius

Planetary equatorial radius, in meters.

OutputArguments

lla

m-by-3 array of geodetic coordinates (latitude, longitude, and altitude),in [degrees, degrees, meters].

Examples Estimate latitude, longitude, and altitude at a specified coordinate:

lla = flat2lla( [ 4731 4511 120 ], [0 45], 5, -100)

lla =

0.0391 45.0441 -20.0000

Estimate latitudes, longitudes, and altitudes at multiple coordinates,specifying the WGS84 ellipsoid model:

lla = flat2lla( [ 4731 4511 120; 0 5074 4498 ], [0 45], 5, -100, 'WGS84' )

lla =

4-173

Page 270: Aerospace Toolbox User Guide Matlab

flat2lla

1.0e+003 *

0.0000 0.0450 -0.0200

-0.0000 0.0450 -4.3980

Estimate latitudes, longitudes, and altitudes at multiple coordinates,specifying a custom ellipsoid model:

f = 1/196.877360;

Re = 3397000;

lla = flat2lla( [ 4731 4511 120; 0 5074 4498 ], [0 45], 5, -100, f, Re )

lla =

1.0e+003 *

0.0001 0.0451 -0.0200

-0.0000 0.0451 -4.3980

Algorithms The estimation begins by transforming the flat Earth x and y coordinatesto North and East coordinates. The transformation has the form of

NE

pp

x

y

⎣⎢

⎦⎥ =

−⎡

⎣⎢

⎦⎥

⎣⎢

⎦⎥

cos sinsin cos

where ( ) is the angle in degrees clockwise between the x-axis andnorth.

To convert the North and East coordinates to geodetic latitude andlongitude, the estimation uses the radius of curvature in the primevertical (RN) and the radius of curvature in the meridian (RM). (RN) and(RM) are defined by the following relationships:

4-174

Page 271: Aerospace Toolbox User Guide Matlab

flat2lla

RR

f f

R Rf f

f f

N

M N

=− −

= − −− −

1 2

1 2

1 2

2 20

2

2 20

( )sin

( )

( )sin

where (R) is the equatorial radius of the planet and f( ) is the flatteningof the planet.

Small changes in the latitude and longitude are approximated fromsmall changes in the North and East positions by

dR

dN

dR

dE

M

N

=⎛

⎝⎜

⎠⎟

=⎛

⎝⎜

⎠⎟

atan

atan

1

1cos

The output latitude and longitude are the initial latitude and longitudeplus the small changes in latitude and longitude.

= += +

0

0

d

d

The altitude is the negative flat Earth z-axis value minus the referenceheight (href).

h p hz ref= − −

References Etkin, B., Dynamics of Atmospheric Flight. NewYork: John Wiley &Sons, 1972.

Stevens, B. L., and F. L. Lewis, Aircraft Control and Simulation, 2nded. New York: John Wiley & Sons, 2003.

4-175

Page 272: Aerospace Toolbox User Guide Matlab

flat2lla

See Also lla2flat

4-176

Page 273: Aerospace Toolbox User Guide Matlab

flowfanno

Purpose Fanno line flow relations

Syntax [mach, T, P, rho, velocity, P0, fanno] = flowfanno(gamma,fanno_flow, mtype)

Description [mach, T, P, rho, velocity, P0, fanno] = flowfanno(gamma,fanno_flow, mtype) returns an array for each Fanno line flowrelation. This function calculates the arrays for a given set of specificheat ratios (gamma), and any one of the Fanno flow types. You selectthe Fanno flow type with mtype.

This function uses Fanno variables given by the following. F is theFanno parameter given by F = f*L/D. f is the friction coefficient. L isthe length of constant area duct required to achieve sonic flow. D isthe hydraulic diameter of the duct.

This function assumes that variables vary in one dimension only. It alsoassumes that the main mechanism for the change of flow variables isthe change of cross-sectional area of the flow stream tubes.

If the temperature experiences large fluctuations, the perfect gasassumption might be invalid. If the stagnation temperature is above1500 K, do not assume constant specific heats. In this case, the mediumceases to be a calorically perfect gas. Consider it a thermally perfect gas.See 2 for thermally perfect gas correction factors. If the temperature isso high that molecules dissociate and ionize (static temperature 5000 Kfor air), you cannot assume a perfect gas.

InputArguments

gamma

Array of N specific heat ratios. gamma must be either a scalar or an arrayof N real numbers greater than 1. gamma must be a real, finite scalargreater than 1 for the following input modes: subsonic total pressureratio, supersonic total pressure ratio, subsonic Fanno parameter, andsupersonic Fanno parameter.

fanno_flow

4-177

Page 274: Aerospace Toolbox User Guide Matlab

flowfanno

Array of real numerical values for one Fanno flow. This argument canbe one of the following:

• Array of Mach numbers. flow_fanno must be a scalar or an array ofN real numbers greater than or equal to 0. If flow_fanno and gammaare arrays, they must be the same size.

Use flow_fanno with the mtype value 'mach'. Because 'mach' is thedefault of mtype, mtype is optional when this array is the input mode.

• Array of temperature ratios. The temperature ratio is the local statictemperature over the reference static temperature for sonic flow.This array must be a scalar or array of N real numbers:

- Greater than or equal to 0 (as the Mach number approachesinfinity)

- Less than or equal to (gamma+1)/2 (at Mach number equal 0)

Use flow_fanno with mtype value 'temp'.

• Array of pressure ratios. The pressure ratio is the local staticpressure over the reference static pressure for sonic flow. flow_fannomust be a scalar or array of real numbers greater than or equal to 0.If flow_fanno and gamma are arrays, they must be the same size.

Use flow_fanno with mtype value 'pres'.

• Array of density ratios. The density ratio is the local density over thereference density for sonic flow. flow_fannomust be a scalar or arrayof real numbers. These numbers must be greater than or equal to:

sqrt((gamma-1)/(gamma+1)) (as the Mach number approaches infinity).

If flow_fanno and gamma are arrays, they must be the same size.

Use flow_fanno with mtype value 'dens'.

• Array of velocity ratios. The velocity ratio is the local velocity overthe reference velocity for sonic flow. flow_fanno must be a scalaror an array of N of real numbers:

- Greater than or equal to 0

4-178

Page 275: Aerospace Toolbox User Guide Matlab

flowfanno

- Less than or equal to sqrt((gamma+1)/(gamma-1)) (as the Machnumber approaches infinity)

If flow_fanno and gamma are both arrays, they must be the same size.

Use flow_fanno with mtype value 'velo'.

• Scalar value of total pressure ratio. The total pressure ratio is thelocal total pressure over the reference total pressure for sonic flow.flow_fanno must be greater than or equal to 1.

Use flow_fanno with mtype values 'totalp' and 'totalpsup'.

• Scalar value for Fanno parameter. The Fanno parameter isflow_fanno= f*L/D. f is the friction coefficient. L is the length ofconstant area duct required to achieve sonic flow. D is the hydraulicdiameter of the duct. In subsonic mode, flow_fanno must be greaterthan or equal to 0. In supersonic mode, flow_fanno must be:

- Greater than or equal to 0 (at Mach number equal 1)

- Less than or equal to(gamma+1)/(2*gamma)*log((gamma+1)/(gamma-1))-1/gamma (as Machnumber approaches infinity)

Use flow_fanno with mtype values 'fannosub' and 'fannosup'.

mtype

A string that defines the input mode for the type of Fanno flow infanno_flow.

Type Description

'mach' Default Mach number

'temp' Temperature ratio

'pres' Pressure ratio

'dens' Density ratio

'velo' Velocity ratio

4-179

Page 276: Aerospace Toolbox User Guide Matlab

flowfanno

Type Description

'totalpsub' Subsonic total pressure ratio

'totalpsup' Supersonic total pressure ratio

'fannosub' Subsonic Fanno parameter

'fannosup' Supersonic Fanno parameter

OutputArguments

All outputs are the same size as the array inputs. If there are no arrayinputs, all outputs are scalars.

mach

Array of Mach numbers.

T

Array of temperature ratios. The temperature ratio is the local statictemperature over the reference static temperature for sonic flow.

P

Array of pressure ratios. The pressure ratio is the local static pressureover the reference static pressure for sonic flow.

rho

Array of density ratio. The density ratio is the local density over thereference density for sonic flow.

velocity

Array of velocity ratios. The velocity ratio is the local velocity over thereference velocity for sonic flow.

P0

Array of stagnation (total) pressure ratio. The total pressure ratio is thelocal total pressure over the reference total pressure for sonic flow.

4-180

Page 277: Aerospace Toolbox User Guide Matlab

flowfanno

fanno

Array of Fanno parameters. The Fanno parameter is F = f*L/D. f is thefriction coefficient. L is the length of constant area duct required toachieve sonic flow. D is the hydraulic diameter of the duct.

Examples Calculate the Fanno line flow relations for air (gamma = 1.4) for subsonicFanno parameter 1.2. The following returns scalar values for mach, T,P, rho, velocity, P0, and fanno.

[mach, T, P, rho, velocity, P0, fanno] = flowfanno(1.4, 1.2, 'fannosub')

Calculate the Fanno line flow relations for gases with specific heatratios given in the following 1 x 4 row array for the Mach number 0.5.The following yields a 1 x 4 row array for mach, T, P, rho, velocity,P0, and fanno.

gamma = [1.3, 1.33, 1.4, 1.67];

[mach, T, P, rho, velocity, P0, fanno] = flowfanno(gamma, 0.5)

Calculate the Fanno line flow relations for a specific heat ratio of 1.4and range of temperature ratios from 0.40 to 0.70 in increments of0.10. The following returns a 4 x 1 column array for mach, T, P, rho,velocity, P0, and fanno.

[mach, T, P, rho, velocity, P0, fanno] = flowfanno(1.4, [1.1 1.2], 'temp')

Calculate the Fanno line flow relations for gases with specific heat ratioand velocity ratio combinations as shown. The following returns a 1 x 2array for mach, T, P, rho, velocity, P0, and fanno each. The elementsof each array correspond to the inputs element-wise.

gamma = [1.3, 1.4];V = [0.53, 0.49];

4-181

Page 278: Aerospace Toolbox User Guide Matlab

flowfanno

[MACH, T, P, RHO, V, P0, F] = flowfanno(gamma, V, 'velo')

References 1. James, J. E. A., Gas Dynamics, Second Edition, Allyn and Bacon,Inc, Boston, 1984.

2. NACA Technical Report 1135, 1953, National Advisory Committee onAeronautics, Ames Research Staff, Moffett Field, Calif. Pages 667–671.

See Also flowisentropic | flownormalshock | flowprandtlmeyer |flowrayleigh

4-182

Page 279: Aerospace Toolbox User Guide Matlab

flowisentropic

Purpose Isentropic flow ratios

Syntax [mach, T, P, rho, area] = flowisentropic(gamma,flow, mtype)

Description [mach, T, P, rho, area] = flowisentropic(gamma, flow,mtype) returns an array. This array contains an isentropic flow Machnumber (mach), temperature ratio (T), pressure ratio (P), density ratio(rho), and area ratio (area). This function calculates these arrays givena set of specific heat ratios (gamma), and any one of the isentropic flowtypes. You select the isentropic flow with mtype.

This function assumes that variables vary in one dimension only. It alsoassumes that the main mechanism for the change of flow variables isthe change of cross-sectional area of the flow stream tubes.

This function assumes that the environment is a perfect gas. Inthe following instances, the function cannot assume a perfect gasenvironment. If there is a large change in either temperature orpressure without a proportionally large change in the other, thefunction cannot assume a perfect gas environment. . If the stagnationtemperature is above 1500 K, do not assume that constant specificheats. In this case, the medium ceases to be a calorically perfectgas. Consider it a thermally perfect gas. See 2 for thermally perfectgas correction factors. If the temperature is so high that moleculesdissociate and ionize (static temperature 5000 K for air), you cannotassume a calorically or thermally perfect gas.

InputArguments

gamma

Array of N specific heat ratios. gamma must be a scalar or array of Nreal numbers greater than 1. For subsonic area ratio input mode andsupersonic area ratio input mode, gamma must be a real, finite scalargreater than 1.

flow

4-183

Page 280: Aerospace Toolbox User Guide Matlab

flowisentropic

Array of real numerical values for one of the isentropic flow relations.This argument can be one of the following:

• Array of Mach numbers. flow must be a scalar or an array of N realnumbers greater than or equal to 0. If flow and gamma are arrays,they must be the same size.

Use flow with the mtype value 'mach'. Because 'mach' is the defaultof mtype, mtype is optional when this array is the input mode.

• Array of temperature ratios. The temperature ratio is the local statictemperature over the stagnation temperature. flow must be a scalaror an array of real numbers:

- Greater than or equal to 0 (as the Mach number approachesinfinity)

- Less than or equal to 1 (at Mach number equal 0)

If flow and gamma are both arrays, they must be the same size.

Use flow with mtype value 'temp'.

• Array of pressure ratios. The pressure ratio is the local staticpressure over the stagnation pressure. flow must be a scalar or anarray of real numbers:

- Greater than or equal to 0 (as the Mach number approachesinfinity)

- Less than or equal to 1 (at Mach number equal 0)

If flow and gamma are both arrays, they must be the same size.

Use flow with mtype value 'pres'.

• Array of density ratios. The density ratio is the local density overthe stagnation density. flow must be a scalar or an array of realnumbers:

- Greater than or equal to 0 (as the Mach number approachesinfinity)

- Less than or equal to 1 (at Mach number equal 0)

4-184

Page 281: Aerospace Toolbox User Guide Matlab

flowisentropic

If flow and gamma are both arrays, they must be the same size.

Use flow with mtype value 'dens'.

• Scalar value of area ratio. flow must be a real value greater than orequal to 1.

Use flow with mtype value 'sup'.

mtype

A string that defines the input mode for the isentropic flow in flow.

Type Description

'mach' Default. Mach number.

'temp' Temperature ratio.

'pres' Pressure ratio.

'dens' Density ratio.

'sub' Subsonic area ratio. The subsonic area ratio is the localsubsonic stream tube area over the reference stream tubearea for sonic conditions.

'sup' Supersonic area ratio. The supersonic area ratio is thelocal supersonic stream tube area over the referencestream tube area for sonic conditions.

OutputArguments

All outputs are the same size as the array inputs. If there are no arrayinputs, all outputs are scalars.

mach

Array of Mach numbers.

T

Array of temperature ratios. The temperature ratio is the local statictemperature over the stagnation temperature.

4-185

Page 282: Aerospace Toolbox User Guide Matlab

flowisentropic

P

Array of pressure ratios. The pressure ratio is the local static pressureover the stagnation pressure.

rho

Array of density ratios. The density ratio is the local density over thestagnation density.

area

Array of area ratios. The area ratio is the local stream tube area overthe reference stream tube area for sonic conditions.

Examples Calculate the isentropic flow relations for air (gamma = 1.4) for a designsubsonic area ratio of 1.255. This example returns scalar values formach, T, P, rho, and area.

[mach, T, P, rho, area] = flowisentropic(1.4, 1.255, 'sub')

Calculate the isentropic flow relations for gases with specific heat ratiosgiven in the following 1 x 4 row array for the Mach number 0.5. Thisexample following returns a 1 x 4 row array for mach, T, P, rho, and area.

gamma = [1.3, 1.33, 1.4, 1.67];[mach, T, P, rho, area] = flowisentropic(gamma, 0.5)

Calculate the isentropic flow relations for a specific heat ratio of1.4. Also calculate range of temperature ratios from 0.40 to 0.70 inincrements of 0.10. This example returns a 4 x 1 column array for mach,T, P, rho, and area.

[mach, T, P, rho, area] = flowisentropic(1.4, (0.40:0.10:0.70)', 'temp')

4-186

Page 283: Aerospace Toolbox User Guide Matlab

flowisentropic

Calculate the isentropic flow relations for gases with provided specificheat ratio and density ratio combinations. This example returns a 1 x 2array for mach, T, P, rho, and area each. The elements of each vectorcorrespond to the inputs element-wise.

gamma = [1.3, 1.4];

rho = [0.13, 0.9];

[mach, T, P, rho, area] = flowisentropic(gamma, rho , 'dens')

References 1. James, J. E. A., Gas Dynamics, Second Edition, Allyn and Bacon,Inc, Boston, 1984.

2. NACA Technical Report 1135, 1953, National Advisory Committee onAeronautics, Ames Research Staff, Moffett Field, Calif. Pages 667–671.

See Also flownormalshock | flowprandtlmeyer | flowfanno | flowrayleigh

4-187

Page 284: Aerospace Toolbox User Guide Matlab

flownormalshock

Purpose Normal shock relations

Syntax [mach, T, P, rho, downstream_mach, P0,P1] = flownormalshock(gamma, normal_shock_relations,mtype)

Description [mach, T, P, rho, downstream_mach, P0, P1] =flownormalshock(gamma, normal_shock_relations,mtype) produces an array for each normal shock relation(normal_shock_relations). This function calculates these arrays fora given set of specific heat ratios (gamma) and any one of the normalshock relations (normal_shock_relations). mtype selects the normalshock relations that normal_shock_relations represents. All ratiosare downstream value over upstream value. Consider upstream to bebefore or ahead of the shock; downstream is after or behind the shock.

This function assumes that the medium is a calorically perfect gas. Itassumes that the flow is frictionless and adiabatic. It assumes thatthe flow variables vary in one dimension only. It assumes that themain mechanism for the change of flow variables is the change ofcross-sectional area of the flow stream tubes.

If the temperature experiences large fluctuations, the perfect gasassumption might be invalid. If the stagnation temperature is above1500 K, do not assume constant specific heats. In this case, the mediumceases to be a calorically perfect gas. You must then consider it athermally perfect gas. See 2 for thermally perfect gas correction factors.If the temperature is so high that molecules dissociate and ionize (statictemperature 5000 K for air), you cannot assume a perfect gas.

InputArguments

gamma

Array of N specific heat ratios. gamma must be either a scalar or an arrayof N real numbers greater than 1. For temperature ratio, total pressureratio, and Rayleigh-Pitot ratio input modes, gamma must be a real, finitescalar greater than 1.

normal_shock_relations

4-188

Page 285: Aerospace Toolbox User Guide Matlab

flownormalshock

Array of real numerical values for one of the normal shock relations.This argument can be one of the following:

• Array of upstream Mach numbers. This array must be a scalaror an array of N real numbers greater than or equal to 1. Ifnormal_shock_relations and gamma are arrays, they must be thesame size.

Use normal_shock_relations with mtype value 'mach'. Because'mach' is the default of mtype, mtype is optional when this arrayis the input mode.

• Scalar value of temperature ratio. The temperature ratio is the statictemperature downstream of the shock over the static temperatureupstream of the shock. normal_shock_relations must be a realscalar greater than or equal to 1.

Use normal_shock_relations with mtype value 'temp'.

• Array of pressure ratios. The pressure ratio is the static pressuredownstream of the shock over the static pressure upstream of theshock. normal_shock_relations must be a scalar or array of realnumbers greater than or equal to 1. If normal_shock_relations andgamma are arrays, they must be the same size.

Use normal_shock_relations with mtype value 'pres'.

• Array of density ratios. The density ratio is the density of the fluiddownstream of the shock over the density upstream of the shock.normal_shock_relations must a scalar or array of real numbers be:

- Greater than or equal to 1 (at Mach number equal 1)

- Less than or equal to (gamma+1)/(gamma-1) (as the Mach numberapproaches infinity)

If normal_shock_relations and gamma are arrays, they must be thesame size. Use normal_shock_relations with mtype value 'dens'.

• Array of downstream Mach numbers. normal_shock_relationsmust be scalar or array of real numbers:

4-189

Page 286: Aerospace Toolbox User Guide Matlab

flownormalshock

- Greater than or equal to 0 (as the Mach number approachesinfinity)

- Less than or equal to sqrt((gamma-1)/(2*gamma)) (at Mach numberequal 1)

If normal_shock_relations and gamma are arrays, they must be thesame size. Use normal_shock_relations with mtype value 'down'.

• Scalar value of total pressure ratio. The total pressure ratio is thetotal pressure downstream of the shock over the total pressureupstream of the shock. normal_shock_relations must be:

- Greater than or equal to 0 (as the Mach number approachesinfinity)

- Less than or equal to 1 (at Mach number equal 1)

If normal_shock_relations and gamma are both arrays, they mustbe the same size. Use normal_shock_relations with mtype value'totalp'.

• Scalar value of Rayleigh-Pitot ratio. The Rayleigh-Pitot ratio isthe static pressure upstream of the shock over the total pressuredownstream of the shock. normal_shock_relations must be:

- Real scalar greater than or equal to 0 (as the Mach numberapproaches infinity)

- Less than or equal to ((gamma+1)/2)^(-gamma/(gamma-1)) (at Machnumber equal 1)

If normal_shock_relations and gamma are both arrays, they mustbe the same size. Use normal_shock_relations with mtype value'pito'.

mtype

A string that defines the input mode for the normal shock relations innormal_shock_relations.

4-190

Page 287: Aerospace Toolbox User Guide Matlab

flownormalshock

Type Description

'mach' Default. Mach number.

'temp' Temperature ratio.

'pres' Pressure ratio.

'dens' Density ratio.

'velo' Velocity ratio.

'totalp' Total pressure ratio.

'pito' Rayleigh-Pitot ratio.

OutputArguments

mach

Array of upstream Mach numbers.

P

Array of pressure ratios. The pressure ratio is the static pressuredownstream of the shock over the static pressure upstream of the shock.

T

Array of temperature ratios. The temperature ratio is the statictemperature downstream of the shock over the static temperatureupstream of the shock.

rho

Array of density ratios. The density ratio is the density of the fluiddownstream of the shock over the density upstream of the shock.

downstream_mach

Array of downstream Mach numbers.

P0

4-191

Page 288: Aerospace Toolbox User Guide Matlab

flownormalshock

Array of total pressure ratios. The total pressure ratio is the totalpressure downstream of the shock over the total pressure upstreamof the shock.

P1

Array of Rayleigh-Pitot ratios. The Rayleigh-Pitot ratio is the staticpressure upstream of the shock over the total pressure downstreamof the shock.

Examples Calculate the normal shock relations for air (gamma = 1.4) for totalpressure ratio of 0.61. The following returns scalar values for mach, T, P,rho, downstream_mach, P0, and P1.

[mach, T, P, rho, downstream_mach, P0, P1] = flownormalshock(1.4, 0.61, 'totalp')

Calculate the normal shock relations for gases with specific heat ratiosgiven in the following 1 x 4 row array for upstream Mach number 1.5.The follow yields a 1 x 4 array for mach, T, P, rho, downstream_mach,P0, and P1.

gamma = [1.3, 1.33, 1.4, 1.67];

[mach, T, P, rho, downstream_mach, P0, P1] = flownormalshock(gamma, 1.5)

Calculate the normal shock relations for a specific heat ratio of1.4 and range of density ratios from 2.40 to 2.70 in increments of0.10. The following returns a 4 x 1 column array for mach, T, P, rho,downstream_mach, P0, and P1.

[mach, T, P, rho, downstream_mach, P0, P1] = flownormalshock(1.4,...

(2.4:.1:2.7)', 'dens')

Calculate the normal shock relations for gases with specific heat ratioand downstream Mach number combinations as shown. The following

4-192

Page 289: Aerospace Toolbox User Guide Matlab

flownormalshock

example returns a 1 x 2 array for mach, T, P, rho, downstream_mach,P0, and P1 each, where the elements of each vector corresponds to theinputs element-wise.

gamma = [1.3, 1.4];

downstream_mach = [.34, .49];

[mach, T, P, rho, downstream_mach, P0, P1] = flownormalshock(gamma,...

downstream_mach, 'down')

References 1. James, J. E. A., Gas Dynamics, Second Edition, Allyn and Bacon,Inc, Boston, 1984.

2. NACA Technical Report 1135, 1953, National Advisory Committee onAeronautics, Ames Research Staff, Moffett Field, Calif. Pages 667–671.

See Also flowisentropic | flowprandtlmeyer | flowfanno | flowrayleigh

4-193

Page 290: Aerospace Toolbox User Guide Matlab

flowprandtlmeyer

Purpose Calculate Prandtl-Meyer functions for expansion waves

Syntax [mach, nu, mu] = flowprandtlmeyer(gamma,prandtlmeyer_array,

mtype)

Description [mach, nu, mu] = flowprandtlmeyer(gamma,prandtlmeyer_array, mtype) calculates the following: array of Machnumbers, mach, Prandtl-Meyer angles (nu in degrees) and Mach angles(mu in degrees). flowprandtlmeyer calculates these arrays for a givenset of specific heat ratios, gamma, and any one of the Prandtl-Meyertypes. You select the Prandtl-Meyer type with mtype.

The function assumes that the flow is two-dimensional. The functionalso assumes a smooth and gradual change in flow properties throughthe expansion fan.

Note, this function assumes that the environment is a perfect gas. Inthe following instances, it cannot assume a perfect gas environment.If there is a large change in either temperature or pressure without aproportionally large change in the other, it cannot assume a perfectgas environment. If the stagnation temperature is above 1500 K, thefunction cannot assume constant specific heats. In this case, you mustconsider it a thermally perfect gas. See 2 for thermally perfect gascorrection factors. The local static temperature might be so high thatmolecules dissociate and ionize (static temperature 5000 K for air). Inthis case, you cannot assume a calorically or thermally perfect gas.

InputArguments

gamma

Array of N specific heat ratios. gamma must be a scalar or array of Nreal numbers greater than 1. For subsonic area ratio input mode andsupersonic area ratio input mode, gamma must be a real, finite scalargreater than 1.

prandtlmeyer_array

4-194

Page 291: Aerospace Toolbox User Guide Matlab

flowprandtlmeyer

Array of real numerical values for one of the Prandtl-Meyer types. Thisargument can be one of the following:

• Array of Mach numbers. This array must be a scalar or an array of Nreal numbers greater than or equal to 0. If prandtlmeyer_array andgamma are arrays, they must be the same size.

Use prandtlmeyer_array with mtype value 'mach'. Note, because'mach' is the default of mtype, mtype is optional when this arrayis the input mode.

• Scalar value for Prandtl-Meyer angle in degrees. This value is theangle change required for a Mach 1 flow to achieve a given Machnumber after expansion. prandtlmeyer_array must be:

- Real scalar greater than or equal to 0 (at Mach number equal 1)

- Less than or equal to 90 * (sqrt((gamma+1)/(gamma-1)) - 1) (as theMach number approaches infinity).

Use prandtlmeyer_array with mtype value 'nu'.

• Array of Mach angles in degrees. These values are the anglesbetween the flow direction and the lines of pressure disturbancecaused by supersonic motion. The Mach angle is a function of Machnumber only. prandtlmeyer_array must be a scalar or array ofN real numbers that are:

- Greater than or equal to 0 (as the Mach number approachesinfinity).

- Less than or equal to 90 (at Mach number equal 1).

Use prandtlmeyer_array with mtype value 'mu'.

mtype

A string for selecting the isentropic flow variable represented byprandtlmeyer_array.

4-195

Page 292: Aerospace Toolbox User Guide Matlab

flowprandtlmeyer

Type Description

'mach' Default. Mach number..

'nu' Prandtl-Meyer angle

'mu' Mach angle.

OutputArguments

mach

Array of Mach numbers. In Prandtl-Meyer angle input mode, machoutputs are the same size as the array input or array inputs. If thereare no array inputs, mach is a scalar.

nu

Array of Prandtl-Meyer angles. The Prandtl-Meyer angle is the anglechange required for a Mach 1 flow to achieve a given Mach numberafter expansion.

mu

Array of Mach angles. The Mach angle is between the flow directionand the lines of pressure disturbance caused by supersonic motion.

Examples Calculate the Prandtl-Meyer relations for air (gamma = 1.4) forPrandtl-Meyer angle 61 degrees. The following returns a scalar formach, nu, and mu.

[mach, nu, mu] = flowprandtlmeyer(1.4, 61, 'nu')

Calculate the Prandtl-Meyer functions for gases with specific heatratios. The following yields a 1 x 4 array for nu, but only a scalar formach and mu.

gamma = [1.3, 1.33, 1.4, 1.67];[mach, nu, mu] = flowprandtlmeyer(gamma, 1.5)

4-196

Page 293: Aerospace Toolbox User Guide Matlab

flowprandtlmeyer

Calculate the Prandtl-Meyer angles for a specific heat ratio of 1.4 andrange of Mach angles from 40 degrees to 70 degrees. This example usesincrements of 10 degrees. The following returns a 4 x 1 column arrayfor mach, nu, and mu.

[mach, nu, mu] = flowprandtlmeyer(1.4, (40:10:70)', 'mu')

Calculate the Prandtl-Meyer relations for gases with specific heat ratioand Mach number combinations as shown. The following returns a 1 x 2array for nu and mu each, where the elements of each vector correspondto the inputs element-wise.

gamma = [1.3, 1.4];prandtlmeyer_array = [1.13, 9];[mach, nu, mu] = flowprandtlmeyer(gamma,prandtlmeyer_array)

References 1. James, J. E. A., Gas Dynamics, Second Edition, Allyn and Bacon,Inc, Boston, 1984.

2. NACA Technical Report 1135, 1953, National Advisory Committee onAeronautics, Ames Research Staff, Moffett Field, Calif. Pages 667–671.

See Also flowisentropic | flownormalshock | flowrayleigh | flowfanno

4-197

Page 294: Aerospace Toolbox User Guide Matlab

flowrayleigh

Purpose Rayleigh line flow relations

Syntax [mach, T, P, rho, velocity, T0, P0] = flowrayleigh(gamma,rayleigh_flow, mtype)

Description [mach, T, P, rho, velocity, T0, P0] = flowrayleigh(gamma,rayleigh_flow, mtype) returns an array for each Rayleigh line flowrelation. This function calculates these arrays for a given set of specificheat ratios (gamma), and any one of the Rayleigh line flow types. Youselect the Rayleigh flow type with mtype.

This function assumes that the medium is a calorically perfect gas ina constant area duct. It assumes that the flow is steady, frictionless,and one dimensional. It also assumes that the main mechanism for thechange of flow variables is heat transfer.

This function assumes that the environment is a perfect gas. In thefollowing instances, it cannot assume a perfect gas environment. Ifthere is a large change in either temperature or pressure without aproportionally large change in the other, it cannot assume a perfect gasenvironment. If the stagnation temperature is above 1500 K, do notassume constant specific heats. In this case, the medium ceases to bea calorically perfect gas; you must then consider it a thermally perfectgas. See 2 for thermally perfect gas correction factors. The local statictemperature might be so high that molecules dissociate and ionize(static temperature 5000 K for air). In this case, you cannot assume acalorically or thermally perfect gas.

InputArguments

gamma

Array of N specific heat ratios. gamma must be either a scalar or an arrayof N real numbers greater than 1. gamma must be a real, finite scalargreater than 1 for the following input modes: low speed temperatureratio, high speed temperature ratio, subsonic total temperature,supersonic total temperature, subsonic total pressure, and supersonictotal pressure.

rayleigh_flow

4-198

Page 295: Aerospace Toolbox User Guide Matlab

flowrayleigh

Array of real numerical values for one Rayleigh line flow. Thisargument can be one of the following:

• Array of Mach numbers. This array must be a scalar or an array ofN real numbers greater than or equal to 0. If rayleigh_flow andgamma are arrays, they must be the same size.

Use rayleigh_flow with mtype value 'mach'. Because 'mach' is thedefault of mtype, mtype is optional when this array is the input mode.

• Scalar value of temperature ratio. The temperature ratio is the localstatic temperature over the reference static temperature for sonicflow. rayleigh_flow must be a real scalar:

- Greater than or equal to 0 (at the Mach number equal 0 for lowspeeds or as Mach number approaches infinity for high speeds)

- Less than or equal to 1/4*(gamma+1/gamma)+1/2 (at mach =1/sqrt(gamma))

Use rayleigh_flow with mtype values 'templo' and 'temphi'.

• Array of pressure ratios. The pressure ratio is the local static pressureover the reference static pressure for sonic flow. rayleigh_flowmust be a scalar or array of real numbers less than or equal togamma+1 (at the Mach number equal 0). If rayleigh_flow and gammaare arrays, they must be the same size.

Use rayleigh_flow with mtype value 'pres'.

• Array of density ratios. The density ratio is the local density over thereference density for sonic flow. rayleigh_flow must be a scalaror array of real numbers. These numbers must be greater than orequal to:

gamma/(gamma+1) (as Mach number approaches infinity)

If rayleigh_flow and gamma are arrays, they must be the same size.

Use rayleigh_flow with mtype value 'dens'.

4-199

Page 296: Aerospace Toolbox User Guide Matlab

flowrayleigh

• Array of velocity ratios. The velocity ratio is the local velocity overthe reference velocity for sonic flow. rayleigh_flow must be a scalaror an array of N real numbers:

- Greater than or equal to 0

- Less than or equal to (gamma+1)/gamma (as Mach numberapproaches infinity)

If rayleigh_flow and gamma are both arrays, they must be the samesize.

Use rayleigh_flow with mtype value 'velo'.

• Scalar value of total temperature ratio. The total temperature ratiois the local stagnation temperature over the reference stagnationtemperature for sonic flow. In subsonic mode, rayleigh_flow mustbe a real scalar:

- Greater than or equal to 0 (at the Mach number equal 0)

- Less than or equal to 1 (at the Mach number equal 1)

In supersonic mode, rayleigh_flow must be a real scalar:

- Greater than or equal to(gamma+1)^2*(gamma-1)/2/(gamma^2*(1+(gamma-1)/2))) (as Machnumber approaches infinity)

- Less than or equal to 1 (at the Mach number equal 1)

Use rayleigh_flow with the mtype values 'totaltsub' and'totaltsup'.

• Scalar value of total pressure ratio. The total pressure ratio is thelocal stagnation pressure over the reference stagnation pressure forsonic flow. In subsonic mode, rayleigh_flow must be a real scalar.

- Greater than or equal to 1 (at the Mach number equal 1)

- Less than or equal to (1+gamma)*(1+(gamma-1)/2)^(-gamma/(gamma-1))(at Mach number equal 0)

4-200

Page 297: Aerospace Toolbox User Guide Matlab

flowrayleigh

In supersonic mode, rayleigh_flow must be a real scalar greaterthan or equal to 1.

Use rayleigh_flow with mtype values 'totalpsub' and'totalpsup'.

mtype

A string that defines the input mode for the Rayleigh flow inrayleigh_flow.

Type Description

'mach' Default. Mach number.

'templo' Low speed static temperature ratio. The low speedtemperature ratio is the local static temperatureover the reference sonic temperature. This ratio forwhen the Mach number of the upstream flow is lessthan the critical Mach number of 1/sqrt(gamma).

'temphi' High speed static temperature ratio. The high speedtemperature ratio is the local static temperatureover the reference sonic temperature. This ratiois for when the Mach number of the upstreamflow is greater than the critical Mach number of1/sqrt(gamma).

'pres' Pressure ratio.

'dens' Density ratio.

'velo' Velocity ratio.

'totaltsub' Subsonic total temperature ratio.

'totaltsup' Supersonic total temperature ratio.

'totalpsub' Subsonic total pressure ratio.

'totalpsup' Supersonic total pressure ratio.

4-201

Page 298: Aerospace Toolbox User Guide Matlab

flowrayleigh

OutputArguments

All output ratios are static conditions over the sonic conditions. Alloutputs are the same size as the array inputs. If there are no arrayinputs, all outputs are scalars.

mach

Array of Mach numbers.

T

Array of temperature ratios. The temperature ratio is the local statictemperature over the reference static temperature for sonic flow.

P

Array of pressure ratios. The pressure ratio is the local static pressureover the reference static pressure for sonic flow.

rho

Array of density ratio. The density ratio is the local density over thereference density for sonic flow.

velocity

Array of velocity ratios. The velocity ratio is the local velocity over thereference velocity for sonic flow.

T0

Array of total temperature ratios. The temperature ratio is the localstatic temperature over the reference static temperature for sonic flow.

P0

Array of total pressure ratios. The total pressure ratio is the localstagnation pressure over the reference stagnation pressure for sonicflow.

4-202

Page 299: Aerospace Toolbox User Guide Matlab

flowrayleigh

Examples Calculate Rayleigh Line Flow Relations Given Air

Calculate the Rayleigh line flow relations for air (gamma = 1.4) forsupersonic total pressure ratio 1.2.

[mach,T,P,rho,velocity,T0,P0] =flowrayleigh(1.4,1.2,'totalpsup')

mach =

1.6397

T =

0.6823

P =

0.5038

rho =

0.7383

velocity =

1.3545

T0 =

0.8744

P0 =

1.2000

This example returns scalar values for mach, T, P, rho, velocity, T0,and P0.

4-203

Page 300: Aerospace Toolbox User Guide Matlab

flowrayleigh

Calculate Rayleigh Line Flow Relations for Specific HeatRatios in Array

Calculate the Rayleigh line flow relations for gases with specific heatratios given in the following 1 x 4 row array for the Mach number 0.5.

gamma = [1.3,1.33,1.4,1.67];[mach,T,P,rho,velocity,T0,P0] = flowrayleigh(gamma,0.5)

mach =

0.5000 0.5000 0.5000 0.5000

T =

0.7533 0.7644 0.7901 0.8870

P =

1.7358 1.7486 1.7778 1.8836

rho =

2.3043 2.2876 2.2500 2.1236

velocity =

0.4340 0.4371 0.4444 0.4709

T0 =

0.6796 0.6832 0.6914 0.7201

P0 =

1.1111 1.1121 1.1141 1.1202

4-204

Page 301: Aerospace Toolbox User Guide Matlab

flowrayleigh

This example returns a 1 x 4 row array for mach, T, P, rho, velocity,T0, and P0.

Calculate Rayleigh Line Flow Relations for Specific HeatRatios and High Speed Temperature

Calculate the Rayleigh line flow relations for a specific heat ratio of 1.4and high speed temperature ratio 0.70.

[mach,T,P,rho,velocity,T0,P0] =flowrayleigh(1.4,0.70,'temphi')

mach =

1.6035

T =

0.7000

P =

0.5218

rho =

0.7454

velocity =

1.3416

T0 =

0.8833

P0 =

4-205

Page 302: Aerospace Toolbox User Guide Matlab

flowrayleigh

1.1777

This example returns scalar values for mach, T, P, rho, velocity, T0,and P0.

Calculate Rayleigh Line Flow Relations for Gases withSpecific Heat Ratio and Static Pressure

Calculate the Rayleigh line flow relations for gases with specific heatratio and static pressure ratio combinations as shown.

gamma = [1.3,1.4];P = [0.13,1.7778];[mach,T,P,rho,velocity,T0,P0] =flowrayleigh(gamma,P,'pres')

mach =

3.5833 0.5000

T =

0.2170 0.7901

P =

0.1300 1.7778

rho =

0.5991 2.2501

velocity =

1.6692 0.4444

T0 =

4-206

Page 303: Aerospace Toolbox User Guide Matlab

flowrayleigh

0.5521 0.6913

P0 =

7.4381 1.1141

This example returns a 1 x 2 array for mach, T, P, rho, velocity, T0,and P0 each. The elements of each array correspond to the inputselement-wise.

References 1. James, J. E. A., Gas Dynamics, Second Edition, Allyn and Bacon,Inc, Boston, 1984.

2. NACA Technical Report 1135, 1953, National Advisory Committee onAeronautics, Ames Research Staff, Moffett Field, Calif. Pages 667–671.

See Also flowisentropic | flownormalshock | flowprandtlmeyer | flowfanno

4-207

Page 304: Aerospace Toolbox User Guide Matlab

generatePatches (Aero.Body)

Purpose Generate patches for body with loaded face, vertex, and color data

Syntax generatePatches(h, ax)h.generatePatches(ax)

Description generatePatches(h, ax) and h.generatePatches(ax) generatepatches for the animation body object h using the loaded face, vertex,and color data in ax.

Examples Generate patches for b using the axes, ax.

b=Aero.Body;b.load('pa24-250_orange.ac','Ac3d');f = figure;ax = axes;b.generatePatches(ax);

See Also load

4-208

Page 305: Aerospace Toolbox User Guide Matlab

GenerateRunScript (Aero.FlightGearAnimation)

Purpose Generate run script for FlightGear flight simulator

Syntax GenerateRunScript(h)h.GenerateRunScript

Description GenerateRunScript(h) and h.GenerateRunScript generate a runscript for FlightGear flight simulator using the following FlightGearanimation object properties:

OutputFileName Specify the name of the outputfile. The file name is the nameof the command you will use tostart FlightGear with these initialparameters. The default value is'runfg.bat'.

FlightGearBaseDirectory Specify the name of yourFlightGear installationfolder. The default value is'D:\Applications\FlightGear'.

GeometryModelName Specify the name of thefolder containing the desiredmodel geometry in theFlightGear\data\Aircraftfolder. The default value is'HL20'.

DestinationIpAddress Specify your destination IPaddress. The default value is'127.0.0.1'.

DestinationPort Specify your network flightdynamics model (fdm) port. Thisdestination port should be anunused port that you can usewhen you launch FlightGear. Thedefault value is '5502'.

4-209

Page 306: Aerospace Toolbox User Guide Matlab

GenerateRunScript (Aero.FlightGearAnimation)

AirportId Specify the airport ID. The list ofsupported airports is available inthe FlightGear interface, underLocation. The default value is'KSFO'.

RunwayId Specify the runway ID. The defaultvalue is '10L'.

InitialAltitude Specify the initial altitude of theaircraft, in feet. The default valueis 7224 feet.

InitialHeading Specify the initial heading of theaircraft, in degrees. The defaultvalue is 113 degrees.

OffsetDistance Specify the offset distance of theaircraft from the airport, in miles.The default value is 4.72 miles.

OffsetAzimuth Specify the offset azimuth of theaircraft, in degrees. The defaultvalue is 0 degrees.

Examples Create a run script, runfg.bat, to start FlightGear flight simulatorusing the default object settings:

h = fganimationGenerateRunScript(h)

Create a run script, myscript.bat, to start FlightGear flight simulatorusing the default object settings:

h = fganimationh.OutputFileName = 'myscript.bat'GenerateRunScript(h)

See Also initialize | play | update

4-210

Page 307: Aerospace Toolbox User Guide Matlab

geoc2geod

Purpose Convert geocentric latitude to geodetic latitude

Syntax geodeticLatitude = geoc2geod(geocentricLatitude, radii)geodeticLatitude = geoc2geod(geocentricLatitude, radii,

model)geodeticLatitude = geoc2geod(geocentricLatitude, radii,

flattening, equatorialRadius)

Description geodeticLatitude = geoc2geod(geocentricLatitude, radii)converts an array of m-by-1 geocentric latitudes and an array of radiifrom the center of the planet into an array of m-by-1 geodetic latitudes.

geodeticLatitude = geoc2geod(geocentricLatitude, radii,model) converts for a specific ellipsoid planet.

geodeticLatitude = geoc2geod(geocentricLatitude, radii,flattening, equatorialRadius) converts for a custom ellipsoidplanet defined by flattening and the equatorial radius.

The function uses geometric relationships to calculate the geodeticlatitude in this noniterative method.

This function has the limitation that this implementation generates ageodetic latitude that lies between ±90 degrees.

InputArguments

geocentricLatitude

Array of m-by-1 geocentric latitudes, in degrees.

radii

Array of radii from the center of the planet, in meters.

model

Specific ellipsoid planet specified as a string. This function supportsonly 'WGS84'.

flattening

4-211

Page 308: Aerospace Toolbox User Guide Matlab

geoc2geod

Custom ellipsoid planet defined by flattening.

equatorialRadius

Equatorial radius, in meters.

OutputArguments

geodeticLatitude

Array of m-by-1 geodetic latitudes, in degrees.

Examples Determine geodetic latitude given a geocentric latitude and radius:

gd = geoc2geod(45, 6379136)

gd =

45.1921

Determine geodetic latitude at multiple geocentric latitudes, given aradius, and specifying WGS84 ellipsoid model:

gd = geoc2geod([0 45 90], 6379136, 'WGS84')

gd =

0 45.1921 90.0000

Determine geodetic latitude at multiple geocentric latitudes, given aradius, and specifying custom ellipsoid model:

f = 1/196.877360;Re = 3397000;gd = geoc2geod([0 45 90], 6379136, f, Re)

4-212

Page 309: Aerospace Toolbox User Guide Matlab

geoc2geod

gd =

0 45.1550 90.0000

References Jackson, E.B., Manual for a Workstation-based Generic FlightSimulation Program (LaRCsim) Version 1.4, NASA TM 110164, April1995

Hedgley, D. R., Jr., An Exact Transformation from Geocentric to GeodeticCoordinates for Nonzero Altitudes, NASA TR R-458, March, 1976

Clynch, J. R., Radius of the Earth — Radii Usedin Geodesy, Naval Postgraduate School, 2002,http://www.oc.nps.navy.mil/oc2902w/geodesy/radiigeo.pdf

Stevens, B. L., and F. L. Lewis, Aircraft Control and Simulation, JohnWiley & Sons, New York, NY, 1992

Edwards, C. H., and D. E. Penny, Calculus and Analytical Geometry,2nd Edition, Prentice-Hall, Englewood Cliffs, NJ, 1986

See Also geod2geoc | ecef2lla | lla2ecef

4-213

Page 310: Aerospace Toolbox User Guide Matlab

geocradius

Purpose Estimate radius of ellipsoid planet at geocentric latitude

Syntax r = geocradius(lambda)r = geocradius(lambda, model)r = geocradius(lambda, f, Re)

Description r = geocradius(lambda) estimates the radius, r, of an ellipsoid planetat a particular geocentric latitude, lambda. lambda is in degrees. r is inmeters. The default ellipsoid planet is WGS84.

r = geocradius(lambda, model) is an alternate method forestimating the radius for a specific ellipsoid planet. Currently only'WGS84' is supported for model.

r = geocradius(lambda, f, Re) is another alternate method forestimating the radius for a custom ellipsoid planet defined by flattening,f, and the equatorial radius, Re, in meters.

Examples Determine radius at 45 degrees latitude:

r = geocradius(45)

r =

6.3674e+006

Determine radius at multiple latitudes:

r = geocradius([0 45 90])

r =

1.0e+006 *

6.3781 6.3674 6.3568

4-214

Page 311: Aerospace Toolbox User Guide Matlab

geocradius

Determine radius at multiple latitudes, specifying WGS84 ellipsoidmodel:

r = geocradius([0 45 90], 'WGS84')

r =

1.0e+006 *

6.3781 6.3674 6.3568

Determine radius at multiple latitudes, specifying custom ellipsoidmodel:

f = 1/196.877360;Re = 3397000;r = geocradius([0 45 90], f, Re)

r =

1.0e+006 *

3.3970 3.3883 3.3797

References Stevens, B. L., and F. L. Lewis, Aircraft Control and Simulation, JohnWiley & Sons, New York, NY, 1992

Zipfel, P. H., and D. E. Penny, Modeling and Simulation of AerospaceVehicle Dynamics, AIAA Education Series, Reston, VA, 2000

See Also geoc2geod | geod2geoc

4-215

Page 312: Aerospace Toolbox User Guide Matlab

geod2geoc

Purpose Convert geodetic latitude to geocentric latitude

Syntax gc = geod2geoc(gd, h)gc = geod2geoc(gd, h, model)gc = geod2geoc(gd, h, f, Re)

Description gc = geod2geoc(gd, h) converts an array of m geodetic latitudes, gd,and an array of mean sea level altitudes, h, into an array of m geocentriclatitudes, gc. Both gc and gd are in degrees. h is in meters.

gc = geod2geoc(gd, h, model) is an alternate method for convertingfrom geodetic to geocentric latitude for a specific ellipsoid planet.Currently only 'WGS84' is supported for model.

gc = geod2geoc(gd, h, f, Re) is another alternate method forconverting from geodetic to geocentric latitude for a custom ellipsoidplanet defined by flattening, f, and the equatorial radius, Re, in meters.

Examples Determine geocentric latitude given a geodetic latitude and altitude:

gc = geod2geoc(45, 1000)

gc =

44.8076

Determine geocentric latitude at multiple geodetic latitudes andaltitudes, specifying WGS84 ellipsoid model:

gc = geod2geoc([0 45 90], [1000 0 2000], 'WGS84')

gc =

044.807690.0000

4-216

Page 313: Aerospace Toolbox User Guide Matlab

geod2geoc

Determine geocentric latitude at multiple geodetic latitudes, given analtitude and specifying custom ellipsoid model:

f = 1/196.877360;Re = 3397000;gc = geod2geoc([0 45 90], 2000, f, Re)

gc =

044.708490.0000

AssumptionsandLimitations

This implementation generates a geocentric latitude that lies between±90 degrees.

References Stevens, B. L., and F. L. Lewis, Aircraft Control and Simulation, JohnWiley & Sons, New York, NY, 1992

See Also geoc2geod | ecef2lla | lla2ecef

4-217

Page 314: Aerospace Toolbox User Guide Matlab

geoidegm96

Purpose Calculate geoid height as determined from EGM96 Geopotential Model

Note geoidegm96 will be removed in a future version. Usegeoidheight instead.

Syntax N = geoidegm96(lat, long)N = geoidegm96(lat, long, action)

Description N = geoidegm96(lat, long) calculates the geoid height as determinedfrom the EGM96 Geopotential Model. It calculates geoid heights to 0.01meters. This function interpolates geoid heights from a 15-minute gridof point values in the tide-free system, using the EGM96 GeopotentialModel to the degree and order 360. The geoid undulations are relativeto the WGS84 ellipsoid.

N = geoidegm96(lat, long, action) calculates the geoid heightas determined from the EGM96 Geopotential Model. This functionperforms action if latitude or longitude are out of range.

Inputs required by geoidegm96:

lat An array of m geocentric latitudes,in degrees, where north latitude ispositive and south latitude is negative.lat must be of type single or double.If lat is not within the range -90 to90, inclusive, this function wraps thevalue to be within the range.

long An array of m geocentric longitudes,in degrees, where east longitudeis positive and west longitude isnegative. long must be of type singleor double. If long is not within therange 0 to 360 inclusive, this function

4-218

Page 315: Aerospace Toolbox User Guide Matlab

geoidegm96

wraps the value to be within therange.

action A string to determine actionfor out-of-range input. Specifyif out-of-range input invokes a'Warning', 'Error', or no action('None'). The default is 'Warning'.

Examples Calculate the geoid height at 42.4 degrees N latitude and 71.0 degreesE longitude.

N = geoidegm96( 42.4, 71.0)

Calculate the geoid height at two different locations, with out-of-rangeactions generating warnings.

N = geoidegm96( [39.3,33.4], [-77.2, 36.5])

Calculate the geoid height with latitude wrapping, with out-of-rangeactions displaying no warnings.

N = geoidegm96(100,150,'None')

Limitations This function has the limitations of the 1996 EarthGeopotential Model. For more information, seehttp://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/egm96.html.

The WGS84 EGM96 geoid undulations have an error range of +/-0.5 to+/-1.0 meters worldwide.

References NIMA TR8350.2: “Department of Defense World Geodetic System 1984,Its Definition and Relationship with Local Geodetic Systems.”

NASA/TP-1998-206861: “The Development of the Joint NASA GSFCand NIMA Geopotential Model EGM96”

National Geospatial-Intelligence Agency Website:http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/egm96.html

4-219

Page 316: Aerospace Toolbox User Guide Matlab

geoidegm96

See Also gravitywgs84

4-220

Page 317: Aerospace Toolbox User Guide Matlab

geoidheight

Purpose Calculate geoid height

Syntax N = geoidheight(latitude,longitude)N = geoidheight(latitude, longitude, modelname)N = geoidheight(latitude, longitude, action)N = geoidheight(latitude, longitude, modelname, action)N = geoidheight(latitude, longitude, 'Custom', datafile)N = geoidheight(latitude, longitude, 'Custom', datafile,

action)

Description N = geoidheight(latitude,longitude) calculates the geoid heightusing the EGM96 Geopotential Model. For this model, it calculatesthese geoid heights to an accuracy of 0.01 m. It interpolates an arrayof m geoid heights at m geocentric latitudes, latitude, and m geocentriclongitudes, longitude.

N = geoidheight(latitude, longitude, modelname) calculates thegeoid height using the model, modelname.

N = geoidheight(latitude, longitude, action) calculates thegeoid height using the EGM96 Geopotential Model. This functionperforms action if latitude or longitude are out of range.

N = geoidheight(latitude, longitude, modelname, action)calculates the geoid height using modelname.

N = geoidheight(latitude, longitude, 'Custom', datafile)calculates the geoid height using a custom model that datafile defines.

N = geoidheight(latitude, longitude, 'Custom', datafile,action) calculates the geoid height using the custom model. Thisfunction performs action if latitude or longitude are out of range.

Tips • This function interpolates geoid heights from a grid of point values inthe tide-free system.

• When using the EGM96 Model, this function has the limitations ofthe 1996 Earth Geopotential Model.

4-221

Page 318: Aerospace Toolbox User Guide Matlab

geoidheight

• When using the EGM2008 Model, this function has the limitations ofthe 2008 Earth Geopotential Model.

• The interpolation scheme wraps over the poles to allow for geoidheight calculations at and near pole locations.

• The geoid undulations for the EGM96 and EGM2008 models arerelative to the WGS84 ellipsoid.

• The WGS84 EGM96 geoid undulations have an error range of +/– 0.5to +/– 1.0 m worldwide.

InputArguments

latitude

An array of m geocentric latitudes, in degrees, where north latitude ispositive and south latitude is negative. latitude must be of type singleor double. If latitude is not within the range –90 to 90, inclusive, thisfunction wraps the value to be within the range.

longitude

An array of m geocentric longitudes, in degrees, where east longitudeis positive and west longitude is negative. longitude must be of typesingle or double. If longitude is not within the range 0 to 360 inclusive,this function wraps the value to be within the range.

model

String that specifies the geopotential model.

4-222

Page 319: Aerospace Toolbox User Guide Matlab

geoidheight

GeopotentialModel

Description

'EGM96' EGM96 Geopotential Model to degree and order 360.This model uses a 15-minute grid of point values inthe tide-free system. This function calculates geoidheights to an accuracy of 0.01 m for this model.

'EGM2008' EGM2008 Geopotential Model to degree and order2159. This model uses a 2.5-minute grid of pointvalues in the tide-free system. This functioncalculates geoid heights to an accuracy of 0.001 mfor this model.

'Custom' Custom geopotential model that you define indatafile. This function calculates geoid heights toan accuracy of 0.01 m for custom models.

Note To deploy a custom geopotential model,explicitly include the custom data and reader filesto the MATLAB Compiler™ (mcc) command atcompilation. For example:

mcc -m mycustomsgeoidheightfunction...-a customDataFile -a customReaderFile

For other geopotential models, use the MATLABCompiler as usual.

Default: EGM96

datafile

Optional file that contains definitions for a custom geopotential model.Provide this file only if you specify 'Custom' for the model argument.For an example of file content, see aerogmm2b.mat.

4-223

Page 320: Aerospace Toolbox User Guide Matlab

geoidheight

This file must contain the following variables.

Variable Description

'latbp' Array of geocentric latitude breakpoints.

'lonbp' Array of geocentric longitude breakpoints.

'grid' Table of geoid height values.

'windowSize' Even integer scalar greater than 2 for the number ofinterpolation points.

action

String that defines action for out-of-range input. Specify one:

'Error''Warning''None'

Default: Warning

OutputArguments

N

An array of M geoid heights in meters. The values in this array havethe same data type as latitude.

Examples Calculate the EGM96 geoid height at 42.4 degrees N latitude and 71.0degrees W longitude with warning actions:

N = geoidheight( 42.4, -71.0 )

Calculate the EGM2008 geoid height at two different locations witherror actions.

N = geoidheight( [39.3, 33.4], [77.2, 36.5], 'egm2008', ...'error')

4-224

Page 321: Aerospace Toolbox User Guide Matlab

geoidheight

Calculate a custom geoid height at two different locations with noactions.

N = geoidheight( [39.3, 33.4], [-77.2, 36.5], 'custom', ...'geoidegm96grid','none')

References Vallado, D. A. “Fundamentals of Astrodynamics and Applications.”McGraw-Hill, New York, 1997.

NIMA TR8350.2: "Department of Defense World Geodetic System 1984,Its Definition and Relationship with Local Geodetic Systems."

See Also gravitywgs84 | gravitysphericalharmonic

RelatedLinks

• National Geospatial-Intelligence Agency Web site:http://earth-info.nga.mil/GandG/publications/vertdatum.html

4-225

Page 322: Aerospace Toolbox User Guide Matlab

Geometry (Aero.Geometry)

Purpose Construct 3-D geometry for use with animation object

Syntax h = Aero.Geometry

Description h = Aero.Geometry defines a 3-D geometry for use with an animationobject.

See Aero.Geometry for further details.

See Also Aero.Geometry

4-226

Page 323: Aerospace Toolbox User Guide Matlab

gravitycentrifugal

Purpose Implement centrifugal effect of planetary gravity

Syntax [gx gy gz] = gravitycentrifugal(planet_coordinates)[gx gy gz] = gravitycentrifugal(planet_coordinates, model )[gx gy gz] = gravitycentrifugal(planet_coordinates,'Custom',

rotational_rate)

Description [gx gy gz] = gravitycentrifugal(planet_coordinates)implements the mathematical representation of centrifugal effect forplanetary gravity based on planetary rotation rate. This functioncalculates arrays of N gravity values in the x-axis, y-axis, and z-axisof the Planet-Centered Planet-Fixed coordinates for the planet. Itperforms these calculations using planet_coordinates, an M-by-3array of Planet-Centered Planet-Fixed coordinates. You use centrifugalforce in rotating or noninertial coordinate systems. Gravity centrifugaleffect values are greatest at the equator of a planet.

[gx gy gz] = gravitycentrifugal(planet_coordinates, model )implements the mathematical representation of centrifugal effect basedon planetary gravitational potential for the planetary model, model.

[gx gy gz] = gravitycentrifugal(planet_coordinates,'Custom', rotational_rate) implements the mathematicalrepresentation of centrifugal effect based on planetary gravitationalpotential using the custom rotational rate, rotational_rate.

InputArguments

planet_coordinates

M-by-3 array of Planet-Centered Planet-Fixed coordinates in meters.The z-axis is positive toward the North Pole. If model is 'Earth', theplanet coordinates are ECEF coordinates.

model

String that specifies the planetary model. Default is 'Earth'. Specifyone:

• 'Mercury'

4-227

Page 324: Aerospace Toolbox User Guide Matlab

gravitycentrifugal

• 'Venus'

• 'Earth'

• 'Moon'

• 'Mars'

• 'Jupiter'

• 'Saturn'

• 'Uranus'

• 'Neptune'

• 'Custom'

'Custom' requires that you specify your own planetary model usingthe rotational_rate parameter.

rotational_rate

Scalar value that specifies the planetary rotational rate in radians persecond. Specify this parameter only if model has the value 'Custom'.

OutputArguments

gx

Array of M gravity values in the x-axis of the Planet-CenteredPlanet-Fixed coordinates in meters per second squared (m/s2).

gy

Array of M gravity values in the y-axis of the Planet-CenteredPlanet-Fixed coordinates in meters per second squared (m/s2).

gz

Array of M gravity values in the z-axis of the Planet-CenteredPlanet-Fixed coordinates in meters per second squared (m/s2).

Examples Calculate the centrifugal effect of Earth gravity in the x-axis at theequator on the surface of Earth:

4-228

Page 325: Aerospace Toolbox User Guide Matlab

gravitycentrifugal

gx = gravitycentrifugal( [-6378.1363e3 0 0] )

Calculate the centrifugal effect of Mars gravity at 15000 m over theequator and 11000 m over the North Pole:

p = [2412.648e3 -2412.648e3 0; 0 0 3376.2e3][gx, gy, gz] = gravitycentrifugal( p, 'Mars' )

Calculate the precessing centrifugal effect of gravity for Earth at 15000m over the equator and 11000 m over the North Pole. This exampleuses a custom planetary model at Julian date 2451545:

p = [2412.648e3 -2412.648e3 0; 0 0 3376e3]% Set julian date to January 1, 2000 at noon GMTJD = 2451545% Calculate precession rate in right ascension in meterspres_RA = 7.086e-12 + 4.3e-15*(JD - 2451545)/36525% Calculate the rotational rate in a precessing reference% frameOmega = 7.2921151467e-5 + pres_RA[gx, gy, gz] = gravitycentrifugal( p, 'custom', Omega )

See Also gravitywgs84 | gravitysphericalharmonic | gravityzonal

4-229

Page 326: Aerospace Toolbox User Guide Matlab

gravitysphericalharmonic

Purpose Implement spherical harmonic representation of planetary gravity

Syntax [gx gy gz] = gravitysphericalharmonic(planet_coordinates)[gx gy gz] = gravitysphericalharmonic(planet_coordinates,

model)[gx gy gz] = gravitysphericalharmonic(planet_coordinates,

degree)[gx gy gz] = gravitysphericalharmonic(planet_coordinates,

model, degree)[gx gy gz] = gravitysphericalharmonic(planet_coordinates,

model, degree, action)[gx gy gz] = gravitysphericalharmonic(planet_coordinates,

'Custom', degree, {datafile dfreader}, action)

Description [gx gy gz] = gravitysphericalharmonic(planet_coordinates)implements the mathematical representation of spherical harmonicplanetary gravity based on planetary gravitational potential. Thisfunction calculates arrays of N gravity values in the x-axis, y-axis, andz-axis of the Planet-Centered Planet-Fixed coordinates for the planet.It performs these calculations using planet_coordinates, an M-by-3array of Planet-Centered Planet-Fixed coordinates. By default, thisfunction assumes 120th degree and order spherical coefficients for the'EGM2008' (Earth) planetary model.

[gx gy gz] = gravitysphericalharmonic(planet_coordinates,model) implements the mathematical representation for the planetarymodel, model.

[gx gy gz] = gravitysphericalharmonic(planet_coordinates,degree) uses the degree and order that degree specifies.

[gx gy gz] = gravitysphericalharmonic(planet_coordinates,model, degree) uses the degree and order that degree specifies. modelspecifies the planetary model.

[gx gy gz] = gravitysphericalharmonic(planet_coordinates,model, degree, action) uses the specified action when input is outof range.

4-230

Page 327: Aerospace Toolbox User Guide Matlab

gravitysphericalharmonic

[gx gy gz] = gravitysphericalharmonic(planet_coordinates,'Custom', degree, {datafile dfreader}, action) implementsthe mathematical representation for a custom model planet. datafiledefines the planetary model. dfreader specifies the reader fordatafile.

This function has the following limitations:

• The function excludes the centrifugal effects of planetary rotation,and the effects of a precessing reference frame.

• Spherical harmonic gravity model is valid for radial positions greaterthan the planet equatorial radius. Minor errors might occur forradial positions near or at the planetary surface. The sphericalharmonic gravity model is not valid for radial positions less thanplanetary surface.

Tips • When inputting a large PCPF array and a high degree value, youmight receive an out-of-memory error. For more information aboutavoiding out-of-memory errors in the MATLAB environment, see:

• http://www.mathworks.com/support/tech-notes/1100/1107.html

When inputting a large PCPF array, you might receive a maximummatrix size limitation. To determine the largest matrix or array thatyou can create in the MATLAB environment for your platform, see:

http://www.mathworks.com/support/tech-notes/1100/1110.html

InputArguments

planet_coordinates

M-by-3 array of Planet-Centered Planet-Fixed coordinates in meters.The z-axis is positive toward the North Pole. If model is 'EGM2008' or'EGM96' (Earth), the planet coordinates are ECEF coordinates.

model

String that specifies the planetary model. Default is 'EGM2008'. Specifyone:

4-231

Page 328: Aerospace Toolbox User Guide Matlab

gravitysphericalharmonic

PlanetaryModel

Planet

'EGM2008' Earth Gravitational Model 2008

'EGM96' Earth Gravitational Model 1996

'LP100K' 100th degree Moon model

'LP165P' 165th degree Moon model

'GMM2B' Goddard Mars model 2B

'Custom' Custom planetary model that you define in datafile

Note To deploy a custom planetary model,explicitly include the custom data and readerfiles to the MATLAB Compiler (mcc) command atcompilation. For example:

mcc -m mycustomsphericalgravityfunction...-a customDataFile -a customReaderFile

For other planetary models, use the MATLABCompiler as usual.

'EIGENGL04C' Combined Earth gravity field model EIGEN-GL04C.

When inputting a large PCPF array and a high degree value, you mightreceive an out-of-memory error. For more information about avoidingout-of-memory errors in the MATLAB environment, see:

http://www.mathworks.com/support/tech-notes/1100/1107.html

When inputting a large PCPF array, you might receive a maximummatrix size limitation. To determine the largest matrix or array thatyou can create in the MATLAB environment for your platform, see:

http://www.mathworks.com/support/tech-notes/1100/1110.html

4-232

Page 329: Aerospace Toolbox User Guide Matlab

gravitysphericalharmonic

degree

Scalar value that specifies the degree and order of the harmonic gravitymodel.

PlanetaryModel

Degree and Order

'EGM2008' Maximum degree and order is 2159.

Default degree and order are 120.

'EGM96' Maximum degree and order is 360.

Default degree and order are 70.

'LP100K' Maximum degree and order is 100.

Default degree and order are 60.

'LP165P' Maximum degree and order is 165.

Default degree and order are 60.

'GMM2B' Maximum degree and order is 80.

Default degree and order are 60.

'Custom' Maximum degree is default degree and order.

'EIGENGL04C' Maximum degree and order is 360.

Default degree and order are 70.

When inputting a large PCPF array and a high degree value, you mightreceive an out-of-memory error. For more information about avoidingout-of-memory errors in the MATLAB environment, see:

http://www.mathworks.com/support/tech-notes/1100/1107.html

When inputting a large PCPF array, you might receive a maximummatrix size limitation. To determine the largest matrix or array thatyou can create in the MATLAB environment for your platform, see:

http://www.mathworks.com/support/tech-notes/1100/1110.html

4-233

Page 330: Aerospace Toolbox User Guide Matlab

gravitysphericalharmonic

action

String that defines action for out-of-range input. Specify one:

'Error''Warning' (default)'None'

'Custom'

String that specifies that datafile contains definitions for a customplanetary model.

datafile

File that contains definitions for a custom planetary model. For anexample of file content, see aerogmm2b.mat.

This file must contain the following variables.

Variable Description

Re Scalar of planet equatorial radius in meters (m)

GM Scalar of planetary gravitational parameter in meterscubed per second squared (m3/s2)

degree Scalar of maximum degree

C (degree+1)-by-(degree+1) matrix containing normalizedspherical harmonic coefficients matrix, C

S (degree+1)-by-(degree+1) matrix containing normalizedspherical harmonic coefficients matrix, S

This parameter requires that you specify a program in the dfreaderparameter to read the data file.

dfreader

Specify a MATLAB function to read datafile. The reader file that youspecify depends on the file type of datafile.

4-234

Page 331: Aerospace Toolbox User Guide Matlab

gravitysphericalharmonic

Data FileType

Description

MATLABfile

Specify the MATLAB load function, for example, @load.

Other filetype

Specify a custom MATLAB reader function.For examples of custom reader functions, seeastReadSHAFile.m and astReadEGMFile.m. Note theoutput variable order in these files.

OutputArguments

gx

Array of N gravity values in the x-axis of the Planet-CenteredPlanet-Fixed coordinates in meters per second squared (m/s2).

gy

Array of N gravity values in the y-axis of the Planet-CenteredPlanet-Fixed coordinates in meters per second squared (m/s2).

gz

Array of N gravity values in the z-axis of the Planet-CenteredPlanet-Fixed coordinates in meters per second squared (m/s2).

Examples Calculate the gravity in the x-axis at the equator on the surface ofEarth. This example uses the default 120 degree model of EGM2008with default warning actions:

gx = gravitysphericalharmonic( [-6378.1363e3 0 0] )

Calculate the gravity at 25000 m over the south pole of Earth. Thisexample uses the 70 degree model of EGM96 with error actions:

[gx, gy, gz] = gravitysphericalharmonic( [0 0 -6381.751e3], 'EGM96', 'Error' )

4-235

Page 332: Aerospace Toolbox User Guide Matlab

gravitysphericalharmonic

Calculate the gravity at 15000 m over the equator and 11000 m overthe North Pole. This example uses a 30th order GMM2B Mars modelwith warning actions:

p = [2412.648e3 -2412.648e3 0; 0 0 3376.2e3]

[gx, gy, gz] = gravitysphericalharmonic( p, 'GMM2B', 30, 'Warning' )

Calculate the gravity at 15000 m over the equator and 11000 m overthe North Pole. This example uses a 60th degree custom planetarymodel with no actions:

p = [2412.648e3 -2412.648e3 0; 0 0 3376e3]

[gx, gy, gz] = gravitysphericalharmonic( p, 'custom', 60, ...

{'GMM2BC80_SHA.txt' @astReadSHAFile}, 'None' )

Calculate the gravity at 25000 meters over the south pole of Earth usinga 120th order EIGEN-GL04C Earth model with warning actions:

p = [0 0 -6381.751e3]

[gx, gy, gz] = gravitysphericalharmonic( p, 'EIGENGL04C', ...

120, 'Warning' )

See Also gravitywgs84 | gravitycentrifugal | gravityzonal | geoidegm96

4-236

Page 333: Aerospace Toolbox User Guide Matlab

gravitywgs84

Purpose Implement 1984 World Geodetic System (WGS84) representation ofEarth’s gravity

Syntax g = gravitywgs84(h, lat)g = gravitywgs84(h, lat, lon, method, [noatm, nocent, prec,

jd], action)gt = gravitywgs84(h, lat, lon, 'Exact', [noatm, nocent, prec,

jd], action)[g gn] = gravitywgs84(h, lat, lon, 'Exact', [noatm, nocent,

prec, jd], action)

Description g = gravitywgs84(h, lat) implements the mathematicalrepresentation of the geocentric equipotential ellipsoid of WGS84.Using h, an array of m altitudes in meters, and lat, an array of mgeodetic latitudes in degrees, calculates g, an array of m gravity valuesin the direction normal to the Earth’s surface at a specific location.The default calculation method is Taylor Series. Gravity precision iscontrolled via the method parameter.

g = gravitywgs84(h, lat, lon, method, [noatm, nocent, prec,jd], action) lets you specify both latitude and longitude, as well asother optional inputs, when calculating gravity values in the directionnormal to the Earth’s surface. In this format, method can be either'CloseApprox'or'Exact'.

gt = gravitywgs84(h, lat, lon, 'Exact', [noatm, nocent,prec, jd], action) calculates an array of total gravity values in thedirection normal to the Earth’s surface.

[g gn] = gravitywgs84(h, lat, lon, 'Exact', [noatm, nocent,prec, jd], action) calculates gravity values in the direction bothnormal and tangential to the Earth’s surface.

Inputs for gravitywgs84 are:

4-237

Page 334: Aerospace Toolbox User Guide Matlab

gravitywgs84

h An array of m altitudes, in meters

lat An array of m geodetic latitudes, in degrees,where north latitude is positive, and southlatitude is negative

lon An array of m geodetic longitudes, indegrees, where east longitude is positive,and west longitude is negative. This inputis available only with method specified as'CloseApprox'or'Exact'.

method A string specifying the method to calculategravity: 'TaylorSeries', 'CloseApprox', or'Exact'. The default is 'TaylorSeries'.

noatm A logical value specifying the exclusion ofEarth’s atmosphere. Set to true for the Earth’sgravitational field to exclude the mass ofthe atmosphere. Set to false for the valuefor the Earth’s gravitational field to includethe mass of the atmosphere. This optionis available only with method specified as'CloseApprox'or'Exact'. The default isfalse.

nocent A logical value specifying the removal ofcentrifugal effects. Set to true to calculategravity based on pure attraction resulting fromthe normal gravitational potential. Set to falseto calculate gravity including the centrifugalforce resulting from the Earth’s angularvelocity. This option is available only withmethod specified as 'CloseApprox'or'Exact'.The default is false.

4-238

Page 335: Aerospace Toolbox User Guide Matlab

gravitywgs84

prec A logical value specifying the presence of aprecessing reference frame. Set to true for theangular velocity of the Earth to be calculatedusing the International Astronomical Union(IAU) value of the Earth’s angular velocityand the precession rate in right ascension. Toobtain the precession rate in right ascension,Julian Centuries from Epoch J2000.0 iscalculated using the Julian date, jd. If set tofalse, the angular velocity of the Earth usedis the value of the standard Earth rotatingat a constant angular velocity. This optionis available only with method specified as'CloseApprox'or'Exact'. The default isfalse.

jd A scalar value specifying Julian date used tocalculate Julian Centuries from Epoch J2000.0.This input is available only with methodspecified as 'CloseApprox'or'Exact'.

action A string to determine action for out-of-rangeinput. Specify if out-of-range input invokes a'Warning', 'Error', or no action ('None'). Thedefault is 'Warning'.

Outputs calculated for the Earth’s gravity include:

4-239

Page 336: Aerospace Toolbox User Guide Matlab

gravitywgs84

g An array of m gravity values in the directionnormal to the Earth’s surface at a specificlat lon location. A positive value indicates adownward direction.

gt An array of m total gravity values in thedirection normal to the Earth’s surface at aspecific lat lon location. A positive valueindicates a downward direction. This option isavailable only with method specified as'Exact'.

gn An array of m gravity values in the directiontangential to the Earth’s surface at a specificlat lon location. A positive value indicates anorthward direction. This option is availableonly with method specified as'Exact'.

Examples Calculate the normal gravity at 5000 meters and 55 degrees latitudeusing the Taylor Series approximation method with errors forout-of-range inputs:

g = gravitywgs84( 5000, 55, 'TaylorSeries', 'Error' )

g =

9.7997

Calculate the normal gravity at 15,000 meters, 45 degrees latitude,and 120 degrees longitude using the Close Approximation method withatmosphere, centrifugal effects, and no precessing, with warnings forout-of-range inputs:

g = gravitywgs84( 15000, 45, 120, 'CloseApprox' )

g =

4-240

Page 337: Aerospace Toolbox User Guide Matlab

gravitywgs84

9.7601

Calculate the normal and tangential gravity at 1000 meters, 0 degreeslatitude, and 20 degrees longitude using the Exact method withatmosphere, centrifugal effects, and no precessing, with warnings forout-of-range inputs:

[g, gt] = gravitywgs84( 1000, 0, 20, 'Exact' )

g =

9.7772

gt =

0

Calculate the normal and tangential gravity at 1000 meters, 0 degreeslatitude, and 20 degrees longitude and 11,000 meters, 30 degreeslatitude, and 50 degrees longitude using the Exact method withatmosphere, centrifugal effects, and no precessing, with no actions forout-of-range inputs:

h = [1000; 11000];lat = [0; 30];lon = [20; 50];[g, gt] = gravitywgs84( h, lat, lon, 'Exact', 'None' )

g =

9.77729.7594

4-241

Page 338: Aerospace Toolbox User Guide Matlab

gravitywgs84

gt =

1.0e-004 *

0-0.7751

Calculate the normal gravity at 15,000 meters, 45 degrees latitude,and 120 degrees longitude and 5000 meters, 55 degrees latitude, and100 degrees longitude using the Close Approximation method withatmosphere, no centrifugal effects, and no precessing, with warnings forout-of-range inputs:

h = [15000 5000];

lat = [45 55];

lon = [120 100];

g = gravitywgs84( h, lat, lon, 'CloseApprox', [false true false 0] )

g =

9.7771 9.8109

Calculate the normal and tangential gravity at 1000 meters, 0 degreeslatitude, and 20 degrees longitude using the Exact method withatmosphere, centrifugal effects, and precessing at Julian date 2451545,with warnings for out-of-range inputs:

[g, gt] = gravitywgs84( 1000, 0, 20, 'Exact', ...[ false false true 2451545 ], 'Warning' )

g =

9.7772

4-242

Page 339: Aerospace Toolbox User Guide Matlab

gravitywgs84

gt =

0

Calculate the normal gravity at 15,000 meters, 45 degrees latitude, and120 degrees longitude using the Close Approximation method with noatmosphere, with centrifugal effects, and with precessing at Julian date2451545, with errors for out-of-range inputs:

g = gravitywgs84( 15000, 45, 120, 'CloseApprox', ...[ true false true 2451545 ], 'Error' )

g =

9.7601

Calculate the total normal gravity at 15,000 meters, 45 degrees latitude,and 120 degrees longitude using the Exact method with no atmosphere,with centrifugal effects, and with precessing at Julian date 2451545,with errors for out-of-range inputs:

g = gravitywgs84( 15000, 45, 120, 'Exact', ...[ true false true 2451545 ], 'Error' )

g =

9.7601

AssumptionsandLimitations

The WGS84 gravity calculations are based on the assumption of ageocentric equipotential ellipsoid of revolution. Since the gravitypotential is assumed to be the same everywhere on the ellipsoid, theremust be a specific theoretical gravity potential that can be uniquelydetermined from the four independent constants defining the ellipsoid.

4-243

Page 340: Aerospace Toolbox User Guide Matlab

gravitywgs84

Use of the WGS84 Taylor Series model should be limited to low geodeticheights. It is sufficient near the surface when submicrogal precision isnot necessary. At medium and high geodetic heights, it is less accurate.

Use of the WGS84 Close Approximation model should be limited to ageodetic height of 20,000.0 meters (approximately 65,620.0 feet). Belowthis height, it gives results with submicrogal precision.

To predict and determine a satellite orbit with high accuracy, use theEGM96 through degree and order 70.

References NIMA TR8350.2: “Department of Defense World Geodetic System 1984,Its Definition and Relationship with Local Geodetic Systems.”

4-244

Page 341: Aerospace Toolbox User Guide Matlab

gravityzonal

Purpose Implement zonal harmonic representation of planetary gravity

Syntax [gravityXcoord gravityYcoord,gravityZcoord] = gravityzonal(planetCoord)

[gravityXcoord gravityYcoord,gravityZcoord] = gravityzonal(planetCoord,degreeGravityModel)

[gravityXcoord gravityYcoord,gravityZcoord] = gravityzonal(planetCoord,planetModel)

[gravityXcoord gravityYcoord,gravityZcoord] = gravityzonal(planetCoord,planetModel,degreeGravityModel)

[gravityXcoord gravityYcoord,gravityZcoord] = gravityzonal(planetCoord,planetModel,degreeGravityModel, action)

[gravityXcoord gravityYcoord,gravityZcoord] = gravityzonal(planetCoord,'Custom', equatorialRadius, planetaryGravitional,zonalHarmonicCoeff, action)

Description [gravityXcoord gravityYcoord, gravityZcoord] =gravityzonal(planetCoord) implements the mathematicalrepresentation of zonal harmonic planetary gravity based on planetarygravitational potential. For input, it takes an m-by-3 matrix thatcontains planet-centered planet-fixed coordinates from the center of theplanet in meters. This function calculates the arrays of m gravity valuesin the x-, y-, and z-axes of the planet-centered planet-fixed coordinates.It uses the fourth order zonal coefficients for Earth by default.

[gravityXcoord gravityYcoord, gravityZcoord] =gravityzonal(planetCoord, degreeGravityModel) uses the degreeof harmonic model.

[gravityXcoord gravityYcoord, gravityZcoord] =gravityzonal(planetCoord, planetModel) uses the planetary model.

4-245

Page 342: Aerospace Toolbox User Guide Matlab

gravityzonal

[gravityXcoord gravityYcoord, gravityZcoord] =gravityzonal(planetCoord, planetModel, degreeGravityModel)uses the degree of harmonic model and planetary model.

[gravityXcoord gravityYcoord, gravityZcoord] =gravityzonal(planetCoord, planetModel, degreeGravityModel,action) specifies the action for out-of-range input.

[gravityXcoord gravityYcoord, gravityZcoord] =gravityzonal(planetCoord, 'Custom', equatorialRadius,planetaryGravitional, zonalHarmonicCoeff, action) uses theequatorial radius, planetary gravitational parameter, and zonalharmonic coefficients for the custom planetary model.

This function does not include the potential due planet rotation, whichexcludes the centrifugal effects of planetary rotation and the effectsof a precessing reference frame.

InputArguments

planetCoord

m-by-3 matrix that contains planet-centered planet-fixed coordinatesfrom the center of the planet in meters. If planetModel has a valueof 'Earth', this matrix contains Earth-centered Earth-fixed (ECEF)coordinates.

planetModel

String that specifies the planetary model. Enter one:

• 'Mercury'

• 'Venus'

• 'Earth'

• 'Moon'

• 'Mars'

• 'Jupiter'

• 'Saturn'

4-246

Page 343: Aerospace Toolbox User Guide Matlab

gravityzonal

• 'Uranus'

• 'Neptune'

• 'Custom'

'Custom' requires you to specify your own planetary model using theequatorialRadius, planetaryGravitional, and zonalHarmonicCoeffparameters.

Default: 'Earth'

degreeGravityModel

Degree of harmonic model.

• 2 — Second degree, J2. Most significant or largest sphericalharmonic term, which accounts for the oblateness of a planet. 2 isdefault if planetModel is 'Mercury', 'Venus', 'Moon', 'Uranus',or 'Neptune'.

• 3— Third degree, J3. 3 is default if planetModel is 'Mars'.

• 4 — Fourth degree, J4 (default). Default is 4 if planetModel is'Earth, 'Jupiter', 'Saturn' or 'Custom'.

Default:

equatorialRadius

Planetary equatorial radius in meters. Use this parameter only if youspecify planetModel as 'Custom'.

planetaryGravitional

Planetary gravitational parameter in meters cubed per second squared.Use this parameter only if you specify planetModel as 'Custom'.

zonalHarmonicCoeff

4-247

Page 344: Aerospace Toolbox User Guide Matlab

gravityzonal

3-element array defining the zonal harmonic coefficients that thefunction uses to calculate zonal harmonics planetary gravity. Use thisparameter only if you specify planetModel as 'Custom'.

action

String that defines action for out-of-range input. Specify one:

'Error''Warning''None' (default)

OutputArguments

gravityXcoord

Array of m gravity values in the x-axis of the planet-centeredplanet-fixed coordinates in meters per second squared.

gravityYcoord

Array of m gravity values in the y-axis of the planet-centeredplanet-fixed coordinates in meters per second squared.

gravityZcoord

Array of m gravity values in the z-axis of the planet-centeredplanet-fixed coordinates in meters per second squared.

Examples Calculate the gravity in the x-axis at the equator on the surface of Earthusing the fourth degree model with no warning actions:

gx = gravityzonal( [-6378.1363e3 0 0] )

gx =

9.8142

Calculate the gravity using the close approximation method at 100 mover the geographic South Pole of Earth with error actions:

4-248

Page 345: Aerospace Toolbox User Guide Matlab

gravityzonal

[gx, gy, gz] = gravityzonal( [0 0 -6356.851e3], 'Error' )

gx =

0

gy =

0

gz =

9.8317

Calculate the gravity at 15000 m over the equator and 11000 m over thegeographic North Pole using a second order Mars model with warningactions:

p = [2412.648e3 -2412.648e3 0; 0 0 3376.2e3][gx, gy, gz] = gravityzonal( p, 'Mars', 2, 'Warning' )p =

2412648 -2412648 00 0 3376200

gx =

-2.62240

gy =

2.62240

gz =

4-249

Page 346: Aerospace Toolbox User Guide Matlab

gravityzonal

0-3.7542

Calculate the gravity at 15000 m over the equator and 11000 m over thegeographic North Pole using a custom planetary model with no actions:

p= [2412.648e3 -2412.648e3 0; 0 0 3376e3]GM = 42828.371901e9 % m^3/s^2Re = 3397e3 % mJvalues = [1.95545367944545e-3 3.14498094262035e-5 ...-1.53773961526397e-5][gx, gy, gz] = gravityzonal( p, 'custom', Re, GM, ...Jvalues, 'None' )

Algorithms gravityzonal is implemented using the following planetary parametervalues for each planet:

Planet EquatorialRadius (Re) inMeters

GravitationalParameter (GM) inm3/s2

Zonal Harmonic Coefficients(J Values)

Earth 6378.1363e3 3.986004415e14 [ 0.0010826269 -0.0000025323-0.0000016204 ]

Jupiter 71492.e3 1.268e17 [0.01475 0 -0.00058]

Mars 3397.2e3 4.305e13 [ 0.001964 0.000036 ]

Mercury 2439.0e3 2.2032e13 0.00006

Moon 1738.0e3 4902.799e9 0.0002027

Neptune 24764e3 6.809e15 0.004

Saturn 60268.e3 3.794e16 [0.01645 0 -0.001]

Uranus 25559.e3 5.794e15 0.012

Venus 6052.0e3 3.257e14 0.000027

4-250

Page 347: Aerospace Toolbox User Guide Matlab

gravityzonal

References Vallado, D. A., Fundamentals of Astrodynamics and Applications,McGraw-Hill, New York, 1997.

Fortescue, P., J. Stark, G. Swinerd, (Eds.). Spacecraft SystemsEngineering, Third Edition, Wiley & Sons, West Sussex, 2003.

Tewari, A., Atmospheric and Space Flight Dynamics Modeling andSimulation with MATLAB and Simulink, Birkhäuser, Boston, 2007.

Alternatives Zonal Harmonic Gravity Model block

See Also gravitywgs84 | geoidegm96

4-251

Page 348: Aerospace Toolbox User Guide Matlab

Aero.Animation.hide

Purpose Hide animation figure

Syntax hide(h)h.hide

Description hide(h) and h.hide hide (close) the figure for the animation object h.Use Aero.Animation.show to redisplay the animation object figure.

InputArguments

h Animation object.

Examples Hide the animation object figure that the Aero.Animation.showmethod displays.

h=Aero.Animation;h.show;h.hide;

4-252

Page 349: Aerospace Toolbox User Guide Matlab

igrf11magm

Purpose Calculate Earth’s magnetic field using 11th generation of InternationalGeomagnetic Reference Field

Syntax [mag_field_vector, hor_intensity, declination, inclination,total_intensity, mag_field_sec_variation,sec_variation_horizontal, sec_variation_declination,sec_variation_inclination,sec_variation_total] = igrf11magm(height, latitude,longitude, decimal_year)

Description [mag_field_vector, hor_intensity, declination,inclination, total_intensity, mag_field_sec_variation,sec_variation_horizontal, sec_variation_declination,sec_variation_inclination, sec_variation_total] =igrf11magm(height, latitude, longitude, decimal_year)calculates the Earth’s magnetic field and the secular variation at aspecific location and time. This function uses the 11th generation of theInternational Geomagnetic Reference Field (IGRF-11).

Tips • The igrf11magm function is valid between the heights of –1000meters to 600000 meters.

• The igrf11magm function is valid between the years of 1900 and 2015.

• This function has the limitations of the International GeomagneticReference Field (IGRF).

InputArguments

height

Scalar distance, in meters, from the surface of the Earth.

latitude

Scalar geodetic latitude, in degrees. North latitude is positive, southlatitude is negative.

longitude

4-253

Page 350: Aerospace Toolbox User Guide Matlab

igrf11magm

Scalar geodetic longitude, in degrees. East longitude is positive, westlongitude is negative.

decimal_year

Scalar year, in decimal format. This value is the desired year to includeany fraction of the year that has already passed.

OutputArguments

mag_field_vector

Magnetic field vector, in nanotesla (nT). Z is the vertical component(+ve down).

hor_intensity

Horizontal intensity, in nanotesla (nT).

declination

Declination, in degrees (+ve east).

inclination

Inclination, in degrees (+ve down).

total_intensity

Total intensity, in nanotesla (nT).

mag_field_sec_variation

Secular variation in magnetic field vector, in nT/year. Z is the verticalcomponent (+ve down).

sec_variation_horizontal

Secular variation in horizontal intensity, in nT/year.

sec_variation_declination

Secular variation in declination, in minutes/year (+ve east).

4-254

Page 351: Aerospace Toolbox User Guide Matlab

igrf11magm

sec_variation_inclination

Secular variation in inclination, in minutes/year (+ve down).

sec_variation_total

Secular variation in total intensity, in nT/year.

Examples Calculate the magnetic model 1000 meters over Natick, Massachusettson July 4, 2005 using IGRF-11:

[XYZ, H, DEC, DIP, F] = igrf11magm(1000, 42.283, -71.35, ...

decyear(2005,7,4))

XYZ =

1.0e+004 *

1.8982 -0.5176 4.9558

H =

1.9675e+004

DEC =

-15.2524

DIP =

68.3467

F =

5.3320e+004

4-255

Page 352: Aerospace Toolbox User Guide Matlab

igrf11magm

References Lowes, F. J. “The International GeomagneticReference Field: A ’Health’ Warning.” January, 2010.http://www.ngdc.noaa.gov/IAGA/vmod/igrfhw.html

Blakely, R. J. Potential Theory in Gravity & Magnetic Applications,Cambridge, UK: Cambridge University Press, 1996.

4-256

Page 353: Aerospace Toolbox User Guide Matlab

Aero.Animation.initialize

Purpose Create animation object figure and axes and build patches for bodies

Syntax initialize(h)h.initialize

Description initialize(h) and h.initialize create a figure and axes for theanimation object h, and builds patches for the bodies associated withthe animation object. If there is an existing figure, this function

1 Clears out the old figure and its patches.

2 Creates a new figure and axes with default values.

3 Repopulates the axes with new patches using the surface to patchdata from each body.

InputArguments

h Animation object.

Examples Initialize the animation object, h.

h = Aero.Animation;h.initialize();

4-257

Page 354: Aerospace Toolbox User Guide Matlab

initialize (Aero.FlightGearAnimation)

Purpose Set up FlightGear animation object

Syntax initialize(h)h.initialize

Description initialize(h) and h.initialize set up the FlightGear version, IPaddress, and socket for the FlightGear animation object h.

Examples Initialize the animation object, h.

h = Aero.FlightGearAnimation;h.initialize();

See Also delete | play | GenerateRunScript | update

4-258

Page 355: Aerospace Toolbox User Guide Matlab

initialize (Aero.VirtualRealityAnimation)

Purpose Create and populate virtual reality animation object

Syntax initialize(h)h.initialize

Description initialize(h) and h.initialize create a virtual reality animationworld and populate the virtual reality animation object h. If a previouslyinitialized virtual reality animation object existgs, and that object hasuser-specified data, this function saves the previous object to be resetafter the initialization.

Examples Initialize the virtual reality animation object, h.

h = Aero.VirtualRealityAnimation;

h.VRWorldFilename = [matlabroot,'/toolbox/aero/astdemos/asttkoff.wrl'];

copyfile(h.VRWorldFilename,[tempdir,'asttkoff.wrl'],'f');

h.VRWorldFilename = [tempdir,'asttkoff.wrl'];

h.initialize();

See Also delete | play

4-259

Page 356: Aerospace Toolbox User Guide Matlab

Aero.Animation.initIfNeeded

Purpose Initialize animation graphics if needed

Syntax initIfNeeded(h)h.initIfNeeded

Description initIfNeeded(h) and h.initIfNeeded initialize animation objectgraphics if necessary.

InputArguments

h Animation object.

Examples Initialize the animation object graphics of h as needed.

h=Aero.Animation;h.initIfNeeded;

4-260

Page 357: Aerospace Toolbox User Guide Matlab

juliandate

Purpose Calculate Julian date

Syntax jd = juliandate(v)jd = juliandate(s,f)jd = juliandate(y,mo,d)jd = juliandate([y,mo,d])jd = juliandate(y,mo,d,h,mi,s)jd = juliandate([y,mo,d,h,mi,s])

Description jd = juliandate(v) converts one or more date vectors, v, into Juliandate, jd. Input v can be an m-by-6 or m-by-3 matrix containing m full orpartial date vectors, respectively. juliandate returns a column vectorof m Julian dates, which are the number of days and fractions sincenoon Universal Time on January 1, 4713 BCE.

A date vector contains six elements, specifying year, month, day,hour, minute, and second. A partial date vector has three elements,specifying year, month, and day. Each element of v must be a positivedouble-precision number.

jd = juliandate(s,f) converts one or more date strings, s, intoJulian date, jd, using format string f. s can be a character array whereeach row corresponds to one date string, or a one-dimensional cell arrayof strings. juliandate returns a column vector of m Julian dates, wherem is the number of strings in s.

All of the date strings in s must have the same format f, which mustbe composed of date format symbols listed in the datestr functionreference page. Formats containing the letter Q are not accepted byjuliandate.

Certain formats may not contain enough information to compute a datenumber. In those cases, hours, minutes, and seconds default to 0, daysdefault to 1, months default to January, and years default to the currentyear. Date strings with two-character years are interpreted to be withinthe 100 years centered around the current year.

jd = juliandate(y,mo,d) and jd = juliandate([y,mo,d])return the decimal year for corresponding elements of the y,mo,d

4-261

Page 358: Aerospace Toolbox User Guide Matlab

juliandate

(year,month,day) arrays. y, mo, and d must be arrays of the same size(or any of them can be a scalar).

jd = juliandate(y,mo,d,h,mi,s) and jd =juliandate([y,mo,d,h,mi,s]) return the Juliandates for corresponding elements of the y,mo,d,h,mi,s(year,month,day,hour,minute,second) arrays. The six arguments mustbe arrays of the same size (or any of them can be a scalar).

Examples Calculate Julian date for May 24, 2005:

jd = juliandate('24-May-2005','dd-mmm-yyyy')

jd =

2.4535e+006

Calculate Julian date for December 19, 2006:

jd = juliandate(2006,12,19)

jd =

2.4541e+006

Calculate Julian date for October 10, 2004, at 12:21:00 p.m.:

jd = juliandate(2004,10,10,12,21,0)

jd =

2.4533e+006

AssumptionsandLimitations

This function is valid for all common era (CE) dates in the Gregoriancalendar.

The calculation of Julian date does not take into account leap seconds.

See Also decyear | leapyear | mjuliandate

4-262

Page 359: Aerospace Toolbox User Guide Matlab

leapyear

Purpose Determine leap year

Syntax ly = leapyear(year)

Description ly = leapyear(year) determines whether one or more years are leapyears or not. The output, ly, is a logical array. year should be numeric.

Examples Determine whether 2005 is a leap year:

ly = leapyear(2005)

ly =

0

Determine whether 2000, 2005, and 2020 are leap years:

ly = leapyear([2000 2005 2020])

ly =

1 0 1

AssumptionsandLimitations

The determination of leap years is done by Gregorian calendar rules.

See Also decyear | juliandate | mjuliandate

4-263

Page 360: Aerospace Toolbox User Guide Matlab

lla2ecef

Purpose Convert geodetic coordinates to Earth-centered Earth-fixed (ECEF)coordinates

Syntax p = lla2ecef(lla)p = lla2ecef(lla, model)p = lla2ecef(lla, f, Re)

Description p = lla2ecef(lla) converts an m-by-3 array of geodetic coordinates(latitude, longitude and altitude), lla, to an m-by-3 array of ECEFcoordinates, p. lla is in [degrees degrees meters]. p is in meters. Thedefault ellipsoid planet is WGS84.

p = lla2ecef(lla, model) is an alternate method for converting thecoordinates for a specific ellipsoid planet. Currently only 'WGS84' issupported for model.

p = lla2ecef(lla, f, Re) is another alternate method for convertingthe coordinates for a custom ellipsoid planet defined by flattening, f,and the equatorial radius, Re, in meters.

Examples Determine ECEF coordinates at a latitude, longitude, and altitude:

p = lla2ecef([0 45 1000])

p =

1.0e+006 *

4.5107 4.5107 0

Determine ECEF coordinates at multiple latitudes, longitudes, andaltitudes, specifying WGS84 ellipsoid model:

p = lla2ecef([0 45 1000; 45 90 2000], 'WGS84')

p =

4-264

Page 361: Aerospace Toolbox User Guide Matlab

lla2ecef

1.0e+006 *

4.5107 4.5107 00.0000 4.5190 4.4888

Determine ECEF coordinates at multiple latitudes, longitudes, andaltitudes, specifying custom ellipsoid model:

f = 1/196.877360;Re = 3397000;p = lla2ecef([0 45 1000; 45 90 2000], f, Re)

p =

1.0e+006 *

2.4027 2.4027 00.0000 2.4096 2.3852

See Also ecef2lla | geoc2geod | geod2geoc

4-265

Page 362: Aerospace Toolbox User Guide Matlab

lla2flat

Purpose Estimate flat Earth position from geodetic latitude, longitude, andaltitude

Syntax flatearth_pos = lla2flat(lla, llo, psio, href)flatearth_pos = lla2flat(lla, llo, psio, href,

ellipsoidModel)flatearth_pos = lla2flat(lla, llo, psio, href, flattening,

equatorialRadius)

Description flatearth_pos = lla2flat(lla, llo, psio, href) estimates anarray of flat Earth coordinates, flatearth_pos, from an array ofgeodetic coordinates, lla. This function estimates the flatearth_posvalue with respect to a reference location that llo, psio, and hrefdefine.

flatearth_pos = lla2flat(lla, llo, psio, href,ellipsoidModel) estimates the coordinates for a specific ellipsoidplanet.

flatearth_pos = lla2flat(lla, llo, psio, href, flattening,equatorialRadius) estimates the coordinates for a custom ellipsoidplanet defined by flattening and equatorialRadius.

Tips • This function assumes that the flight path and bank angle are zero.

• This function assumes that the flat Earth z-axis is normal to theEarth only at the initial geodetic latitude and longitude. Thisfunction has higher accuracy over small distances from the initialgeodetic latitude and longitude. It also has higher accuracy atdistances closer to the equator. The function calculates a longitudewith higher accuracy when the variations in latitude are smaller.Additionally, longitude is singular at the poles.

InputArguments

lla

m-by-3 array of geodetic coordinates (latitude, longitude, and altitude),in [degrees, degrees, meters].

4-266

Page 363: Aerospace Toolbox User Guide Matlab

lla2flat

llo

Reference location, in degrees, of latitude and longitude, for the originof the estimation and the origin of the flat Earth coordinate system.

psio

Angular direction of flat Earth x-axis (degrees clockwise from north),which is the angle in degrees used for converting flat Earth x and ycoordinates to the North and East coordinates.

href

Reference height from the surface of the Earth to the flat Earth framewith regard to the flat Earth frame, in meters.

ellipsoidModel

String that specifies the specific ellipsoid planet model. This functionsupports only 'WGS84'.

Default: WGS84

flattening

Custom ellipsoid planet defined by flattening.

equatorialRadius

Planetary equatorial radius, in meters.

OutputArguments

flatearth_pos

Flat Earth position coordinates, in meters.

Examples Estimate coordinates at latitude, longitude, and altitude:

p = lla2flat( [ 0.1 44.95 1000 ], [0 45], 5, -100 )

p =

4-267

Page 364: Aerospace Toolbox User Guide Matlab

lla2flat

1.0e+004 *

1.0530 -0.6509 -0.0900

Estimate coordinates at multiple latitudes, longitudes, and altitudes,specifying the WGS84 ellipsoid model:

p = lla2flat( [ 0.1 44.95 1000; -0.05 45.3 2000 ], [0 45], 5, -100, 'WGS84' )

p =

1.0e+004 *

1.0530 -0.6509 -0.0900

-0.2597 3.3751 -0.1900

Estimate coordinates at multiple latitudes, longitudes, and altitudes,specifying a custom ellipsoid model:

f = 1/196.877360;

Re = 3397000;

p = lla2flat( [ 0.1 44.95 1000; -0.05 45.3 2000 ], [0 45], 5, -100, f, Re )

p =

1.0e+004 *

0.5588 -0.3465 -0.0900

-0.1373 1.7975 -0.1900

Algorithms The estimation begins by finding the small changes in latitude andlongitude from the output latitude and longitude minus the initiallatitude and longitude.

4-268

Page 365: Aerospace Toolbox User Guide Matlab

lla2flat

d

d

= −= −

0

0

To convert geodetic latitude and longitude to the North and Eastcoordinates, the estimation uses the radius of curvature in the primevertical (RN) and the radius of curvature in the meridian (RM). RN andRM are defined by the following relationships:

RR

f f

R Rf f

f f

N

M N

=− −

= − −− −

1 2

1 2

1 2

2 20

2

2 20

( )sin

( )

( )sin

where (R) is the equatorial radius of the planet and f is the flatteningof the planet.

Small changes in the North (dN) and East (dE) positions areapproximated from small changes in the North and East positions by

dNd

R

dEd

R

M

N

=⎛

⎝⎜

⎠⎟

=⎛

⎝⎜

⎠⎟

atan

atan

1

1

0cos

With the conversion of the North and East coordinates to the flat Earthx and y coordinates, the transformation has the form of

pp

NE

x

y

⎣⎢

⎦⎥ =

−⎡

⎣⎢

⎦⎥

⎣⎢

⎦⎥

cos sinsin cos

where

4-269

Page 366: Aerospace Toolbox User Guide Matlab

lla2flat

( )is the angle in degrees clockwise between the x-axis and north.

The flat Earth z-axis value is the negative altitude minus the referenceheight (href).

p h hz ref= − −

References Etkin, B., Dynamics of Atmospheric Flight. NewYork: John Wiley &Sons, 1972.

Stevens, B. L., and F. L. Lewis, Aircraft Control and Simulation, 2nded. New York: John Wiley & Sons, 2003.

See Also flat2lla

4-270

Page 367: Aerospace Toolbox User Guide Matlab

load (Aero.Body)

Purpose Get geometry data from source

Syntax load(h, bodyDataSrc)h.load(bodyDataSrc)load(h, bodyDataSrc, geometrysource)h.load(bodyDataSrc, geometrysource)

Description load(h, bodyDataSrc) and h.load(bodyDataSrc) load the graphicsdata from the body graphics file. This command assumes a defaultgeometry source type set to Auto.

load(h, bodyDataSrc, geometrysource) and h.load(bodyDataSrc,geometrysource) load the graphics data from the body graphics file,bodyDataSrc, into the face, vertex, and color data of the animationbody object h. Then, when axes ax is available, you can use this datato generate patches with generatePatches. geometrysource is thegeometry source type for the body.

By default geometrysource is set to Auto, which recognizes .matextensions as MAT-files, .ac extensions as Ac3d files, and structurescontaining fields of name, faces, vertices, and cdata as MATLABvariables. If you want to use alternate file extensions or file types, enterone of the following:

• Auto

• Variable

• MatFile

• Ac3d

• Custom

Examples Load the graphic data from the graphic data file, pa24-250_orange.ac,into b.

b=Aero.Body;b.load('pa24-250_orange.ac','Ac3d');

4-271

Page 368: Aerospace Toolbox User Guide Matlab

load (Aero.Body)

See Also generatePatches | move | update

4-272

Page 369: Aerospace Toolbox User Guide Matlab

machnumber

Purpose Compute Mach number using velocity and speed of sound

Syntax mach = machnumber(v, a)

Description mach = machnumber(v, a) computes m Mach numbers, mach, from anm-by-3 array of velocities, v, and an array of m speeds of sound, a. v anda must have the same length units.

Examples Determine the Mach number for velocity and speed of sound in feetper second:

mach = machnumber([84.3905 33.7562 10.1269], 1116.4505)

mach =

0.0819

Determine the Mach number for velocity and speed of sound in metersper second:

mach = machnumber([25.7222 10.2889 3.0867], [340.2941 295.0696])

mach =

0.0819 0.0945

Determine the Mach number for velocity and speed of sound in knots:

mach = machnumber([50 20 6; 5 0.5 2], [661.4789 573.5694])

mach =

0.08190.0094

4-273

Page 370: Aerospace Toolbox User Guide Matlab

machnumber

See Also airspeed | alphabeta | dpressure

4-274

Page 371: Aerospace Toolbox User Guide Matlab

mjuliandate

Purpose Calculate modified Julian date

Syntax mjd = mjuliandate(v)mjd = mjuliandate(s,f)mjd = mjuliandate(y,mo,d)mjd = mjuliandate([y,mo,d])mjd = mjuliandate(y,mo,d,h,mi,s)mjd = mjuliandate([y,mo,d,h,mi,s])

Description mjd = mjuliandate(v) converts one or more date vectors, v, intomodified Julian date, mjd. Input v can be an m-by-6 or m-by-3 matrixcontaining m full or partial date vectors, respectively. mjuliandatereturns a column vector of m modified Julian dates. Modified Juliandates begin at midnight rather than noon and have the first two digitsof the corresponding Julian date removed.

A date vector contains six elements, specifying year, month, day,hour, minute, and second. A partial date vector has three elements,specifying year, month, and day. Each element of v must be a positivedouble-precision number.

mjd = mjuliandate(s,f) converts one or more date strings, s,into modified Julian date, mjd, using format string f. s can be acharacter array where each row corresponds to one date string, or aone-dimensional cell array of strings. mjuliandate returns a columnvector of m modified Julian dates, where m is the number of strings in s.

All of the date strings in s must have the same format f, which mustbe composed of date format symbols listed in the datestr functionreference page. Formats containing the letter Q are not accepted bymjuliandate.

Certain formats may not contain enough information to compute a datenumber. In those cases, hours, minutes, and seconds default to 0, daysdefault to 1, months default to January, and years default to the currentyear. Date strings with two-character years are interpreted to be withinthe 100 years centered around the current year.

4-275

Page 372: Aerospace Toolbox User Guide Matlab

mjuliandate

mjd = mjuliandate(y,mo,d) and mjd = mjuliandate([y,mo,d])return the decimal year for corresponding elements of the y,mo,d(year,month,day) arrays. y, mo, and d must be arrays of the same size(or any of them can be a scalar).

mjd = mjuliandate(y,mo,d,h,mi,s) and mjd =mjuliandate([y,mo,d,h,mi,s]) return the modified Juliandates for corresponding elements of the y,mo,d,h,mi,s(year,month,day,hour,minute,second) arrays. The six arguments mustbe arrays of the same size (or any of them can be a scalar).

Examples Calculate the modified Julian date for May 24, 2005:

mjd = mjuliandate('24-May-2005','dd-mmm-yyyy')

mjd =

53514

Calculate the modified Julian date for December 19, 2006:

mjd = mjuliandate(2006,12,19)

mjd =

54088

Calculate the modified Julian date for October 10, 2004, at 12:21:00p.m.:

mjd = mjuliandate(2004,10,10,12,21,0)

mjd =

5.3289e+004

4-276

Page 373: Aerospace Toolbox User Guide Matlab

mjuliandate

AssumptionsandLimitations

This function is valid for all common era (CE) dates in the Gregoriancalendar.

The calculation of modified Julian date does not take into account leapseconds.

See Also decyear | juliandate | leapyear

4-277

Page 374: Aerospace Toolbox User Guide Matlab

move (Aero.Body)

Purpose Change animation body position and orientation

Syntax move(h, translation, rotation)h.move(translation,rotation)

Description move(h, translation, rotation) andh.move(translation,rotation) set a new position and orientation forthe body object h. translation is a 1-by-3 matrix in the aerospacebody x-y-z coordinate system. rotation is a 1-by-3 matrix, inradians, that specifies the rotations about the right-hand x-y-zsequence of coordinate axes. The order of application of the rotation isz-y-x (r-q-p).

Examples Change animation body position to newpos and newrot.

h = Aero.Body;h.load('ac3d_xyzisrgb.ac','Ac3d');newpos = h.Position + 1.00;newrot = h.Rotation + 0.01;h.move(newpos,newrot);

See Also load

4-278

Page 375: Aerospace Toolbox User Guide Matlab

move (Aero.Node)

Purpose Change node translation and rotation

Syntax move(h,translation,rotation)h.move(translation,rotation)

Description move(h,translation,rotation) and h.move(translation,rotation)set a new position and orientation for the node object h. translationis a 1-by-3 matrix in the aerospace body x-y-z coordinate systemor another coordinate system. In the latter case, you can use theCoordTransformFcn function to move it into an aerospace body. Thedefined aerospace body coordinate system is defined relative to thescreen as x-left, y-in, z-down.

rotation is a 1-by-3 matrix, in radians, that specifies the rotationsabout the right-hand x-y-z sequence of coordinate axes. The order ofapplication of the rotation is z-y-x (r-q-p). This function uses theCoordTransformFcn to apply the translation and rotation from theinput coordinate system to the aerospace body. The function then movesthe translation and rotation from the aerospace body to the VRMLx-y-z coordinates. The defined VRML coordinate system is definedrelative to the screen as x-right, y-up, z-out.

Examples Move the Lynx body. This example uses the Simulink 3D Animationvrnode/getfield function to retrieve the translation and rotation.These coordinates are those used in the Simulink 3D Animationsoftware.

h = Aero.VirtualRealityAnimation;

h.VRWorldFilename = [matlabroot,'/toolbox/aero/astdemos/asttkoff.wrl'];

copyfile(h.VRWorldFilename,[tempdir,'asttkoff.wrl'],'f');

h.VRWorldFilename = [tempdir,'asttkoff.wrl'];

h.initialize();

newtrans = getfield(h.Nodes{4}.VRNode,'translation') + 1.0;

newrot = getfield(h.Nodes{4}.VRNode,'rotation') + [.2 0.01 0.01 0.01];

h.Nodes{4}.move(newtrans,newrot);

4-279

Page 376: Aerospace Toolbox User Guide Matlab

move (Aero.Node)

Limitations This function cannot get the node position in aerospace bodycoordinates; it needs to use the CoordTransformFcn to do so.

This function cannot set a viewpoint position or orientation (seeaddViewpoint).

See Also addNode

4-280

Page 377: Aerospace Toolbox User Guide Matlab

Aero.Animation.moveBody

Purpose Move body in animation object

Syntax moveBody(h,idx,translation,rotation)h.moveBody(idx,translation,rotation)

Description moveBody(h,idx,translation,rotation) andh.moveBody(idx,translation,rotation) set a new position andattitude for the body specified with the index idx in the animation objecth. translation is a 1-by-3 matrix in the aerospace body coordinatesystem. rotation is a 1-by-3 matrix, in radians, that specifies therotations about the right-hand x-y-z sequence of coordinate axes. Theorder of application of the rotation is z-y-x (R-Q-P).

InputArguments

h Animation object.

translation 1-by-3 matrix in the aerospace body coordinatesystem.

rotation 1-by-3 matrix, in radians, that specifies therotations about the right-hand x-y-z sequenceof coordinate axes.

idx Body specified with this index.

Examples Move the body with the index 1 to position offset from the original by+ [0 0 -3] and rotation, rot1.

h = Aero.Animation;idx1 = h.createBody('pa24-250_orange.ac','Ac3d');pos1 = h.Bodies{1}.Position;rot1 = h.Bodies{1}.Rotation;h.moveBody(1,pos1 + [0 0 -3],rot1);

4-281

Page 378: Aerospace Toolbox User Guide Matlab

Node (Aero.Node)

Purpose Create node object for use with virtual reality animation

Syntax h = Aero.Node

Description h = Aero.Node creates a node object for use with virtual realityanimation.

See Aero.Node for further details.

See Also Aero.Node

4-282

Page 379: Aerospace Toolbox User Guide Matlab

nodeInfo (Aero.VirtualRealityAnimation)

Purpose Create list of nodes associated with virtual reality animation object

Syntax nodeInfo(h)h.nodeInfon = nodeInfo(h)n = h.nodeInfo

Description nodeInfo(h) and h.nodeInfo create a list of nodes associated with thevirtual reality animation object, h.

n = nodeInfo(h) and n = h.nodeInfo create a cell array (n) thatcontains the node information. The function stores the informationin a cell array as follows:

N{1,n} = Node IndexN{2,n} = Node NameN{3,n} = Node Type

where n is the number of nodes. You might want to use this functionto find an existing node by name and then perform a certain actionon it using the node index.

ExamplesCreate list of nodes associated with virtual reality animation object, h.

h = Aero.VirtualRealityAnimation;

h.VRWorldFilename = [matlabroot,'/toolbox/aero/astdemos/asttkoff.wrl'];

h.initialize();

h.nodeInfo;

See Also addNode

4-283

Page 380: Aerospace Toolbox User Guide Matlab

Aero.Animation.play

Purpose Animate Aero.Animation object given position/angle time series

Syntax play(h)play.h

Description play(h) and play.h animate the loaded geometry in h for thecurrent TimeseriesDataSource at the specified rate given by the'TimeScaling' property (in seconds of animation data per second ofwall-clock time) and animated at a certain number of frames per secondusing the 'FramesPerSecond' property.

The time series data is interpreted according to the'TimeseriesSourceType' property, which can be oneof:

'Timeseries' MATLAB time series data with sixvalues per time:

x y z phi theta psi

The values are resampled.

'Simulink.Timeseries' Simulink.Timeseries (Simulink signallogging):

• First data item

x y z

• Second data item

phi theta psi

4-284

Page 381: Aerospace Toolbox User Guide Matlab

Aero.Animation.play

'StructureWithTime' Simulink struct with time (forexample, Simulink root outportlogging 'Structure with time'):

• signals(1).values: x y z

• signals(2).values: phi thetapsi

Signals are linearly interpolated vs.time using interp1.

'Array6DoF' A double-precision array in n rowsand 7 columns for 6-DoF data:time x y z phi theta psi. If adouble-precision array of 8 or morecolumns is in 'TimeseriesSource',the first 7 columns are used as 6-DoFdata.

'Array3DoF' A double-precision array in n rowsand 4 columns for 3-DoF data: timex z theta. If a double-precisionarray of 5 or more columns is in'TimeseriesSource', the first 4columns are used as 3-DoF data.

'Custom' Position and angle data is retrievedfrom 'TimeseriesSource'by the currently registered'TimeseriesReadFcn'.

The following are limitations for the TStart and TFinal values:

• TStart and TFinal must be numeric.

• TStart and TFinal cannot be Inf or NaN.

• TFinal must be greater than or equal to TStart.

4-285

Page 382: Aerospace Toolbox User Guide Matlab

Aero.Animation.play

• TFinal cannot be greater than the maximum Timeseries time.

• TStart cannot be less than the minimum Timeseries time.

The time advancement algorithm used by play is based on animationframes counted by ticks:

ticks = ticks + 1;time = tstart + ticks*FramesPerSecond*TimeScaling;

where

TimeScaling Specify the seconds of animation dataper second of wall-clock time.

FramesPerSecond Specify the number of framesper second used to animate the'TimeseriesSource'.

For default 'TimeseriesReadFcn' methods, the last frame played isthe last time value.

Time is in seconds, position values are in the same units as the geometrydata loaded into the animation object, and all angles are in radians.

Note If there is a 15% difference between the expected time advanceand the actual time advance, this method will generate the followingwarning:

TimerPeriod has been set to <value>. You may wish to modify the animation

TimeScaling and FramesPerSecond properties to compensate for the

millisecond limit of the TimerPeriod. See documentation for details.

InputArguments

h Animation object.

4-286

Page 383: Aerospace Toolbox User Guide Matlab

Aero.Animation.play

Examples Animate the body, idx1, for the duration of the time series data.

h = Aero.Animation;h.FramesPerSecond = 10;h.TimeScaling = 5;idx1 = h.createBody('pa24-250_orange.ac','Ac3d');load simdata;h.Bodies{1}.TimeSeriesSource = simdata;h.show();h.play();

4-287

Page 384: Aerospace Toolbox User Guide Matlab

play (Aero.FlightGearAnimation)

Purpose Animate FlightGear flight simulator using given position/angle timeseries

Syntax play(h)h.play

Description play(h) and h.play animate FlightGear flight simulator usingspecified time series data in h. The time series data can be set in h byusing the property 'TimeseriesSource'.

The time series data, stored in the property 'TimeseriesSource', isinterpreted according to the 'TimeseriesSourceType' property, whichcan be one of:

'Timeseries' MATLAB time series data with sixvalues per time:

latitude longitude altitude phitheta psi

The values are resampled.

'StructureWithTime' Simulink struct with time (forexample, Simulink root outportlogging 'Structure with time'):

• signals(1).values: latitudelongitude altitude

• signals(2).values: phi thetapsi

Signals are linearly interpolated vs.time using interp1.

4-288

Page 385: Aerospace Toolbox User Guide Matlab

play (Aero.FlightGearAnimation)

'Array6DoF' A double-precision array in n rowsand 7 columns for 6-DoF data: timelatitude longitude altitude phitheta psi. If a double-precisionarray of 8 or more columns is in'TimeseriesSource', the first 7columns are used as 6-DoF data.

'Array3DoF' A double-precision array in n rowsand 4 columns for 3-DoF data: timelatitude altitude theta. If adouble-precision array of 5 or morecolumns is in 'TimeseriesSource',the first 4 columns are used as 3-DoFdata.

'Custom' Position and angle data is retrievedfrom 'TimeseriesSource'by the currently registered'TimeseriesReadFcn'.

The time advancement algorithm used by play is based on animationframes counted by ticks:

ticks = ticks + 1;time = tstart + ticks*FramesPerSecond*TimeScaling;

where

TimeScaling Specify the seconds of animation dataper second of wall-clock time.

FramesPerSecond Specify the number of framesper second used to animate the'TimeseriesSource'.

For default 'TimeseriesReadFcn' methods, the last frame played isthe last time value.

4-289

Page 386: Aerospace Toolbox User Guide Matlab

play (Aero.FlightGearAnimation)

Time is in seconds, position values are in the same units asthe geometry model to be used by FlightGear (see the property'GeometryModelName'), and all angles are in radians. A possible resultof using incorrect units is the early termination of the FlightGear flightsimulator.

Note If there is a 15% difference between the expected time advanceand the actual time advance, this method will generate the followingwarning:

TimerPeriod has been set to <value>. You may wish to modify the animation

TimeScaling and FramesPerSecond properties to compensate for the

millisecond limit of the TimerPeriod. See documentation for details.

The play method supports FlightGear animation objects with customtimers.

Limitations The following are limitations for the TStart and TFinal values:

• TStart and TFinal must be numeric.

• TStart and TFinal cannot be Inf or NaN.

• TFinal must be greater than or equal to TStart.

• TFinal cannot be greater than the maximum Timeseries time.

• TStart cannot be less than the minimum Timeseries time.

Examples Animate FlightGear flight simulator using the given 'Array3DoF'position/angle time series data:

data = [86.2667 -2.13757034184404 7050.896596 -0.135186746141248;...

87.2833 -2.13753906554384 6872.545051 -0.117321084678936;...

88.2583 -2.13751089592972 6719.405713 -0.145815609299676;...

89.275 -2.13747984652232 6550.117118 -0.150635248762596;...

90.2667 -2.13744993157894 6385.05883 -0.143124782831999;...

4-290

Page 387: Aerospace Toolbox User Guide Matlab

play (Aero.FlightGearAnimation)

91.275 -2.13742019116849 6220.358163 -0.147946202530756;...

92.275 -2.13739055547779 6056.906647 -0.167529704309343;...

93.2667 -2.13736104196014 5892.356118 -0.152547361677911;...

94.2583 -2.13733161570895 5728.201718 -0.161979312941906;...

95.2583 -2.13730231163081 5562.923808 -0.122276929636682;...

96.2583 -2.13727405475022 5406.736322 -0.160421658944379;...

97.2667 -2.1372440001805 5239.138477 -0.150591353731908;...

98.2583 -2.13721598764601 5082.78798 -0.147737722951605];

h = fganimation

h.TimeseriesSource = data

h.TimeseriesSourceType = 'Array3DoF'

play(h)

Animate FlightGear flight simulator using the custom timer,MyFGTimer.

h.SetTimer('MyFGTimer')h.play('MyFGTimer')

See Also GenerateRunScript | initialize | update

4-291

Page 388: Aerospace Toolbox User Guide Matlab

play (Aero.VirtualRealityAnimation)

Purpose Animate virtual reality world for given position and angle in time seriesdata

Syntax play(h)h.play

Description play(h) and h.play animate the virtual reality world in h for thecurrent TimeseriesDataSource at the specified rate given by the'TimeScaling' property (in seconds of animation data per second ofwall-clock time) and animated at a certain number of frames per secondusing the 'FramesPerSecond' property.

The time series data is interpreted according to the'TimeseriesSourceType' property, which can be oneof:

'timeseries' MATLAB time series data with sixvalues per time:

x y z phi theta psi

The values are resampled.

'Simulink.Timeseries' Simulink.Timeseries (Simulink signallogging):

• First data item

x y z

• Second data item

phi theta psi

4-292

Page 389: Aerospace Toolbox User Guide Matlab

play (Aero.VirtualRealityAnimation)

'StructureWithTime' Simulink struct with time (forexample, Simulink root outportlogging 'Structure with time'):

• signals(1).values: x y z

• signals(2).values: phi thetapsi

Signals are linearly interpolated vs.time using interp1.

'Array6DoF' A double-precision array in n rowsand 7 columns for 6-DoF data:time x y z phi theta psi. If adouble-precision array of 8 or morecolumns is in 'TimeseriesSource',the first 7 columns are used as 6-DoFdata.

'Array3DoF' A double-precision array in n rowsand 4 columns for 3-DoF data: timex z theta. If a double-precisionarray of 5 or more columns is in'TimeseriesSource', the first 4columns are used as 3-DoF data.

'Custom' Position and angle data is retrievedfrom 'TimeseriesSource'by the currently registered'TimeseriesReadFcn'.

The time advancement algorithm used by play is based on animationframes counted by ticks:

ticks = ticks + 1;time = tstart + ticks*FramesPerSecond*TimeScaling;

where

4-293

Page 390: Aerospace Toolbox User Guide Matlab

play (Aero.VirtualRealityAnimation)

TimeScaling Specify the seconds of animation dataper second of wall-clock time.

FramesPerSecond Specify the number of framesper second used to animate the'TimeseriesSource'.

For default 'TimeseriesReadFcn' methods, the last frame played isthe last time value.

Time is in seconds, position values are in the same units as the geometrydata loaded into the animation object, and all angles are in radians.

Examples Animate virtual reality world, asttkoff.

h = Aero.VirtualRealityAnimation;

h.FramesPerSecond = 10;

h.TimeScaling = 5;

h.VRWorldFilename = [matlabroot,'/toolbox/aero/astdemos/asttkoff.wrl'];

h.initialize();

load takeoffData

h.Nodes{7}.TimeseriesSource = takeoffData;

h.Nodes{7}.TimeseriesSourceType = 'StructureWithTime';

h.Nodes{7}.CoordTransformFcn = @vranimCustomTransform;

h.play();

See Also initialize

4-294

Page 391: Aerospace Toolbox User Guide Matlab

quat2angle

Purpose Convert quaternion to rotation angles

Syntax [r1 r2 r3] = quat2angle(q)[r1 r2 r3] = quat2angle(q, s)

Description [r1 r2 r3] = quat2angle(q) calculates the set of rotation angles,r1, r2, r3, for a given quaternion, q. q is an m-by-4 matrix containingm quaternions. Each element of q must be a real number. q has itsscalar number as the first column.

Rotation angles are output in radians.

r1Returns an m array of first rotation angles.

r2Returns an m array of second rotation angles.

r3Returns an m array of third rotation angles.

[r1 r2 r3] = quat2angle(q, s) calculates the set of rotation angles,r1, r2, r3, for a given quaternion, q, and a specified rotation sequence, s.

The default rotation sequence is 'ZYX', where r1 is z-axis rotation, r2is y-axis rotation, and r3 is x-axis rotation.

Supported rotation sequence strings are 'ZYX', 'ZYZ', 'ZXY', 'ZXZ','YXZ', 'YXY', 'YZX', 'YZY', 'XYZ', 'XYX', 'XZY', and 'XZX'.

Examples Determine the rotation angles from q = [1 0 1 0].

[yaw, pitch, roll] = quat2angle([1 0 1 0])yaw =

0pitch =

1.5708roll =

0

4-295

Page 392: Aerospace Toolbox User Guide Matlab

quat2angle

Determine the rotation angles from multiple quaternions.

q = [1 0 1 0; 1 0.5 0.3 0.1];[pitch, roll, yaw] = quat2angle(q, 'YXZ')

pitch =1.57080.8073

roll =0

0.7702yaw =

00.5422

AssumptionsandLimitations

The limitations for the 'ZYX', 'ZXY', 'YXZ', 'YZX', 'XYZ', and 'XZY'implementations generate an r2 angle that lies between ±90 degrees,and r1 and r3 angles that lie between ±180 degrees.

The limitations for the 'ZYZ', 'ZXZ', 'YXY', 'YZY', 'XYX', and 'XZX'implementations generate an r2 angle that lies between 0 and 180degrees, and r1 and r3 angles that lie between ±180 degrees.

See Also angle2dcm | angle2quat | dcm2angle | dcm2quat | quat2dcm

4-296

Page 393: Aerospace Toolbox User Guide Matlab

quat2dcm

Purpose Convert quaternion to direction cosine matrix

Syntax n = quat2dcm(q)

Description n = quat2dcm(q) calculates the direction cosine matrix, n, for a givenquaternion, q. Input q is an m-by-4 matrix containing m quaternions. nreturns a 3-by-3-by-m matrix of direction cosine matrices. The directioncosine matrix performs the coordinate transformation of a vector ininertial axes to a vector in body axes. Each element of q must be a realnumber. Additionally, q has its scalar number as the first column.

Examples Determine the direction cosine matrix from q = [1 0 1 0]:

dcm = quat2dcm([1 0 1 0])

dcm =

0 0 -1.00000 1.0000 0

1.0000 0 0

Determine the direction cosine matrices from multiple quaternions:

q = [1 0 1 0; 1 0.5 0.3 0.1];dcm = quat2dcm(q)

dcm(:,:,1) =

0 0 -1.00000 1.0000 0

1.0000 0 0

dcm(:,:,2) =

4-297

Page 394: Aerospace Toolbox User Guide Matlab

quat2dcm

0.8519 0.3704 -0.37040.0741 0.6148 0.78520.5185 -0.6963 0.4963

See Also angle2dcm | dcm2angle | dcm2quat | angle2quat | quat2angle |quatrotate

4-298

Page 395: Aerospace Toolbox User Guide Matlab

quatconj

Purpose Calculate conjugate of quaternion

Syntax n = quatconj(q)

Description n = quatconj(q) calculates the conjugate, n, for a given quaternion,q. Input q is an m-by-4 matrix containing m quaternions. n returns anm-by-4 matrix of conjugates. Each element of q must be a real number.Additionally, q has its scalar number as the first column.

Examples Determine the conjugate of q = [1 0 1 0]:

conj = quatconj([1 0 1 0])

conj =

1 0 -1 0

See Also quatdivide | quatinv | quatmod | quatmultiply | quatnorm |quatnormalize | quatrotate

4-299

Page 396: Aerospace Toolbox User Guide Matlab

quatdivide

Purpose Divide quaternion by another quaternion

Syntax n = quatdivide(q,r)

Description n = quatdivide(q,r) calculates the result of quaternion division, n,for two given quaternions, q and r. Inputs q and r can each be either anm-by-4 matrix containing m quaternions, or a single 1-by-4 quaternion.n returns an m-by-4 matrix of quaternion quotients. Each element of qand r must be a real number. Additionally, q and r have their scalarnumber as the first column.

Examples Determine the division of two 1-by-4 quaternions:

q = [1 0 1 0];r = [1 0.5 0.5 0.75];d = quatdivide(q, r)

d =

0.7273 0.1212 0.2424 -0.6061

Determine the division of a 2-by-4 quaternion by a 1-by-4 quaternion:

q = [1 0 1 0; 2 1 0.1 0.1];r = [1 0.5 0.5 0.75];d = quatdivide(q, r)

d =

0.7273 0.1212 0.2424 -0.60611.2727 0.0121 -0.7758 -0.4606

See Also quatconj | quatinv | quatmod | quatmultiply | quatnorm |quatnormalize | quatrotate

4-300

Page 397: Aerospace Toolbox User Guide Matlab

quatinv

Purpose Calculate inverse of quaternion

Syntax n = quatinv(q)

Description n = quatinv(q) calculates the inverse, n, for a given quaternion, q.Input q is an m-by-4 matrix containing m quaternions. n returns anm-by-4 matrix of inverses. Each element of q must be a real number.Additionally, q has its scalar number as the first column.

Examples Determine the inverse of q = [1 0 1 0]:

qinv = quatinv([1 0 1 0])

qinv =

0.5000 0 -0.5000 0

See Also quatconj | quatdivide | quatmod | quatmultiply | quatnorm |quatnormalize | quatrotate

4-301

Page 398: Aerospace Toolbox User Guide Matlab

quatmod

Purpose Calculate modulus of quaternion

Syntax n = quatmod(q)

Description n = quatmod(q) calculates the modulus, n, for a given quaternion,q. Input q is an m-by-4 matrix containing m quaternions. n returns acolumn vector of m moduli. Each element of q must be a real number.Additionally, q has its scalar number as the first column.

Examples Determine the modulus of q = [1 0 0 0]:

mod = quatmod([1 0 0 0])

mod =

1

See Also quatconj | quatdivide | quatinv | quatmultiply | quatnorm |quatnormalize | quatrotate

4-302

Page 399: Aerospace Toolbox User Guide Matlab

quatmultiply

Purpose Calculate product of two quaternions

Syntax n = quatmultiply(q,r)

Description n = quatmultiply(q,r) calculates the quaternion product, n, for twogiven quaternions, q and r. Inputs q and r can each be either anm-by-4 matrix containing m quaternions, or a single 1-by-4 quaternion.n returns an m-by-4 matrix of quaternion products. Each element of qand r must be a real number. Additionally, q and r have their scalarnumber as the first column.

Note Quaternion multiplication is not commutative.

Examples Determine the product of two 1-by-4 quaternions:

q = [1 0 1 0];r = [1 0.5 0.5 0.75];mult = quatmultiply(q, r)

mult =

0.5000 1.2500 1.5000 0.2500

Determine the product of a 1-by-4 quaternion with itself:

q = [1 0 1 0];mult = quatmultiply(q)

mult =

0 0 2 0

4-303

Page 400: Aerospace Toolbox User Guide Matlab

quatmultiply

Determine the product of 1-by-4 and 2-by-4 quaternions:

q = [1 0 1 0];r = [1 0.5 0.5 0.75; 2 1 0.1 0.1];mult = quatmultiply(q, r)

mult =

0.5000 1.2500 1.5000 0.25001.9000 1.1000 2.1000 -0.9000

See Also quatconj | quatdivide | quatinv | quatmod | quatnorm |quatnormalize | quatrotate

4-304

Page 401: Aerospace Toolbox User Guide Matlab

quatnorm

Purpose Calculate norm of quaternion

Syntax n = quatnorm(q)

Description n = quatnorm(q) calculates the norm, n, for a given quaternion, q.Input q is an m-by-4 matrix containing m quaternions. n returns acolumn vector of m norms. Each element of q must be a real number.Additionally, q has its scalar number as the first column.

Examples Determine the norm of q = [1 0 0 0]:

norm = quatnorm([1 0 0 0])

norm =

1

See Also quatconj | quatdivide | quatinv | quatmod | quatmultiply |quatnormalize | quatrotate

4-305

Page 402: Aerospace Toolbox User Guide Matlab

quatnormalize

Purpose Normalize quaternion

Syntax n = quatnormalize(q)

Description n = quatnormalize(q) calculates the normalized quaternion, n,for a given quaternion, q. Input q is an m-by-4 matrix containing mquaternions. n returns an m-by-4 matrix of normalized quaternions.Each element of q must be a real number. Additionally, q has its scalarnumber as the first column.

Examples Normalize q = [1 0 1 0]:

normal = quatnormalize([1 0 1 0])

normal =

0.7071 0 0.7071 0

See Also quatconj | quatdivide | quatinv | quatmod | quatmultiply |quatnorm | quatrotate

4-306

Page 403: Aerospace Toolbox User Guide Matlab

quatrotate

Purpose Rotate vector by quaternion

Syntax n = quatrotate(q,r)

Description n = quatrotate(q,r) calculates the rotated vector, n, for a quaternion,q, and a vector, r. q is either an m-by-4 matrix containing m quaternions,or a single 1-by-4 quaternion. r is either an m-by-3 matrix, or a single1-by-3 vector. n returns an m-by-3 matrix of rotated vectors. Eachelement of q and r must be a real number. Additionally, q has its scalarnumber as the first column.

Examples Rotate a 1-by-3 vector by a 1-by-4 quaternion:

q = [1 0 1 0];r = [1 1 1];n = quatrotate(q, r)

n =

-1.0000 1.0000 1.0000

Rotate a 1-by-3 vector by a 2-by-4 quaternion:

q = [1 0 1 0; 1 0.5 0.3 0.1];r = [1 1 1];n = quatrotate(q, r)

n =

-1.0000 1.0000 1.00000.8519 1.4741 0.3185

Rotate a 2-by-3 vector by a 1-by-4 quaternion:

q = [1 0 1 0];r = [1 1 1; 2 3 4];

4-307

Page 404: Aerospace Toolbox User Guide Matlab

quatrotate

n = quatrotate(q, r)

n =

-1.0000 1.0000 1.0000-4.0000 3.0000 2.0000

Rotate a 2-by-3 vector by a 2-by-4 quaternion:

q = [1 0 1 0; 1 0.5 0.3 0.1];r = [1 1 1; 2 3 4];n = quatrotate(q, r)

n =

-1.0000 1.0000 1.00001.3333 5.1333 0.9333

See Also quatconj | quatinv | quatmod | quatmultiply | quatnorm |quatnormalize

4-308

Page 405: Aerospace Toolbox User Guide Matlab

read (Aero.Geometry)

Purpose Read geometry data using current reader

Syntax read(h, source)

Description read(h, source) reads the geometry data of the geometry object h.source can be:

• 'Auto'

Selects default reader.

• 'Variable'

Selects MATLAB variable of type structure structures that containsthe fieldsname, faces, vertices, and cdata that define the geometryin the Handle Graphics patches.

• 'MatFile'

Selects MAT-file reader.

• 'Ac3dFile'

Selects Ac3d file reader.

• 'Custom'

Selects a custom reader.

Examples Read geometry data from Ac3d file, pa24-250_orange.ac.

g = Aero.Geometry;g.Source = 'Ac3d';g.read('pa24-250_orange.ac');

4-309

Page 406: Aerospace Toolbox User Guide Matlab

Aero.Animation.removeBody

Purpose Remove one body from animation

Syntax h = removeBody(h,idx)h = h.removeBody(idx)

Description h = removeBody(h,idx) and h = h.removeBody(idx) remove thebody specified by the index idx from the animation object h.

InputArguments

h Animation object.

idx Body specified with this index.

Examples Remove the body identified by the index, 1.

h = Aero.Animation;idx1 = h.createBody('pa24-250_orange.ac','Ac3d');h = removeBody(h,1)

4-310

Page 407: Aerospace Toolbox User Guide Matlab

removeNode (Aero.VirtualRealityAnimation)

Purpose Remove node from virtual reality animation object

Syntax removeNode(h,node)h.removeNode(node)

Description removeNode(h,node) and h.removeNode(node) remove the nodespecified by node from the virtual reality animation object h. node canbe either the node name or the node index. This function can removeonly one node at a time.

Note You can use only this function to remove a node added byaddNode. If you need to remove a node from a previously defined .wrlfile, use a VRML editor.

Examples Remove the node, Lynx1.

h = Aero.VirtualRealityAnimation;

h.VRWorldFilename = [matlabroot,'/toolbox/aero/astdemos/asttkoff.wrl'];

copyfile(h.VRWorldFilename,[tempdir,'asttkoff.wrl'],'f');

h.VRWorldFilename = [tempdir,'asttkoff.wrl'];

h.initialize();

h.addNode('Lynx1',[matlabroot,'/toolbox/aero/astdemos/chaseHelicopter.wrl']);

h.removeNode('Lynx1');

See Also addNode

4-311

Page 408: Aerospace Toolbox User Guide Matlab

removeViewpoint (Aero.VirtualRealityAnimation)

Purpose Remove viewpoint node from virtual reality animation

Syntax removeViewpoint(h,viewpoint)h.removeViewpoint(viewpoint)

Description removeViewpoint(h,viewpoint) and h.removeViewpoint(viewpoint)remove the viewpoint specified by viewpoint from the virtual realityanimation object h. viewpoint can be either the viewpoint name or theviewpoint index. This function can remove only one viewpoint at a time.

Note You can use this function to remove a viewpoint added byaddViewpoint. If you need to remove a viewpoint from a previouslydefined .wrl file, use a VRML editor.

Examples Remove the node, Lynx1.

h = Aero.VirtualRealityAnimation;

h.VRWorldFilename = [matlabroot,'/toolbox/aero/astdemos/asttkoff.wrl'];

copyfile(h.VRWorldFilename,[tempdir,'asttkoff.wrl'],'f');

h.VRWorldFilename = [tempdir,'asttkoff.wrl'];

h.initialize();

h.addViewpoint(h.Nodes{2}.VRNode,'children','chaseView','View From Helicopter');

h.removeViewpoint('chaseView');

See Also addViewpoint

4-312

Page 409: Aerospace Toolbox User Guide Matlab

rrdelta

Purpose Compute relative pressure ratio

Syntax d = rrdelta(p0, mach, g)

Description d = rrdelta(p0, mach, g) computes m pressure relative ratios, d,from m static pressures, p0, m Mach numbers, mach, and m specific heatratios, g. p0 must be in pascals.

Examples Determine the relative pressure ratio for three pressures:

delta = rrdelta([101325 22632.0672 4328.1393], 0.5, 1.4)

delta =

1.1862 0.2650 0.0507

Determine the relative pressure ratio for three pressures and threedifferent heat ratios:

delta = rrdelta([101325 22632.0672 4328.1393], 0.5, [1.4 1.35 1.4])

delta =

1.1862 0.2635 0.0507

Determine the relative pressure ratio for three pressures at threedifferent conditions:

delta = rrdelta([101325 22632.0672 4328.1393], [0.5 1 2], [1.4 1.35 1.4])

delta =

1.1862 0.4161 0.3342

4-313

Page 410: Aerospace Toolbox User Guide Matlab

rrdelta

AssumptionsandLimitations

For cases in which total pressure ratio is desired (Mach number isnonzero), the total pressures are calculated assuming perfect gas(with constant molecular weight, constant pressure specific heat, andconstant specific heat ratio) and dry air.

References Aeronautical Vestpocket Handbook, United Technologies Pratt &Whitney, August, 1986

See Also rrsigma | rrtheta

4-314

Page 411: Aerospace Toolbox User Guide Matlab

rrsigma

Purpose Compute relative density ratio

Syntax s = rrsigma(rho, mach, g)

Description s = rrsigma(rho, mach, g) computes m density relative ratios, s,from m static densities, rho, m Mach numbers, mach, and m specific heatratios, g. rho must be in kilograms per meter cubed.

Examples Determine the relative density ratio for three densities:

sigma = rrsigma([1.225 0.3639 0.0953], 0.5, 1.4)

sigma =

1.1297 0.3356 0.0879

Determine the relative density ratio for three densities and threedifferent heat ratios:

sigma = rrsigma([1.225 0.3639 0.0953], 0.5, [1.4 1.35 1.4])

sigma =

1.1297 0.3357 0.0879

Determine the relative density ratio for three densities at threedifferent conditions:

sigma = rrsigma([1.225 0.3639 0.0953], [0.5 1 2], [1.4 1.35 1.4])

sigma =

1.1297 0.4709 0.3382

4-315

Page 412: Aerospace Toolbox User Guide Matlab

rrsigma

AssumptionsandLimitations

For cases in which total density ratio is desired (Mach number isnonzero), the total density is calculated assuming perfect gas (withconstant molecular weight, constant pressure specific heat, andconstant specific heat ratio) and dry air.

References Aeronautical Vestpocket Handbook, United Technologies Pratt &Whitney, August, 1986

See Also rrdelta | rrtheta

4-316

Page 413: Aerospace Toolbox User Guide Matlab

rrtheta

Purpose Compute relative temperature ratio

Syntax th = rrtheta(t0, mach, g)

Description th = rrtheta(t0, mach, g) computes m temperature relative ratios,th, from m static temperatures, t0, mMach numbers, mach, and m specificheat ratios, g. t0 must be in kelvin.

Examples Determine the relative temperature ratio for three temperatures:

th = rrtheta([273.15 310.9278 373.15], 0.5, 1.4)

th =

0.9953 1.1330 1.3597

Determine the relative temperature ratio for three temperatures andthree different heat ratios:

th = rrtheta([273.15 310.9278 373.15], 0.5, [1.4 1.35 1.4])

th =

0.9953 1.1263 1.3597

Determine the relative temperature ratio for three temperatures atthree different conditions:

th = rrtheta([273.15 310.9278 373.15], [0.5 1 2], [1.4 1.35 1.4])

th =

0.9953 1.2679 2.3310

4-317

Page 414: Aerospace Toolbox User Guide Matlab

rrtheta

AssumptionsandLimitations

For cases in which total temperature ratio is desired (Mach numberis nonzero), the total temperature is calculated assuming perfect gas(with constant molecular weight, constant pressure specific heat, andconstant specific heat ratio) and dry air.

References Aeronautical Vestpocket Handbook, United Technologies Pratt &Whitney, August, 1986

See Also rrdelta | rrsigma

4-318

Page 415: Aerospace Toolbox User Guide Matlab

saveas (Aero.VirtualRealityAnimation)

Purpose Save virtual reality world associated with virtual reality animationobject

Syntax saveas(h, filename)h.saveas(filename)

Description saveas(h, filename) and h.saveas(filename) save the worldassociated with the virtual reality animation object, h, into the .wrl filename specified in the filename variable. After saving, this functionreinitializes the virtual reality animation object from the saved world.

Examples Save the world associated with h.

h = Aero.VirtualRealityAnimation;

h.VRWorldFilename = [matlabroot,'/toolbox/aero/astdemos/asttkoff.wrl'];

copyfile(h.VRWorldFilename,[tempdir,asttkoff.wrl'],'f');

h.VRWorldFilename = [tempdir,asttkoff.wrl'];

h.initialize();

h.saveas([tempdir,'my_asttkoff.wrl']);

4-319

Page 416: Aerospace Toolbox User Guide Matlab

SetTimer (Aero.FlightGearAnimation)

Purpose Set name of timer for animation of FlightGear flight simulator

Syntax SetTimer(h)h.SetTimerSetTimer(h, MyFGTimer)h.SetTimer('MyFGTimer')

Description SetTimer(h) and h.SetTimer set the name of the MATLAB timerfor the animation of the FlightGear flight simulator. SetTimer(h,MyFGTimer) and h.SetTimer('MyFGTimer') set the name of theMATLAB timer for the animation of the FlightGear flight simulatorand assign a custom name to the timer.

You can use this function to customize your FlightGear animationobject. This customization allows you to simultaneously run multipleFlightGear objects if you want to use

• Multiple FlightGear sessions

• Different ports to connect to those sessions

Examples Set the MATLAB timer for animation of the FlightGear animationobject, h:

h = Aero.FlightGearAnimationh.SetTimer

Set the MATLAB timer used for animation of the FlightGear animationobject, h, and assign a custom name, MyFGTimer, to the timer:

h = Aero.FlightGearAnimationh.SetTimer('MyFGTimer')

See Also ClearTimer

4-320

Page 417: Aerospace Toolbox User Guide Matlab

Aero.Animation.show

Purpose Show animation object figure

Syntax show(h)h.show

Description show(h) and h.show create the figure graphics object for the animationobject h. Use the Aero.Animation.hide function to close the figure.

InputArguments

h Animation object.

Examples Show the animation object, h.

h = Aero.Animation;idx1 = h.createBody('pa24-250_orange.ac','Ac3d');h.show;

4-321

Page 418: Aerospace Toolbox User Guide Matlab

update (Aero.Body)

Purpose Change body position and orientation as function of time

Syntax update(h,t)h.update(t)

Description update(h,t) and h.update(t) change body position and orientation ofbody h as a function of time t. t is a scalar in seconds.

Note This function requires that you load the body geometry and timeseries data first.

Examples Update the body b with time in seconds of 5.

b=Aero.Body;b.load('pa24-250_orange.ac','Ac3d');tsdata = [ ...

0, 1,1,1, 0,0,0; ...10 2,2,2, 1,1,1; ];

b.TimeSeriesSource = tsdata;b.update(5);

See Also load

4-322

Page 419: Aerospace Toolbox User Guide Matlab

update (Aero.Camera)

Purpose Update camera position based on time and position of other Aero.Bodyobjects

Syntax update(h,newtime,bodies)h.update(newtime,bodies)

Description update(h,newtime,bodies) and h.update(newtime,bodies) updatethe camera object, h, position and aim point data based on the new time,newtime, and position of other Aero.Body objects, bodies. This functionupdates the camera object PrevTime property to newtime.

See Also Aero.Animation.play

4-323

Page 420: Aerospace Toolbox User Guide Matlab

update (Aero.FlightGearAnimation)

Purpose Update position data to FlightGear animation object

Syntax update(h,time)h.update(time)

Description update(h,time) and h.update(time) update the position data to theFlightGear animation object via UDP. It sets the new position andattitude of body h. time is a scalar in seconds.

Note This function requires that you load the time series data andrun FlightGear first.

Examples Configure a body with TimeSeriesSource set to simdata, then updatethe body with time time equal to 0.

h = Aero.FlightGearAnimation;h.FramesPerSecond = 10;h.TimeScaling = 5;load simdata;h.TimeSeriesSource = simdata;t = 0;h.update(t);

See Also GenerateRunScript | initialize | play

4-324

Page 421: Aerospace Toolbox User Guide Matlab

update (Aero.Node)

Purpose Change node position and orientation versus time data

Syntax update(h,t)h.update(t)

Description update(h,t) and h.update(t) change node position and orientation ofnode h as a function of time t. t is a scalar in seconds.

Note This function requires that you load the node and time seriesdata first.

Examples Move the Lynx body.

h = Aero.VirtualRealityAnimation;

h.FramesPerSecond = 10;

h.TimeScaling = 5;

h.VRWorldFilename = [matlabroot,'/toolbox/aero/astdemos/asttkoff.wrl'];

copyfile(h.VRWorldFilename,[tempdir,'asttkoff.wrl'],'f');

h.VRWorldFilename = [tempdir,'asttkoff.wrl'];

h.initialize();

load takeoffData

h.Nodes{7}.TimeseriesSource = takeoffData;

h.Nodes{7}.TimeseriesSourceType = 'StructureWithTime';

h.Nodes{7}.update(5);

See Also updateNodes

4-325

Page 422: Aerospace Toolbox User Guide Matlab

Aero.Animation.updateBodies

Purpose Update bodies of animation object

Syntax h = updateBodies(time)h.updateBodies(time)

Description h = updateBodies(time) and h.updateBodies(time) set the newposition and attitude of movable bodies in the animation object h. Thisfunction updates the bodies contained in the animation object h. timeis a scalar in seconds.

Examples Configure a body with TimeSeriesSource set to simdata, then updatethe body with time t equal to 0.

h = Aero.Animation;h.FramesPerSecond = 10;h.TimeScaling = 5;idx1 = h.createBody('pa24-250_orange.ac','Ac3d');load simdata;h.Bodies{1}.TimeSeriesSource = simdata;t = 0;h.updateBodies(t);

4-326

Page 423: Aerospace Toolbox User Guide Matlab

Aero.Animation.updateCamera

Purpose Update camera in animation object

Syntax updateCamera(h,time)h.updateCamera(time)

Description updateCamera(h,time) and h.updateCamera(time) update the camerain the animation object h. time is a scalar in seconds.

Note The PositionFcn property of a camera object controls the cameraposition relative to the bodies in the animation. The default cameraPositionFcn follows the path of a first order chase vehicle. Therefore,it takes a few steps for the camera to position itself correctly in thechase plane position.

InputArguments

h Animation object.

time Scalar in seconds.

Examples Configure a body with TimeSeriesSource set to simdata, then updatethe camera with time t equal to 0.

h = Aero.Animation;h.FramesPerSecond = 10;h.TimeScaling = 5;idx1 = h.createBody('pa24-250_orange.ac','Ac3d');load simdata;h.Bodies{1}.TimeSeriesSource = simdata;t = 0;h.updateCamera(t);

4-327

Page 424: Aerospace Toolbox User Guide Matlab

updateNodes (Aero.VirtualRealityAnimation)

Purpose Change virtual reality animation node position and orientation asfunction of time

Syntax updateNodes(h,t)h.updateNotes(t)

Description updateNodes(h,t) and h.updateNotes(t) change node position andorientation of body h as a function of time t. t is a scalar in seconds.

Note This function requires that you load the node and time seriesdata first.

Examples Update the node h with time in 5 seconds.

h = Aero.VirtualRealityAnimation;

h.FramesPerSecond = 10;

h.TimeScaling = 5;

h.VRWorldFilename = [matlabroot,'/toolbox/aero/astdemos/asttkoff.wrl'];

copyfile(h.VRWorldFilename,[tempdir,'asttkoff.wrl'],'f');

h.VRWorldFilename = [tempdir,'asttkoff.wrl'];

h.initialize();

load takeoffData

h.Nodes{7}.TimeseriesSource = takeoffData;

h.Nodes{7}.TimeseriesSourceType = 'StructureWithTime';

h.Nodes{7}.CoordTransformFcn = @vranimCustomTransform;

h.updateNodes(5);

See Also addNode | update

4-328

Page 425: Aerospace Toolbox User Guide Matlab

Viewpoint (Aero.Viewpoint)

Purpose Create viewpoint object for use in virtual reality animation

Syntax h = Aero.Viewpoint

Description h = Aero.Viewpoint creates a viewpoint object for use with virtualreality animation.

See Aero.Viewpoint for further details.

4-329

Page 426: Aerospace Toolbox User Guide Matlab

VirtualRealityAnimation (Aero.VirtualRealityAnimation)

Purpose Construct virtual reality animation object

Syntax h = Aero.VirtualRealityAnimation

Description h = Aero.VirtualRealityAnimation constructs a virtual realityanimation object. The animation object is returned to h.

See Aero.VirtualRealityAnimation for further details.

See Also Aero.VirtualRealityAnimation

4-330

Page 427: Aerospace Toolbox User Guide Matlab

wrldmagm

Purpose Use World Magnetic Model

Note The '2000' or '2005' epoch year are outdated. For model yearsbetween 2000 and the start of 2010, use igrf11magm. For model yearsbetween 2010 and the start of 2015, use wrldmagm.

Syntax [xyz, h, dec, dip, f] = wrldmagm(height, lat, lon, dyear)[xyz, h, dec, dip, f] = wrldmagm(height, lat, lon, dyear,

'2010')[xyz, h, dec, dip, f] = wrldmagm(height, lat, lon, dyear,

'2005')[xyz, h, dec, dip, f] = wrldmagm(height, lat, lon, dyear,

'2000')

Description [xyz, h, dec, dip, f] = wrldmagm(height, lat, lon, dyear)calculates the Earth’s magnetic field at a specific location and time usingthe World Magnetic Model (WMM). The default WMM is WMM-2010,which is valid from January 1, 2010, until December 31, 2014.

Inputs required by wrldmagm are:

height A scalar value, in meters

lat A scalar geodetic latitude, in degrees, wherenorth latitude is positive, and south latitudeis negative

lon A scalar geodetic longitude, in degrees, whereeast longitude is positive, and west longitudeis negative

dyear A scalar decimal year. Decimal year is thedesired year in a decimal format to include anyfraction of the year that has already passed.

Outputs calculated for the Earth’s magnetic field include:

4-331

Page 428: Aerospace Toolbox User Guide Matlab

wrldmagm

xyz Magnetic field vector in nanotesla (nT)

h Horizontal intensity in nanotesla (nT)

dec Declination in degrees

dip Inclination in degrees

f Total intensity in nanotesla (nT)

[xyz, h, dec, dip, f] = wrldmagm(height, lat, lon, dyear,'2010') is an alternate method for calling WMM-2010, or 2010 epoch.

[xyz, h, dec, dip, f] = wrldmagm(height, lat, lon, dyear,'2005') is an alternate method for calling WMM-2005, or 2005 epoch.

[xyz, h, dec, dip, f] = wrldmagm(height, lat, lon, dyear,'2000') is the method for calling WMM-2000, or 2000 epoch.

Examples Calculate the magnetic model 1000 meters over Natick, Massachusettson July 4, 2010, using WMM-2010:

[XYZ, H, DEC, DIP, F] = wrldmagm(1000, 42.283, -71.35, decyear(2010,7,4),'2010')

XYZ =

1.0e+004 *

1.9229

-0.5139

4.8865

H =

1.9904e+004

DEC =

-14.9627

4-332

Page 429: Aerospace Toolbox User Guide Matlab

wrldmagm

DIP =

67.8376

F =

5.2763e+004

AssumptionsandLimitations

The WMM specification produces data that is reliable five years afterthe epoch of the model, which begins January 1 of the model yearselected. The WMM specification describes only the long-wavelengthspatial magnetic fluctuations due to the Earth’s core. Intermediate andshort-wavelength fluctuations, contributed from the crustal field (themantle and crust), are not included. Also, the substantial fluctuationsof the geomagnetic field, which occur constantly during magneticstorms and almost constantly in the disturbance field (auroral zones),are not included.

References http://www.ngdc.noaa.gov/geomag/WMM/DoDWMM.shtml

“NOAA Technical Report: The US/UK World Magnetic Model for2005–2010”

See Also decyear

4-333

Page 430: Aerospace Toolbox User Guide Matlab

Aero.Animation.Bodies property

Purpose Specify name of animation object

Values MATLAB array

Default: [ ]

Description This property specifies the bodies that the animation object contains.

4-334

Page 431: Aerospace Toolbox User Guide Matlab

Aero.Animation.Camera property

Purpose Specify camera that animation object contains

Values handle

Default: [ ]

Description This property specifies the camera that the animation object contains.

4-335

Page 432: Aerospace Toolbox User Guide Matlab

Aero.Animation.Figure property

Purpose Specify name of figure object

Values MATLAB array

Default: [ ]

Description This property specifies the name of the figure object.

4-336

Page 433: Aerospace Toolbox User Guide Matlab

Aero.Animation.FigureCustomizationFcn property

Purpose Specify figure customization function

Values MATLAB array

Default: [ ]

Description This property specifies the figure customization function.

4-337

Page 434: Aerospace Toolbox User Guide Matlab

Aero.Animation.FramesPerSecond property

Purpose Animation rate

Values MATLAB array

Default: 12

Description This property specifies rate in frames per second.

4-338

Page 435: Aerospace Toolbox User Guide Matlab

Aero.Animation.Name property

Purpose Specify name of animation object

Values String

Default: ' '

Description This property specifies the name of the animation object.

4-339

Page 436: Aerospace Toolbox User Guide Matlab

Aero.Animation.TCurrent property

Purpose Current time

Values double

Default: 0

Description This property specifies the current time.

4-340

Page 437: Aerospace Toolbox User Guide Matlab

Aero.Animation.TFinal property

Purpose End time

Values double

Default: NaN

Description This property specifies the end time.

4-341

Page 438: Aerospace Toolbox User Guide Matlab

Aero.Animation.TimeScaling property

Purpose Scaling time

Values double

Default: 1

Description This property specifies the time, in seconds.

4-342

Page 439: Aerospace Toolbox User Guide Matlab

Aero.Animation.TStart property

Purpose Start time

Values double

Default: NaN

Description This property specifies the start time.

4-343

Page 440: Aerospace Toolbox User Guide Matlab

Aero.Animation.TStart

4-344

Page 441: Aerospace Toolbox User Guide Matlab

A

AC3D Files and Thumbnails

Page 442: Aerospace Toolbox User Guide Matlab

A AC3D Files and Thumbnails

OverviewAerospace Toolbox demos use the following AC3D files, located in thematlabroot\toolbox\aero\astdemos folder. For other AC3D files, seehttp://www.flightgear.org/Downloads/ and click the Download Aircraftlink.

Thumbnail AC3D File

ac3d_xyzisrgb.ac

blueoctagon.ac

bluewedge.ac

body_xyzisrgb.ac

delta2.ac

greenarrow.ac

pa24 250_blue.ac

pa24 250_orange.ac

A-2

Page 443: Aerospace Toolbox User Guide Matlab

Overview

Thumbnail AC3D File

redwedge.ac

testrocket.ac

A-3

Page 444: Aerospace Toolbox User Guide Matlab

A AC3D Files and Thumbnails

A-4

Page 445: Aerospace Toolbox User Guide Matlab

Index

IndexAAC3D files A-2addBody (Aero.Animation) function 4-2addNode (Aero.VirtualRealityAnimation)

function 4-3addRoute (Aero.VirtualRealityAnimation)

function 4-4addViewpoint

(Aero.VirtualRealityAnimation)function 4-5

Aero.Animationexample 2-27flight simulator overview 2-27introducing 2-26

Aero.Animation object 4-9Aero.Body object 4-10Aero.Camera object 4-14Aero.FlightGearAnimation

demo 2-59introducing 2-26

Aero.FlightGearAnimation object 4-16Aero.Geometry object 4-20Aero.Node object 4-22Aero.Viewpoint function 4-26Aero.VirtualRealityAnimation

example 2-36flight simulator overview 2-36introducing 2-26

Aero.VirtualRealityAnimation object 4-27Aerospace Toolbox

3-D flight data playback 2-26AC3D files A-2animation objects 2-26coordinate systems 2-2flight data file access 2-14

aerospace unitsdefinition 2-12

airspeed function 4-30alphabeta function 4-31angle2dcm function 4-33

angle2quat function 4-36animation objects

introducing 2-26atmoscira function 4-41atmoscoesa function 4-38atmosisa function 4-48atmoslapse function 4-51atmosnonstd function 4-54atmosnrlmsise00 function 4-60atmospalt function 4-72

BBodies

properties 4-334Body (Aero.Body) function 4-74body coordinates 2-4

CCamera

properties 4-335Camera (Aero.Camera) function 4-75ClearTimer(Aero.FlightGearAnimation)

function 4-76convacc function 4-77convang function 4-79convangacc function 4-81convangvel function 4-83convdensity function 4-85convforce function 4-87convlength function 4-89convmass function 4-91convpres function 4-93convtemp function 4-95convvel function 4-97coordinate systems 2-2

approximations 2-3body coordinates 2-4definition 2-2

Index-1

Page 446: Aerospace Toolbox User Guide Matlab

Index

display 2-10Earth-centered coordinates 2-9ECEF coordinates 2-10ECI coordinates 2-9geocentric and geodetic latitudes 2-7modeling 2-4motion with respect to other planets 2-3navigation 2-7NED coordinates 2-8references 2-11rotational degrees of freedom 2-4 2-6translational degrees of freedom 2-4 to 2-5wind coordinates 2-5

correctairspeed function 4-99createBody (Aero.Animation) function 4-102

Ddatcomimport function 4-104dcm2alphabeta function 4-148dcm2angle function 4-150dcm2latlon function 4-153dcm2quat function 4-155dcmbody2wind function 4-156dcmecef2ned function 4-158decyear function 4-160delete (Aero.Animation) function 4-162delete (Aero.FlightGearAnimation)

function 4-163delete (Aero.VirtualRealityAnimation)

function 4-164demos

AC3D files A-2astfganim 2-52

digital DATCOMexamining 2-15importing 2-14overview 2-14plotting aerodynamic coefficients 2-22

digital DATCOM file

example 2-14importing data 2-15

dpressure function 4-165

EEarth-centered coordinates 2-9ECEF coordinates 2-10ecef2lla function 4-167ECI coordinates 2-9examples

astimportddatcom 2-14astmlanim 2-27astvranim 2-36type astdatcom.in 2-14

Ffganimation (Aero.FlightGearAnimation)

function 4-169Figure

properties 4-336FigureCustomizationFcn

properties 4-337findstartstoptimes (Aero.Body)

function 4-170findstartstoptimes (Aero.Node)

function 4-171flat2lla function 4-172FlightGear

flight simulator overview 2-52installing 2-56obtaining 2-53

flowfanno function 4-177flowisentropic function 4-183flownormalshock function 4-188flowprandtlmeyer function 4-194flowrayleigh function 4-198FramesPerSecond

properties 4-338

Index-2

Page 447: Aerospace Toolbox User Guide Matlab

Index

functionsaddBody (Aero.Animation) 4-2addNode

(Aero.VirtualRealityAnimation) 4-3AddRoute

(Aero.VirtualRealityAnimation) 4-4addViewpoint(Aero.VirtualRealityAnimation) 4-5Aero.Viewpoint 4-26airspeed 4-30alphabeta 4-31angle2dcm 4-33angle2quat 4-36atmoscira 4-41atmoscoesa 4-38atmosisa 4-48atmoslapse 4-51atmosnonstd 4-54atmosnrlmsise00 4-60atmospalt 4-72Body (Aero.Body) 4-74Camera (Aero.Camera) 4-75ClearTimer(Aero.FlightGearAnimation) 4-76convacc 4-77convang 4-79convangacc 4-81convangvel 4-83convdensity 4-85convforce 4-87convlength 4-89convmass 4-91convpres 4-93convtemp 4-95convvel 4-97correctairspeed 4-99createBody (Aero.Animation) 4-102datcomimport 4-104dcm2alphabeta 4-148dcm2angle 4-150dcm2latlon 4-153dcm2quat 4-155

dcmbody2wind 4-156dcmecef2ned 4-158decyear 4-160delete (Aero.Animation) 4-162delete

(Aero.FlightGearAnimation) 4-163delete

(Aero.VirtualRealityAnimation) 4-164dpressure 4-165ecef2lla 4-167fganimation

(Aero.FlightGearAnimation) 4-169findstartstoptimes (Aero.Body) 4-170findstartstoptimes (Aero.Node) 4-171flat2lla 4-172flowfanno 4-177flowisentropic 4-183flownormalshock 4-188flowprandtlmeyer 4-194flowrayleigh 4-198generatePatches (Aero.Body) 4-208GenerateRunScript

(Aero.FlightGearAnimation) 4-209geoc2geod 4-211geocradius 4-214geod2geoc 4-216geoidegm96 4-218geoidheight 4-221gravitycentrifugal 4-227gravitysphericalharmonic 4-230gravitywgs84 4-237gravityzonal 4-245hide (Aero.Animation) 4-252igrf11magm 4-253initialize (Aero.Animation) 4-257initialize

(Aero.FlightGearAnimation) 4-258initialize

(Aero.VirtualRealityAnimation) 4-259initIfNeeded (Aero.Animation) 4-260

Index-3

Page 448: Aerospace Toolbox User Guide Matlab

Index

juliandate 4-261leapyear 4-263lla2ecef 4-264lla2flat 4-266load (Aero.Body) 4-271machnumber 4-273mjuliandate 4-275move (Aero.Body) 4-278move (Aero.Node) 4-279moveBody (Aero.Animation) 4-281Node (Aero.Node) 4-282nodeInfo

(Aero.VirtualRealityAnimation) 4-283play (Aero.Animation) 4-284play (Aero.FlightGearAnimation) 4-288play

(Aero.VirtualRealityAnimation) 4-292quat2angle 4-295quat2dcm 4-297quatconj 4-299quatdivide 4-300quatinv 4-301quatmod 4-302quatmultiply 4-303quatnorm 4-305quatnormalize 4-306quatrotate 4-307read (Aero.Geometry) 4-309removeBody (Aero.Animation) 4-310removeNode

(Aero.VirtualRealityAnimation) 4-311removeViewpoint

(Aero.VirtualRealityAnimation) 4-312rrdelta 4-313rrsigma 4-315rrtheta 4-317saveas

(Aero.VirtualRealityAnimation) 4-319SetTimer(Aero.FlightGearAnimation) 4-320show (Aero.Animation) 4-321

update (Aero.Body) 4-322update (Aero.Camera) 4-323update

(Aero.FlightGearAnimation) 4-324update (Aero.Node) 4-325updateBodies (Aero.Animation) 4-326updateCamera (Aero.Animation) 4-327updateNodes

(Aero.VirtualRealityAnimation) 4-328Viewpoint (Aero.Viewpoint) 4-329VirtualRealityAnimation

(Aero.VirtualRealityAnimation) 4-330wrldmagm 4-331

GgeneratePatches (Aero.Body) function 4-208GenerateRunScript

(Aero.FlightGearAnimation)function 4-209

geoc2geod function 4-211geocentric and geodetic latitudes 2-7geocradius function 4-214geod2geoc function 4-216geoidegm96 function 4-218geoidheight function 4-221Geometry (Aero.Geometry) object 4-226gravitycentrifugal function 4-227gravitysphericalharmonic function 4-230gravitywgs84 function 4-237gravityzonal function 4-245

Hhide (Aero.Animation) function 4-252

Iigrf11magm function 4-253importing

digital DATCOM data 2-14

Index-4

Page 449: Aerospace Toolbox User Guide Matlab

Index

initialize (Aero.Animation) function 4-257initialize (Aero.FlightGearAnimation)

function 4-258initialize (Aero.VirtualRealityAnimation)

function 4-259initIfNeeded (Aero.Animation)

function 4-260

Jjuliandate function 4-261

Lleapyear function 4-263lla2ecef function 4-264lla2flat function 4-266load (Aero.Body) function 4-271

Mmachnumber function 4-273mjuliandate function 4-275modeling 2-4move (Aero.Body) function 4-278move (Aero.Node) function 4-279moveBody (Aero.Animation) function 4-281

NName

properties 4-339navigation 2-7NED coordinates 2-8Node (Aero.Node) function 4-282nodeInfo (Aero.VirtualRealityAnimation)

function 4-283

Oobjects

Aero.Animation 4-9Aero.Body 4-10Aero.Camera 4-14Aero.FlightGearAnimation 4-16Aero.Geometry 4-20Aero.Node 4-22Aero.VirtualRealityAnimation 4-27Geometry (Aero.Geometry) 4-226

Pplay (Aero.Animation) function 4-284play (Aero.FlightGearAnimation)

function 4-288play (Aero.VirtualRealityAnimation)

function 4-292properties

Bodies 4-334Camera 4-335Figure 4-336FigureCustomizationFcn 4-337FramesPerSecond 4-338Name 4-339TCurrent 4-340TFinal 4-341TimeScaling 4-342TStart 4-343

Qquat2angle function 4-295quat2dcm function 4-297quatconj function 4-299quatdivide function 4-300quatinv function 4-301quatmod function 4-302quatmultiply function 4-303quatnorm function 4-305quatnormalize function 4-306quatrotate function 4-307

Index-5

Page 450: Aerospace Toolbox User Guide Matlab

Index

Rread (Aero.Geometry) function 4-309removeBody (Aero.Animation) function 4-310removeNode (Aero.VirtualRealityAnimation)

function 4-311removeViewpoint

(Aero.VirtualRealityAnimation)function 4-312

rotational degrees of freedom 2-4 2-6rrdelta function 4-313rrsigma function 4-315rrtheta function 4-317

Ssaveas (Aero.VirtualRealityAnimation)

function 4-319SetTimer(Aero.FlightGearAnimation)

function 4-320show (Aero.Animation) function 4-321

TTCurrent

properties 4-340TFinal

properties 4-341TimeScaling

properties 4-342translational degrees of freedom 2-4 to 2-5

TStartproperties 4-343

Uupdate (Aero.Body) function 4-322update (Aero.Camera) function 4-323update (Aero.FlightGearAnimation)

function 4-324update (Aero.Node) function 4-325updateBodies (Aero.Animation)

function 4-326updateCamera (Aero.Animation)

function 4-327updateNodes

(Aero.VirtualRealityAnimation)function 4-328

VViewpoint (Aero.Viewpoint) function 4-329VirtualRealityAnimation

(Aero.VirtualRealityAnimation)function 4-330

Wwind coordinates 2-5wrldmagm function 4-331

Index-6