OpenStructure
Loading...
Searching...
No Matches
dihedral.hh
Go to the documentation of this file.
1//------------------------------------------------------------------------------
2// This file is part of the OpenStructure project <www.openstructure.org>
3//
4// Copyright (C) 2008-2020 by the OpenStructure authors
5//
6// This library is free software; you can redistribute it and/or modify it under
7// the terms of the GNU Lesser General Public License as published by the Free
8// Software Foundation; either version 3.0 of the License, or (at your option)
9// any later version.
10// This library is distributed in the hope that it will be useful, but WITHOUT
11// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
13// details.
14//
15// You should have received a copy of the GNU Lesser General Public License
16// along with this library; if not, write to the Free Software Foundation, Inc.,
17// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18//------------------------------------------------------------------------------
19#ifndef OST_BASE_DIHEDRAL_HH
20#define OST_BASE_DIHEDRAL_HH
21
24#include <ost/geom/vec3.hh>
25
26namespace ost { namespace mol { namespace impl {
27
31class Dihedral {
32public:
35 Dihedral(const AtomImplPtr& atom1,
36 const AtomImplPtr& atom2,
37 const AtomImplPtr& atom3,
38 const AtomImplPtr& atom4);
41 Dihedral(const AtomImplList& atoms);
42
45
48
55 void SetAngleICS(Real angle, bool update_other);
56
59
60 bool IsAtomInvolved(const AtomImplPtr& atom);
61
63
65
67
69
70 bool Matches(const AtomImplPtr& a1, const AtomImplPtr& a2,
71 const AtomImplPtr& a3, const AtomImplPtr& a4) const;
72
73private:
74 AtomImplList atoms_;
75};
76
77}}}
78
79#endif
Three dimensional vector class, using Real precision.
Definition vec3.hh:48
Low level dihedral implementation.
Definition dihedral.hh:31
AtomImplPtr GetSecond() const
geom::Vec3 GetOriginalPos() const
AtomImplPtr GetThird() const
AtomImplPtr GetFourth() const
geom::Vec3 GetPos() const
Real GetAngleXCS() const
get dihedral angle base on atom position
Real GetAngleICS() const
get dihedral angle based on internal coordinate system
bool IsAtomInvolved(const AtomImplPtr &atom)
bool Matches(const AtomImplPtr &a1, const AtomImplPtr &a2, const AtomImplPtr &a3, const AtomImplPtr &a4) const
Dihedral(const AtomImplPtr &atom1, const AtomImplPtr &atom2, const AtomImplPtr &atom3, const AtomImplPtr &atom4)
construct new dihedral as defined by the four consecutive atoms atom1 to atom4
void SetAngleICS(Real angle, bool update_other)
set dihedral angle. Requires an intact internal coordinate system.
AtomImplPtr GetFirst() const
Dihedral(const AtomImplList &atoms)
construct new dihedral as defined by the four consecutive atoms stored in atoms
float Real
Definition base.hh:44
boost::shared_ptr< AtomImpl > AtomImplPtr
std::vector< AtomImplPtr > AtomImplList
Definition base.dox:1