MineLink
 All Data Structures Functions Variables Pages
slopes.h
1 #ifndef __SLOPES_H__
2 #define __SLOPES_H__
3 
4 #include <iostream>
5 #include <fstream>
6 #include <typeinfo>
7 #include <algorithm>
8 #include <map>
9 
10 #include "precs.h"
11 #include "../bm/coords.h"
12 #include "../bm/blocksel.h"
13 #include "limits"
14 #include "slopedef.h"
15 using namespace std;
16 
17 
18 namespace delphos{
19 
20 
24 typedef struct relcoordindex
25  {
29  long idx;
33  long idy;
37  long idz;
39 
43 typedef struct coordindex
44  {
48  BlockIndexType idx;
52  BlockIndexType idy;
56  BlockIndexType idz;
58 
62 class SlopePrecedence : public Precedence
63 {
64 private:
65  vector<SlopeDefinition> _slope_defs;
66 
80  static vector<Coordinates>* RosettaPattern(const delphos::RosettaSlope& rosetta,const unsigned int & levels,const double & dx,const double & dy,const double & dz);
81 
101  static vector<Coordinates>* RosettaLightPattern(vector<delphos::Coordinates>* pattern1,vector<delphos::Coordinates>* pattern, const unsigned int & levels,const double & dz);
102 
103 
123  map<double,vector<Coordinates>*>* RosettaLightPatterns(const map<double,delphos::RosettaSlope>& rosettas, const unsigned int & levels,const double & dx,const double & dy,const double & dz);
124 
137  map<double,vector<Coordinates>*>* RosettaPatterns(const map<double,delphos::RosettaSlope>& rosettas, const unsigned int & levels,const double & dx,const double & dy,const double & dz);
138 
139 
140 public:
145 
156  virtual void CreateArcs(const double & angle_degrees, const double & max_z_diff);
157 
169  virtual void CreateAdditionalArcs(const double & angle_degrees, const double & max_z_diff);
170 
171 
186  virtual void CreateArcs(const double & angle_degrees, const double & max_z_diff,const delphos::BlockSelection& bs);
187 
202  virtual void CreateAdditionalArcs(const double & angle_degrees, const double & max_z_diff,const delphos::BlockSelection& bs);
203 
204 
220  virtual void CreateArcs(
221  const double & angle_degrees,
222  const unsigned int & levels,
223  const double & dx,
224  const double & dy,
225  const double & dz);
226 
243  virtual void CreateAdditionalArcs(
244  const double & angle_degrees,
245  const unsigned int & levels,
246  const double & dx,
247  const double & dy,
248  const double & dz);
249 
269  virtual void CreateAdditionalArcs(
270  const double & angle_degrees,
271  const unsigned int & levels,
272  const double & dx,
273  const double & dy,
274  const double & dz,
275  const delphos::BlockSelection& bs);
276 
295  virtual void CreateArcs(
296  const double & angle_degrees,
297  const unsigned int & levels,
298  const double & dx,
299  const double & dy,
300  const double & dz,
301  const delphos::BlockSelection& bs);
302 
307  virtual void CreateArcs(const delphos::SlopeDefinition& slope_def);
308 
313  virtual void CreateAdditionalArcs(const delphos::SlopeDefinition& slope_def);
314 
315  #ifndef DOXYGEN
316  virtual void CreateArcs(
317  vector<Coordinates>& pattern1,
318  vector<Coordinates>& pattern,
319  const double & dx,
320  const double & dy,
321  const double & dz);
322 
323 
336  static vector<delphos::Coordinates> * SlopePattern(
337  const double & angle_degrees,
338  const unsigned int & levels,
339  const double & dx,
340  const double & dy,
341  const double & dz);
342 
362  static vector<delphos::Coordinates> * SlopeLightPattern(
363  vector<delphos::Coordinates>* pattern1,
364  vector<delphos::Coordinates>* pattern,
365  const unsigned int & levels,
366  const double & dz);
367 
380  vector<delphos::RelativeCoordinatesIndex>* ToIndex(const double & dx,const double & dy,const double & dz,vector<delphos::Coordinates>* vcoords) const;
381  #endif
382 };
383 
384 }
385 #endif
Abstracts a set of blocks (subset of a blockmodel).
Definition: blocksel.h:33
long idx
relative index coordinates in axis 'X' for a block.
Definition: slopes.h:29
BlockIndexType idz
index coordinates in axis 'Z' for a block.
Definition: slopes.h:56
Structure to store index coordinates for a block.
Definition: slopes.h:24
long idz
relative index coordinates in axis 'Z' for a block.
Definition: slopes.h:37
Vertical precedence class with utility methods for constant slope precedences.
Definition: slopes.h:62
This class allows to store different slope angles depending on azimuth.
Definition: rosetta.h:18
BlockIndexType idx
index coordinates in axis 'X' for a block.
Definition: slopes.h:48
Abstracts a container of blocks as a table with arbitrary number of attributes that can be accessed b...
Definition: blockmodel.h:62
Implements a precedence as an explicit set of arcs between blocks. Provides utility functions...
Definition: precs.h:22
This class defines a slope precedence.
Definition: slopedef.h:23
BlockIndexType idy
index coordinates in axis 'Y' for a block.
Definition: slopes.h:52
Structure to store index coordinates for a block.
Definition: slopes.h:43
long idy
relative index coordinates in axis 'Y' for a block.
Definition: slopes.h:33