2015-03-31 135 views
1

CGAL中是否有預定義的x軸旋轉。如果不是,爲什麼不呢?如果我必須定義它,我該怎麼做?CGAL旋轉x軸x3D

#include <CGAL/Simple_cartesian.h> 
#include <CGAL/Aff_transformation_3.h> 
#include <cmath> 
typedef CGAL::Simple_cartesian<double> Kernel; 
typedef CGAL::Aff_transformation_3<Kernel> transform3D; 

transform3D rotationX(double angle) 
{ 
    const double cosa{cos(angle)}; 
    const double sina{sin(angle)}; 
    return transform3D(
      1.0, 0.0, 0.0, 
      0.0, cosa, -sina, 
      0.0, sina, cosa); 
} 

void test() 
{ 
    using Point3D = CGAL::Point_3<Kernel>; 
    Point3D p{1.0,1.0,1.0}; 
    const transform3D rotate{rotationX(M_PI_2)}; 
    rotate(p); 
} 

回答

0

爲了在3D一個旋轉可以使用Aff_transformation_3並使用transformation matrix指定的變換矩陣。

例如:要在x軸旋轉一定角x可以使用一個基體,如:

1 0  0   0 
0 cos(x) -sin(x) 0 
0 sin(x) cos(x) 0 
0 0  0   1