xsmatrix3x3.h
Go to the documentation of this file.
1 
2 // Copyright (c) 2003-2021 Xsens Technologies B.V. or subsidiaries worldwide.
3 // All rights reserved.
4 //
5 // Redistribution and use in source and binary forms, with or without modification,
6 // are permitted provided that the following conditions are met:
7 //
8 // 1. Redistributions of source code must retain the above copyright notice,
9 // this list of conditions, and the following disclaimer.
10 //
11 // 2. Redistributions in binary form must reproduce the above copyright notice,
12 // this list of conditions, and the following disclaimer in the documentation
13 // and/or other materials provided with the distribution.
14 //
15 // 3. Neither the names of the copyright holders nor the names of their contributors
16 // may be used to endorse or promote products derived from this software without
17 // specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
20 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
22 // THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 // SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
24 // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR
26 // TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.THE LAWS OF THE NETHERLANDS
28 // SHALL BE EXCLUSIVELY APPLICABLE AND ANY DISPUTES SHALL BE FINALLY SETTLED UNDER THE RULES
29 // OF ARBITRATION OF THE INTERNATIONAL CHAMBER OF COMMERCE IN THE HAGUE BY ONE OR MORE
30 // ARBITRATORS APPOINTED IN ACCORDANCE WITH SAID RULES.
31 //
32 
33 
34 // Copyright (c) 2003-2021 Xsens Technologies B.V. or subsidiaries worldwide.
35 // All rights reserved.
36 //
37 // Redistribution and use in source and binary forms, with or without modification,
38 // are permitted provided that the following conditions are met:
39 //
40 // 1. Redistributions of source code must retain the above copyright notice,
41 // this list of conditions, and the following disclaimer.
42 //
43 // 2. Redistributions in binary form must reproduce the above copyright notice,
44 // this list of conditions, and the following disclaimer in the documentation
45 // and/or other materials provided with the distribution.
46 //
47 // 3. Neither the names of the copyright holders nor the names of their contributors
48 // may be used to endorse or promote products derived from this software without
49 // specific prior written permission.
50 //
51 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
52 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
53 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
54 // THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
55 // SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
56 // OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
57 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR
58 // TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
59 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.THE LAWS OF THE NETHERLANDS
60 // SHALL BE EXCLUSIVELY APPLICABLE AND ANY DISPUTES SHALL BE FINALLY SETTLED UNDER THE RULES
61 // OF ARBITRATION OF THE INTERNATIONAL CHAMBER OF COMMERCE IN THE HAGUE BY ONE OR MORE
62 // ARBITRATORS APPOINTED IN ACCORDANCE WITH SAID RULES.
63 //
64 
65 #ifndef XSMATRIX3X3_H
66 #define XSMATRIX3X3_H
67 
68 #include "xsmatrix.h"
69 
70 struct XsMatrix3x3;
71 #ifdef __cplusplus
72 extern "C" {
73 #endif
74 #ifndef __cplusplus
75 typedef struct XsMatrix3x3 XsMatrix3x3;
76 #endif
77 
78 
80 XSTYPES_DLL_API void XsMatrix3x3_assign(XsMatrix3x3* thisPtr, const XsReal* src, XsSize srcStride);
83 
84 #ifdef __cplusplus
85 } // extern "C"
86 
87 /* This is allowed since the C standard says that no padding appears before the first member of a struct.
88  Basically we're defining a union between a C++ inherited type and a C encapsulated type.
89 */
90 struct XsMatrix3x3 : public XsMatrix
91 {
93 #endif
94 #ifndef __cplusplus
95  struct XsMatrix3x3
96  {
97  struct XsMatrix m_matrix;
98 #endif
100 
101 #ifdef __cplusplus
102  public:
105  {
106  }
107 
109  XsMatrix3x3(const XsMatrix& other) : XsMatrix(other, m_fixedData, 3, 3, 3, XSDF_FixedSize)
110  {
111  }
112 
114  XsMatrix3x3(const XsMatrix3x3& other) : XsMatrix(other, m_fixedData, 3, 3, 3, XSDF_FixedSize)
115  {
116  }
117 
119  XsMatrix3x3(XsReal r1c1, XsReal r1c2, XsReal r1c3,
120  XsReal r2c1, XsReal r2c2, XsReal r2c3,
121  XsReal r3c1, XsReal r3c2, XsReal r3c3) : XsMatrix(m_fixedData, 3, 3, 3, XSDF_FixedSize)
122  {
123  m_fixedData[0] = r1c1;
124  m_fixedData[1] = r1c2;
125  m_fixedData[2] = r1c3;
126  m_fixedData[3] = r2c1;
127  m_fixedData[4] = r2c2;
128  m_fixedData[5] = r2c3;
129  m_fixedData[6] = r3c1;
130  m_fixedData[7] = r3c2;
131  m_fixedData[8] = r3c3;
132  }
133  // using XsMatrix::operator=;
134  // using XsMatrix::operator[];
135 #endif
136  };
137 #if 0
138 } // for Qt lupdate parser
139 #endif
140 
141 #endif
XsMatrix
A class that represents a matrix of real numbers.
Definition: xsmatrix.h:107
XSCCONST
#define XSCCONST
Definition: xstypesconfig.h:115
XsMatrix3x3::XsMatrix3x3_destruct
void XsMatrix3x3_destruct(XsMatrix3x3 *thisPtr)
Frees the Matrix3x3.
Definition: xsmatrix3x3.c:101
XsMatrix3x3
struct XsMatrix3x3 XsMatrix3x3
Definition: xsmatrix3x3.h:75
XsMatrix3x3::XsMatrix3x3_construct
void XsMatrix3x3_construct(XsMatrix3x3 *thisPtr)
Init the XsMatrix3x3.
Definition: xsmatrix3x3.c:77
XsMatrix3x3::XsMatrix3x3_assign
void XsMatrix3x3_assign(XsMatrix3x3 *thisPtr, const XsReal *src, XsSize srcStride)
Init the XsMatrix3x3 and copy the data from src into the matrix if src is not null.
Definition: xsmatrix3x3.c:83
XSDF_FixedSize
@ XSDF_FixedSize
The contained data points to a fixed-size buffer, this allows creation of dynamic objects on the stac...
Definition: xstypedefs.h:111
xsmatrix.h
XSCPPPROTECTED
#define XSCPPPROTECTED
Definition: xstypesconfig.h:116
XsReal
double XsReal
Defines the floating point type used by the Xsens libraries.
Definition: xstypedefs.h:73
XsSize
size_t XsSize
XsSize must be unsigned number!
Definition: xstypedefs.h:74
XsMatrix3x3
A class that represents a fixed size (3x3) matrix.
Definition: xsmatrix3x3.h:95
XsMatrix3x3::m_matrix
struct XsMatrix m_matrix
The underlying XsMatrix.
Definition: xsmatrix3x3.h:97
XsMatrix3x3::m_fixedData
XsReal XSCCONST m_fixedData[9]
Fixed storage for the elements of the matrix.
Definition: xsmatrix3x3.h:99
XSTYPES_DLL_API
#define XSTYPES_DLL_API
Definition: xstypesconfig.h:65
XsMatrix3x3::XsMatrix3x3_copy
void XsMatrix3x3_copy(XsMatrix *copy, XsMatrix3x3 const *src)
Copy the contents of the XsMatrix3x3 to copy.
Definition: xsmatrix3x3.c:110


xsens_mti_driver
Author(s):
autogenerated on Sun Sep 3 2023 02:43:20