void frame_c ( SpiceDouble x,
SpiceDouble z )
Given a vector x, this routine builds a right handed
orthonormal frame x,y,z where the output x is parallel to
the input x.
VARIABLE I/O DESCRIPTION
-------- --- ------------------------------------------------
x I/O Input vector. A parallel unit vector on output.
y O Unit vector in the plane orthogonal to x.
z O Unit vector given by x X y.
x This vector is used to form the first vector of a
right-handed orthonormal triple.
z form a right handed orthonormal frame, where x is
now a unit vector parallel to the original input
vector x. There are no special geometric properties
connected to y and z (other than that they complete the
right handed frame).
1) If x on input is the zero vector the ``standard'' frame (ijk)
Given an input vector x, this routine returns unit vectors x,
y, and z such that xyz forms a right-handed orthonormal frame
where the output x is parallel to the input x.
This routine is intended primarily to provide a basis for
the plane orthogonal to x. There are no special properties
associated with y and z other than that the resulting xyz frame
is right handed and orthonormal. There are an infinite
collection of pairs (y,z) that could be used to this end.
Even though for a given x, y and z are uniquely determined, users
should regard the pair (y,z) as a random selection from this
For instance, when attempting to determine the locus of points
that make up the limb of a triaxial body, it is a straightforward
matter to determine the normal to the limb plane. To find
the actual parametric equation of the limb one needs to have
a basis of the plane. This routine can be used to get a basis
in which one can describe the curve and from which one can
then determine the principal axes of the limb ellipse.
In addition to using a vector to construct a right handed frame
with the x-axis aligned with the input vector, one can construct
right handed frames with any of the axes aligned with the input
For example suppose we want a right hand frame xyz with the
z-axis aligned with some vector v. Assign v to z
z = v;
z = v;
z = v;
Then call frame_c with the arguments x,y,z cycled so that z
frame_c (z, x, y);
The resulting xyz frame will be orthonormal with z parallel
to the vector v.
To get an xyz frame with y parallel to v perform the following
y = v;
y = v;
y = v;
frame_c (y, z, x);
W.L. Taber (JPL)
I.M. Underwood (JPL)
-CSPICE Version 1.0.0, 26-MAR-1999 (NJB)
build a right handed coordinate frame