ProjSegmentOnSurface.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 __PROJSEGMENTONSURFACE_HPP__
36 #define __PROJSEGMENTONSURFACE_HPP__
37 
38 #include "ProjPrimitivesOnSurfaces.hpp"
39 
40 namespace mimmo{
41 
100 
101 private:
102  darray3E m_pointA;
103  darray3E m_pointB;
105 public:
107  ProjSegmentOnSurface(const bitpit::Config::Section & rootXML);
108  virtual ~ProjSegmentOnSurface();
109 
112 
113  void clear();
114 
115  void setSegment(darray3E pointA, darray3E pointB);
116  void setSegment(darray3E origin, darray3E dir, double length);
117 
118  void absorbSectionXML(const bitpit::Config::Section & slotXML, std::string name="");
119  void flushSectionXML(bitpit::Config::Section & slotXML, std::string name="");
120 
121 protected:
122  void projection();
123  void swap(ProjSegmentOnSurface & x) noexcept;
124 };
125 
126 REGISTER(BaseManipulation, ProjSegmentOnSurface, "mimmo.ProjSegmentOnSurface")
127 
128 };
129 
130 #endif /* __PROJSEGMENTONSURFACE_HPP__ */
void absorbSectionXML(const bitpit::Config::Section &slotXML, std::string name="")
ProjSegmentOnSurface & operator=(ProjSegmentOnSurface other)
BaseManipulation is the base class of any manipulation object of the library.
void flushSectionXML(bitpit::Config::Section &slotXML, std::string name="")
void swap(ProjSegmentOnSurface &x) noexcept
Class for projecting 1D/2D primitives on a target 3D surface mesh.
Executable block class capable of projecting an elemental segment on a 3D surface mesh defined by a M...
std::array< double, 3 > darray3E
void setSegment(darray3E pointA, darray3E pointB)
#define REGISTER(Base, Derived, name)
Definition: factory.hpp:206