Branch data Line data Source code
1 : : #include "OctreeFacetPointData.hpp"
2 : :
3 : : #include "CubitPoint.hpp"
4 : : #include "CubitFacet.hpp"
5 : : #include "CubitFacetEdge.hpp"
6 : : //#include "SVDrawTool.hpp"
7 : : #include "CubitColor.hpp"
8 : :
9 : : /* -------------------- Methods of OctreeFacetPointData ----------------- */
10 : 0 : int OctreeFacetPointData::calculate_id( void ){
11 : : static int count = -1;
12 : 0 : count++;
13 : 0 : return count;
14 : : }
15 : :
16 : 0 : OctreeFacetPointData::OctreeFacetPointData( CubitVector coord, CubitFacet *ptr_facet ){
17 : 0 : xyz = coord;
18 : 0 : type = CUBIT_FACET_POINT_DATA_FACET;
19 : 0 : facetPtr = ptr_facet;
20 : 0 : num = calculate_id();
21 : 0 : }
22 : :
23 : 0 : OctreeFacetPointData::OctreeFacetPointData( CubitVector coord, CubitFacetEdge *ptr_facet_edge ){
24 : 0 : xyz = coord;
25 : 0 : type = CUBIT_FACET_POINT_DATA_EDGE;
26 : 0 : facetEdgePtr = ptr_facet_edge;
27 : 0 : num = calculate_id();
28 : 0 : }
29 : :
30 : 0 : OctreeFacetPointData::OctreeFacetPointData( CubitVector coord, CubitPoint *ptr_point ){
31 : 0 : xyz = coord;
32 : 0 : type = CUBIT_FACET_POINT_DATA_POINT;
33 : 0 : facetPointPtr = ptr_point;
34 : 0 : num = calculate_id();
35 : 0 : }
36 : :
37 : 0 : CubitBoolean OctreeFacetPointData::generate_facet_point_data_based_on_curvature( CubitFacetEdge *ptr_facet_edge, /*double angle,*/ DLIList< OctreeFacetPointData *> &facet_point_data_list ){
38 : :
39 : 0 : CubitFacet *ptr_adj_facet0 = ptr_facet_edge->adj_facet(0);
40 : 0 : CubitFacet *ptr_adj_facet1 = ptr_facet_edge->adj_facet(1);
41 : :
42 : : // Find minimum edge length
43 : : int i;
44 : 0 : double edge_len, min_edge_len = CUBIT_DBL_MAX;
45 [ # # ]: 0 : for( i = 0; i < 3; i++ ){
46 : 0 : edge_len = ptr_adj_facet0->edge(i)->length();
47 [ # # ]: 0 : if( edge_len < min_edge_len ){
48 : 0 : min_edge_len = edge_len;
49 : : }
50 : : }
51 [ # # ]: 0 : for( i = 0; i < 3; i++ ){
52 : 0 : edge_len = ptr_adj_facet1->edge(i)->length();
53 [ # # ]: 0 : if( edge_len < min_edge_len ){
54 : 0 : min_edge_len = edge_len;
55 : : }
56 : : }
57 : :
58 : 0 : int num_seg = (int)(ptr_facet_edge->length() / min_edge_len) + 1;
59 : :
60 : : // For triangles with high aspect ratio the number of segments can be enormous. Limit
61 : : // the number of segments.
62 [ # # ]: 0 : if(num_seg > 100)
63 : 0 : num_seg = 100;
64 : :
65 : : OctreeFacetPointData *facet_point_data;
66 [ # # ]: 0 : for( i = 1; i < num_seg; i++ ){
67 [ # # ][ # # ]: 0 : facet_point_data = new OctreeFacetPointData( (ptr_facet_edge->point(0)->coordinates() * (num_seg - i) + ptr_facet_edge->point(1)->coordinates() * (i)) / num_seg , ptr_facet_edge );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
68 : 0 : facet_point_data_list.push( facet_point_data );
69 : : }
70 : :
71 : 0 : return CUBIT_TRUE;
72 : : }
73 : :
74 : 0 : void OctreeFacetPointData::display( void ){
75 : :
76 [ # # # # ]: 0 : switch( type ){
77 : : case CUBIT_FACET_POINT_DATA_POINT:
78 : : //SVDrawTool::draw_point( xyz, CUBIT_BLUE_INDEX );
79 : 0 : break;
80 : :
81 : : case CUBIT_FACET_POINT_DATA_EDGE:
82 : : //SVDrawTool::draw_point( xyz, CUBIT_YELLOW_INDEX );
83 : 0 : break;
84 : :
85 : : case CUBIT_FACET_POINT_DATA_FACET:
86 : : //SVDrawTool::draw_point( xyz, CUBIT_GREEN_INDEX );
87 : 0 : break;
88 : :
89 : : default:
90 : 0 : break;
91 : : }
92 : :
93 [ + - ][ + - ]: 6540 : }
94 : :
95 : :
96 : :
97 : : //EOF
98 : :
|