Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Copyright Notice
3 : : //
4 : : // Copyright (c) 1996
5 : : // by Malcolm J. Panthaki, DBA, and the University of New Mexico.
6 : : //-------------------------------------------------------------------------
7 : : //
8 : : //-------------------------------------------------------------------------
9 : : // Filename : Surface.cpp
10 : : //
11 : : // Purpose :
12 : : //
13 : : // Special Notes :
14 : : //
15 : : // Creator : Many
16 : : //
17 : : // Creation Date : 08/02/96
18 : : //
19 : : // Owner : Timothy J. Tautges
20 : : //-------------------------------------------------------------------------
21 : :
22 : :
23 : : #include "Surface.hpp"
24 : : #include "RefFace.hpp"
25 : : #include "GeometryQueryEngine.hpp"
26 : :
27 : : //-------------------------------------------------------------------------
28 : : // Purpose : The default constructor.
29 : : //
30 : : // Special Notes :
31 : : //
32 : : // Creator : Xuechen Liu
33 : : //
34 : : // Creation Date : 08/02/96
35 : : //-------------------------------------------------------------------------
36 : :
37 : 32608 : Surface::Surface()
38 : : {
39 : 16304 : }
40 : :
41 : : //-------------------------------------------------------------------------
42 : : // Purpose : The destructor.
43 : : //
44 : : // Special Notes :
45 : : //
46 : : // Creator : Raikanta Sahu
47 : : //
48 : : // Creation Date : 09/06/96
49 : : //-------------------------------------------------------------------------
50 : :
51 : 19964 : Surface::~Surface()
52 [ - + ]: 9982 : {}
53 : :
54 : 0 : CubitStatus Surface::closest_points(DLIList<CubitVector *> &location_list,
55 : : DLIList<CubitVector *> *closest_location_list,
56 : : DLIList<CubitVector *> *unit_normal_list,
57 : : DLIList<CubitVector *> *curvature1_list,
58 : : DLIList<CubitVector *> *curvature2_list)
59 : : {
60 : : CubitVector *curvature1, *curvature2;
61 : : CubitVector *unit_normal;
62 : : CubitVector *closest_location;
63 : : CubitVector *location;
64 : : CubitStatus stat;
65 : 0 : location_list.reset();
66 [ # # ]: 0 : if (closest_location_list) closest_location_list->reset();
67 [ # # ]: 0 : if (unit_normal_list) unit_normal_list->reset();
68 [ # # ]: 0 : if (curvature1_list) curvature1_list->reset();
69 [ # # ]: 0 : if (curvature2_list) curvature2_list->reset();
70 [ # # ]: 0 : for (int i=0; i<location_list.size(); i++)
71 : : {
72 : 0 : location = location_list.get_and_step();
73 [ # # ]: 0 : if (closest_location_list == NULL)
74 : 0 : closest_location = NULL;
75 : : else
76 : 0 : closest_location = closest_location_list->get_and_step();
77 [ # # ]: 0 : if (unit_normal_list == NULL)
78 : 0 : unit_normal = NULL;
79 : : else
80 : 0 : unit_normal = unit_normal_list->get_and_step();
81 [ # # ]: 0 : if (curvature1_list == NULL)
82 : 0 : curvature1 = NULL;
83 : : else
84 : 0 : curvature1 = curvature1_list->get_and_step();
85 [ # # ]: 0 : if (curvature2_list == NULL)
86 : 0 : curvature2 = NULL;
87 : : else
88 : 0 : curvature2 = curvature2_list->get_and_step();
89 : 0 : stat = closest_point( *location, closest_location, unit_normal, curvature1, curvature2 );
90 [ # # ]: 0 : if (stat != CUBIT_SUCCESS)
91 : 0 : return stat;
92 : : }
93 : 0 : return CUBIT_SUCCESS;
94 : : }
95 : :
96 : 0 : void Surface::closest_points_trimmed( std::vector<CubitVector> &from_points_list,
97 : : std::vector<CubitVector> &points_on_surface_list)
98 : : {
99 [ # # ]: 0 : CubitVector from_point;
100 [ # # ]: 0 : CubitVector point_on_surface;
101 [ # # ][ # # ]: 0 : for (unsigned int i=0; i<from_points_list.size(); i++)
102 : : {
103 [ # # ][ # # ]: 0 : from_point = from_points_list[i];
104 [ # # ][ # # ]: 0 : closest_point_trimmed( from_point, point_on_surface );
105 [ # # ]: 0 : points_on_surface_list.push_back( point_on_surface );
106 : : }
107 : 0 : }
108 : :
109 : 0 : void Surface::are_positions_on( DLIList<CubitVector *> &test_position_list,
110 : : DLIList<CubitBoolean *> &is_on_list )
111 : : {
112 : : CubitVector *test_position;
113 : : CubitBoolean *is_on;
114 : 0 : test_position_list.reset();
115 : 0 : is_on_list.reset();
116 [ # # ]: 0 : for (int i=0; i<test_position_list.size(); i++)
117 : : {
118 : 0 : test_position = test_position_list.get_and_step();
119 : 0 : is_on = is_on_list.get_and_step();
120 : 0 : *is_on = is_position_on( *test_position );
121 : : }
122 : 0 : }
123 : :
124 : :
125 : 0 : CubitStatus Surface::closest_point_along_vector(CubitVector& from_point,
126 : : CubitVector& along_vector,
127 : : CubitVector& point_on_surface)
128 : : {
129 : 0 : return CUBIT_FAILURE;
130 : : }
131 : :
132 : 0 : CubitStatus Surface::evaluate( double u, double v, CubitVector& pos, CubitVector deriv1[2], CubitVector deriv2[3])
133 : : {
134 [ # # ][ # # ]: 0 : PRINT_ERROR("evaluate is not implemented.");
135 : 0 : return CUBIT_FAILURE;
136 [ + - ][ + - ]: 6540 : }
|