| unorm_c |
|
Table of contents
Procedure
unorm_c ( Unit vector and norm, 3 dimensional )
void unorm_c ( ConstSpiceDouble v1[3],
SpiceDouble vout[3],
SpiceDouble * vmag )
AbstractNormalize a double precision 3-vector and return its magnitude. Required_ReadingNone. KeywordsVECTOR Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- v1 I Vector to be normalized. vout O Unit vector v1 / |v1|. vmag O Magnitude of v1, i.e. |v1|. Detailed_Input
v1 is an arbitrary 3-vector, including the
zero vector.
Detailed_Output
vout is the unit vector in the direction of `v1'. If `v1' is
the zero vector, then `vout' will also be the zero
vector.
vmag is the magnitude of `v1'.
ParametersNone. ExceptionsError free. FilesNone. Particularsunorm_c references a function called vnorm_c (which itself is numerically stable) to calculate the norm of the input vector `v1'. If the norm is equal to zero, then each component of the output vector `vout' is set to zero. Otherwise, `vout' is calculated by dividing `v1' by the norm. Examples
The numerical results shown for this example may differ across
platforms. The results depend on the SPICE kernels used as
input, the compiler and supporting libraries, and the machine
specific arithmetic implementation.
1) Define a set of vectors and compute their corresponding unit
vector and magnitude.
Example code begins here.
/.
Program unorm_ex1
./
#include <stdio.h>
#include "SpiceUsr.h"
int main( )
{
/.
Local parameters.
./
#define SETSIZ 2
/.
Local variables.
./
SpiceDouble vmag;
SpiceDouble vout [3];
SpiceInt i;
/.
Define the vector set.
./
SpiceDouble seta [SETSIZ][3] = {
{5.0, 12.0, 0.0},
{1.e-7, 2.e-7, 2.e-7} };
/.
Calculate the unit vectors and magnitudes.
./
for ( i = 0; i < SETSIZ; i++ )
{
unorm_c ( seta[i], vout, &vmag );
printf( "Vector : %12.8f %12.8f %12.8f\n",
seta[i][0], seta[i][1], seta[i][2] );
printf( "Unit vector: %12.8f %12.8f %12.8f\n",
vout[0], vout[1], vout[2] );
printf( "Magnitude : %12.8f\n", vmag );
printf( " \n" );
}
return ( 0 );
}
When this program was executed on a Mac/Intel/cc/64-bit
platform, the output was:
Vector : 5.00000000 12.00000000 0.00000000
Unit vector: 0.38461538 0.92307692 0.00000000
Magnitude : 13.00000000
Vector : 0.00000010 0.00000020 0.00000020
Unit vector: 0.33333333 0.66666667 0.66666667
Magnitude : 0.00000030
RestrictionsNone. Literature_ReferencesNone. Author_and_InstitutionN.J. Bachman (JPL) J. Diaz del Rio (ODC Space) W.M. Owen (JPL) W.L. Taber (JPL) E.D. Wright (JPL) Version
-CSPICE Version 1.1.1, 10-AUG-2021 (JDR)
Updated the header to comply with NAIF standard. Added
complete code example to -Examples section.
Header sections have been reordered.
-CSPICE Version 1.1.0, 22-OCT-1998 (NJB)
Made input vector const.
-CSPICE Version 1.0.0, 17-OCT-1997 (EDW) (WMO) (WLT)
Index_Entries3-dimensional unit vector and norm |
Fri Dec 31 18:41:14 2021