Index of Functions: A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X
saelgv_c

 Procedure Abstract Required_Reading Keywords Brief_I/O Detailed_Input Detailed_Output Parameters Exceptions Files Particulars Examples Restrictions Literature_References Author_and_Institution Version Index_Entries

Procedure

saelgv_c ( Semi-axes of ellipse from generating vectors )

void saelgv_c ( ConstSpiceDouble   vec1  ,
ConstSpiceDouble   vec2  ,
SpiceDouble        smajor,
SpiceDouble        sminor  )

Abstract

Find semi-axis vectors of an ellipse generated by two arbitrary
three-dimensional vectors.

ELLIPSES

ELLIPSE
GEOMETRY
MATH

Brief_I/O

VARIABLE  I/O  DESCRIPTION
--------  ---  --------------------------------------------------
vec1,
vec2       I   Two vectors used to generate an ellipse.
smajor     O   Semi-major axis of ellipse.
sminor     O   Semi-minor axis of ellipse.

Detailed_Input

vec1,
vec2        are two vectors that define an ellipse.
The ellipse is the set of points in 3-space

center  +  cos(theta) vec1  +  sin(theta) vec2

where theta is in the interval ( -pi, pi ] and
`center' is an arbitrary point at which the ellipse
is centered. An ellipse's semi-axes are
independent of its center, so the vector `center'
shown above is not an input to this routine.

`vec2' and `vec1' need not be linearly independent;
degenerate input ellipses are allowed.

Detailed_Output

smajor,
sminor      are semi-major and semi-minor axes of the ellipse,
respectively. `smajor' and `sminor' may overwrite
either of `vec1' or `vec2'.

None.

Exceptions

1)  If one or more semi-axes of the ellipse is found to be the
zero vector, the input ellipse is degenerate. This case is
not treated as an error; the calling program must determine
whether the semi-axes are suitable for the program's intended
use.

None.

Particulars

Two linearly independent but not necessarily orthogonal vectors
`vec1' and `vec2' can define an ellipse centered at the origin: the
ellipse is the set of points in 3-space

center  +  cos(theta) vec1  +  sin(theta) vec2

where theta is in the interval (-pi, pi] and `center' is an
arbitrary point at which the ellipse is centered.

This routine finds vectors that constitute semi-axes of an
ellipse that is defined, except for the location of its center,
by `vec1' and `vec2'. The semi-major axis is a vector of largest
possible magnitude in the set

cos(theta) vec1  +  sin(theta) vec2

There are two such vectors; they are additive inverses of each
other. The semi-minor axis is an analogous vector of smallest
possible magnitude. The semi-major and semi-minor axes are
orthogonal to each other. If `smajor' and `sminor' are choices of
semi-major and semi-minor axes, then the input ellipse can also
be represented as the set of points

center  +  cos(theta) smajor  +  sin(theta) sminor

where theta is in the interval (-pi, pi].

The capability of finding the axes of an ellipse is useful in
finding the image of an ellipse under a linear transformation.
Finding this image is useful for determining the orthogonal and
gnomonic projections of an ellipse, and also for finding the limb
and terminator of an ellipsoidal body.

Examples

1)  An example using inputs that can be readily checked by
hand calculation.

Let

vec1 = ( 1.,  1.,  1. )
vec2 = ( 1., -1.,  1. )

The function call

saelgv_c ( vec1, vec2, smajor, sminor );

returns

smajor = ( -1.414213562373095,
0.0,
-1.414213562373095 )
and

sminor = ( -2.4037033579794549D-17
1.414213562373095,
-2.4037033579794549D-17 )

2)   This example is taken from the code of the CSPICE routine
pjelpl_c, which finds the orthogonal projection of an ellipse
onto a plane. The code listed below is the portion used to
find the semi-axes of the projected ellipse.

#include "SpiceUsr.h"
.
.
.

/.
Project vectors defining axes of ellipse onto plane.
./
vperp_c ( vec1,   normal,  proj1 );
vperp_c ( vec2,   normal,  proj2 );

.
.
.

saelgv_c ( proj1,  proj2,  smajor,  sminor );

The call to saelgv_c determines the required semi-axes.

None.

Literature_References

  T. Apostol, "Calculus, Vol. II," chapter 5, "Eigenvalues of
Operators Acting on Euclidean Spaces," John Wiley & Sons,
1969.

Author_and_Institution

N.J. Bachman        (JPL)
J. Diaz del Rio     (ODC Space)
W.L. Taber          (JPL)

Version

-CSPICE Version 1.0.1, 13-APR-2021 (JDR)

Edited the header to comply with NAIF standard.

-CSPICE Version 1.0.0, 12-JUN-1999 (NJB) (WLT)

Index_Entries

semi-axes of ellipse from generating vectors
Fri Dec 31 18:41:11 2021