1 /* 2 3 -Procedure vupack_c ( Unpack three scalar components from a vector ) 4 5 -Abstract 6 7 Unpack three scalar components from a vector. 8 9 -Disclaimer 10 11 THIS SOFTWARE AND ANY RELATED MATERIALS WERE CREATED BY THE 12 CALIFORNIA INSTITUTE OF TECHNOLOGY (CALTECH) UNDER A U.S. 13 GOVERNMENT CONTRACT WITH THE NATIONAL AERONAUTICS AND SPACE 14 ADMINISTRATION (NASA). THE SOFTWARE IS TECHNOLOGY AND SOFTWARE 15 PUBLICLY AVAILABLE UNDER U.S. EXPORT LAWS AND IS PROVIDED "AS-IS" 16 TO THE RECIPIENT WITHOUT WARRANTY OF ANY KIND, INCLUDING ANY 17 WARRANTIES OF PERFORMANCE OR MERCHANTABILITY OR FITNESS FOR A 18 PARTICULAR USE OR PURPOSE (AS SET FORTH IN UNITED STATES UCC 19 SECTIONS 2312-2313) OR FOR ANY PURPOSE WHATSOEVER, FOR THE 20 SOFTWARE AND RELATED MATERIALS, HOWEVER USED. 21 22 IN NO EVENT SHALL CALTECH, ITS JET PROPULSION LABORATORY, OR NASA 23 BE LIABLE FOR ANY DAMAGES AND/OR COSTS, INCLUDING, BUT NOT 24 LIMITED TO, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY KIND, 25 INCLUDING ECONOMIC DAMAGE OR INJURY TO PROPERTY AND LOST PROFITS, 26 REGARDLESS OF WHETHER CALTECH, JPL, OR NASA BE ADVISED, HAVE 27 REASON TO KNOW, OR, IN FACT, SHALL KNOW OF THE POSSIBILITY. 28 29 RECIPIENT BEARS ALL RISK RELATING TO QUALITY AND PERFORMANCE OF 30 THE SOFTWARE AND ANY RELATED MATERIALS, AND AGREES TO INDEMNIFY 31 CALTECH AND NASA FOR ALL THIRD-PARTY CLAIMS RESULTING FROM THE 32 ACTIONS OF RECIPIENT IN THE USE OF THE SOFTWARE. 33 34 -Required_Reading 35 36 None. 37 38 -Keywords 39 40 VECTOR 41 42 */ 43 44 #include "SpiceUsr.h" 45 #undef vupack_c 46 47 vupack_c(ConstSpiceDouble v[3],SpiceDouble * x,SpiceDouble * y,SpiceDouble * z)48 void vupack_c ( ConstSpiceDouble v[3], 49 SpiceDouble * x, 50 SpiceDouble * y, 51 SpiceDouble * z ) 52 53 /* 54 55 -Brief_I/O 56 57 VARIABLE I/O DESCRIPTION 58 -------- --- -------------------------------------------------- 59 v I 3-vector. 60 x, 61 y, 62 z O Scalar components of 3-vector. 63 64 -Detailed_Input 65 66 v is a double precision 3-vector. 67 68 -Detailed_Output 69 70 x, 71 y, 72 z are the scalar components of the 3-vector v. On output, 73 the following equalities hold: 74 75 x = v[0] 76 y = v[1] 77 z = v[2] 78 79 -Parameters 80 81 None. 82 83 -Particulars 84 85 Basically, this is just shorthand notation for the common 86 sequence 87 88 x = v[0]; 89 y = v[1]; 90 z = v[2] ; 91 92 The routine is useful largely for two reasons. First, it 93 reduces the chance that the programmer will make a "cut and 94 paste" mistake, like 95 96 x = v[0]; 97 y = v[0]; 98 z = v[0]; 99 100 Second, it makes conversions between equivalent units simpler, 101 and clearer. For instance, the sequence 102 103 x = v[0] * rpd_c(); 104 y = v[1] * rpd_c(); 105 z = v[2] * rpd_c(); 106 107 can be replaced by the (nearly) equivalent sequence 108 109 vscl_c ( rpd_c(), v, v ); 110 vupack_c ( v, &x, &y, &z ); 111 112 -Examples 113 114 See: Detailed_Description. 115 116 -Restrictions 117 118 None. 119 120 -Exceptions 121 122 Error free. 123 124 -Files 125 126 None. 127 128 -Author_and_Institution 129 130 N.J. Bachman (JPL) 131 I.M. Underwood (JPL) 132 133 -Literature_References 134 135 None. 136 137 -Version 138 139 -CSPICE Version 1.0.0, 07-NOV-2006 (NJB) 140 141 Corrected header errors that claimed this routine 142 performs the function of vpack_c. 143 144 -CSPICE Version 1.0.0, 28-JUN-1999 (IMU) (NJB) 145 146 -Index_Entries 147 148 149 unpack three scalar components from a vector 150 151 -& 152 */ 153 154 { /* Begin vupack_c */ 155 156 157 *x = v[0]; 158 *y = v[1]; 159 *z = v[2]; 160 161 162 } /* End vupack_c */ 163 164