Branch data Line data Source code
1 : : /*
2 : : * AF2LocalTransform.hpp
3 : : *
4 : : * A local transformation between some 2-dimensional space and some
5 : : * 2-dimensional subspace of a 3-dimensional space. This transformation
6 : : * is used by the 2-dimensional advancing front algorithm to transform
7 : : * points between a surface embedded in 3 dimensions and a 2-dimensional
8 : : * space. The transformation should be a bijection between the
9 : : * 2-dimensional space and some local patch on the surface, but
10 : : * it does not need to be a global parametrization.
11 : : */
12 : : #ifndef AF2LOCALTRANSFORM_HPP
13 : : #define AF2LOCALTRANSFORM_HPP
14 : :
15 : : #include "meshkit/AF2Point2D.hpp"
16 : : #include "meshkit/AF2Point3D.hpp"
17 : :
18 : 10056 : class AF2LocalTransform
19 : : {
20 : :
21 : : public:
22 : :
23 [ - + ]: 150 : virtual ~AF2LocalTransform() {}
24 : :
25 : : /**
26 : : * \brief Transform from a 3-dimensional point on the surface to a
27 : : * point in a 2-dimensional space.
28 : : *
29 : : * The returned point is returned by pointer. It is allocated
30 : : * on the heap by this method using new, and it is the responsibility
31 : : * of the calling context to deallocate it with a call to delete.
32 : : *
33 : : * \param srfcPnt the input 3-dimensional point on the surface
34 : : * \param legal an editable flag that the AF2LocalTransform may set
35 : : * to false to indicate that the 3-dimensional point does not
36 : : * lie in the local patch of the surface for which this transform
37 : : * provides a bijection, so the 2-dimensional point returned by
38 : : * the method should not be used except, possibly, as an endpoint
39 : : * of an edge if the other endpoint of the edge is legal
40 : : *
41 : : *
42 : : * \return a 2-dimensional point
43 : : */
44 : : virtual AF2Point2D* transformFromSurface(
45 : : AF2Point3D const & srfcPnt, bool & legal) const = 0;
46 : :
47 : : /**
48 : : * \brief Transform from a point in the 2-dimensional space of this
49 : : * transformation to a 3-dimensional point on the surface.
50 : : *
51 : : * The returned point is returned by pointer. It is allocated
52 : : * on the heap by this method using new, and it is the responsibility
53 : : * of the calling context to deallocate it with a call to delete.
54 : : *
55 : : * \param planePnt the input 2-dimensional point
56 : : * \param pntId the local point identifier that should be assigned
57 : : * to the new three-dimensional point
58 : : * \return a 3-dimensional point on the surface
59 : : */
60 : : virtual AF2Point3D* transformToSurface(
61 : : AF2Point2D const & planePnt,
62 : : unsigned long const & pntId) const = 0;
63 : : };
64 : :
65 : : #endif
|