00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef EG1HPRIVATEF_H
00015 #define EG1HPRIVATEF_H
00016
00017 #ifndef EGHPRIVATEF_H
00018 #include "eghprivatef.h"
00019 #endif
00020
00021
00022 #define G1_BF01DEG 2
00023 #define G1_CG01DEG 1
00024 #define G1_BF11DEG 3
00025 #define G1_CG11DEG 2
00026
00027
00028 #define G1_CROSS00DEG 4
00029 #define G1_CROSS01DEG 5
00030 #define G1_CROSS10DEG 3
00031 #define G1_CROSS11DEG 5
00032
00033
00034
00035
00036 #define G1_CROSSDEGSUM \
00037 (G1_CROSS00DEG+G1_CROSS01DEG+G1_CROSS10DEG+G1_CROSS11DEG)
00038
00039
00040 #define G1_AUXDEG0 (G1_CROSS01DEG-G1H_OMCDEG+1)
00041
00042
00043 #define MIN_DELTA (PI/180.0)
00044 #define MAX_DELTA (179.0*PI/180.0)
00045 #define ANGLETOL (0.001*PI/180)
00046
00047
00048
00049 #define G1_DBDIM 4
00050 #define G1_DIAGBLSIZE (G1_DBDIM*(G1_DBDIM+1)/2)
00051
00052
00053
00054 #define G1_NQUAD 16
00055 #define G1_NQUADSQ (G1_NQUAD*G1_NQUAD)
00056 #define G1_QUAD_FACTOR 10
00057
00058
00059
00060
00061 typedef struct G1HolePrivateRecf {
00062 int hole_m;
00063 int nfunc_a,
00064 nfunc_b;
00065 char opt_cp, opt_der1, opt_basis, opt_quad;
00066 vector2f *omcbc;
00067 vector2f *omc;
00068 float *jfunc;
00069 vector2f *dicross;
00070
00071 float *AuxiMat;
00072
00073 float *basis_a,
00074 *basis_b;
00075 unsigned char spdimen[2];
00076
00077 float *partition;
00078 GHoleSgnPartf *spartition;
00079
00080 float spart_alpha0;
00081 float *Amat, *Bmat;
00082
00083 float *Lmat;
00084 float *EAmat, *EBmat;
00085 float *ELmat;
00086
00087
00088 int nconstr;
00089 float *Cmat, *RCmat;
00090 int naconstr, acdim;
00091 float *ACmat, *ARCmat;
00092 int extnconstr;
00093 float *ECmat, *ERCmat;
00094
00095 int extnaconstr, extacdim;
00096 float *AECmat, *AERCmat;
00097
00098 float *BBmat;
00099
00100
00101
00102 float C1b;
00103 float *Q2AMat, *Q2BMat;
00104 float *Q2LMat;
00105 float *Q2RCMat, *Q2ARCMat;
00106
00107 float C1e;
00108 float *Q2EAMat, *Q2EBMat;
00109 float *Q2ELMat;
00110 float *Q2ERCMat, *Q2AERCMat;
00111 int (*GetOption)( GHoleDomainf *domain, int query, int qn,
00112 int *ndata, int **idata, float **fdata );
00113 } G1HolePrivateRecf;
00114
00115
00116
00117 typedef struct G1HoleSPrivateRecf {
00118 int nk, m1, m2;
00119 int nsfunc_c, nsfunc_d;
00120
00121 int csize, dsize;
00122 int lastbezknot;
00123 float bezknots[2*(G1H_FINALDEG+1)];
00124 int lastomcknot;
00125 float *omcknots;
00126 int lastpvknot;
00127 float *pvknots;
00128
00129 int lastcknot;
00130 float *cknots;
00131 float *basis_d;
00132
00133 int lastfpknot;
00134 float *fpknots;
00135 float *SAMat, *SBMat;
00136 float *SLMat;
00137
00138 int splnconstr;
00139 float *SCmat, *SRCmat;
00140 int splnaconstr, splacdim;
00141 float *ASCmat, *ASRCmat;
00142
00143
00144 float C1s;
00145 float *Q2SAMat, *Q2SBMat;
00146 float *Q2SLMat;
00147
00148 float *Q2SRCmat;
00149 float *Q2SARCmat;
00150 } G1HoleSPrivateRecf;
00151
00152
00153
00154 typedef struct G1HNLPrivatef {
00155 int auxc;
00156 vector3f *nldi;
00157 vector3f *acoeff;
00158 vector3f *rhole_cp;
00159 vector3f nlnv, reflv;
00160 vector2f *diu, *div, *diuu, *diuv, *divv;
00161 float ddiam;
00162 float *jac;
00163 float *psiu, *psiv, *psiuu, *psiuv, *psivv;
00164
00165 vector2f *diuuu, *diuuv, *diuvv, *divvv;
00166 float *psiuuu, *psiuuv, *psiuvv, *psivvv;
00167 vector2f *ctang;
00168 float *cpsiu, *cpsiv, *cpsiuu, *cpsiuv, *cpsivv;
00169 } G1HNLPrivatef;
00170
00171
00172 typedef struct G1Q2HNLFuncf {
00173 float pu, pv, jpuu, jpuv, jpvv;
00174 vector2f tang;
00175 float psiu, psiv, jpsiuu, jpsiuv, jpsivv;
00176 float psju, psjv, jpsjuu, jpsjuv, jpsjvv;
00177 float A, B, e0, e1, e2, e9, tGt, b1, b2, b3, b4, b5;
00178 } G1Q2HNLFuncf;
00179
00180
00181
00182 typedef struct G1HNLSPrivatef {
00183 G1HNLPrivatef nlpr;
00184 int nkn;
00185 float *tkn;
00186 int ftabsize;
00187 int psize;
00188 int *fkn, *lkn;
00189 float *cb, *cbt, *cbtt, *cbttt;
00190 int *cfuncvi;
00191 int *dfuncvi;
00192 int jtabsize;
00193 int jcfs, jdfs;
00194
00195 short njcurves;
00196 boolean jumpC, jumpD;
00197 } G1HNLSPrivatef;
00198
00199
00200
00201 extern G1HNLPrivatef *_g1h_nlprivf;
00202
00203
00204 void _g1h_GetDiPatchCurvesf ( GHoleDomainf *domain, int i,
00205 point2f **c00, vector2f **c01, point2f **c10, vector2f **c11,
00206 point2f **d00, vector2f **d01, point2f **d10, vector2f **d11 );
00207 boolean _g1h_GetABasisAuxpf ( GHoleDomainf *domain, int fn,
00208 float *br0, float *br0cr1 );
00209 boolean _g1h_GetBBasisAuxpf ( GHoleDomainf *domain, int fn,
00210 float *bezfc, float *fcomc, float *fcomcd );
00211 void _g1h_GetBFAPatchCurvesf ( GHoleDomainf *domain, int fn, int i,
00212 float **c00, float **c01,
00213 float **d00, float **d01 );
00214 void _g1h_GetBFBPatchCurvesf ( GHoleDomainf *domain, int fn, int i,
00215 float **c00, float **c01, float **c10, float **c11,
00216 float **d00, float **d01, float **d10, float **d11 );
00217
00218 void g1h_TabCubicHFuncDer2f ( int nkn, const float *kn,
00219 float *hfunc, float *dhfunc, float *ddhfunc );
00220 boolean g1h_TabBicubicCoonsPatchDer2f (
00221 int spdimen, int nkn, const float *kn, const float *hfunc,
00222 const float *dhfunc, const float *ddhfunc,
00223 int degc00, const float *c00,
00224 int degc01, const float *c01,
00225 int degc10, const float *c10,
00226 int degc11, const float *c11,
00227 int degd00, const float *d00,
00228 int degd01, const float *d01,
00229 int degd10, const float *d10,
00230 int degd11, const float *d11,
00231 float *p, float *pu, float *pv, float *puu, float *puv, float *pvv );
00232 void _g1h_DiJacobian2f ( const vector2f *du, const vector2f *dv,
00233 const vector2f *duu, const vector2f *duv,
00234 const vector2f *dvv,
00235 float *jac, float *trd );
00236 boolean _g1h_TabDiPatchJac2f ( int nkn, const float *kn, const float *hfunc,
00237 const float *dhfunc, const float *ddhfunc,
00238 const vector2f *c00, const vector2f *c01,
00239 const vector2f *c10, const vector2f *c11,
00240 const vector2f *d00, const vector2f *d01,
00241 const vector2f *d10, const vector2f *d11,
00242 float *jac, float *trd );
00243 boolean _g1h_TabLaplacianf ( int nkn, const float *tkn,
00244 const float *hfunc, const float *dhfunc, const float *ddhfunc,
00245 const float *fc00, const float *fc01,
00246 const float *fc10, const float *fc11,
00247 const float *fd00, const float *fd01,
00248 const float *fd10, const float *fd11,
00249 const float *trd,
00250 float *lap );
00251 boolean _g1h_TabLaplacian0f ( int nkn, const float *tkn,
00252 const float *hfunc, const float *dhfunc, const float *ddhfunc,
00253 const float *fc00, const float *fc01,
00254 const float *fd00, const float *fd01,
00255 const float *trd,
00256 float *lapgrad );
00257 float _g1h_Integralf ( int hole_k, int nknsq, float *jac,
00258 unsigned short supp1, float *func1,
00259 unsigned short supp2, float *func2 );
00260
00261 boolean _g1h_VerifyJunctionFunctionsf ( GHoleDomainf *domain );
00262 boolean _g1h_VerifyDomPatchesf ( GHoleDomainf *domain );
00263
00264
00265 void g1h_ReflectVectorsf ( int n, const vector3f *v, vector3f *w );
00266 void g1h_nonlinoutpatchf ( int n, int m, const float *cp, void *usrptr );
00267 boolean _g1h_StopItf ( int itn, float gn0, float gn,
00268 float cn, float dcn, float scf );
00269 boolean g1h_GetHoleSurrndPatchf ( GHoleDomainf *domain,
00270 const point3f *hole_cp,
00271 int i, int j, point3f *bcp );
00272 boolean _g1h_ComputeNLNormalf ( GHoleDomainf *domain,
00273 G1HNLPrivatef *nlprivate,
00274 const point3f *hole_cp );
00275 boolean _g1h_TabNLDer0f ( int nkn, const float *tkn,
00276 const float *hfunc, const float *dhfunc, const float *ddhfunc,
00277 vector2f *diu, vector2f *div,
00278 vector2f *diuu, vector2f *diuv, vector2f *divv,
00279 float *fc00, float *fc01, float *fd00, float *fd01,
00280 float *psiu, float *psiv,
00281 float *psiuu, float *psiuv, float *psivv );
00282 boolean _g1h_TabNLDerf ( int nkn, float *tkn,
00283 const float *hfunc, const float *dhfunc, const float *ddhfunc,
00284 vector2f *diu, vector2f *div,
00285 vector2f *diuu, vector2f *diuv, vector2f *divv,
00286 float *fc00, float *fc01, float *fc10, float *fc11,
00287 float *fd00, float *fd01, float *fd10, float *fd11,
00288 float *psiu, float *psiv,
00289 float *psiuu, float *psiuv, float *psivv );
00290 boolean _g1h_TabNLBasisFunctionsf ( GHoleDomainf *domain, int nkn,
00291 G1HNLPrivatef *nlpr );
00292 boolean _g1h_ReflectSplAltConstrMatrixf ( GHoleDomainf *domain,
00293 vector3f *reflv, float *RACmat );
00294 void _g1h_IntFunc1f ( float pu, float pv,
00295 float puu, float puv, float pvv, float jac,
00296 float *c, float *cs, float *a, float *b,
00297 float *funct );
00298 void _g1h_IntFunc2f ( float pu, float pv,
00299 float puu, float puv, float pvv,
00300 float psiu, float psiv,
00301 float psiuu, float psiuv, float psivv,
00302 float jac, float c, float A, float B,
00303 float *ai, float *bi, float *grad );
00304 void _g1h_IntFunc3f ( float pu, float pv,
00305 float puu, float puv, float pvv,
00306 float psiu, float psiv,
00307 float psiuu, float psiuv, float psivv,
00308 float psju, float psjv,
00309 float psjuu, float psjuv, float psjvv,
00310 float jac, float c,
00311 float A, float B, float Ai, float Bi,
00312 float Aj, float Bj,
00313 float *hessian );
00314
00315
00316 boolean _g1hq2_TabNLDer0f ( int nkn, const float *tkn,
00317 const float *hfunc, const float *dhfunc, const float *ddhfunc,
00318 const float *dddhfunc,
00319 vector2f *diu, vector2f *div,
00320 vector2f *diuu, vector2f *diuv, vector2f *divv,
00321 vector2f *diuuu, vector2f *diuuv, vector2f *diuvv, vector2f *divvv,
00322 float *fc00, float *fc01, float *fd00, float *fd01,
00323 float *psiu, float *psiv,
00324 float *psiuu, float *psiuv, float *psivv,
00325 float *psiuuu, float *psiuuv, float *psiuvv, float *psivvv );
00326
00327 boolean _g1hq2_TabNLDerf ( int nkn, float *tkn,
00328 const float *hfunc, const float *dhfunc, const float *ddhfunc,
00329 const float *dddhfunc,
00330 vector2f *diu, vector2f *div,
00331 vector2f *diuu, vector2f *diuv, vector2f *divv,
00332 vector2f *diuuu, vector2f *diuuv, vector2f *diuvv, vector2f *divvv,
00333 float *fc00, float *fc01, float *fc10, float *fc11,
00334 float *fd00, float *fd01, float *fd10, float *fd11,
00335 float *psiu, float *psiv,
00336 float *psiuu, float *psiuv, float *psivv,
00337 float *psiuuu, float *psiuuv, float *psiuvv, float *psivvv );
00338
00339 boolean _g1hq2_TabNLBasisFunctionsOmegaf ( GHoleDomainf *domain, int nkn,
00340 G1HNLPrivatef *nlpr, float *bc00 );
00341 boolean _g1hq2_TabNLBasisFunctionsGammaf ( GHoleDomainf *domain, int nkn,
00342 G1HNLPrivatef *nlpr, float *ctrd,
00343 float *bc00 );
00344 void _g1hq2_IntFunc1af ( G1Q2HNLFuncf *f, float *funct );
00345 void _g1hq2_IntFunc1bf ( G1Q2HNLFuncf *f, float *funct );
00346 void _g1hq2_IntFunc1cf ( G1Q2HNLFuncf *f, float *funct );
00347 void _g1hq2_IntFunc2bf ( G1Q2HNLFuncf *f, float *grad );
00348 void _g1hq2_IntFunc2cf ( G1Q2HNLFuncf *f, float *Ai, float *Bi, float *grad );
00349 void _g1hq2_IntFunc3cf ( G1Q2HNLFuncf *f, float Ai, float Bi, float Aj, float Bj,
00350 float *hessian );
00351
00352 boolean _g1h_ReflectAltConstrMatrixf ( GHoleDomainf *domain,
00353 vector3f *reflv, float *RACmat );
00354 boolean _g1h_ReflectExtAltConstrMatrixf ( GHoleDomainf *domain,
00355 vector3f *reflv, float *RACmat );
00356
00357
00358
00359
00360
00361 #define G1GetPolyAddr(jfunc,b01,c01,f01,g01,b11,c11,f11,g11)\
00362 b01 = jfunc; \
00363 c01 = &b01[hole_k*(G1_BF01DEG+1)]; f01 = &c01[hole_k*(G1_CG01DEG+1)]; \
00364 g01 = &f01[hole_k*(G1_BF01DEG+1)]; b11 = &g01[hole_k*(G1_CG01DEG+1)]; \
00365 c11 = &b11[hole_k*(G1_BF11DEG+1)]; f11 = &c11[hole_k*(G1_CG11DEG+1)]; \
00366 g11 = &f11[hole_k*(G1_BF11DEG+1)]
00367
00368 #define G1GetPolyAddr0(jfunc,b01,c01,f01,g01)\
00369 b01 = jfunc; \
00370 c01 = &b01[hole_k*(G1_BF01DEG+1)]; f01 = &c01[hole_k*(G1_CG01DEG+1)]; \
00371 g01 = &f01[hole_k*(G1_BF01DEG+1)]
00372
00373 #define G1GetDiCrossAddresses() \
00374 dir0cr1 = privateG1->dicross; \
00375 diq0cr1 = &dir0cr1[hole_k*(G1_CROSS01DEG+1)]; \
00376 dir1cr1 = &diq0cr1[hole_k*(G1_CROSS01DEG+1)]; \
00377 diq1cr1 = &dir1cr1[hole_k*(G1_CROSS11DEG+1)]
00378
00379 #define G1GetBFuncACrossAddresses() \
00380 bbr0 = privateG1->basis_a; \
00381 bbr0cr1 = &bbr0[nfunc_a*hole_k*(G1_CROSS00DEG+1)]; \
00382 bbq0cr1 = &bbr0cr1[nfunc_a*hole_k*(G1_CROSS01DEG+1)]
00383
00384 #define G1GetBFuncBCrossAddresses() \
00385 bbr0 = privateG1->basis_b; \
00386 bbr1 = &bbr0[nfunc_b*hole_k*(G1_CROSS00DEG+1)]; \
00387 bbq1 = &bbr1[nfunc_b*hole_k*(G1_CROSS10DEG+1)]; \
00388 bbr0cr1 = &bbq1[nfunc_b*hole_k*(G1_CROSS10DEG+1)]; \
00389 bbq0cr1 = &bbr0cr1[nfunc_b*hole_k*(G1_CROSS01DEG+1)]; \
00390 bbr1cr1 = &bbq0cr1[nfunc_b*hole_k*(G1_CROSS01DEG+1)]; \
00391 bbq1cr1 = &bbr1cr1[nfunc_b*hole_k*(G1_CROSS11DEG+1)]
00392
00393 #define G1GetFCAddresses() \
00394 fc01 = &fc00[hole_k*spdimen*(G1_CROSS00DEG+1)]; \
00395 fc10 = &fc01[hole_k*spdimen*(G1_CROSS01DEG+1)]; \
00396 fc11 = &fc10[hole_k*spdimen*(G1_CROSS10DEG+1)]; \
00397 fd00 = &fc11[hole_k*spdimen*(G1_CROSS11DEG+1)]; \
00398 fd01 = &fd00[hole_k*spdimen*(G1_CROSS00DEG+1)]; \
00399 fd10 = &fd01[hole_k*spdimen*(G1_CROSS01DEG+1)]; \
00400 fd11 = &fd10[hole_k*spdimen*(G1_CROSS10DEG+1)]
00401
00402
00403 #define G1GetSFCAddresses() \
00404 sfc01 = &sfc00[hole_k*spdimen*(lastomcknot-G1_CROSS00DEG)]; \
00405 sfd00 = &sfc01[hole_k*spdimen*(lastpvknot-G1_CROSS01DEG)]; \
00406 sfd01 = &sfd00[hole_k*spdimen*(lastomcknot-G1_CROSS00DEG)]
00407
00408
00409 boolean _g1h_GetExtBlockAddressesf ( GHoleDomainf *domain,
00410 float **Aii, float **Aki, float **Akk,
00411 float **Bi, float **Bk, float **Lii );
00412
00413 boolean _g1h_SetRightSidef ( GHoleDomainf *domain, const float *Bmat,
00414 int spdimen, CONST_ float *hole_cp,
00415 float *fc00, float *b );
00416 boolean _g1h_OutputPatchesf ( GHoleDomainf *domain, int spdimen,
00417 CONST_ float *x, float *fc00, void *usrptr,
00418 void (*outpatch) ( int n, int m, const float *cp,
00419 void *usrptr ) );
00420
00421 boolean _g1h_SetExtRightSidef ( GHoleDomainf *domain,
00422 const float *Bi, const float *Bk,
00423 int spdimen, CONST_ float *hole_cp,
00424 float *fc00, float *b );
00425 boolean _g1h_OutputExtPatchesf ( GHoleDomainf *domain, int spdimen,
00426 CONST_ float *x, float *fc00, void *usrptr,
00427 void (*outpatch) ( int n, int m, const float *cp,
00428 void *usrptr ) );
00429
00430 boolean _g1h_TabTensBezPolyDer2f ( int nkn, const float *tkn,
00431 float *tbez, float *tbezu, float *tbezv,
00432 float *tbezuu, float *tbezuv, float *tbezvv );
00433
00434 void _g1h_TensDer2f ( float p, float pu, float puu,
00435 float q, float qv, float qvv,
00436 float *pq );
00437
00438
00439 void g1h_DestroySPrivateDataf ( GHoleDomainf *domain );
00440 boolean _g1h_GetSplDBasisAuxpf ( GHoleDomainf *domain, int fn, int cn,
00441 int *nzc, float *fcomc, float *fcomcd );
00442 boolean _g1h_GetSplDBasisCrossDerf ( GHoleDomainf *domain, int fn, int cn,
00443 float *fcomc, float *pv, float *pu );
00444
00445 boolean _g1h_TabBSFuncDer2f ( int deg, int lastknot, const float *knots,
00446 int i0, int i1,
00447 int n, const float *tkn, int *fkn, int *lkn,
00448 float *b, float *bt, float *btt );
00449
00450 boolean _g1h_SetSplRightSidef ( GHoleDomainf *domain,
00451 int spdimen, CONST_ float *hole_cp,
00452 const float *bmat,
00453 float *fc00, float *b );
00454 boolean _g1h_OutputSplPatchesf ( GHoleDomainf *domain,
00455 int spdimen, CONST_ float *x, float *fc00, void *usrptr,
00456 void (*outpatch) ( int n, int lknu, const float *knu,
00457 int m, int lknv, const float *knv,
00458 const float *cp, void *usrptr ) );
00459
00460
00461 boolean _g1h_Q2TabDiPatchJac3f ( int nkn, const float *kn, const float *hfunc,
00462 const float *dhfunc, const float *ddhfunc, const float *dddhfunc,
00463 const vector2f *c00, const vector2f *c01,
00464 const vector2f *c10, const vector2f *c11,
00465 const vector2f *d00, const vector2f *d01,
00466 const vector2f *d10, const vector2f *d11,
00467 float *jac, float *trd );
00468 boolean _g1h_Q2TabLaplacianGradf ( int nkn, const float *tkn,
00469 const float *hfunc, const float *dhfunc, const float *ddhfunc,
00470 const float *dddhfunc,
00471 const float *fc00, const float *fc01,
00472 const float *fc10, const float *fc11,
00473 const float *fd00, const float *fd01,
00474 const float *fd10, const float *fd11,
00475 const float *trd,
00476 vector2f *lapgrad );
00477 boolean _g1h_Q2TabLaplacianGrad0f ( int nkn, const float *tkn,
00478 const float *hfunc, const float *dhfunc, const float *ddhfunc,
00479 const float *dddhfunc,
00480 const float *fc00, const float *fc01,
00481 const float *fd00, const float *fd01,
00482 const float *trd,
00483 vector2f *lapgrad );
00484 void _g1h_TabCurveJacobianf ( int deg, const point2f *cp,
00485 int nkn, const float *kn, float *jac );
00486 void _g1h_LapCoefff ( const vector2f *du, const vector2f *dv,
00487 const vector2f *duu, const vector2f *duv,
00488 const vector2f *dvv, float *trd );
00489 boolean _g1h_TabCurveLapCoeff0f ( const point2f *c00, const vector2f *c01,
00490 const point2f *c10, const vector2f *c11,
00491 const point2f *d00, const vector2f *d01,
00492 const point2f *d10, const vector2f *d11,
00493 int nkn, const float *tkn, const float *hfunc,
00494 const float *dhfunc, const float *ddhfunc,
00495 const float *atkn, const float *ahfunc,
00496 const float *adhfunc, const float *addhfunc,
00497 float *trdc00, float *trdc10,
00498 float *trdd00, float *trdd10 );
00499 void _g1h_TabCurveLapCoeff1f ( const point2f *sicp, int nkn,
00500 const float *tkn, float *trd );
00501 boolean _g1h_TabTensBezPolyDer3f ( int nkn, const float *tkn,
00502 float *tbez, float *tbezu, float *tbezv,
00503 float *tbezuu, float *tbezuv, float *tbezvv,
00504 float *tbezuuu, float *tbezuuv, float *tbezuvv, float *tbezvvv );
00505 boolean _g1h_Q2TabLaplacianJump0f ( int nkn, const float *tkn,
00506 const float *hfunc, const float *dhfunc, const float *ddhfunc,
00507 const float *atkn, const float *ahfunc, const float *adhfunc,
00508 const float *addhfunc,
00509 const float *ec00, const float *ec01,
00510 const float *ed00, const float *ed01, const float *etrdd00,
00511 const float *fc00, const float *fc01,
00512 const float *fd00, const float *fd01,
00513 const float *ftrdc00, const float *ftrdc10, const float *ftrdd10,
00514 float *lapjc00, float *lapjc10, float *lapjd10 );
00515 boolean _g1h_Q2TabLaplacianJumpf ( int nkn, const float *tkn,
00516 const float *hfunc, const float *dhfunc, const float *ddhfunc,
00517 const float *atkn, const float *ahfunc, const float *adhfunc,
00518 const float *addhfunc,
00519 const float *ec00, const float *ec01,
00520 const float *ec10, const float *ec11,
00521 const float *ed00, const float *ed01,
00522 const float *ed10, const float *ed11, const float *etrdd00,
00523 const float *fc00, const float *fc01,
00524 const float *fc10, const float *fc11,
00525 const float *fd00, const float *fd01,
00526 const float *fd10, const float *fd11,
00527 const float *ftrdc00, const float *ftrdc10, const float *ftrdd10,
00528 const float *eicp1, const float *etrdc10,
00529 const float *eicp2, const float *etrdd10,
00530 float *lapjc00, float *lapjc10, float *lapjd10 );
00531 unsigned short _g1h_ExtendSupport ( int hole_k, unsigned short supp );
00532 boolean _g1h_TabLaplacianJump00f ( int nkn, const float *tkn, int fni,
00533 const float *trdc00, const float *trdc10,
00534 const float *trdd00, const float *trdd10,
00535 float *lapc00, float *lapc10, float *lapd00, float *lapd10 );
00536 float _g1h_Q2Integralf ( int hole_k, int nquad, float *jac,
00537 unsigned short supp1, float *lapj1,
00538 unsigned short supp2, float *lapj2 );
00539 boolean _g1h_FuncDSuppf ( int hole_k, int nk, int m1, int fn, int i,
00540 int *nzc, int *i0, int *i1, int *j0, int *j1 );
00541
00542 void g1h_splnloutpatchf ( int n, int lknu, const float *knu,
00543 int m, int lknv, const float *knv,
00544 const float *cp, void *usrptr );
00545 boolean _g1h_TabBSFuncDer3f ( int deg, int lastknot, const float *knots,
00546 int i0, int i1,
00547 int n, const float *tkn, int *fkn, int *lkn,
00548 float *b, float *bt, float *btt, float *bttt );
00549 void _g1hq2_SetupCTrdf ( const vector2f *cdiu, const vector2f *cdiv,
00550 const vector2f *cdiuu, const vector2f *cdiuv, const vector2f *cdivv,
00551 float *ctrd );
00552 boolean _g1hq2_FindDomSurrndPatchf ( GHoleDomainf *domain,
00553 G1HNLPrivatef *nlpr,
00554 int i, int j, point2f *bezcp );
00555 boolean _g1hq2_FindNLDomainDiameterf ( GHoleDomainf *domain,
00556 G1HNLPrivatef *nlpr );
00557 boolean _g1h_TabBSFuncDer2Jf ( int rr, int deg, int nk, int m2,
00558 int lastcknot, const float *cknots,
00559 float *atbs, float *atbst, float *atbstt0, float *atbstt1 );
00560
00561 #endif
00562