Table of contents
CSPICE_SAELGV calculates the semi-axis vectors of an ellipse generated
by two arbitrary three-dimensional vectors.
Given:
vec1,
vec2 the two vectors defining an ellipse (the generating vectors).
[3,1] = size(vec1); double = class(vec1)
[3,1] = size(vec2); double = class(vec2)
The ellipse is the set of points
center + cos(theta) vec1 + sin(theta) vec2
where theta ranges over 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.
'vec1' and 'vec2' need not be linearly independent;
degenerate input ellipses are allowed.
the call:
[ smajor, sminor ] = cspice_saelgv( vec1, vec2 )
returns:
smajor the semi-major axis of the ellipse.
[3,1] = size(smajor); double = class(smajor)
sminor the semi-minor axis of the ellipse.
[3,1] = size(sminor); double = class(sminor)
None.
Any numerical results shown for this example may differ between
platforms as the results depend on the SPICE kernels used as input
and the machine specific arithmetic implementation.
1) Define two arbitrary, linearly independent, vectors and
calculate the semi-major and semi-minor axes of the elipse
generated by them.
Example code begins here.
function saelgv_ex1()
%
% Define two arbitrary, linearly independent, vectors.
%
vec1 = [ 1; 1; 1 ];
vec2 = [ 1; -1; 1 ];
%
% Calculate the semi-major and semi-minor axes of an
% ellipse generated by the two vectors.
%
[smajor, sminor] = cspice_saelgv( vec1, vec2 );
fprintf( 'Semi-major axis: %12.8f %12.8f %12.8f\n', smajor);
fprintf( 'Semi-minor axis: %12.8f %12.8f %12.8f\n', sminor);
When this program was executed on a Mac/Intel/Octave6.x/64-bit
platform, the output was:
Semi-major axis: 1.41421356 -0.00000000 1.41421356
Semi-minor axis: 0.00000000 1.41421356 0.00000000
We note here that 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.
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.
2) If any of the input arguments, `vec1' or `vec2', is undefined,
an error is signaled by the Matlab error handling system.
3) If any of the input arguments, `vec1' or `vec2', is not of the
expected type, or it does not have the expected dimensions and
size, an error is signaled by the Mice interface.
None.
None.
MICE.REQ
ELLIPSES.REQ
[1] T. Apostol, "Calculus, Vol. II," chapter 5, "Eigenvalues of
Operators Acting on Euclidean Spaces," John Wiley & Sons,
1969.
J. Diaz del Rio (ODC Space)
E.D. Wright (JPL)
-Mice Version 1.1.0, 10-AUG-2021 (EDW) (JDR)
Edited the -Examples section to comply with NAIF standard.
Reformatted example's output and added problem statement.
Added -Parameters, -Exceptions, -Files, -Restrictions,
-Literature_References and -Author_and_Institution sections.
Eliminated use of "lasterror" in rethrow.
Removed reference to the function's corresponding CSPICE header from
-Required_Reading section.
-Mice Version 1.0.1, 23-MAR-2015 (EDW)
Edited -I/O section to conform to NAIF standard for Mice
documentation.
-Mice Version 1.0.0, 07-MAY-2008 (EDW)
semi-axes of ellipse from generating vectors
|