BWAPI
|
00001 // Copyright (c) 1997-2000 Utrecht University (The Netherlands), 00002 // ETH Zurich (Switzerland), Freie Universitaet Berlin (Germany), 00003 // INRIA Sophia-Antipolis (France), Martin-Luther-University Halle-Wittenberg 00004 // (Germany), Max-Planck-Institute Saarbruecken (Germany), RISC Linz (Austria), 00005 // and Tel-Aviv University (Israel). All rights reserved. 00006 // 00007 // This file is part of CGAL (www.cgal.org); you can redistribute it and/or 00008 // modify it under the terms of the GNU Lesser General Public License as 00009 // published by the Free Software Foundation; version 2.1 of the License. 00010 // See the file LICENSE.LGPL distributed with CGAL. 00011 // 00012 // Licensees holding a valid commercial license may use this file in 00013 // accordance with the commercial license agreement provided with the software. 00014 // 00015 // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 00016 // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 00017 // 00018 // $URL: svn+ssh://scm.gforge.inria.fr/svn/cgal/branches/CGAL-3.5-branch/Kernel_d/include/CGAL/Kernel_d/Aff_transformation_d.h $ 00019 // $Id: Aff_transformation_d.h 42932 2008-04-17 10:13:31Z spion $ 00020 // 00021 // Author(s) : Michael Seel <seel@mpi-sb.mpg.de> 00022 00023 #ifndef CGAL_AFF_TRANSFORMATION_D_H 00024 #define CGAL_AFF_TRANSFORMATION_D_H 00025 00026 #include <CGAL/Dimension.h> 00027 00028 CGAL_BEGIN_NAMESPACE 00029 00030 template <class pR> 00031 class Aff_transformation_d : public pR::Aff_transformation_d_base 00032 { public: 00033 00034 typedef CGAL::Dynamic_dimension_tag Ambient_dimension; 00035 00036 typedef typename pR::Aff_transformation_d_base Base; 00037 typedef Aff_transformation_d<pR> Self; 00038 typedef pR R; 00039 typedef typename R::RT RT; 00040 typedef typename R::FT FT; 00041 typedef typename R::LA LA; 00042 00043 Aff_transformation_d(int d = 0) : Base(d) {} 00044 Aff_transformation_d(int d, Identity_transformation tag) : Base(d,tag) {} 00045 Aff_transformation_d(const typename LA::Matrix& M) : Base(M) {} 00046 Aff_transformation_d(Translation tag, const Vector_d<R>& v) : Base(tag,v) {} 00047 Aff_transformation_d(int d, Scaling tag, const RT& num, const RT& den) 00048 : Base(d,tag,num,den) {} 00049 Aff_transformation_d(int d, Rotation tag, 00050 const RT& sin_num, const RT& cos_num, 00051 const RT& den, int e1 = 0, int e2 = 1) 00052 : Base(d,tag,sin_num,cos_num,den,e1,e2) {} 00053 Aff_transformation_d(int d, Rotation tag, const Direction_d<R>& dir, 00054 const RT& num, const RT& den, 00055 int e1 = 0, int e2 = 1) 00056 : Base(d,tag,dir,num,den,e1,e2) {} 00057 Aff_transformation_d(const Base& a) : Base(a) {} 00058 Aff_transformation_d(const Self& a) : Base(a) {} 00059 00060 template <typename Forward_iterator> 00061 Aff_transformation_d(Scaling tag, 00062 Forward_iterator start, Forward_iterator end) : Base(tag,start,end) {} 00063 00064 Self operator*(const Self& a) 00065 { return Base::operator*(a); } 00066 Self inverse() const { return Base::inverse(); } 00067 00068 bool operator==(const Self& a) const 00069 { return Base::operator==(a); } 00070 bool operator!=(const Self& a) const 00071 { return Base::operator!=(a); } 00072 00073 }; 00074 00075 CGAL_END_NAMESPACE 00076 #endif //CGAL_AFF_TRANSFORMATION_D_H