00001 // -*- Mode: C++; tab-width: 2; -*- 00002 // vi: set ts=2: 00003 // 00004 00005 #ifndef BALL_STRUCTURE_GEOMETRICTRANSFORMATIONS_H 00006 #define BALL_STRUCTURE_GEOMETRICTRANSFORMATIONS_H 00007 00008 #ifndef BALL_COMMON_H 00009 # include <BALL/common.h> 00010 #endif 00011 00012 #ifndef BALL_KERNEL_ATOM_H 00013 # include <BALL/KERNEL/atom.h> 00014 #endif 00015 00016 #ifndef BALL_MATHS_VECTOR3_H 00017 # include <BALL/MATHS/vector3.h> 00018 #endif 00019 00020 #ifndef BALL_MATHS_MATRIX44_H 00021 # include <BALL/MATHS/matrix44.h> 00022 #endif 00023 00024 #ifndef BALL_CONCEPT_PROCESSOR_H 00025 # include <BALL/CONCEPT/processor.h> 00026 #endif 00027 00028 namespace BALL 00029 { 00033 00041 class BALL_EXPORT TranslationProcessor 00042 : public UnaryProcessor<Atom> 00043 { 00044 public: 00045 00050 TranslationProcessor(); 00051 00057 TranslationProcessor(const Vector3& translation); 00058 00062 void setTranslation(const Vector3& translation); 00063 00067 const Vector3& getTranslation() const; 00068 00070 virtual Processor::Result operator()(Atom& atom); 00071 00072 00073 private: 00074 00075 Vector3 translation_; 00076 }; 00077 00078 00087 class BALL_EXPORT TransformationProcessor 00088 :public UnaryProcessor<Atom> 00089 { 00090 public: 00091 00105 TransformationProcessor(); 00106 00112 TransformationProcessor(const Matrix4x4& transformation); 00113 00117 void setTransformation(const Matrix4x4& transformation); 00118 00122 const Matrix4x4& getTransformation() const; 00123 00125 virtual Processor::Result operator()(Atom& atom); 00126 00127 00128 protected: 00129 00130 Matrix4x4 transformation_; 00131 }; 00132 00133 00135 00136 } // namespace BALL 00137 00138 #endif // BALL_STRUCTURE_GEOMETRICTRANSFORMATIONS_H