40 #ifndef H_HEXDOM_ALGO_FRAME_H
41 #define H_HEXDOM_ALGO_FRAME_H
44 #include <exploragram/hexdom/basic.h>
45 #include <exploragram/hexdom/spherical_harmonics_l4.h>
58 inline bool is_identity_auvp(
const mat3& m,
double eps = 1e-15) {
60 return std::abs(m(0, 0) - 1.) < eps && std::abs(m(1, 1) - 1.) < eps && std::abs(m(2, 2) - 1.) < eps;
93 void aligns_B_wrt_ref(
mat3 ref,
mat3 B);
94 void make_col2_equal_to_z(
mat3 B,
vec3 z);
95 const mat3& get_mat()
const;
96 bool is_identity() {
return mid == 0; }
104 inline vec3 operator*(
const AxisPermutation& p,
const vec3& v) {
return p.get_mat()*v; }
119 void make_z_equal_to(
vec3 z);
Manages an attribute attached to a set of object.
Vector with aligned memory allocation.
#define EXPLORAGRAM_API
Linkage declaration for exploragram symbols.
Included by all headers in exploragram.
double angle(const vec3 &a, const vec3 &b)
Computes the angle between two 3d vectors.
Global Vorpaline namespace.
vecng< 3, Numeric::float64 > vec3
Represents points and vectors in 3d.
geo_index_t index_t
The type for storing and manipulating indices.
Matrix< 3, Numeric::float64 > mat3
Represents a 3x3 matrix.