ViewDesignEngine  3.1.0
高性能 CAD 计算几何引擎
transform.h
浏览该文件的文档.
1 #pragma once
2 #include "vde/core/point.h"
3 #include <Eigen/Geometry>
4 
5 namespace vde::core {
6 
15 using Transform3D = Eigen::Transform<double, 3, Eigen::Affine>;
16 
30 inline Transform3D translate(const Vector3D& v) {
31  return Transform3D(Eigen::Translation<double, 3>(v));
32 }
33 
44 inline Transform3D translate(double x, double y, double z) {
45  return translate(Vector3D(x, y, z));
46 }
47 
62 inline Transform3D rotate(const Vector3D& axis, double angle_rad) {
63  return Transform3D(Eigen::AngleAxis<double>(angle_rad, axis.normalized()));
64 }
65 
74 inline Transform3D rotate_x(double rad) { return rotate(Vector3D::UnitX(), rad); }
75 
84 inline Transform3D rotate_y(double rad) { return rotate(Vector3D::UnitY(), rad); }
85 
94 inline Transform3D rotate_z(double rad) { return rotate(Vector3D::UnitZ(), rad); }
95 
108 inline Transform3D scale(double sx, double sy, double sz) {
109  return Transform3D(Eigen::Scaling(sx, sy, sz));
110 }
111 
120 inline Transform3D scale(double s) { return scale(s, s, s); }
121 
122 } // namespace vde::core
Eigen::Transform< double, 3, Eigen::Affine > Transform3D
三维仿射变换类型
Definition: transform.h:15
Transform3D scale(double sx, double sy, double sz)
创建非均匀缩放变换
Definition: transform.h:108
Transform3D rotate_x(double rad)
绕 X 轴旋转
Definition: transform.h:74
Transform3D rotate(const Vector3D &axis, double angle_rad)
创建旋转变换(轴-角表示)
Definition: transform.h:62
Transform3D translate(const Vector3D &v)
创建平移变换
Definition: transform.h:30
Transform3D rotate_y(double rad)
绕 Y 轴旋转
Definition: transform.h:84
Transform3D rotate_z(double rad)
绕 Z 轴旋转
Definition: transform.h:94
Definition: aabb.h:6
foundation::Vector3D Vector3D
双精度三维向量(重新导出)
Definition: point.h:49