faunus
rotate.h
1 #pragma once
2 #include <Eigen/Geometry>
3 
4 namespace Faunus {
5 
13 {
14  private:
15  using Point = Eigen::Vector3d;
16  Eigen::Quaterniond quaternion;
17  Eigen::Matrix3d rotation_matrix;
18 
19  public:
20  double angle = 0.0;
21  QuaternionRotate() = default;
22  QuaternionRotate(double angle, Point axis);
23  void set(double angle, Point axis);
24  auto operator()(const Eigen::Matrix3d& matrix) const;
25  [[nodiscard]] const Eigen::Quaterniond& getQuaternion() const;
26  [[nodiscard]] const Eigen::Matrix3d& getRotationMatrix() const;
27  Point operator()(
28  Point vector, std::function<void(Point&)> boundary = [](Point&) {},
29  const Point& shift = {0, 0, 0}) const;
30 };
31 
32 } // namespace Faunus
Rotation routine using the Eigen library.
Definition: rotate.h:12
const Eigen::Quaterniond & getQuaternion() const
Get current quaternion.
Definition: rotate.cpp:65
double angle
Current rotation angle.
Definition: rotate.h:20
Cell list class templates.
Definition: actions.cpp:11
auto operator()(const Eigen::Matrix3d &matrix) const
Rotate matrix/tensor.
Definition: rotate.cpp:60
const Eigen::Matrix3d & getRotationMatrix() const
Get current rotation matrix.
Definition: rotate.cpp:70