17#ifndef __B2REFERENTIAL_H__
18#define __B2REFERENTIAL_H__
24#include "b2ppconfig.h"
43 mat[0] = inv[0] = T(1);
44 mat[1] = inv[1] = T(0);
45 mat[2] = inv[2] = T(0);
46 mat[3] = inv[3] = T(0);
47 mat[4] = inv[4] = T(1);
48 mat[5] = inv[5] = T(0);
49 mat[6] = inv[6] = T(0);
50 mat[7] = inv[7] = T(0);
51 mat[8] = inv[8] = T(1);
52 mat[9] = inv[9] = T(0);
53 mat[10] = inv[10] = T(0);
54 mat[11] = inv[11] = T(0);
59 : identity(t.identity), rot_identity(t.rot_identity) {
61 std::copy(t.mat, t.mat + 12, mat);
62 std::copy(t.inv, t.inv + 12, inv);
79 const T rotation_matrix[9],
const T translation_vector[3] = 0,
80 const bool invert =
false) {
81 init(rotation_matrix, translation_vector, invert);
86 if (&trans ==
this) {
return true; }
87 if (identity != trans.identity || rot_identity != trans.rot_identity) {
return false; }
88 return std::equal(mat, mat + 12, trans.mat);
104 const T rotation_matrix[9],
const T translation_vector[3] = 0,
105 const bool invert =
false) {
115 m[0] = rotation_matrix[0];
116 m[1] = rotation_matrix[3];
117 m[2] = rotation_matrix[6];
118 m[3] = rotation_matrix[1];
119 m[4] = rotation_matrix[4];
120 m[5] = rotation_matrix[7];
121 m[6] = rotation_matrix[2];
122 m[7] = rotation_matrix[5];
123 m[8] = rotation_matrix[8];
124 if (translation_vector) {
125 m[9] = translation_vector[0];
126 m[10] = translation_vector[1];
127 m[11] = translation_vector[2];
134 compute_invert(i, m);
137 identity = rot_identity || std::equal(mat + 9, mat + 12, inv);
174 static void compute_invert(T i[12],
const T m[12]) {
176 / (m[0] * (m[4] * m[8] - m[5] * m[7]) + m[1] * (m[5] * m[6] - m[3] * m[8])
177 + m[2] * (m[3] * m[7] - m[4] * m[6]));
178 i[0] = (m[4] * m[8] - m[5] * m[7]) * inv_det;
179 i[1] = (m[2] * m[7] - m[1] * m[8]) * inv_det;
180 i[2] = (m[1] * m[5] - m[2] * m[4]) * inv_det;
181 i[3] = (m[5] * m[6] - m[3] * m[8]) * inv_det;
182 i[4] = (m[0] * m[8] - m[2] * m[6]) * inv_det;
183 i[5] = (m[2] * m[3] - m[0] * m[5]) * inv_det;
184 i[6] = (m[3] * m[7] - m[4] * m[6]) * inv_det;
185 i[7] = (m[1] * m[6] - m[0] * m[7]) * inv_det;
186 i[8] = (m[0] * m[4] - m[1] * m[3]) * inv_det;
187 i[9] = -(i[0] * m[9] + i[1] * m[10] + i[2] * m[11]);
188 i[10] = -(i[3] * m[9] + i[4] * m[10] + i[5] * m[11]);
189 i[11] = -(i[6] * m[9] + i[7] * m[10] + i[8] * m[11]);
194const Transformation3D<T> Transformation3D<T>::identity_transformation;
Contains the base classes for implementing Finite Elements.
Definition b2boundary_condition.H:32