00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 // $Id: geometricTransformations.h,v 1.16.18.1 2007/03/25 21:25:26 oliver Exp $ 00005 // 00006 00007 #ifndef BALL_STRUCTURE_GEOMETRICTRANSFORMATIONS_H 00008 #define BALL_STRUCTURE_GEOMETRICTRANSFORMATIONS_H 00009 00010 #ifndef BALL_COMMON_H 00011 # include <BALL/common.h> 00012 #endif 00013 00014 #ifndef BALL_KERNEL_ATOM_H 00015 # include <BALL/KERNEL/atom.h> 00016 #endif 00017 00018 #ifndef BALL_MATHS_VECTOR3_H 00019 # include <BALL/MATHS/vector3.h> 00020 #endif 00021 00022 #ifndef BALL_MATHS_MATRIX44_H 00023 # include <BALL/MATHS/matrix44.h> 00024 #endif 00025 00026 #ifndef BALL_CONCEPT_PROCESSOR_H 00027 # include <BALL/CONCEPT/processor.h> 00028 #endif 00029 00030 namespace BALL 00031 { 00035 00043 class BALL_EXPORT TranslationProcessor 00044 : public UnaryProcessor<Atom> 00045 { 00046 public: 00047 00052 TranslationProcessor(); 00053 00059 TranslationProcessor(const Vector3& translation); 00060 00064 void setTranslation(const Vector3& translation); 00065 00069 const Vector3& getTranslation() const; 00070 00072 virtual Processor::Result operator()(Atom& atom); 00073 00074 00075 private: 00076 00077 Vector3 translation_; 00078 }; 00079 00080 00089 class BALL_EXPORT TransformationProcessor 00090 :public UnaryProcessor<Atom> 00091 { 00092 public: 00093 00107 TransformationProcessor(); 00108 00114 TransformationProcessor(const Matrix4x4& transformation); 00115 00119 void setTransformation(const Matrix4x4& transformation); 00120 00124 const Matrix4x4& getTransformation() const; 00125 00127 virtual Processor::Result operator()(Atom& atom); 00128 00129 00130 protected: 00131 00132 Matrix4x4 transformation_; 00133 }; 00134 00135 00137 00138 } // namespace BALL 00139 00140 #endif // BALL_STRUCTURE_GEOMETRICTRANSFORMATIONS_H