File Coverage

erfasrc/src/rv2m.c
Criterion Covered Total %
statement 0 22 0.0
branch 0 2 0.0
condition n/a
subroutine n/a
pod n/a
total 0 24 0.0


line stmt bran cond sub pod time code
1             #include "erfa.h"
2              
3 0           void eraRv2m(double w[3], double r[3][3])
4             /*
5             ** - - - - - - - -
6             ** e r a R v 2 m
7             ** - - - - - - - -
8             **
9             ** Form the r-matrix corresponding to a given r-vector.
10             **
11             ** Given:
12             ** w double[3] rotation vector (Note 1)
13             **
14             ** Returned:
15             ** r double[3][3] rotation matrix
16             **
17             ** Notes:
18             **
19             ** 1) A rotation matrix describes a rotation through some angle about
20             ** some arbitrary axis called the Euler axis. The "rotation vector"
21             ** supplied to This function has the same direction as the Euler
22             ** axis, and its magnitude is the angle in radians.
23             **
24             ** 2) If w is null, the unit matrix is returned.
25             **
26             ** 3) The reference frame rotates clockwise as seen looking along the
27             ** rotation vector from the origin.
28             **
29             ** Copyright (C) 2013-2020, NumFOCUS Foundation.
30             ** Derived, with permission, from the SOFA library. See notes at end of file.
31             */
32             {
33             double x, y, z, phi, s, c, f;
34              
35              
36             /* Euler angle (magnitude of rotation vector) and functions. */
37 0           x = w[0];
38 0           y = w[1];
39 0           z = w[2];
40 0           phi = sqrt(x*x + y*y + z*z);
41 0           s = sin(phi);
42 0           c = cos(phi);
43 0           f = 1.0 - c;
44              
45             /* Euler axis (direction of rotation vector), perhaps null. */
46 0 0         if (phi > 0.0) {
47 0           x /= phi;
48 0           y /= phi;
49 0           z /= phi;
50             }
51              
52             /* Form the rotation matrix. */
53 0           r[0][0] = x*x*f + c;
54 0           r[0][1] = x*y*f + z*s;
55 0           r[0][2] = x*z*f - y*s;
56 0           r[1][0] = y*x*f - z*s;
57 0           r[1][1] = y*y*f + c;
58 0           r[1][2] = y*z*f + x*s;
59 0           r[2][0] = z*x*f + y*s;
60 0           r[2][1] = z*y*f - x*s;
61 0           r[2][2] = z*z*f + c;
62              
63 0           return;
64              
65             }
66             /*----------------------------------------------------------------------
67             **
68             **
69             ** Copyright (C) 2013-2020, NumFOCUS Foundation.
70             ** All rights reserved.
71             **
72             ** This library is derived, with permission, from the International
73             ** Astronomical Union's "Standards of Fundamental Astronomy" library,
74             ** available from http://www.iausofa.org.
75             **
76             ** The ERFA version is intended to retain identical functionality to
77             ** the SOFA library, but made distinct through different function and
78             ** file names, as set out in the SOFA license conditions. The SOFA
79             ** original has a role as a reference standard for the IAU and IERS,
80             ** and consequently redistribution is permitted only in its unaltered
81             ** state. The ERFA version is not subject to this restriction and
82             ** therefore can be included in distributions which do not support the
83             ** concept of "read only" software.
84             **
85             ** Although the intent is to replicate the SOFA API (other than
86             ** replacement of prefix names) and results (with the exception of
87             ** bugs; any that are discovered will be fixed), SOFA is not
88             ** responsible for any errors found in this version of the library.
89             **
90             ** If you wish to acknowledge the SOFA heritage, please acknowledge
91             ** that you are using a library derived from SOFA, rather than SOFA
92             ** itself.
93             **
94             **
95             ** TERMS AND CONDITIONS
96             **
97             ** Redistribution and use in source and binary forms, with or without
98             ** modification, are permitted provided that the following conditions
99             ** are met:
100             **
101             ** 1 Redistributions of source code must retain the above copyright
102             ** notice, this list of conditions and the following disclaimer.
103             **
104             ** 2 Redistributions in binary form must reproduce the above copyright
105             ** notice, this list of conditions and the following disclaimer in
106             ** the documentation and/or other materials provided with the
107             ** distribution.
108             **
109             ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
110             ** the International Astronomical Union nor the names of its
111             ** contributors may be used to endorse or promote products derived
112             ** from this software without specific prior written permission.
113             **
114             ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
115             ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
116             ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
117             ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
118             ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
119             ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
120             ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
121             ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
122             ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
123             ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
124             ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
125             ** POSSIBILITY OF SUCH DAMAGE.
126             **
127             */