Branch data Line data Source code
1 : : #ifndef CUBITQUADFACET_HPP
2 : : #define CUBITQUADFACET_HPP
3 : :
4 : : #include "CubitDefines.h"
5 : : #include "FacetEntity.hpp"
6 : : class CubitFacet;
7 : : class CubitVector;
8 : : class CubitPoint;
9 : :
10 : : class CubitQuadFacet : public FacetEntity
11 : : {
12 : : private:
13 : : void map_to_tri_system(double u, double v, int &tri_index,
14 : : double &A, double &B, double &C);
15 : : //- map the u,v quad system into one of its triangle's area coordinate system
16 : : CubitStatus eval_derivatives( double u, double v,
17 : : CubitVector &point,
18 : : CubitVector &du,
19 : : CubitVector &dv );
20 : : //- evaluate derivatives on the quad
21 : :
22 : : public:
23 : : CubitQuadFacet( );
24 : : virtual ~CubitQuadFacet();
25 : :
26 : : virtual int tri_to_quad_index( int tri_index, int pt_index ) = 0;
27 : : // return the point index on the quad facet gicen one of its triangles
28 : : // and the point index on the triangle (indecies start at 0)
29 : :
30 : : virtual CubitFacet *get_tri_facet( int index ) = 0;
31 : : // return one of the underlying triangles (index should be 0 or 1)
32 : :
33 : : virtual CubitFacet *get_tri_facet_at_point( CubitPoint *point_ptr ) = 0;
34 : : // return the underlying triangle of which the point_ptr is a vertex
35 : :
36 : : virtual void remove_tri_facets( ) = 0;
37 : : // used prior to delete if tri facets have already been deleted by
38 : : // another mechanism.
39 : :
40 : : virtual void points (CubitPoint *points[4]) = 0;
41 : : // return the four vertices of the quad facet
42 : :
43 : : virtual CubitPoint *point( int index ) = 0;
44 : : // return the specified point
45 : : virtual CubitFacetEdge *edge( int index ) = 0;
46 : : // return the specified edge
47 : :
48 : : void get_control_points( double *ctrl_pts );
49 : : void set_control_points( double *ctrl_pts );
50 : : // get and set the control points
51 : :
52 : : CubitStatus evaluate( double u, double v,
53 : : CubitVector *eval_point,
54 : : CubitVector *eval_normal = NULL,
55 : : CubitVector *eval_du = NULL,
56 : : CubitVector *eval_dv = NULL );
57 : : // evaluate u, v location and normal on facet. Pass in NULL if
58 : : // point or normal are not to be evaluated
59 : :
60 : : virtual void debug_draw(int color=-1, int flush_it = 1, int draw_uv=0);
61 : : // draw the underlying tri facets
62 : :
63 : 0 : virtual void get_parents(DLIList<FacetEntity *> &){};
64 : : // dummy for this class
65 : : virtual void points(DLIList<CubitPoint*> &point_list );
66 : : virtual void facets(DLIList<CubitFacet*> &facet_list );
67 : : virtual void edges(DLIList<CubitFacetEdge*> &edge_list );
68 : :
69 : : CubitStatus init_patch( );
70 : : // computes the interior control points for the quad facet and
71 : : // stores them with the quad facet. Assumes edge control points
72 : : // on the four boundary edges have already been computed
73 : :
74 : : };
75 : :
76 : : #endif
77 : :
78 : :
|