C Attitude Math Library
Quaternion, Euler, and DCM math utilities for attitude control.
Loading...
Searching...
No Matches
vector3.c
Go to the documentation of this file.
1#include "attitude/vector3.h"
2#include <math.h>
3
4void vector3_add(const double a[3], const double b[3], double out[3]) {
5 out[0] = a[0] + b[0];
6 out[1] = a[1] + b[1];
7 out[2] = a[2] + b[2];
8}
9
10void vector3_sub(const double a[3], const double b[3], double out[3]) {
11 out[0] = a[0] - b[0];
12 out[1] = a[1] - b[1];
13 out[2] = a[2] - b[2];
14}
15
16double vector3_dot(const double a[3], const double b[3]) {
17 return a[0]*b[0] + a[1]*b[1] + a[2]*b[2];
18}
19
20void vector3_cross(const double a[3], const double b[3], double out[3]) {
21 out[0] = a[1]*b[2] - a[2]*b[1];
22 out[1] = a[2]*b[0] - a[0]*b[2];
23 out[2] = a[0]*b[1] - a[1]*b[0];
24}
25
26void vector3_normalize(double v[3]) {
27 double mag = sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]);
28 if (mag > 0) {
29 v[0]/=mag; v[1]/=mag; v[2]/=mag;
30 }
31}
32
33double vector3_mag(const double v[3]) {
34 return sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
35}
36
37int vector3_normalize_safe(double v[3]) {
38 double mag = vector3_mag(v);
39 if (mag < 1e-14) {
40 // Too small to normalize, return failure
41 return 0;
42 }
43 v[0] /= mag; v[1] /= mag; v[2] /= mag;
44 return 1;
45}
46
void vector3_sub(const double a[3], const double b[3], double out[3])
Subtract two 3D vectors component-wise.
Definition vector3.c:10
void vector3_add(const double a[3], const double b[3], double out[3])
Add two 3D vectors component-wise.
Definition vector3.c:4
void vector3_normalize(double v[3])
Normalise a 3D vector in-place.
Definition vector3.c:26
void vector3_cross(const double a[3], const double b[3], double out[3])
Compute the cross product of two vectors.
Definition vector3.c:20
double vector3_mag(const double v[3])
Definition vector3.c:33
int vector3_normalize_safe(double v[3])
Definition vector3.c:37
double vector3_dot(const double a[3], const double b[3])
Compute the dot product of two vectors.
Definition vector3.c:16