ITIN.hpp
1 #ifndef OPALS_ITIN_HPP_INCLUDED
2 #define OPALS_ITIN_HPP_INCLUDED
3 
4 #include <opals/IModuleBase.hpp>
5 
6 #if !defined(OPALS_EXPORTS) && !defined(OPALS_MODULE_EXPORTS)
7  #if defined _DEBUG && !defined OPALS_NO_DEBUG
8  #pragma comment(lib, "opalsTIN_d.lib")
9  #else
10  #pragma comment(lib, "opalsTIN.lib")
11  #endif
12 #endif
13 
14 #include <opals/Path.hpp>
15 #include <opals/Vector.hpp>
16 
17 namespace opals {
18 
19  namespace opts
20  {
21  namespace TIN
22  {
23  /// Options of \ref ModuleTIN
24  typedef IGroup< Names::_, false, Cons<
25  ILeaf< Names::inFile, false, opals::Vector<opals::Path> >, Cons<
26  ILeaf< Names::iFormat, false, opals::Vector<opals::String> >, Cons<
27  ILeaf< Names::iFilter, false, opals::Vector<opals::String> >, Cons<
28  ILeaf< Names::snapRadius, false, double >, Cons<
29  ILeaf< Names::outFile, false, opals::Path >, Cons<
30  ILeaf< Names::oFilter, false, opals::String >, Cons<
31  ILeaf< Names::borderFile, false, opals::Path >, Cons<
32  ILeaf< Names::alphaFile, false, opals::Path >, Cons<
33  ILeaf< Names::alphaRadius, false, double >
34  > > > > > > > > > > Options;
35  }
36  }
37 
38  /// Creates a TIN surface from ODM vector data based on a 2D constrained Delaunay triangulation.
39  /** Module TIN performs a triangular tesselation of the plane, using input data points (including line points) as vertices.
40  These vertices are connected by edges to form a triangulation following the Delaunay criterion, unless there are incident edges considered as constraints.
41  Module TIN allows for the creation of triangular irregular networks (TINs) based on input data, and the export of those TINs into various data formats.
42  Also, alpha-shapes may be derived, and the valid region(s) be extracted. */
43  /// \see \ref ModuleTIN
44  class OPALS_API ITIN : virtual public IModuleBase
45  {
46 
47  public:
48  static ITIN* New();
49  static ITIN* New( IControlObject &controlObject );
50  static ITIN* New( const IModuleBase &parent );
51  static ITIN* New( const IModuleBase &parent, IControlObject &controlObject );
52 
53  virtual ~ITIN() {}
54 
55  /// \name Access to module-specific options.
56  ///@{
58  virtual Options& opts() = 0;
59  virtual const Options& opts() const = 0;
60  ///}@
61 
62  };
63 
64 };
65 
66 #endif