ODIN
seqrotmatrixvector.h
1 /***************************************************************************
2  seqrotmatrixvector.h - description
3  -------------------
4  begin : Wed Jul 30 2003
5  copyright : (C) 2000-2021 by Thies H. Jochimsen and Michael v. Mengershausen
6  email : thies@jochimsen.de
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef SEQROTMATRIXVECTOR_H
19 #define SEQROTMATRIXVECTOR_H
20 
21 #include <odinseq/seqvec.h>
22 
23 class SeqGradChanList; // forward declaration
24 
34 class SeqRotMatrixVector : public SeqVector, public Handled<const SeqRotMatrixVector* > {
35 
36  public:
40  SeqRotMatrixVector(const STD_string& object_label = "unnamedSeqRotMatrixVector");
41 
46 
47 
52 
57 
61  const RotMatrix& operator [] (unsigned long index) const;
62 
66  const RotMatrix& get_current_matrix () const;
67 
73  SeqRotMatrixVector& create_inplane_rotation(unsigned int nsegments);
74 
79  rotMatrixList.clear();
80  return *this;
81  };
82 
83 
88 // srm.check_and_correct();
89  rotMatrixList.push_back(srm);
90  return *this;
91  };
92 
93 
98 
99 
100 
101  // implemented virtual from SeqVector
102  unsigned int get_vectorsize() const {return rotMatrixList.size();};
103  bool needs_unrolling_check() const {return get_vectorsize()>1;}
104  bool is_qualvector() const {return false;}
105  bool prep_iteration() const;
106  svector get_vector_commands(const STD_string& iterator) const {iterator_cache=iterator; return svector();}
107 
108  // return stored iterator, quick hack for EPIC rotmats
109  const STD_string& get_iterator() const {return iterator_cache;}
110 
111  private:
112  friend class SeqGradChan;
113 
114  mutable STD_string iterator_cache;
115 
116  STD_list<RotMatrix> rotMatrixList;
117  RotMatrix dummyrotmat;
118 
119 };
120 
121 #endif
Rotation Matrix.
Definition: geometry.h:67
Vector of SeqRotMatrix's.
const RotMatrix & get_current_matrix() const
bool prep_iteration() const
unsigned int get_vectorsize() const
bool needs_unrolling_check() const
SeqRotMatrixVector & create_inplane_rotation(unsigned int nsegments)
svector get_vector_commands(const STD_string &iterator) const
SeqRotMatrixVector & operator=(const SeqRotMatrixVector &srmv)
SeqRotMatrixVector(const SeqRotMatrixVector &srmv)
RotMatrix get_maxMatrix() const
SeqRotMatrixVector(const STD_string &object_label="unnamedSeqRotMatrixVector")
bool is_qualvector() const
const RotMatrix & operator[](unsigned long index) const
SeqRotMatrixVector & clear()
SeqRotMatrixVector & append(const RotMatrix &srm)