Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : PartitionLumpImprint.hpp
3 : : //
4 : : // Purpose : Imprint a lump with a polyline-loop
5 : : //
6 : : // Special Notes :
7 : : //
8 : : // Creator : Jason Kraftcheck
9 : : //
10 : : // Creation Date : 02/05/03
11 : : //-------------------------------------------------------------------------
12 : :
13 : : #ifndef PARTITION_LUMP_IMPRINT
14 : : #define PARTITION_LUMP_IMPRINT
15 : :
16 : : #include "DLIList.hpp"
17 : : #include "RTree.hpp"
18 : : #include "CubitVector.hpp"
19 : : #include <map>
20 : :
21 : : class PartitionCurve;
22 : : class PartitionCoEdge;
23 : : class PartitionLoop;
24 : : class PartitionSurface;
25 : : class PartitionLump;
26 : : class PartitionEntity;
27 : :
28 : : class CubitPoint;
29 : : class CubitFacet;
30 : : class CubitFacetData;
31 : : class CubitFacetEdge;
32 : : class CubitFacetEdgeData;
33 : :
34 [ # # ][ # # ]: 0 : class PartitionLumpImprint
[ # # ][ # # ]
[ # # ][ # # ]
35 : : {
36 : : public:
37 : :
38 : : PartitionLumpImprint( PartitionLump* lump );
39 : :
40 : : PartitionSurface* imprint( DLIList<CubitFacet*>& facets,
41 : : DLIList<PartitionEntity*>& new_entities );
42 : :
43 : : PartitionSurface* imprint( DLIList<CubitFacetData*>& facets,
44 : : DLIList<CubitVector>& vtx_points,
45 : : DLIList<PartitionEntity*>& new_entities );
46 : :
47 : : private:
48 : :
49 : : PartitionSurface* imprint( DLIList<CubitVector>& vtx_points,
50 : : DLIList<PartitionEntity*>& new_entities );
51 : :
52 : : PartitionLoop* imprint( DLIList<CubitPoint*>& loop,
53 : : DLIList<CubitPoint*>& vtx_points );
54 : :
55 : : bool add( PartitionEntity* entity );
56 : :
57 : : PartitionEntity* point_owner( CubitPoint* point ) ;
58 : :
59 : : void set_point_owner( CubitPoint* point, PartitionEntity* owner );
60 : :
61 : : void get_owned_points( PartitionEntity*, DLIList<CubitPoint*>& );
62 : :
63 : 0 : inline CubitPoint* point( int point_id ) const
64 : 0 : { return loopPoints.next(point_id); }
65 : :
66 : 0 : int num_points() const
67 : 0 : { return loopPoints.size(); }
68 : :
69 : : void init( DLIList<CubitFacet*>* facets );
70 : : void begin_loop( DLIList<CubitPoint*>& loop );
71 : :
72 : : void clean_up_loop();
73 : : CubitStatus abort_imprint();
74 : :
75 : : CubitStatus do_imprint();
76 : :
77 : : CubitStatus make_vertices( DLIList<CubitPoint*>& vtx_points );
78 : :
79 : : CubitStatus make_volume_curves();
80 : :
81 : : CubitStatus get_curves( DLIList<PartitionCoEdge*>& result_list );
82 : :
83 : : CubitStatus partitionCurve( CubitPoint* );
84 : : CubitStatus partitionSurface( int first_point_id, int last_point_id,
85 : : PartitionSurface* surf = 0 );
86 : : CubitStatus makePointCurve( CubitPoint* );
87 : : CubitStatus makeFreePoint( CubitPoint* );
88 : : CubitStatus makeFreeCurve( int start_vert_point, int end_vert_point );
89 : :
90 : : PartitionEntity* find_closest( const CubitVector& pos,
91 : : DLIList<PartitionEntity*>& list,
92 : : bool use_tolerance = true );
93 : :
94 : : CubitStatus seam_curve( DLIList<CubitFacetEdgeData*>& edges,
95 : : PartitionCurve* curve,
96 : : DLIList<CubitFacetData*>& facets );
97 : :
98 : : DLIList<CubitFacetData*> facetList;
99 : : DLIList<CubitFacetEdge*> boundaryEdges;
100 : : DLIList<CubitPoint*> loopPoints;
101 : : std::map<CubitPoint*,PartitionEntity*> pointAssoc;
102 : :
103 : : PartitionLump* lump;
104 : : PartitionSurface* newSurface;
105 : : RTree<PartitionEntity*> rTree;
106 : : DLIList<PartitionEntity*> entityList;
107 : :
108 : : DLIList<PartitionEntity*> newEntities;
109 : : };
110 : :
111 : : #endif
112 : :
|