00001
00002
00003
00004
00005
00006
00007 #ifndef BALL_VIEW_MODELS_FIELDLINE_CREATOR_H
00008 #define BALL_VIEW_MODELS_FIELDLINE_CREATOR_H
00009
00010 #ifndef BALL_MATHS_VECTOR3_H
00011 # include <BALL/MATHS/vector3.h>
00012 #endif
00013
00014 #ifndef BALL_VIEW_KERNEL_REPRESENTATION_H
00015 # include <BALL/VIEW/KERNEL/representation.h>
00016 #endif
00017
00018 namespace BALL
00019 {
00020 class AtomContainer;
00021
00022 namespace VIEW
00023 {
00024
00028 class BALL_VIEW_EXPORT FieldLineCreator
00029 {
00030 public:
00031
00032 typedef TRegularData3D<Vector3> VectorGrid;
00033
00034 BALL_CREATE(FieldLineCreator)
00035
00036
00038 FieldLineCreator();
00039
00042 FieldLineCreator(const FieldLineCreator& fc);
00043
00046 virtual ~FieldLineCreator();
00047
00048 Representation* createLines();
00049
00050 void createFieldLine_(const Vector3& point, Representation& rep);
00051
00052 inline void calculateLinePoints_(Vector3 point, vector<Vector3>& points, float factor = 1.);
00053
00056 void setUsePotentialGrid(bool state) { use_potential_grid_ = state;}
00057
00058 float tolerance_;
00059 Size max_steps_;
00060 Size interpolation_steps_;
00061 Size icosaeder_steps_;
00062 float atom_distance_;
00063 Size field_line_errors_;
00064 bool use_atoms_;
00065 Size monte_carlo_nr_lines_;
00066 RegularData3D* potential_grid_;
00067 VectorGrid* vector_grid_;
00068 AtomContainer* ac_;
00069 bool use_potential_grid_;
00070 };
00071
00072 }
00073 }
00074
00075 #endif // BALL_VIEW_MODELS_FIELDLINE_CREATOR_H