Branch data Line data Source code
1 : : //-------------------------------------------------------------------------
2 : : // Filename : FacetSurface.hpp
3 : : //
4 : : // Purpose :
5 : : //
6 : : // Special Notes :
7 : : //
8 : : // Creator : David R. White
9 : : //
10 : : // Creation Date : 06/06/00
11 : : //
12 : : // Owner : David R. White
13 : : //-------------------------------------------------------------------------
14 : :
15 : : #ifndef SURFACE_Facet_HPP
16 : : #define SURFACE_Facet_HPP
17 : :
18 : : #include "CubitDefines.h"
19 : : #include "Surface.hpp"
20 : : #include "FacetAttribSet.hpp"
21 : : #include <map>
22 : :
23 : : class TopologyEntity;
24 : : class RefVolume;
25 : : class RefFace;
26 : : class RefVolume;
27 : : class FacetEvalTool;
28 : : class FacetShell;
29 : : class FacetAttrib;
30 : :
31 : : class FacetBody;
32 : : class FacetLump;
33 : : class FacetLoop;
34 : : class FacetCoEdge;
35 : : class FacetCurve;
36 : : class FacetPoint;
37 : : class CubitFacetEdge;
38 : : class CubitFacet;
39 : : class CubitPoint;
40 : : class CubitTransformMatrix;
41 : : class CubitEvaluator;
42 : : class CubitEvaluatorData;
43 : : class SphereEvaluatorData;
44 : : class CylinderEvaluatorData;
45 : :
46 : : class FacetSurface : public Surface
47 : : {
48 : :
49 : : private:
50 : : //CubitSense sense_;
51 : : //- The sense of the RefFace that owns this Surface with respect
52 : : //- to the positive sense of the first FACE in FACEPtrList_.
53 : : //- When a Surface is first constructed, this value is arbitrarily
54 : : //- set to CUBIT_FORWARD.
55 : : //- In the case of Surfaces, the normal is used in determining
56 : : //- the relative sense value.
57 : : //- MJP NOTE:
58 : : //- Not only does the RefFace have a sense wrt its Surface, but each
59 : : //- Facet FACE has a sense wrt its underlying "surface" object.
60 : :
61 : : //sjowen FacetEvalTool *facetEvalTool;
62 : : FacetEvalTool *facetEvalTool;
63 : : //For topology traversals we need to have connections to the
64 : : //entitities connected to this surface. From these we can get the rest.
65 : : DLIList<LoopSM*> myLoops;
66 : : DLIList<ShellSM*> myShells;
67 : :
68 : : FacetAttribSet attribSet;
69 : : //List of FacetAttrib*'s instead of CubitSimpleAttribs
70 : :
71 : : // the sense of the surface with respect to the shells in the myShells list
72 : : CubitSense myShellSense;
73 : :
74 : : CubitEvaluator *myEvaluator;
75 : :
76 : : protected:
77 : :
78 : : public :
79 : :
80 : : FacetSurface(FacetEvalTool *facet_eval_tool_ptr,
81 : : DLIList<ShellSM*> &shellsms,DLIList<LoopSM*> &loopsms );
82 : : //I- facet_eval_tool pointer
83 : : //I- A pointer to the set of facets that define this surface.
84 : :
85 : : FacetSurface(FacetEvalTool *facet_eval_tool_ptr,
86 : : CubitSense sense,
87 : : CubitSense shell_sense0,
88 : : CubitBoolean use_facets,
89 : : DLIList<LoopSM*> &loopsms );
90 : :
91 : :
92 : : FacetSurface( const CylinderEvaluatorData *cylinder_data,
93 : : FacetEvalTool *facet_tool,
94 : : DLIList<ShellSM*> &shellsms,
95 : : DLIList<LoopSM*> &loopsms );
96 : : //- Constructor used to create a faceted surface representing a cylinder.
97 : : //I- eval_data - radius, base, etc. of cylinder.
98 : : //I- facet_eval_tool_ptr - evaluator to evaluate directly on facets.
99 : : //I- shellsms - the shells in this facet model
100 : : //I- loopsms - the loops in this facet model.
101 : :
102 : : FacetSurface( const SphereEvaluatorData *eval_data,
103 : : FacetEvalTool *facet_eval_tool_ptr,
104 : : DLIList<ShellSM*> &shellsms,
105 : : DLIList<LoopSM*> &loopsms );
106 : : //- Constructor used to create a faceted surface representing a sphere.
107 : : //I- eval_data - radius, center, etc. of sphere.
108 : : //I- facet_eval_tool_ptr - evaluator to evaluate directly on facets.
109 : : //I- shellsms - the shells in this facet model
110 : : //I- loopsms - the loops in this facet model.
111 : :
112 : : virtual ~FacetSurface() ;
113 : : //- The destructor
114 : :
115 : 473 : void add_shell(ShellSM *shell_ptr)
116 : 473 : {myShells.append(shell_ptr);}
117 : :
118 : : CubitStatus remove_shell(FacetShell* shell_ptr);
119 : :
120 : : void disconnect_all_loops();
121 : :
122 : 0 : inline bool has_parent_shell() { return myShells.size() > 0; }
123 : :
124 : : //CubitSense get_relative_surface_sense();
125 : : //- Return the relative surface sense. (see below)
126 : :
127 : : virtual void append_simple_attribute_virt(const CubitSimpleAttrib&);
128 : : //R void
129 : : //I
130 : : //I-
131 : : //I- that is to be appended to this OSME object.
132 : : //- The purpose of this function is to append a
133 : : //- attribute to the OSME. The is attached to each of the
134 : : //- underlying solid model entities this one points to.
135 : :
136 : : virtual void remove_simple_attribute_virt(const CubitSimpleAttrib&);
137 : : //R void
138 : : //I CubitSimpleAttrib*
139 : : //I- A reference to a CubitSimpleAttrib object which is the object
140 : : //I- that is to be removed to this OSME object.
141 : : //- The purpose of this function is to remove a simple
142 : : //- attribute from the OSME. The attribute is attached to each of the
143 : : //- underlying solid model entities this one points to.
144 : :
145 : : virtual void remove_all_simple_attribute_virt();
146 : : //R void
147 : : //I-
148 : : //- The purpose of this function is to remove all simple
149 : : //- attributes from the OSME.
150 : :
151 : : virtual CubitStatus get_simple_attribute(DLIList<CubitSimpleAttrib>&);
152 : : virtual CubitStatus get_simple_attribute(const CubitString& name,
153 : : DLIList<CubitSimpleAttrib>&);
154 : : //R CubitSimpleAttrib*
155 : : //R- the returned cubit simple attribute.
156 : : //- The purpose of this function is to get the attributes
157 : : //- of the geometry entity. The name is attached to the underlying solid
158 : : //- model entity(ies) this one points to.
159 : : //- MJP Note:
160 : : //- This is the code that implements the requirement that names
161 : : //- of VGI Entities propagate across solid model boolean
162 : : //- operations. The success of this relies, of course, on the underlying
163 : : //- solid modeler being able to propagate attributes across
164 : : //- such operations on its entities. If it cannot, then "names"
165 : : //- of VGI entities will not propagate.
166 : :
167 : : virtual CubitBox bounding_box() const ;
168 : : // see comments in GeometryEntity.hpp
169 : :
170 : : virtual GeometryQueryEngine*
171 : : get_geometry_query_engine() const;
172 : : //R GeometryQueryEngine*
173 : : //R- A pointer to the geometric modeling engine associated with
174 : : //R- the object.
175 : : //- This function returns a pointer to the geometric modeling engine
176 : : //- associated with the object.
177 : :
178 : : // Added by CAT
179 : : virtual CubitStatus get_point_normal( CubitVector& ,
180 : : CubitVector& );
181 : : //- Only valid for planar surfaces
182 : : //- Finds the underlying plane's origin and normal vector
183 : : //- Returns CubitFailure if not a plane. The origin and normal
184 : : //- are returned directly from the underlying format for a plane.
185 : :
186 : : virtual CubitStatus closest_point_uv_guess(
187 : : CubitVector const& location,
188 : : double &u, double &v,
189 : : CubitVector* closest_location = NULL,
190 : : CubitVector* unit_normal = NULL );
191 : :
192 : :
193 : : virtual void closest_point_trimmed(CubitVector from_point,
194 : : CubitVector& point_on_surface);
195 : : //R void
196 : : //I CubitVector
197 : : //I- point from which to find closest point on trimmed surface
198 : : //O CubitVector
199 : : //O- point on trimmed surface closest to passed-in point
200 : : //- This function finds the closest point on a TRIMMED surface to the
201 : : //- passed-in point.
202 : :
203 : : virtual CubitStatus closest_point_along_vector(CubitVector& from_point,
204 : : CubitVector& along_vector,
205 : : CubitVector& point_on_surface);
206 : :
207 : :
208 : : virtual CubitStatus closest_point(
209 : : CubitVector const& location,
210 : : CubitVector* closest_location = NULL,
211 : : CubitVector* unit_normal_ptr = NULL,
212 : : CubitVector* curvature1_ptr = NULL,
213 : : CubitVector* curvature2_ptr = NULL);
214 : : //R CubitStatus
215 : : //R- CUBIT_SUCCESS/FAILURE
216 : : //I location
217 : : //I- The point to which the closest point on the surface is desired.
218 : : //O closest_location
219 : : //O- The point on the Surface, closest to the
220 : : //O- input location (which might not be on the Surface). This is
221 : : //O- input as a reference so that the function can modify its
222 : : //O- contents.
223 : : //O unit_normal_ptr
224 : : //O- The normal (represented as a unit vector) at the closest_location.
225 : : //O- If this pointer is NULL, the normal is not returned.
226 : : //O curvature1_ptr
227 : : //O- The first principal curvature of the surface at closest_location.
228 : : //O- If this pointer is NULL, this curvature is not returned.
229 : : //O curvature2_ptr
230 : : //O- The second principal curvature of the surface at closest_location.
231 : : //O- If this pointer is NULL, this curvature is not returned.
232 : : //- This function computes the point on the surface closest to the input
233 : : //- location -- i.e., closest_location.
234 : : //- The first Facet FACE in the list
235 : : //- is queried.
236 : : //-
237 : : //- If the input pointer values of unit_normal, curvature1 and
238 : : //- curvature2
239 : : //- are non-NULL, the normal and principal curvatures, too, are
240 : : //- returned. These are computed at closest_location, not at the
241 : : //- input location.
242 : : //-
243 : : //- NOTE:
244 : : //- It is assumed that if the calling code needs the normal or the
245 : : //- principal curvatures, it will *allocate* space for the CubitVectors
246 : : //- before sending in the pointers.
247 : :
248 : : virtual CubitStatus principal_curvatures(
249 : : CubitVector const& location,
250 : : double& curvature_1,
251 : : double& curvature_2,
252 : : CubitVector* closest_location = NULL );
253 : : //R CubitStatus
254 : : //R- CUBIT_SUCCESS/FAILURE
255 : : //I location
256 : : //I- The point at which the curvatures are being requested -- it is also
257 : : //I- the point to which the closest point on the surface is returned.
258 : : //I- curvatures.
259 : : //O closest_location
260 : : //O- The point on the surface, closest to the input location (this
261 : : //O- might not be on the surface). This is input as a reference
262 : : //O- so that the function can modify its contents.
263 : : //O curvature_1/2
264 : : //O- Returned principal curvature magnitudes.
265 : : //- This functions computes the point on the surface that is closest
266 : : //- to the input location and then calculates the magnitudes of the
267 : : //- principal curvatures at this (possibly, new) point on the surface.
268 : :
269 : :
270 : :
271 : : virtual CubitStatus evaluate( double u, double v,
272 : : CubitVector *position,
273 : : CubitVector *normal,
274 : : CubitVector *curvature1,
275 : : CubitVector *curvature2 );
276 : :
277 : :
278 : :
279 : : virtual CubitVector position_from_u_v (double u, double v);
280 : : //R CubitVector
281 : : //R- Returned position vector.
282 : : //I u, v
283 : : //I- Input point in {u.v} space
284 : : //- This function returns the coordinates in world space of a point
285 : : //- in the parameter space of this Surface object.
286 : :
287 : : virtual CubitStatus u_v_from_position (CubitVector const& location,
288 : : double& u,
289 : : double& v,
290 : : CubitVector*
291 : : closest_location = NULL );
292 : : //R CubitStatus
293 : : //R- CUBIT_SUCCESS/FAILURE
294 : : //I location
295 : : //I- The input point in global space
296 : : //O closest_point
297 : : //O- The point on the Surface closest to the input location
298 : : //O u, v
299 : : //O- The returned u, v coordinate values (in local parametric space)
300 : : //O- of the closest_point
301 : : //I refvolume_ptr
302 : : //- This function returns the {u, v} coordinates of the point
303 : : //- on the Surface closest to the input point (specified in global
304 : : //- space). The closest_location is also returned.
305 : :
306 : : virtual CubitBoolean is_periodic();
307 : : //R CubitBoolean
308 : : //R- CUBIT_TRUE/CUBIT_FALSE
309 : : //- This function determines whether the underlying geometry of the
310 : : //- FacetSurface is periodic or not. Returns CUBIT_TRUE if it is and
311 : : //- CUBIT_FALSE if it is not.
312 : : //- MJP NOTE:
313 : : //- The first Facet FACE in the list is queried. It is assumed
314 : : //- that all the FACEs have the same underlying surface.
315 : :
316 : : virtual CubitBoolean is_periodic_in_U( double& period );
317 : : //R CubitBoolean
318 : : //R- CUBIT_TRUE/CUBIT_FALSE
319 : : //O period
320 : : //O- The value of the period in the U direction.
321 : : //- Determines whether the Facet surface object associated
322 : : //- with one of the FACEs of this FacetSurface object is
323 : : //- periodic in the U direction or not. If it is, it
324 : : //- returns CUBIT_TRUE and the value of the period. Otherwise,
325 : : //- it returns CUBIT_FALSE and a value of 0.0 or the period.
326 : : //- MJP NOTE:
327 : : //- The first Facet FACE in the list is queried. It is assumed
328 : : //- that all the FACEs have the same underlying surface.
329 : :
330 : : virtual CubitBoolean is_periodic_in_V( double& period );
331 : : //R CubitBoolean
332 : : //R- CUBIT_TRUE/CUBIT_FALSE
333 : : //O period
334 : : //O- The value of the period in the V direction.
335 : : //- Determines whether the Facet surface object associated
336 : : //- with one of the FACEs of this FacetSurface object is
337 : : //- periodic in the V direction or not. If it is, it
338 : : //- returns CUBIT_TRUE and the value of the period. Otherwise,
339 : : //- it returns CUBIT_FALSE and a value of 0.0 or the period.
340 : : //- MJP NOTE:
341 : : //- The first Facet FACE in the list is queried. It is assumed
342 : : //- that all the FACEs have the same underlying surface.
343 : :
344 : : virtual CubitBoolean is_singular_in_U( double u_param );
345 : : virtual CubitBoolean is_singular_in_V( double v_param );
346 : : //R CubitBoolean
347 : : //R- CUBIT_TRUE/CUBIT_FALSE
348 : : //I double u/v parameter value.
349 : : //- Determines if the surface is singular in a given direction
350 : : //- at a given parameter value.
351 : :
352 : : virtual CubitBoolean is_closed_in_U();
353 : : virtual CubitBoolean is_closed_in_V();
354 : : //R CubitBoolean
355 : : //R- CUBIT_TRUE/CUBIT_FALSE
356 : : //- Determines if the surface is closed, smoothly or not in the
357 : : //- given parameter direction.
358 : : //- A periodic surface is always closed but a closed surface is
359 : : //- is not always periodic.
360 : :
361 : : virtual CubitStatus uv_derivitives( double u_param,
362 : : double v_param,
363 : : CubitVector &du,
364 : : CubitVector &dv );
365 : : //R CubitStatus
366 : : //R- CUBIT_SUCCESS/CUBIT_FAILURE
367 : : //O- du, dv
368 : : //- Determines the u and v derivitives from the given parameter
369 : : //- values.
370 : :
371 : : virtual CubitBoolean is_parametric();
372 : : //R CubitBoolean
373 : : //R- CUBIT_TRUE/CUBIT_FALSE
374 : : //- This method returns CUBIT_TRUE if a parametric representation
375 : : //- is available for the surface
376 : :
377 : : virtual CubitBoolean get_param_range_U( double& lower_bound,
378 : : double& upper_bound );
379 : : //R CubitBoolean
380 : : //R- CUBIT_TRUE/CUBIT_FALSE
381 : : //O lower_bound
382 : : //O- The lower bound of the parametric range in the U direction.
383 : : //O- This is set to 0.0 if the surface is not parametric.
384 : : //O upper_bound
385 : : //O- The upper bound of the parametric range in the U direction.
386 : : //O- This is set to 0.0 if the surface is not parametric.
387 : : //- Returns the lower and upper parametric bounds of the
388 : : //- surface in U, if it is parametric. Otherwise, it returns
389 : : //- CUBIT_FALSE and zeroes for the upper and lower parametric
390 : : //- bounds.
391 : : //- MJP NOTE:
392 : : //- The first Facet FACE in the list is queried. It is assumed
393 : : //- that all the FACEs have the same underlying surface.
394 : :
395 : : virtual CubitBoolean get_param_range_V( double& lower_bound,
396 : : double& upper_bound );
397 : : //R CubitBoolean
398 : : //R- CUBIT_TRUE/CUBIT_FALSE
399 : : //O lower_bound
400 : : //O- The lower bound of the parametric range in the V direction.
401 : : //O- This is set to 0.0 if the surface is not parametric.
402 : : //O upper_bound
403 : : //O- The upper bound of the parametric range in the V direction.
404 : : //O- This is set to 0.0 if the surface is not parametric.
405 : : //- Returns the lower and upper parametric bounds of the
406 : : //- surface in V, if it is parametric. Otherwise, it returns
407 : : //- CUBIT_FALSE and zeroes for the upper and lower parametric
408 : : //- bounds.
409 : : //- MJP NOTE:
410 : : //- The first Facet FACE in the list is queried. It is assumed
411 : : //- that all the FACEs have the same underlying surface.
412 : :
413 : : virtual CubitBoolean is_position_on( CubitVector &test_position );
414 : : //R CubitBoolean
415 : : //R- CUBIT_TRUE/CUBIT_FALSE
416 : : //I CubitVector
417 : : //I- position, point where we want to test, whether or not it
418 : : //- is on the surface.
419 : :
420 : : virtual CubitPointContainment point_containment( const CubitVector &point );
421 : : virtual CubitPointContainment point_containment( double u, double v );
422 : : // virtual CubitPointContainment point_containment( const CubitVector &point,
423 : : // double u, double v );
424 : : //R CubitPointContainment - is the point outside, inside or on the boundary?
425 : : //R- CUBIT_PNT_OUTSIDE, CUBIT_PNT_INSIDE, CUBIT_PNT_BOUNDARY,
426 : : // CUBIT_PNT_UNKNOWN
427 : : //I CubitVector
428 : : //I- position to check, known to be on the Surface
429 : : //I double
430 : : //I- u coordinate, if known (significantly faster, if this is known - however
431 : : // if not known let the function figure it out)
432 : : //I double
433 : : //I- v coordinate, if known (significantly faster, if this is known - however
434 : : // if not known let the function figure it out)
435 : : // NOTE: POINT MUST LIE ON THE SURFACE FOR THIS FUNCTION TO WORK PROPERLY.
436 : :
437 : : GeometryType geometry_type();
438 : : //R GeometryType (enum)
439 : : //R- The enumerated type of the geometric representation
440 : :
441 : : virtual double measure();
442 : : //R double
443 : : //R- The numeric value of the measure (its units depend on the dimension
444 : : //R- of the RefEntity being "measured")
445 : : //- A generic geometric extent function.
446 : : //- Returns volume for Lump, area for Surface, length for Curve and
447 : : //- 1.0 for Point
448 : :
449 : :
450 : : virtual CubitStatus get_projected_distance_on_surface( CubitVector *pos1,
451 : : CubitVector *pos2,
452 : : double &distance );
453 : :
454 : : void update_measurement();
455 : : //Make sure we don't retain an out-dated measurement.
456 : :
457 : : virtual CubitSense get_geometry_sense();
458 : : //- Return the relative surface sense. (see below)
459 : :
460 : : virtual void reverse_sense();
461 : : //- Switch the sense of this Surface wrt the RefFace that owns it:
462 : : //- For Facet, this means switch the sense of the RefFace that
463 : : //- owns this Surface with respect to the positive sense of the
464 : : //- first FACE in FACEPtrList_.
465 : :
466 : : CubitStatus save_attribs( FILE* file_ptr );
467 : : // Write FactAttribs out to file
468 : :
469 : : CubitStatus restore_attribs( FILE* file_ptr, unsigned int endian );
470 : : // Read FactAttribs from file
471 : :
472 : : void get_bodies ( DLIList<FacetBody *>& bodies );
473 : : void get_lumps ( DLIList<FacetLump *>& lumps );
474 : : void get_shells ( DLIList<FacetShell *>& shells );
475 : : void get_loops ( DLIList<FacetLoop *>& loops );
476 : : void get_coedges ( DLIList<FacetCoEdge *>& coedges );
477 : : void get_curves ( DLIList<FacetCurve *>& curves );
478 : :
479 : : void get_parents_virt( DLIList<TopologyBridge*>& parents );
480 : : void get_children_virt( DLIList<TopologyBridge*>& children );
481 : :
482 : : CubitStatus get_my_facets(DLIList<CubitFacet*>& facet_list,
483 : : DLIList<CubitPoint*>& point_list);
484 : : //- Gets the list of facets describing this surface.
485 : : void tris(DLIList<CubitFacet*> &facet_list);
486 : : void get_my_points(DLIList<CubitPoint*>& point_list);
487 : : //- Gets the list of points describing this surface.
488 : : void get_my_facetedges(DLIList<CubitFacetEdge*>& edge_list);
489 : : //- Gets the list of points describing this surface.
490 : 748 : FacetEvalTool *get_eval_tool()
491 : 748 : { return facetEvalTool; }
492 : : const FacetEvalTool *get_eval_tool() const
493 : : { return facetEvalTool; }
494 : : //- return the facet evaluation tool for this surface
495 : :
496 : : CubitSense get_shell_sense( ShellSM *facet_shell ) const;
497 : : // return the sense with respect to the given shell
498 : :
499 : : void get_shell_sense( CubitSense &sense0 );
500 : : // return senses
501 : :
502 : : void set_shell_sense( FacetShell *facet_shell,
503 : : CubitSense thesense );
504 : : // set the sense of the surface with respect to the shell
505 : :
506 : : CubitStatus copy_facets(DLIList<CubitFacet*>©_facet_list,
507 : : DLIList<CubitPoint*>©_point_list,
508 : : std::map<CubitPoint*, CubitPoint*>&old_to_new_cubit_pts);
509 : : // create a copy of the points and facets
510 : :
511 : : int interp_order();
512 : : double min_dot();
513 : :
514 : : CubitBoolean is_flat();
515 : : CubitBoolean is_spherical();
516 : : CubitBoolean is_conical();
517 : :
518 : : virtual CubitStatus get_nurb_params( bool &rational,
519 : : int °ree_u,
520 : : int °ree_v,
521 : : int &num_cntrl_pts_u,
522 : : int &num_cntrl_pts_v,
523 : : DLIList<CubitVector> &cntrl_pts,
524 : : DLIList<double> &weights,
525 : : DLIList<double> &u_knots,
526 : : DLIList<double> &v_knots ) const;
527 : : //- Only valid for nurbs surfaces
528 : : //O rational
529 : : //O- True if the nurb is rational
530 : : //O degree_u
531 : : //O- The degree of the nurb in the u direction
532 : : //O degree_v
533 : : //O- The degree of the nurb in the v direction
534 : : //O num_cntrl_pts_u
535 : : //O- Number of control points in the u direction
536 : : //O num_cntrl_pts_v
537 : : //O- Number of control points in the v direction
538 : : //O cntrl_pts
539 : : //O- The control points stored as
540 : : //O- cntrl_pts[0 ] = pt[u=0][v=0]
541 : : //O- cntrl_pts[1 ] = pt[u=1][v=0]
542 : : //O- ...
543 : : //O- cntrl_pts[num_cntrl_pts_u-1] = pt[u=?][v=0]
544 : : //O- cntrl_pts[num_cntrl_pts_u ] = pt[u=0][v=1]
545 : : //O- ...
546 : : //O weights
547 : : //O- If rational, weights for each control point, stored in the same
548 : : //O- order as the control points. No weights are returned if
549 : : //O- rational == false
550 : : //O u_knots
551 : : //O- knot vector in the u direction
552 : : //O v_knots
553 : : //O- knot vector in the v direction
554 : :
555 : : virtual CubitStatus get_sphere_params( CubitVector ¢er,
556 : : double &radius ) const;
557 : : //- Only valid for spherical surfaces
558 : : //O center
559 : : //O- The center of the sphere
560 : : //O radius
561 : : //O- The radius of the sphere
562 : :
563 : : virtual CubitStatus get_cone_params( CubitVector ¢er,
564 : : CubitVector &normal,
565 : : CubitVector &major_axis,
566 : : double &radius_ratio,
567 : : double &sine_angle,
568 : : double &cos_angle ) const;
569 : : //- Only valid for conical surfaces. Cylinders are a special case of conicals.
570 : : //O center
571 : : //O-
572 : : //O normal
573 : : //O-
574 : : //O major_axis
575 : : //O-
576 : : //O radius_ratio
577 : : //O-
578 : : //O sine_angle
579 : : //O-
580 : : //O cos_angle
581 : : //O-
582 : :
583 : : virtual CubitStatus get_torus_params( CubitVector ¢er,
584 : : CubitVector &normal,
585 : : double &major_radius,
586 : : double &minor_radius ) const;
587 : : //- Only valid for torus surfaces.
588 : : //O center
589 : : //O-
590 : : //O normal
591 : : //O-
592 : : //O major_radius
593 : : //O-
594 : : //O minor_radius
595 : : //O-
596 : :
597 : : const CubitEvaluatorData *evaluator_data();
598 : : void add_transformation( CubitTransformMatrix &tfmat );
599 : :
600 : : };
601 : :
602 : :
603 : : // ********** BEGIN INLINE FUNCTIONS **********
604 : : // ********** END INLINE FUNCTIONS **********
605 : :
606 : : // ********** BEGIN FRIEND FUNCTIONS **********
607 : : // ********** END FRIEND FUNCTIONS **********
608 : :
609 : : // ********** BEGIN EXTERN FUNCTIONS **********
610 : : // ********** END EXTERN FUNCTIONS **********
611 : :
612 : : #endif
613 : :
|