__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
////////////////////////////////////////////////////////////////////////////
//
// This file is part of RTIMULib
//
// Copyright (c) 2014-2015, richards-tech, LLC
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#ifndef _RTMATH_H_
#define _RTMATH_H_
#include "RTIMUHal.h"
// The fundamental float type
#ifdef RTMATH_USE_DOUBLE
typedef double RTFLOAT;
#else
typedef float RTFLOAT;
#endif
// Useful constants
#define RTMATH_PI 3.1415926535
#define RTMATH_DEGREE_TO_RAD (RTMATH_PI / 180.0)
#define RTMATH_RAD_TO_DEGREE (180.0 / RTMATH_PI)
class RTVector3;
class RTMatrix4x4;
class RTQuaternion;
class RTMath
{
public:
// convenient display routines
static const char *displayRadians(const char *label, RTVector3& vec);
static const char *displayDegrees(const char *label, RTVector3& vec);
static const char *display(const char *label, RTQuaternion& quat);
static const char *display(const char *label, RTMatrix4x4& mat);
// currentUSecsSinceEpoch() is the source of all timestamps and
// is the number of uS since the standard epoch
static uint64_t currentUSecsSinceEpoch();
// poseFromAccelMag generates pose Euler angles from measured settings
static RTVector3 poseFromAccelMag(const RTVector3& accel, const RTVector3& mag);
// Takes signed 16 bit data from a char array and converts it to a vector of scaled RTFLOATs
static void convertToVector(unsigned char *rawData, RTVector3& vec, RTFLOAT scale, bool bigEndian);
// Takes a pressure in hPa and returns height above sea level in meters
static RTFLOAT convertPressureToHeight(RTFLOAT pressure, RTFLOAT staticPressure = 1013.25);
private:
static char m_string[1000]; // for the display routines
};
class RTVector3
{
public:
RTVector3();
RTVector3(RTFLOAT x, RTFLOAT y, RTFLOAT z);
const RTVector3& operator +=(RTVector3& vec);
const RTVector3& operator -=(RTVector3& vec);
RTVector3& operator =(const RTVector3& vec);
RTFLOAT length();
void normalize();
void zero();
const char *display();
const char *displayDegrees();
static float dotProduct(const RTVector3& a, const RTVector3& b);
static void crossProduct(const RTVector3& a, const RTVector3& b, RTVector3& d);
void accelToEuler(RTVector3& rollPitchYaw) const;
void accelToQuaternion(RTQuaternion& qPose) const;
inline RTFLOAT x() const { return m_data[0]; }
inline RTFLOAT y() const { return m_data[1]; }
inline RTFLOAT z() const { return m_data[2]; }
inline RTFLOAT data(const int i) const { return m_data[i]; }
inline void setX(const RTFLOAT val) { m_data[0] = val; }
inline void setY(const RTFLOAT val) { m_data[1] = val; }
inline void setZ(const RTFLOAT val) { m_data[2] = val; }
inline void setData(const int i, RTFLOAT val) { m_data[i] = val; }
inline void fromArray(RTFLOAT *val) { memcpy(m_data, val, 3 * sizeof(RTFLOAT)); }
inline void toArray(RTFLOAT *val) const { memcpy(val, m_data, 3 * sizeof(RTFLOAT)); }
private:
RTFLOAT m_data[3];
};
class RTQuaternion
{
public:
RTQuaternion();
RTQuaternion(RTFLOAT scalar, RTFLOAT x, RTFLOAT y, RTFLOAT z);
RTQuaternion& operator +=(const RTQuaternion& quat);
RTQuaternion& operator -=(const RTQuaternion& quat);
RTQuaternion& operator *=(const RTQuaternion& qb);
RTQuaternion& operator *=(const RTFLOAT val);
RTQuaternion& operator -=(const RTFLOAT val);
RTQuaternion& operator =(const RTQuaternion& quat);
const RTQuaternion operator *(const RTQuaternion& qb) const;
const RTQuaternion operator *(const RTFLOAT val) const;
const RTQuaternion operator -(const RTQuaternion& qb) const;
const RTQuaternion operator -(const RTFLOAT val) const;
void normalize();
void toEuler(RTVector3& vec);
void fromEuler(RTVector3& vec);
RTQuaternion conjugate() const;
void toAngleVector(RTFLOAT& angle, RTVector3& vec);
void fromAngleVector(const RTFLOAT& angle, const RTVector3& vec);
void zero();
const char *display();
inline RTFLOAT scalar() const { return m_data[0]; }
inline RTFLOAT x() const { return m_data[1]; }
inline RTFLOAT y() const { return m_data[2]; }
inline RTFLOAT z() const { return m_data[3]; }
inline RTFLOAT data(const int i) const { return m_data[i]; }
inline void setScalar(const RTFLOAT val) { m_data[0] = val; }
inline void setX(const RTFLOAT val) { m_data[1] = val; }
inline void setY(const RTFLOAT val) { m_data[2] = val; }
inline void setZ(const RTFLOAT val) { m_data[3] = val; }
inline void setData(const int i, RTFLOAT val) { m_data[i] = val; }
inline void fromArray(RTFLOAT *val) { memcpy(m_data, val, 4 * sizeof(RTFLOAT)); }
inline void toArray(RTFLOAT *val) const { memcpy(val, m_data, 4 * sizeof(RTFLOAT)); }
private:
RTFLOAT m_data[4];
};
class RTMatrix4x4
{
public:
RTMatrix4x4();
RTMatrix4x4& operator +=(const RTMatrix4x4& mat);
RTMatrix4x4& operator -=(const RTMatrix4x4& mat);
RTMatrix4x4& operator *=(const RTFLOAT val);
RTMatrix4x4& operator =(const RTMatrix4x4& vec);
const RTQuaternion operator *(const RTQuaternion& q) const;
const RTMatrix4x4 operator *(const RTFLOAT val) const;
const RTMatrix4x4 operator *(const RTMatrix4x4& mat) const;
const RTMatrix4x4 operator +(const RTMatrix4x4& mat) const;
inline RTFLOAT val(int row, int col) const { return m_data[row][col]; }
inline void setVal(int row, int col, RTFLOAT val) { m_data[row][col] = val; }
void fill(RTFLOAT val);
void setToIdentity();
RTMatrix4x4 inverted();
RTMatrix4x4 transposed();
private:
RTFLOAT m_data[4][4]; // row, column
RTFLOAT matDet();
RTFLOAT matMinor(const int row, const int col);
};
#endif /* _RTMATH_H_ */
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| GL | Folder | 0755 |
|
|
| IMUDrivers | Folder | 0755 |
|
|
| KHR | Folder | 0755 |
|
|
| X11 | Folder | 0755 |
|
|
| aarch64-linux-gnu | Folder | 0755 |
|
|
| arm-linux-gnueabihf | Folder | 0755 |
|
|
| arpa | Folder | 0755 |
|
|
| asm-generic | Folder | 0755 |
|
|
| c++ | Folder | 0755 |
|
|
| cxl | Folder | 0755 |
|
|
| drm | Folder | 0755 |
|
|
| finclude | Folder | 0755 |
|
|
| fwctl | Folder | 0755 |
|
|
| gdb | Folder | 0755 |
|
|
| geany | Folder | 0755 |
|
|
| iproute2 | Folder | 0755 |
|
|
| libxml2 | Folder | 0755 |
|
|
| linux | Folder | 0755 |
|
|
| misc | Folder | 0755 |
|
|
| mtd | Folder | 0755 |
|
|
| net | Folder | 0755 |
|
|
| netash | Folder | 0755 |
|
|
| netatalk | Folder | 0755 |
|
|
| netax25 | Folder | 0755 |
|
|
| neteconet | Folder | 0755 |
|
|
| netinet | Folder | 0755 |
|
|
| netipx | Folder | 0755 |
|
|
| netiucv | Folder | 0755 |
|
|
| netpacket | Folder | 0755 |
|
|
| netrom | Folder | 0755 |
|
|
| netrose | Folder | 0755 |
|
|
| nfs | Folder | 0755 |
|
|
| php | Folder | 0755 |
|
|
| protocols | Folder | 0755 |
|
|
| python3.13 | Folder | 0755 |
|
|
| python3.13m | Folder | 0755 |
|
|
| rdma | Folder | 0755 |
|
|
| regulator | Folder | 0755 |
|
|
| rpc | Folder | 0755 |
|
|
| rpcsvc | Folder | 0755 |
|
|
| scsi | Folder | 0755 |
|
|
| selinux | Folder | 0755 |
|
|
| sepol | Folder | 0755 |
|
|
| sound | Folder | 0755 |
|
|
| uuid | Folder | 0755 |
|
|
| video | Folder | 0755 |
|
|
| xcb | Folder | 0755 |
|
|
| xen | Folder | 0755 |
|
|
| RTFusion.h | File | 4.62 KB | 0644 |
|
| RTFusionKalman4.h | File | 3.39 KB | 0644 |
|
| RTFusionRTQF.h | File | 2.17 KB | 0644 |
|
| RTIMUAccelCal.h | File | 2.95 KB | 0644 |
|
| RTIMUCalDefs.h | File | 2.91 KB | 0644 |
|
| RTIMUHal.h | File | 4.31 KB | 0644 |
|
| RTIMULib.h | File | 1.88 KB | 0644 |
|
| RTIMULibDefs.h | File | 2.43 KB | 0644 |
|
| RTIMUMagCal.h | File | 4.02 KB | 0644 |
|
| RTIMUSettings.h | File | 17.23 KB | 0644 |
|
| RTMath.h | File | 6.74 KB | 0644 |
|
| aio.h | File | 7.57 KB | 0644 |
|
| aliases.h | File | 1.98 KB | 0644 |
|
| alloca.h | File | 1.17 KB | 0644 |
|
| ar.h | File | 1.69 KB | 0644 |
|
| argp.h | File | 24.95 KB | 0644 |
|
| argz.h | File | 5.91 KB | 0644 |
|
| assert.h | File | 4.99 KB | 0644 |
|
| augeas.h | File | 23.12 KB | 0644 |
|
| byteswap.h | File | 1.42 KB | 0644 |
|
| cifsidmap.h | File | 6 KB | 0644 |
|
| complex.h | File | 7.99 KB | 0644 |
|
| cpio.h | File | 2.21 KB | 0644 |
|
| crypt.h | File | 10.87 KB | 0644 |
|
| ctype.h | File | 10.71 KB | 0644 |
|
| dirent.h | File | 12.32 KB | 0644 |
|
| dlfcn.h | File | 8.38 KB | 0644 |
|
| elf.h | File | 191.5 KB | 0644 |
|
| endian.h | File | 2.25 KB | 0644 |
|
| envz.h | File | 2.8 KB | 0644 |
|
| err.h | File | 2.33 KB | 0644 |
|
| errno.h | File | 1.64 KB | 0644 |
|
| error.h | File | 2.37 KB | 0644 |
|
| execinfo.h | File | 1.49 KB | 0644 |
|
| expat.h | File | 44.16 KB | 0644 |
|
| expat_external.h | File | 6.07 KB | 0644 |
|
| fa.h | File | 12.36 KB | 0644 |
|
| fcntl.h | File | 11.15 KB | 0644 |
|
| features-time64.h | File | 1.5 KB | 0644 |
|
| features.h | File | 18.76 KB | 0644 |
|
| fenv.h | File | 5.65 KB | 0644 |
|
| fmtmsg.h | File | 3.16 KB | 0644 |
|
| fnmatch.h | File | 2.24 KB | 0644 |
|
| fstab.h | File | 3.04 KB | 0644 |
|
| fts.h | File | 9.37 KB | 0644 |
|
| ftw.h | File | 6.22 KB | 0644 |
|
| gawkapi.h | File | 40.72 KB | 0644 |
|
| gconv.h | File | 4.11 KB | 0644 |
|
| getopt.h | File | 1.43 KB | 0644 |
|
| glob.h | File | 7.14 KB | 0644 |
|
| gnu-versions.h | File | 2.29 KB | 0644 |
|
| gnumake.h | File | 2.84 KB | 0644 |
|
| grp.h | File | 6.69 KB | 0644 |
|
| gshadow.h | File | 4.58 KB | 0644 |
|
| iconv.h | File | 1.87 KB | 0644 |
|
| ifaddrs.h | File | 2.77 KB | 0644 |
|
| inttypes.h | File | 11.04 KB | 0644 |
|
| langinfo.h | File | 17.43 KB | 0644 |
|
| lastlog.h | File | 126 B | 0644 |
|
| libgen.h | File | 1.35 KB | 0644 |
|
| libintl.h | File | 4.47 KB | 0644 |
|
| limits.h | File | 5.57 KB | 0644 |
|
| link.h | File | 7.62 KB | 0644 |
|
| locale.h | File | 7.5 KB | 0644 |
|
| malloc.h | File | 5.84 KB | 0644 |
|
| math.h | File | 48.13 KB | 0644 |
|
| mcheck.h | File | 2.38 KB | 0644 |
|
| memory.h | File | 956 B | 0644 |
|
| mntent.h | File | 3.28 KB | 0644 |
|
| monetary.h | File | 1.92 KB | 0644 |
|
| mqueue.h | File | 4.47 KB | 0644 |
|
| netdb.h | File | 27.8 KB | 0644 |
|
| nl_types.h | File | 1.71 KB | 0644 |
|
| nss.h | File | 14.07 KB | 0644 |
|
| obstack.h | File | 20.81 KB | 0644 |
|
| paths.h | File | 2.91 KB | 0644 |
|
| pcmanfm-modules.h | File | 2.33 KB | 0644 |
|
| pcre2.h | File | 50.11 KB | 0644 |
|
| pcre2posix.h | File | 7.18 KB | 0644 |
|
| poll.h | File | 22 B | 0644 |
|
| printf.h | File | 6.71 KB | 0644 |
|
| proc_service.h | File | 3.4 KB | 0644 |
|
| pthread.h | File | 47.29 KB | 0644 |
|
| pty.h | File | 1.53 KB | 0644 |
|
| pwd.h | File | 6.17 KB | 0644 |
|
| re_comp.h | File | 963 B | 0644 |
|
| regex.h | File | 25.33 KB | 0644 |
|
| regexp.h | File | 1.35 KB | 0644 |
|
| resolv.h | File | 12.1 KB | 0644 |
|
| sched.h | File | 4.92 KB | 0644 |
|
| search.h | File | 5.32 KB | 0644 |
|
| semaphore.h | File | 3.39 KB | 0644 |
|
| setjmp.h | File | 3.12 KB | 0644 |
|
| sgtty.h | File | 1.31 KB | 0644 |
|
| shadow.h | File | 5.5 KB | 0644 |
|
| signal.h | File | 12.74 KB | 0644 |
|
| spawn.h | File | 8.19 KB | 0644 |
|
| stab.h | File | 264 B | 0644 |
|
| stdbit.h | File | 26.28 KB | 0644 |
|
| stdc-predef.h | File | 2.4 KB | 0644 |
|
| stdint.h | File | 7.96 KB | 0644 |
|
| stdio.h | File | 33.37 KB | 0644 |
|
| stdio_ext.h | File | 2.73 KB | 0644 |
|
| stdlib.h | File | 40.08 KB | 0644 |
|
| string.h | File | 19.5 KB | 0644 |
|
| strings.h | File | 4.64 KB | 0644 |
|
| sudo_plugin.h | File | 11.79 KB | 0644 |
|
| syscall.h | File | 25 B | 0644 |
|
| sysexits.h | File | 5.11 KB | 0644 |
|
| syslog.h | File | 24 B | 0644 |
|
| tar.h | File | 3.66 KB | 0644 |
|
| termio.h | File | 214 B | 0644 |
|
| termios.h | File | 3.51 KB | 0644 |
|
| tgmath.h | File | 47.64 KB | 0644 |
|
| thread_db.h | File | 15.65 KB | 0644 |
|
| threads.h | File | 7.63 KB | 0644 |
|
| time.h | File | 14.76 KB | 0644 |
|
| ttyent.h | File | 2.44 KB | 0644 |
|
| uchar.h | File | 3.04 KB | 0644 |
|
| ucontext.h | File | 1.99 KB | 0644 |
|
| ulimit.h | File | 1.55 KB | 0644 |
|
| unistd.h | File | 44 KB | 0644 |
|
| utime.h | File | 1.87 KB | 0644 |
|
| utmp.h | File | 3.15 KB | 0644 |
|
| utmpx.h | File | 4 KB | 0644 |
|
| values.h | File | 1.91 KB | 0644 |
|
| wait.h | File | 22 B | 0644 |
|
| wchar.h | File | 38.19 KB | 0644 |
|
| wctype.h | File | 5.42 KB | 0644 |
|
| wordexp.h | File | 2.44 KB | 0644 |
|
| zconf.h | File | 16.08 KB | 0644 |
|
| zlib.h | File | 94.56 KB | 0644 |
|