OpenCPN Partial API docs
Loading...
Searching...
No Matches
linmath.h File Reference

Linear Algebra Math Library. More...

#include <math.h>

Go to the source code of this file.

Macros

#define LINMATH_H_DEFINE_VEC(n)
 
#define quat_norm   vec4_norm
 

Typedefs

typedef vec4 mat4x4[4]
 
typedef float quat[4]
 

Detailed Description

Linear Algebra Math Library.

Provides optimized vector and matrix operations for 3D graphics:

Mathematical Operations:

  • Vector operations (2D/3D/4D)
  • Matrix transformations (4x4)
  • Quaternion math
  • Projection matrices
  • Camera view transforms

Features:

  • Header-only implementation
  • SIMD-friendly data layouts
  • Optimized algorithms
  • Cross-platform support
  • Efficient memory usage

Used throughout the GRIB plugin for coordinate transforms, viewports, and weather data visualization operations requiring 3D mathematics.

Definition in file linmath.h.

Macro Definition Documentation

◆ LINMATH_H_DEFINE_VEC

#define LINMATH_H_DEFINE_VEC (   n)
Value:
typedef float vec##n[n]; \
static inline void vec##n##_add(vec##n r, vec##n const a, vec##n const b) { \
int i; \
for (i = 0; i < n; ++i) r[i] = a[i] + b[i]; \
} \
static inline void vec##n##_sub(vec##n r, vec##n const a, vec##n const b) { \
int i; \
for (i = 0; i < n; ++i) r[i] = a[i] - b[i]; \
} \
static inline void vec##n##_scale(vec##n r, vec##n const v, float const s) { \
int i; \
for (i = 0; i < n; ++i) r[i] = v[i] * s; \
} \
static inline float vec##n##_mul_inner(vec##n const a, vec##n const b) { \
float p = 0.; \
int i; \
for (i = 0; i < n; ++i) p += b[i] * a[i]; \
return p; \
} \
static inline float vec##n##_len(vec##n const v) { \
return (float)sqrt(vec##n##_mul_inner(v, v)); \
} \
static inline void vec##n##_norm(vec##n r, vec##n const v) { \
float k = 1.f / vec##n##_len(v); \
vec##n##_scale(r, v, k); \
}

Definition at line 51 of file linmath.h.

◆ quat_norm

#define quat_norm   vec4_norm

Definition at line 463 of file linmath.h.

Typedef Documentation

◆ mat4x4

typedef vec4 mat4x4[4]

Definition at line 108 of file linmath.h.

◆ quat

typedef float quat[4]

Definition at line 419 of file linmath.h.