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