Branch data Line data Source code
1 : : /** \class TDFacetBoundaryPoint
2 : : //- Class: TDFacetBoundaryPoint
3 : : //- Description: Tool data for storing additional information at
4 : : //- the boundary of a facet set
5 : : //- Owner: Steve Owen
6 : : //- Checked by:
7 : : //- Version:
8 : : */
9 : : #ifndef TD_FACET_BOUNDARY_POINT_HPP
10 : :
11 : :
12 : : #define TD_FACET_BOUNDARY_POINT_HPP
13 : :
14 : : #include "CubitDefines.h"
15 : : #include "ToolData.hpp"
16 : : #include "MemoryManager.hpp"
17 : : #include "DLIList.hpp"
18 : : #include "CubitVector.hpp"
19 : : #include "CastTo.hpp"
20 : : class CubitPoint;
21 : : class CubitFacet;
22 : : class CubitQuadFacet;
23 : : class CubitFacetEdge;
24 : : class CubitTransformMatrix;
25 : : /** \struct BoundaryPointData
26 : : No comments.
27 : : */
28 [ + - ]: 1804 : typedef struct BoundaryPointData
29 : : {
30 : : DLIList<CubitFacet *> surfFacetList;
31 : : CubitVector normal;
32 : : double uVal, vVal, sizeVal;
33 : : int surfID;
34 : : } BoundaryPointData;
35 : :
36 : : class TDFacetBoundaryPoint : public ToolData
37 : : {
38 : : private:
39 : :
40 : : static MemoryManager memoryManager;
41 : : //- memory management object
42 : :
43 : : CubitPoint *pointPtr;
44 : : DLIList <BoundaryPointData *> pointDataList;
45 : :
46 : : void init_normal( BoundaryPointData *bpd_ptr );
47 : : // initialize normals at point
48 : : BoundaryPointData *get_bpd( CubitFacet *facet );
49 : : // return a boundary point data
50 : :
51 : : public:
52 : :
53 : : TDFacetBoundaryPoint();
54 : : //- constructor
55 : :
56 : : ~TDFacetBoundaryPoint();
57 : :
58 : 9548 : static int is_facet_boundary_point(const ToolData* td)
59 [ + - ][ + + ]: 9548 : {return (CAST_TO(const_cast<ToolData*>(td), TDFacetBoundaryPoint) != NULL);}
60 : :
61 : : void add_surf(int new_id);
62 : :
63 : : CubitPoint *get_point()
64 : : { return pointPtr; }
65 : :
66 : 748 : void set_point( CubitPoint *point_ptr )
67 : 748 : { pointPtr = point_ptr; }
68 : :
69 : 1496 : SetDynamicMemoryAllocation(memoryManager)
70 : : //- class specific new and delete operators
71 : :
72 : : static void set_memory_allocation_increment(int increment = 0)
73 : : {memoryManager.set_memory_allocation_increment(increment);}
74 : : //- set block memory size increment
75 : :
76 : : static void destroy_memory()
77 : : {memoryManager.destroy_memory();}
78 : : //- destroy all memory allocted to this object
79 : :
80 : : static CubitStatus add_facet_boundary_point(CubitPoint *point_ptr);
81 : : // basic initializer
82 : :
83 : : static CubitStatus add_facet_boundary_point( CubitPoint *point_ptr,
84 : : CubitFacet *facet_ptr,
85 : : CubitVector &normal );
86 : : static CubitStatus add_facet_boundary_point( CubitPoint *point_ptr,
87 : : CubitQuadFacet *qfacet_ptr,
88 : : CubitVector &normal );
89 : : // initializes with a single facet and normal
90 : :
91 : : static TDFacetBoundaryPoint* get_facet_boundary_point(CubitPoint *point_ptr);
92 : : // get the fbp from the point
93 : :
94 : : CubitStatus get_normal( int surf_id, CubitVector &normal );
95 : : CubitStatus get_normal( CubitFacet *adj_facet, CubitVector &normal );
96 : : CubitStatus get_normal( CubitFacetEdge *edge_ptr, CubitVector &normal );
97 : : CubitStatus set_normal( int surf_id, CubitVector &normal );
98 : : //recalculate normals. Call this if an attached facet changes in some way.
99 : : CubitStatus reset_normals();
100 : : //- get and set normals at a specific surface or facet
101 : :
102 : : CubitStatus set_uv( CubitFacet *adj_facet, double u, double v );
103 : : CubitStatus set_uvs( CubitFacet *adj_facet, double u, double v, double s );
104 : : double u( CubitFacet *adj_facet );
105 : : double v( CubitFacet *adj_facet );
106 : : double s( CubitFacet *adj_facet );
107 : : CubitStatus get_uv( CubitFacet *adj_facet, double &u, double &v );
108 : : //- get and set the u-v values for this surface
109 : : CubitStatus get_uvs( CubitFacet *adj_facet, double &u, double &v, double &s );
110 : : //- get and set the u-v values and size for this surface
111 : :
112 : :
113 : : void add_surf_facets( DLIList<CubitFacet *> adj_facet_list );
114 : : //- add a group of facets that are adjacent to this point
115 : : //- that are on the same surface
116 : : void set_surf_id( CubitFacet *facet_ptr, int surf_id );
117 : : //- set id of surface associated with facet
118 : :
119 : : CubitStatus merge_normals( CubitFacet *facet0, CubitFacet *facet1);
120 : : //- merge the normals from facets
121 : :
122 : : CubitStatus rotate_normal( CubitTransformMatrix &rotmat );
123 : : //- rotate the normals at the point
124 : :
125 : : CubitStatus get_boundary_point_data_size( int &size_int_data,
126 : : int &size_double_data );
127 : : CubitStatus get_boundary_point_data(int *int_data, double *double_data,
128 : : int &iidx, int &didx );
129 : : //- retreive info for dumping to a CUB file
130 : :
131 : : static CubitStatus new_facet_boundary_point(CubitPoint **points,
132 : : CubitFacet **facets,int &iidx,int &didx,
133 : : int *int_data,double *double_data);
134 : : void initialize(CubitFacet **facets,
135 : : int &iidx, int &didx, int *int_data,double *double_data);
136 : : //- restore data from a CUB file
137 : : };
138 : :
139 : :
140 : : #endif // TD_FACET_BOUNDARY_EDGE_HPP
141 : :
142 : :
|