Branch data Line data Source code
1 : : //-----------------------------------------------------------------------------
2 : : //
3 : : // File: CubitPointData.hpp
4 : : //
5 : : // Purpose: Child class of CubitPoint. It is the Cubit-specific version of
6 : : // of the CubitPoint.
7 : : //
8 : : // Notes: Note that this class contains data which is accessed
9 : : // virtually from CubitPoint. In most cases, you can create
10 : : // a CubitPointData and treat it as if it is a CubitPoint.
11 : : // For example:
12 : : // CubitPoint *cp = (CubitPoint *) new CubitPointData(...);
13 : : // There should be no reason to reference the CubitFacetPoint
14 : : // directly. This is done to allow different data representations
15 : : // of a point in addition to that used by Cubit.
16 : : //
17 : : //-----------------------------------------------------------------------------
18 : :
19 : :
20 : : #ifndef CUBITPOINTDATA_HPP
21 : : #define CUBITPOINTDATA_HPP
22 : :
23 : : // Include for CubitBoolean
24 : : #include "CubitDefines.h"
25 : : #include "CubitVector.hpp"
26 : : #include "DLIList.hpp"
27 : : #include "MemoryManager.hpp"
28 : : #include "ToolDataUser.hpp"
29 : : #include "CubitMatrix.hpp"
30 : : #include "CubitPoint.hpp"
31 : : class CubitFacet;
32 : :
33 : : class CubitPointData : public CubitPoint
34 : : {
35 : : private:
36 : :
37 : : CubitVector coords;
38 : : DLIList<CubitFacet*> *attachedFacets;
39 : :
40 : : static MemoryManager memoryManager;
41 : : //- memory management object
42 : :
43 : : int entityId;
44 : :
45 : : public:
46 : :
47 : : CubitPointData(double x_val, double y_val, double z_val );
48 : : CubitPointData(double x_val, double y_val, double z_val,int *);
49 : : CubitPointData( const CubitVector &new_point );
50 : : ~CubitPointData();
51 : :
52 : 2860 : SetDynamicMemoryAllocation(memoryManager)
53 : : //- class specific new and delete operators
54 : :
55 : 11528 : int id(){ return entityId;}
56 : 1056 : void set_id( int new_id ) { entityId = new_id; }
57 : :
58 : 143330 : double x(){return coords.x();}
59 : 140426 : double y(){return coords.y();}
60 : 144914 : double z(){return coords.z();}
61 : 308 : void set( const CubitVector &pos ) { coords = pos; }
62 : :
63 : 18810 : void marked(int marked){ markedFlag = marked;}
64 : 21472 : int marked(){return markedFlag;}
65 : : //- generic marker for efficient sorting.
66 : :
67 : 264308 : CubitVector coordinates() const { return coords; }
68 : : void coordinates(double point_array[3]);
69 : :
70 : : void add_facet( CubitFacet *facet);
71 : : void remove_facet( CubitFacet *facet );
72 : : int num_adj_facets();
73 : :
74 : 3894 : void facets( DLIList<CubitFacet*> &facet_list )
75 [ + + ]: 3894 : { if (attachedFacets) facet_list += *attachedFacets; }
76 : 0 : void tris( DLIList<CubitFacet*> &facet_list )
77 : 0 : { facets(facet_list); }
78 : : void edges( DLIList<CubitFacetEdge*> &edge_list );
79 : 0 : void points( DLIList<CubitPoint*> &point_list )
80 [ # # ]: 0 : { point_list.append( this ); }
81 : :
82 : : void compute_avg_normal();
83 : : CubitStatus merge_points( CubitPoint *dead_point, CubitBoolean keep_point = CUBIT_FALSE );
84 : : CubitStatus collapse_edge( CubitPointData *dead_point );
85 : : };
86 : :
87 : : #endif
88 : :
89 : :
|