ProjPrimitivesOnSurfaces.hpp
1 /*----------------------------------------------------------------------------*\
2  *
3  * mimmo
4  *
5  * Optimad Engineering S.r.l. ("COMPANY") CONFIDENTIAL
6  * Copyright (c) 2015-2021 Optimad Engineering S.r.l., All Rights Reserved.
7  *
8  * --------------------------------------------------------------------------
9  *
10  * NOTICE: All information contained herein is, and remains the property
11  * of COMPANY. The intellectual and technical concepts contained herein are
12  * proprietary to COMPANY and may be covered by Italian and Foreign Patents,
13  * patents in process, and are protected by trade secret or copyright law.
14  * Dissemination of this information or reproduction of this material is
15  * strictly forbidden unless prior written permission is obtained from
16  * COMPANY. Access to the source code contained herein is hereby forbidden
17  * to anyone except current COMPANY employees, managers or contractors who
18  * have executed Confidentiality and Non-disclosure agreements explicitly
19  * covering such access.
20  *
21  * The copyright notice above does not evidence any actual or intended
22  * publication or disclosure of this source code, which includes information
23  * that is confidential and/or proprietary, and is a trade secret, of
24  * COMPANY. ANY REPRODUCTION, MODIFICATION, DISTRIBUTION, PUBLIC PERFORMANCE,
25  * OR PUBLIC DISPLAY OF OR THROUGH USE OF THIS SOURCE CODE WITHOUT THE
26  * EXPRESS WRITTEN CONSENT OF COMPANY IS STRICTLY PROHIBITED, AND IN
27  * VIOLATION OF APPLICABLE LAWS AND INTERNATIONAL TREATIES. THE RECEIPT OR
28  * POSSESSION OF THIS SOURCE CODE AND/OR RELATED INFORMATION DOES NOT CONVEY
29  * OR IMPLY ANY RIGHTS TO REPRODUCE, DISCLOSE OR DISTRIBUTE ITS CONTENTS, OR
30  * TO MANUFACTURE, USE, OR SELL ANYTHING THAT IT MAY DESCRIBE, IN WHOLE OR
31  * IN PART.
32  *
33 \*----------------------------------------------------------------------------*/
34 
35 #ifndef __PROJPRIMITIVESONSURFACES_HPP__
36 #define __PROJPRIMITIVESONSURFACES_HPP__
37 
38 #include "BaseManipulation.hpp"
39 
40 namespace mimmo{
41 
71 
72 protected:
73  int m_topo;
74  int m_nC;
80 public:
82  virtual ~ProjPrimitivesOnSurfaces();
83 
86 
87 protected:
88  virtual void buildPorts();
89 
90 public:
91  int getTopology();
92  virtual int getProjElementTargetNCells();
94 
96 
97  void setBuildSkdTree(bool build);
98  void setBuildKdTree(bool build);
99  void setProjElementTargetNCells(int nC);
100 
101  bool isEmpty();
102 
103  void clear();
104  void execute();
105 
106  void plotOptionalResults();
107 
108 protected:
112  virtual void projection() = 0;
113  void swap(ProjPrimitivesOnSurfaces & x) noexcept;
114 };
115 
116 REGISTER_PORT(M_GEOM, MC_SCALAR, MD_MIMMO_, __PROJPRIMITIVESONSURFACES_HPP__)
117 };
118 
119 #endif /* __PROJPRIMITIVESONSURFACES_HPP__ */
#define M_GEOM
MimmoSharedPointer< MimmoObject > m_patch
void setGeometry(MimmoSharedPointer< MimmoObject > geo)
ProjPrimitivesOnSurfaces & operator=(const ProjPrimitivesOnSurfaces &other)
BaseManipulation is the base class of any manipulation object of the library.
#define MC_SCALAR
#define REGISTER_PORT(Name, Container, Datatype, ManipBlock)
Class for projecting 1D/2D primitives on a target 3D surface mesh.
void swap(ProjPrimitivesOnSurfaces &x) noexcept
#define MD_MIMMO_
MimmoSharedPointer< MimmoObject > getProjectedElement()
MimmoSharedPointer is a custom implementation of shared pointer.