eghprivatef.h

Go to the documentation of this file.
00001 
00002 /* ///////////////////////////////////////////////////////////////////////// */
00003 /* This file is a part of the BSTools package                                */
00004 /* written by Przemyslaw Kiciak                                              */
00005 /* ///////////////////////////////////////////////////////////////////////// */
00006 /* (C) Copyright by Przemyslaw Kiciak, 2005, 2008                            */
00007 /* this package is distributed under the terms of the                        */
00008 /* Lesser GNU Public License, see the file COPYING.LIB                       */
00009 /* ///////////////////////////////////////////////////////////////////////// */
00010 
00011 /* this header file is private for g1hole library functions; */
00012 /* it is NOT intended to be #included in application source files */
00013 
00014 #ifndef EGHPRIVATEF_H
00015 #define EGHPRIVATEF_H
00016 
00017 /* angle tolerances for partition analysis */
00018 #define MIN_DELTA (PI/180.0)       /*   1 degree  */
00019 #define MAX_DELTA (179.0*PI/180.0) /* 179 degrees */
00020 #define ANGLETOL (0.001*PI/180)    /* 0.001 degree */
00021 
00022 /* partition of the full angle description element */
00023 typedef struct GHoleSgnPartf {
00024     float   alpha;  /* the first three fields of this structure */
00025     float   malpha; /* must be as they are, for the sake */
00026     float   salpha; /* of the sorting procedure */
00027     float   knot;
00028     boolean sgn, both;
00029   } GHoleSgnPartf;
00030 
00031 typedef struct GHolePrivateRecf {
00032     point2f  *dombezpt;    /* Bezier patches surrounding the domain */
00033     vector2f *surrpc;      /* boundary curves and cross derivatives */
00034                            /* of the surrounding patches */
00035     vector2f *surrpcbc;    /* derivatives of the surrounding patches */
00036                            /* at relevant corners */
00037     float    *domsurrbf;   /* polynomials, which determine boundary */
00038                            /* conditions for the block B basis functions */
00039     float    diam;         /* domain "diameter" */
00040     unsigned char  *bfcpn;
00041     unsigned short *support_b;
00042   } GHolePrivateRecf;
00043 
00044 
00045 int gh_GetDefaultOptionf ( GHoleDomainf *domain, int query, int qn,
00046                           int *ndata, int **idata, float **fdata );
00047 
00048 float *_gh_GetKnotSequencef ( GHoleDomainf *domain, int i );
00049 point2f *_gh_GetDomSurrndPatchf ( GHoleDomainf *domain, int i, int j );
00050 boolean _gh_FindDomSurrndPatchf ( GHoleDomainf *domain,
00051                                   int i, int j, point2f *bezcp );
00052 boolean _gh_FindBasisFuncbSupport ( int hole_k, int nfunc_b,  
00053                                     unsigned short *support_b,
00054                                     unsigned char *bfcpn );
00055 boolean _gh_FindDomSurrndBFuncPatchesf ( GHoleDomainf *domain );
00056 boolean _gh_AnalyzePartitionf ( GHoleDomainf *domain, int omcdeg,
00057                                 vector2f *omcbc, int *_hole_m, int *_auxp_k,
00058                                 float **_partition, GHoleSgnPartf **_spartition,
00059                                 float *_spart_alpha0 );
00060 void _gh_PrepareTabKnotsf ( int nquad, int opt, float *knots );
00061 void _g2h_DiJacobian3f ( const vector2f *du, const vector2f *dv,
00062                          const vector2f *duu, const vector2f *duv,
00063                          const vector2f *dvv,
00064                          const vector2f *duuu, const vector2f *duuv,
00065                          const vector2f *duvv, const vector2f *dvvv,
00066                          float *jac, float *trd );
00067 float _g2h_Integralf ( int hole_k, int nknsq, float *jac,
00068                        unsigned short supp1, vector2f *func1,
00069                        unsigned short supp2, vector2f *func2 );
00070 float _g2h_Integral0f ( int nknsq, const float *jac,
00071                         const vector2f *func1, const vector2f *func2 );
00072 float _g2h_SplIntegralf ( int nkn, float *jac,
00073                           int i00, int i01, int j00, int j01, vector2f *func0,
00074                           int i10, int i11, int j10, int j11, vector2f *func1 );
00075 void _g2h_TabSplCLaplacianGradf ( int nkn,
00076             int fknp, int lknp, const float *tp, const float *tpu,
00077             const float *tpuu, const float *tpuuu,
00078             int fknq, int lknq, const float *tq, const float *tqv,
00079             const float *tqvv, const float *tqvvv,
00080             const float *trd, vector2f *lgr );
00081 
00082 #endif
00083