- Timestamp:
- Apr 9, 2010, 2:45:49 PM (15 years ago)
- Branches:
- Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
- Children:
- 273382
- Parents:
- 0a4f7f
- Location:
- src
- Files:
-
- 2 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Makefile.am
r0a4f7f r72e7fa 122 122 periodentafel.cpp \ 123 123 Plane.cpp \ 124 SingleVector.cpp \ 124 125 tesselation.cpp \ 125 126 tesselationhelpers.cpp \ … … 157 158 periodentafel.hpp \ 158 159 Plane.hpp \ 160 SingleVector.hpp \ 159 161 stackclass.hpp \ 160 162 tesselation.hpp \ -
src/Plane.cpp
r0a4f7f r72e7fa 73 73 normalVector(new Vector(_normalVector)), 74 74 offset(_offset) 75 {} 75 { 76 ASSERT(normalVector->Norm()>MYEPSILON,"Normalvector was zero when constructing a plane."); 77 double factor = 1/normalVector->Norm(); 78 // normalize the plane parameters 79 (*normalVector)*=factor; 80 offset*=factor; 81 } 76 82 77 83 Plane::Plane(const Vector &_normalVector, const Vector &_offsetVector) : … … 91 97 double Plane::getOffset(){ 92 98 return offset; 99 } 100 101 Vector Plane::getOffsetVector() { 102 return getOffset()*getNormal(); 93 103 } 94 104 -
src/Plane.hpp
r0a4f7f r72e7fa 24 24 25 25 // Accessor Functions 26 /** 27 * returns normal Vector for a plane 28 */ 26 29 Vector getNormal(); 30 /** 31 * returns the distance of the plane from the origin 32 */ 27 33 double getOffset(); 34 /** 35 * returns a vector that points on the plane. 36 * Same as getOffset()*getNormal(); 37 */ 38 Vector getOffsetVector(); 28 39 29 40 // some calculations -
src/vector.cpp
r0a4f7f r72e7fa 431 431 * \return a == b 432 432 */ 433 bool operator==(const Vector& a, const Vector& b)433 bool Vector::operator==(const Vector& b) const 434 434 { 435 435 bool status = true; 436 436 for (int i=0;i<NDIM;i++) 437 status = status && (fabs( a[i] - b[i]) < MYEPSILON);437 status = status && (fabs((*this)[i] - b[i]) < MYEPSILON); 438 438 return status; 439 439 }; … … 444 444 * \return lhs + a 445 445 */ 446 const Vector& operator+=(Vector& a,const Vector& b)447 { 448 a.AddVector(&b);449 return a;446 const Vector& Vector::operator+=(const Vector& b) 447 { 448 this->AddVector(&b); 449 return *this; 450 450 }; 451 451 … … 455 455 * \return lhs - a 456 456 */ 457 const Vector& operator-=(Vector& a,const Vector& b)458 { 459 a.SubtractVector(&b);460 return a;457 const Vector& Vector::operator-=(const Vector& b) 458 { 459 this->SubtractVector(&b); 460 return *this; 461 461 }; 462 462 … … 477 477 * \return a + b 478 478 */ 479 Vector const operator+(const Vector& a, const Vector& b)480 { 481 Vector x (a);479 Vector const Vector::operator+(const Vector& b) const 480 { 481 Vector x = *this; 482 482 x.AddVector(&b); 483 483 return x; … … 489 489 * \return a - b 490 490 */ 491 Vector const operator-(const Vector& a, const Vector& b)492 { 493 Vector x (a);491 Vector const Vector::operator-(const Vector& b) const 492 { 493 Vector x = *this; 494 494 x.SubtractVector(&b); 495 495 return x; -
src/vector.hpp
r0a4f7f r72e7fa 23 23 */ 24 24 class Vector { 25 protected: 26 // this struct is used to indicate calls to the Baseconstructor from inside vectors. 27 struct Baseconstructor{}; 25 28 public: 26 29 … … 28 31 Vector(const double x1, const double x2, const double x3); 29 32 Vector(const Vector& src); 30 ~Vector();33 virtual ~Vector(); 31 34 32 double Distance(const Vector * const y) const;33 double DistanceSquared(const Vector * const y) const;34 double DistanceToPlane(const Vector * const PlaneNormal, const Vector * const PlaneOffset) const;35 double PeriodicDistance(const Vector * const y, const double * const cell_size) const;36 double PeriodicDistanceSquared(const Vector * const y, const double * const cell_size) const;37 double ScalarProduct(const Vector * const y) const;38 double Norm() const;39 double NormSquared() const;40 double Angle(const Vector * const y) const;41 bool IsZero() const;42 bool IsOne() const;43 bool IsNormalTo(const Vector * const normal) const;44 bool IsEqualTo(const Vector * const a) const;35 virtual double Distance(const Vector * const y) const; 36 virtual double DistanceSquared(const Vector * const y) const; 37 virtual double DistanceToPlane(const Vector * const PlaneNormal, const Vector * const PlaneOffset) const; 38 virtual double PeriodicDistance(const Vector * const y, const double * const cell_size) const; 39 virtual double PeriodicDistanceSquared(const Vector * const y, const double * const cell_size) const; 40 virtual double ScalarProduct(const Vector * const y) const; 41 virtual double Norm() const; 42 virtual double NormSquared() const; 43 virtual double Angle(const Vector * const y) const; 44 virtual bool IsZero() const; 45 virtual bool IsOne() const; 46 virtual bool IsNormalTo(const Vector * const normal) const; 47 virtual bool IsEqualTo(const Vector * const a) const; 45 48 46 v oid AddVector(const Vector * const y);47 v oid SubtractVector(const Vector * const y);48 v oid CopyVector(const Vector * const y);49 v oid CopyVector(const Vector &y);50 v oid VectorProduct(const Vector * const y);51 v oid ProjectOntoPlane(const Vector * const y);52 v oid ProjectIt(const Vector * const y);53 Vector Projection(const Vector * const y) const;54 v oid Zero();55 v oid One(const double one);56 v oid Init(const double x1, const double x2, const double x3);57 v oid Normalize();58 v oid Translate(const Vector * const x);59 v oid Mirror(const Vector * const x);60 v oid Scale(const double ** const factor);61 v oid Scale(const double * const factor);62 v oid Scale(const double factor);63 v oid MatrixMultiplication(const double * const M);64 bool InverseMatrixMultiplication(const double * const M);65 v oid KeepPeriodic(const double * const matrix);66 v oid LinearCombinationOfVectors(const Vector * const x1, const Vector * const x2, const Vector * const x3, const double * const factors);67 double CutsPlaneAt(const Vector * const A, const Vector * const B, const Vector * const C) const;68 bool GetOneNormalVector(const Vector * const x1);69 bool MakeNormalTo(const Vector &y1);49 virtual void AddVector(const Vector * const y); 50 virtual void SubtractVector(const Vector * const y); 51 virtual void CopyVector(const Vector * const y); 52 virtual void CopyVector(const Vector &y); 53 virtual void VectorProduct(const Vector * const y); 54 virtual void ProjectOntoPlane(const Vector * const y); 55 virtual void ProjectIt(const Vector * const y); 56 virtual Vector Projection(const Vector * const y) const; 57 virtual void Zero(); 58 virtual void One(const double one); 59 virtual void Init(const double x1, const double x2, const double x3); 60 virtual void Normalize(); 61 virtual void Translate(const Vector * const x); 62 virtual void Mirror(const Vector * const x); 63 virtual void Scale(const double ** const factor); 64 virtual void Scale(const double * const factor); 65 virtual void Scale(const double factor); 66 virtual void MatrixMultiplication(const double * const M); 67 virtual bool InverseMatrixMultiplication(const double * const M); 68 virtual void KeepPeriodic(const double * const matrix); 69 virtual void LinearCombinationOfVectors(const Vector * const x1, const Vector * const x2, const Vector * const x3, const double * const factors); 70 virtual double CutsPlaneAt(const Vector * const A, const Vector * const B, const Vector * const C) const; 71 virtual bool GetOneNormalVector(const Vector * const x1); 72 virtual bool MakeNormalTo(const Vector &y1); 70 73 //bool SolveSystem(Vector * x1, Vector * x2, Vector * y, const double alpha, const double beta, const double c); 71 bool IsInParallelepiped(const Vector &offset, const double * const parallelepiped) const;72 v oid WrapPeriodically(const double * const M, const double * const Minv);74 virtual bool IsInParallelepiped(const Vector &offset, const double * const parallelepiped) const; 75 virtual void WrapPeriodically(const double * const M, const double * const Minv); 73 76 74 77 // Accessors ussually come in pairs... and sometimes even more than that 75 double& operator[](size_t i);76 const double& operator[](size_t i) const;77 double& at(size_t i);78 const double& at(size_t i) const;78 virtual double& operator[](size_t i); 79 virtual const double& operator[](size_t i) const; 80 virtual double& at(size_t i); 81 virtual const double& at(size_t i) const; 79 82 80 83 // Assignment operator 81 Vector &operator=(const Vector& src);84 virtual Vector &operator=(const Vector& src); 82 85 83 86 // Access to internal structure 84 double* get(); 87 virtual double* get(); 88 89 // operators for mathematical operations 90 bool operator==(const Vector& b) const; 91 const Vector& operator+=(const Vector& b); 92 const Vector& operator-=(const Vector& b); 93 Vector const operator+(const Vector& b) const; 94 Vector const operator-(const Vector& b) const; 85 95 86 96 private: … … 90 100 91 101 ostream & operator << (ostream& ost, const Vector &m); 92 bool operator==(const Vector& a, const Vector& b);93 const Vector& operator+=(Vector& a, const Vector& b);94 const Vector& operator-=(Vector& a, const Vector& b);95 102 const Vector& operator*=(Vector& a, const double m); 96 103 Vector const operator*(const Vector& a, const double m); 97 104 Vector const operator*(const double m, const Vector& a); 98 Vector const operator+(const Vector& a, const Vector& b);99 Vector const operator-(const Vector& a, const Vector& b);100 101 105 102 106 #endif /*VECTOR_HPP_*/
Note:
See TracChangeset
for help on using the changeset viewer.