BALL  1.4.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
cartoonModel.h
Go to the documentation of this file.
1 // -*- Mode: C++; tab-width: 2; -*-
2 // vi: set ts=2:
3 //
4 // $Id: cartoonModel.h,v 1.32.18.1 2007/03/25 21:26:05 oliver Exp $
5 //
6 
7 #ifndef BALL_VIEW_MODELS_CARTOONMODEL_H
8 #define BALL_VIEW_MODELS_CARTOONMODEL_H
9 
10 #ifndef BALL_VIEW_MODELS_BACKBONEMODEL_H
12 #endif
13 
14 namespace BALL
15 {
16  namespace VIEW
17  {
18  class Mesh;
19 
29  : public AddBackboneModel
30  {
31  public:
32 
33  enum Types
34  {
35  STRAND = NUCLEIC_ACID + 1,
36  HELIX
37  };
38 
40 
41 
43 
45  AddCartoonModel(const AddCartoonModel& cartoon_model);
46 
48  virtual ~AddCartoonModel();
49 
51  void setHelixRadius(float radius)
52  { helix_radius_ = radius;}
53 
55  float getHelixRadius() const
56  { return helix_radius_;}
57 
59  void setArrowWidth(float width)
60  {arrow_width_ = width;}
61 
63  float getArrowWidth() const
64  { return arrow_width_;}
65 
67  void setStrandHeight(float heigth)
68  { strand_height_ = heigth;}
69 
71  float getStrandHeight() const
72  { return strand_height_;}
73 
75  void setStrandWidth(float w)
76  { strand_width_ = w;}
77 
79  float getStrandWidth() const
80  { return strand_width_;}
81 
83  void setDNABaseRadius(float r)
84  { DNA_base_radius_ = r;}
85 
87  float getDNABaseRadius() const
88  { return DNA_base_radius_;}
89 
91  void setDNAHelixRadius(float r)
92  { DNA_helix_radius_ = r;}
93 
95  float getDNAHelixRadius() const
96  { return DNA_helix_radius_;}
97 
99  void setDNALadderRadius(float r)
100  { DNA_ladder_radius_ = r;}
101 
103  float getDNALadderRadius() const
104  { return DNA_ladder_radius_;}
105 
107  void setDrawDNAAsLadderModel(bool state)
108  { draw_DNA_as_ladder_ = state;}
109 
111  bool drawDNAAsLadderModel()
112  { return draw_DNA_as_ladder_;}
113 
115  void enableRibbons(bool state)
116  { draw_ribbon_ = state;}
117 
119  bool ribbonsEnabled() const
120  {return draw_ribbon_;}
121 
122  protected:
123 
124  void insertTriangle_(Position v1, Position v2, Position v3, Mesh& mesh);
125  inline void drawStrand_(const Vector3& start,
126  Vector3& right,
127  Vector3& hn,
128  float arrow_width,
129  Position& last_vertices,
130  Mesh& mesh);
131 
132  void calculateComplementaryBases_(const Composite& composite);
133 
134  bool assignNucleotideAtoms_(Residue& r, Size nr_atoms, String atom_names[10], Atom* atoms[10]);
135 
136  void drawRiboseAtoms_(const Atom* atom1, const Atom* atom2, const Vector3& v1, const Vector3& v2);
137 
138  void calculateModelParts(Protein& protein);
139  void assignModelType(ModelPart& part);
140  void createModel_(Position set_pos, Position part_pos);
141 
142  void createStrand_(Position set_pos, Position part_pos);
143  void createHelix_(Position set_first, Position part_pos);
144  void createTubeHelix_(Position set_first, Position part_pos);
145  void createWatsonCrickModel_(Position set_pos, Position part_pos);
146  void createSimpleNucleicAcid_(Position set_pos, Position part_pos);
147 
148  void renderNucleotideOutline_(const vector<Vector3>& positions, Vector3 uv, Mesh& mesh);
149  Mesh* createDoubleRing_(const vector<Vector3>& positions);
150  Mesh* create6Ring_(vector<Vector3> positions);
151  virtual void refineGuidePoints_();
152 
164 
167 
169  };
170 
171 
172  } // namespace VIEW
173 } // namespace BALL
174 
175 #endif // BALL_VIEW_MODELS_CARTOONMODEL_H