root/cgm/trunk/geom/virtual/CollapseAngleTool.hpp

Revision 1040, 4.3 KB (checked in by tautges, 2 years ago)

Version 10.2 of cgm.

Line 
1//---------------------------------------------------------------------------
2//- Filename:       CollapseAngleTool
3//- Purpose:  To collapse small angle for preparing for mesh
4//-
5//- Creator:       Jiangtao Hu
6//- Creation date: 02/09/2005
7//----------------------------------------------------------------------------
8
9#ifndef COLLAPSEANGLETOOL_HPP
10#define COLLAPSEANGLETOOL_HPP
11
12#include "DLIList.hpp"
13class RefVertex;
14class RefEdge;
15class RefFace;
16class CubitVector;                                                 
17template<class X> class DLIList;
18   
19class CollapseAngleTool
20{
21public:
22  static CollapseAngleTool *instance();
23    // return a static instance pointer
24
25  CubitStatus auto_collapse (double length,
26                             double angle,
27                             CubitBoolean preview,
28                             CubitBoolean if_comp_vertex,
29                             double max_angle);
30
31  void collapse_one_angle(RefVertex *vex_ptr,
32                          RefEdge   *edge_to_remove,
33                          RefEdge   *the_other_edge,
34                          double     length1,
35                          double     length2,
36                          CubitBoolean get_position,
37                          CubitVector  &position,
38                          CubitBoolean preview,
39                          CubitBoolean if_comp_vertex,
40                          double       angle);
41
42private:
43  CollapseAngleTool();
44    // Constructor
45                                                                               
46  ~CollapseAngleTool();
47    // Destructor
48                                                                               
49  static CollapseAngleTool *instance_;
50    // the static instance pointer
51
52  DLIList <RefEdge *> partly_drawn_curve;
53  CubitStatus partition_curve(RefEdge *&edge,
54                              RefVertex *root_vertex,
55                              CubitVector  &position,
56                              RefVertex *&new_vertex);
57                                                                               
58  CubitBoolean if_partition_surf(RefVertex *vex_ptr,
59                                 RefEdge  *edge_to_remove,
60                                 RefFace  *common_face);
61
62  CubitStatus partition_curve(RefEdge *&edge,
63                              RefVertex *root_vertex,
64                              double  arc_length,
65                              RefVertex *&new_vertex);
66                                                                               
67  CubitStatus partition_surface(RefFace *common_face,
68                                RefEdge *& edge,
69                                RefVertex * root,
70                                RefVertex *vertex1,
71                                RefVertex *veretx2,
72                                RefFace  *&result_face);
73                                                                               
74  CubitStatus collapse_angle(RefVertex *vex_ptr,
75                             RefEdge   *edge_to_remove,
76                             RefEdge   *the_other_edge,
77                             double     length1,
78                             double     length2,
79                             CubitBoolean get_position,
80                             CubitVector &position);
81
82  CubitStatus draw_preview(RefVertex *vex_ptr,
83                           RefEdge   *edge_to_remove,
84                           RefEdge   *the_other_edge,
85                           double     length1,
86                           double     length2,
87                           CubitBoolean get_position,
88                           CubitVector &position);
89                                                                               
90  void  exchange_edges(RefEdge *&edge,
91                       RefEdge *&the_other_edge);
92                                                                               
93  double the_surface_angle(RefEdge *edge,
94                           RefVertex *root_vertex,
95                           double    length);
96                                                                               
97  CubitStatus position_from_length(RefEdge *edge,
98                                   RefVertex *root_vertex,
99                                   double  arc_length,
100                                   CubitVector& v_new);
101};
102
103#endif
Note: See TracBrowser for help on using the browser.