51#define AVOID_ZERO_NORMAL
53#ifdef AVOID_ZERO_NORMAL
54#define myabs(x) ((x>0)? x: (-x))
55#define MYZERO 0.000001
62#define LOD_EVAL_COORD(u,v) glEvalCoord2f(u,v)
64static void LOD_interpolate(
REAL A[2],
REAL B[2],
REAL C[2],
int j,
int k,
int pow2_level,
102 for(
j=0;
j<=pow2_level-1;
j++)
108 LOD_interpolate(
A,
B,
C,
j+1,
j+1, pow2_level,
u,
v);
118 LOD_interpolate(
A,
B,
C,
j,
j-
k,pow2_level,
u,
v);
126 LOD_interpolate(
A,
B,
C,
j+1,
j-
k,pow2_level,
u,
v);
148 for(
i=2,
k=4;
i<=num_vert-2;
i+=2,
k+=4)
159 LOD_triangle(verts+2*(num_vert-3), verts+2*(num_vert-2), verts+2*(num_vert-1),
165 for(
i=1,
k=2;
i<=num_vert-2;
i++,
k+=2)
183extern float xmin, xmax, ymin, ymax, zmin,
zmax;
184extern int temp_signal;
186static void gTessVertexSphere(
float u,
float v,
float temp_normal[3],
float temp_vertex[3])
189 float Ox = 0.5*(xmin+xmax);
190 float Oy = 0.5*(ymin+ymax);
191 float Oz = 0.5*(zmin+
zmax);
210static void gTessVertexCyl(
float u,
float v,
float temp_normal[3],
float temp_vertex[3])
213 float Ox = 0.5*(xmin+xmax);
214 float Oy = 0.5*(ymin+ymax);
215 float Oz = 0.5*(zmin+
zmax);
412 for(
i=lowU;
i<highU;
i++){
417 for(
j=highV;
j>=lowV;
j--){
428 for(
i=lowV;
i<highV;
i++){
433 for(
j=highU;
j>=lowU;
j--){
463 printf(
"error in inMap2f, maptype=%i is wrong, k,map is not updated\n",
k);
480 for (
x=0;
x<
k;
x++) {
503 pu[0] = pu[0]*
p[3] - pu[3]*
p[0];
504 pu[1] = pu[1]*
p[3] - pu[3]*
p[1];
505 pu[2] = pu[2]*
p[3] - pu[3]*
p[2];
507 pv[0] = pv[0]*
p[3] - pv[3]*
p[0];
508 pv[1] = pv[1]*
p[3] - pv[3]*
p[1];
509 pv[2] = pv[2]*
p[3] - pv[3]*
p[2];
522 n[0] = pu[1]*pv[2] - pu[2]*pv[1];
523 n[1] = pu[2]*pv[0] - pu[0]*pv[2];
524 n[2] = pu[0]*pv[1] - pu[1]*pv[0];
526 mag =
sqrt(
n[0]*
n[0] +
n[1]*
n[1] +
n[2]*
n[2]);
551 inDoDomain2WithDerivs(
global_ev_k,
u,
v,
global_ev_u1,
global_ev_u2,
global_ev_uorder,
global_ev_v1,
global_ev_v2,
global_ev_vorder,
global_ev_ctlPoints, retPoint, du, dv);
553#ifdef AVOID_ZERO_NORMAL
566 inDoDomain2WithDerivs(
global_ev_k,
u,
v,
global_ev_u1,
global_ev_u2,
global_ev_uorder,
global_ev_v1,
global_ev_v2,
global_ev_vorder,
global_ev_ctlPoints, tempdata, tempdu, dv);
578 inDoDomain2WithDerivs(
global_ev_k,
u,
v,
global_ev_u1,
global_ev_u2,
global_ev_uorder,
global_ev_v1,
global_ev_v2,
global_ev_vorder,
global_ev_ctlPoints, tempdata, du, tempdv);
593 retPoint[0] /= retPoint[3];
594 retPoint[1] /= retPoint[3];
595 retPoint[2] /= retPoint[3];
610 printf(
"vertex(%f,%f,%f)\n", retPoint[0],retPoint[1],retPoint[2]);
632 inDoDomain2WithDerivsBU(
global_ev_k,
u,
v,
global_ev_u1,
global_ev_u2,
global_ev_uorder,
global_ev_v1,
global_ev_v2,
global_ev_vorder,
global_ev_ctlPoints, retPoint, du, dv);
635#ifdef AVOID_ZERO_NORMAL
648 inDoDomain2WithDerivs(
global_ev_k,
u,
v,
global_ev_u1,
global_ev_u2,
global_ev_uorder,
global_ev_v1,
global_ev_v2,
global_ev_vorder,
global_ev_ctlPoints, tempdata, tempdu, dv);
660 inDoDomain2WithDerivs(
global_ev_k,
u,
v,
global_ev_u1,
global_ev_u2,
global_ev_uorder,
global_ev_v1,
global_ev_v2,
global_ev_vorder,
global_ev_ctlPoints, tempdata, du, tempdv);
673 retPoint[0] /= retPoint[3];
674 retPoint[1] /= retPoint[3];
675 retPoint[2] /= retPoint[3];
696 inDoDomain2WithDerivsBV(
global_ev_k,
u,
v,
global_ev_u1,
global_ev_u2,
global_ev_uorder,
global_ev_v1,
global_ev_v2,
global_ev_vorder,
global_ev_ctlPoints, retPoint, du, dv);
699#ifdef AVOID_ZERO_NORMAL
712 inDoDomain2WithDerivs(
global_ev_k,
u,
v,
global_ev_u1,
global_ev_u2,
global_ev_uorder,
global_ev_v1,
global_ev_v2,
global_ev_vorder,
global_ev_ctlPoints, tempdata, tempdu, dv);
724 inDoDomain2WithDerivs(
global_ev_k,
u,
v,
global_ev_u1,
global_ev_u2,
global_ev_uorder,
global_ev_v1,
global_ev_v2,
global_ev_vorder,
global_ev_ctlPoints, tempdata, du, tempdv);
737 retPoint[0] /= retPoint[3];
738 retPoint[1] /= retPoint[3];
739 retPoint[2] /= retPoint[3];
759 inDoDomain2WithDerivs(
global_ev_k,
u,
v,
global_ev_u1,
global_ev_u2,
global_ev_uorder,
global_ev_v1,
global_ev_v2,
global_ev_vorder,
global_ev_ctlPoints, retPoint, du, dv);
762#ifdef AVOID_ZERO_NORMAL
775 inDoDomain2WithDerivs(
global_ev_k,
u,
v,
global_ev_u1,
global_ev_u2,
global_ev_uorder,
global_ev_v1,
global_ev_v2,
global_ev_vorder,
global_ev_ctlPoints, tempdata, tempdu, dv);
787 inDoDomain2WithDerivs(
global_ev_k,
u,
v,
global_ev_u1,
global_ev_u2,
global_ev_uorder,
global_ev_v1,
global_ev_v2,
global_ev_vorder,
global_ev_ctlPoints, tempdata, du, tempdv);
800 retPoint[0] /= retPoint[3];
801 retPoint[1] /= retPoint[3];
802 retPoint[2] /= retPoint[3];
827 for(col = 1; col <
vorder; col++){
852 for(col=0; col<
vorder; col++){
853 data = baseData+
j +
k*col;
894 retPoint[
j] = retdu[
j] = retdv[
j] = 0.0;
895 for (col = 0; col <
vorder; col++) {
927 retPoint[
j] = retdu[
j] = retdv[
j] = 0.0;
982 for (
j = 0;
j <
k;
j++) {
984 retPoint[
j] = retdu[
j] = retdv[
j] = 0.0;
994 for (col = 1; col <
vorder; col++) {
1026 REAL oneMinusvprime;
1038 oneMinusvprime = 1-vprime;
1039 coeff[0] = oneMinusvprime;
1041 if (
order == 2)
return;
1044 oldval = coeff[0] * vprime;
1045 coeff[0] = oneMinusvprime * coeff[0];
1046 for (
j = 1;
j <
i;
j++) {
1048 oldval = coeff[
j] * vprime;
1049 coeff[
j] =
temp + oneMinusvprime * coeff[
j];
1071 REAL oneMinusvprime;
1073 oneMinusvprime = 1-vprime;
1081 coeffDeriv[0] = 0.0;
1083 }
else if (
order == 2) {
1084 coeffDeriv[0] = -1.0;
1085 coeffDeriv[1] = 1.0;
1086 coeff[0] = oneMinusvprime;
1090 coeff[0] = oneMinusvprime;
1093 oldval = coeff[0] * vprime;
1094 coeff[0] = oneMinusvprime * coeff[0];
1095 for (
j = 1;
j <
i;
j++) {
1097 oldval = coeff[
j] * vprime;
1098 coeff[
j] =
temp + oneMinusvprime * coeff[
j];
1102 coeffDeriv[0] = -coeff[0];
1110 coeffDeriv[
j] = coeff[
j-1] - coeff[
j];
1113 coeffDeriv[
j] = coeff[
j-1];
1115 oldval = coeff[0] * vprime;
1116 coeff[0] = oneMinusvprime * coeff[0];
1117 for (
j = 1;
j <
i;
j++) {
1119 oldval = coeff[
j] * vprime;
1120 coeff[
j] =
temp + oneMinusvprime * coeff[
j];
1136 ret_points[
i][0] =
temp[0];
1137 ret_points[
i][1] =
temp[1];
1138 ret_points[
i][2] =
temp[2];
1153 ret_points[
i][0] =
temp[0];
1154 ret_points[
i][1] =
temp[1];
1155 ret_points[
i][2] =
temp[2];
1170 typedef REAL REAL3[3];
1172 REAL3* upperXYZ = (REAL3*)
malloc(
sizeof(REAL3)*n_upper);
1174 REAL3* upperNormal = (REAL3*)
malloc(
sizeof(REAL3) * n_upper);
1176 REAL3* lowerXYZ = (REAL3*)
malloc(
sizeof(REAL3)*n_lower);
1178 REAL3* lowerNormal = (REAL3*)
malloc(
sizeof(REAL3) * n_lower);
1181 inEvalULine(n_upper, v_upper, upper_val, 1, upperXYZ, upperNormal);
1182 inEvalULine(n_lower, v_lower, lower_val, 1, lowerXYZ, lowerNormal);
1187 REAL* leftMostNormal;
1197 if(upper_val[0] <= lower_val[0])
1202 leftMostV[0] = upper_val[0];
1203 leftMostV[1] = v_upper;
1204 leftMostXYZ = upperXYZ[0];
1205 leftMostNormal = upperNormal[0];
1212 leftMostV[0] = lower_val[0];
1213 leftMostV[1] = v_lower;
1215 leftMostXYZ = lowerXYZ[0];
1216 leftMostNormal = lowerNormal[0];
1244 else if(
j>= n_lower)
1252 for(
k=n_upper-1;
k>=
i;
k--)
1264 if(upper_val[
i] <= lower_val[
j])
1278 if(upper_val[
k] > lower_val[
j])
1301 leftMostV[0] = upper_val[
k];
1302 leftMostV[1] = v_upper;
1303 leftMostNormal = upperNormal[
k];
1304 leftMostXYZ = upperXYZ[
k];
1322 if(lower_val[
k] >= upper_val[
i])
1334 leftMostV[0] = lower_val[
j-1];
1335 leftMostV[1] = v_lower;
1337 leftMostNormal = lowerNormal[
j-1];
1338 leftMostXYZ = lowerXYZ[
j-1];
1359 typedef REAL REAL3[3];
1361 REAL3* leftXYZ = (REAL3*)
malloc(
sizeof(REAL3)*n_left);
1363 REAL3* leftNormal = (REAL3*)
malloc(
sizeof(REAL3) * n_left);
1365 REAL3* rightXYZ = (REAL3*)
malloc(
sizeof(REAL3)*n_right);
1367 REAL3* rightNormal = (REAL3*)
malloc(
sizeof(REAL3) * n_right);
1370 inEvalVLine(n_left, u_left, left_val, 1, leftXYZ, leftNormal);
1371 inEvalVLine(n_right, u_right, right_val, 1, rightXYZ, rightNormal);
1376 REAL* botMostNormal;
1387 if(left_val[0] <= right_val[0])
1392 botMostV[0] = u_left;
1393 botMostV[1] = left_val[0];
1394 botMostXYZ = leftXYZ[0];
1395 botMostNormal = leftNormal[0];
1402 botMostV[0] = u_right;
1403 botMostV[1] = right_val[0];
1405 botMostXYZ = rightXYZ[0];
1406 botMostNormal = rightNormal[0];
1434 else if(
j>= n_right)
1442 for(
k=n_left-1;
k>=
i;
k--)
1454 if(left_val[
i] <= right_val[
j])
1468 if(left_val[
k] > right_val[
j])
1491 botMostV[0] = u_left;
1492 botMostV[1] = left_val[
k];
1493 botMostNormal = leftNormal[
k];
1494 botMostXYZ = leftXYZ[
k];
1512 if(right_val[
k] >= left_val[
i])
1524 botMostV[0] = u_right;
1525 botMostV[1] = right_val[
j-1];
1527 botMostNormal = rightNormal[
j-1];
1528 botMostXYZ = rightXYZ[
j-1];
1578 temp_em->
u1 = ulower;
1579 temp_em->
u2 = uupper;
1582 temp_em->
v1 = vlower;
1583 temp_em->
v2 = vupper;
1590 for (
x=0;
x<
k;
x++) {
1610 if((em->
u2 == em->
u1) || (em->
v2 == em->
v1))
1612 the_uprime = (
u - em->
u1) / (em->
u2 - em->
u1);
1613 the_vprime = (
v - em->
v1) / (em->
v2 - em->
v1);
1618 if(em->
uprime != the_uprime) {
1622 if (em->
vprime != the_vprime) {
1627 for (
j = 0;
j < em->
k;
j++) {
1629 retPoint[
j] = retdu[
j] = retdv[
j] = 0.0;
1639 for (col = 1; col < em->
vorder; col++) {
1641 p += em->
vcoeff[col] * (*data);
1662 if((em->
u2 == em->
u1) || (em->
v2 == em->
v1))
1664 the_uprime = (
u - em->
u1) / (em->
u2 - em->
u1);
1665 the_vprime = (
v - em->
v1) / (em->
v2 - em->
v1);
1670 if(em->
uprime != the_uprime) {
1674 if (em->
vprime != the_vprime) {
1679 for (
j = 0;
j < em->
k;
j++) {
1690 for (col = 1; col < em->
vorder; col++) {
1692 p += em->
vcoeff[col] * (*data);
1704 REAL temp_vertex[5];
1705 REAL temp_normal[3];
1707 REAL temp_texcoord[4];
1730 temp_vertex[0] /= temp_vertex[3];
1731 temp_vertex[1] /= temp_vertex[3];
1732 temp_vertex[2] /= temp_vertex[3];
1750#ifdef AVOID_ZERO_NORMAL
1796 temp_vertex[0] /= temp_vertex[3];
1797 temp_vertex[1] /= temp_vertex[3];
1798 temp_vertex[2] /= temp_vertex[3];
1814 temp_vertex[0] /= temp_vertex[3];
1815 temp_vertex[1] /= temp_vertex[3];
1816 temp_vertex[2] /= temp_vertex[3];
1969printf(
"***number ****1\n");
2020 LOD_EVAL_COORD(
u,
v);
2025 float temp_normal[3];
2026 float temp_vertex[3];
2027 if(temp_signal == 0)
2029 gTessVertexSphere(
u,
v, temp_normal, temp_vertex);
2034 else if(temp_signal == 1)
2036 gTessVertexCyl(
u,
v, temp_normal, temp_vertex);
_STLP_DECLSPEC complex< float > _STLP_CALL cos(const complex< float > &)
_STLP_DECLSPEC complex< float > _STLP_CALL sin(const complex< float > &)
_STLP_DECLSPEC complex< float > _STLP_CALL sqrt(const complex< float > &)
surfEvalMachine em_normal
void inBPMListEvalEM(bezierPatchMesh *list)
REAL global_vcoeffDeriv[IN_MAX_BEZIER_ORDER]
REAL global_ucoeffDeriv[IN_MAX_BEZIER_ORDER]
void inDoDomain2WithDerivs(int k, REAL u, REAL v, REAL u1, REAL u2, int uorder, REAL v1, REAL v2, int vorder, REAL *baseData, REAL *retPoint, REAL *retdu, REAL *retdv)
REAL global_ev_ctlPoints[IN_MAX_BEZIER_ORDER *IN_MAX_BEZIER_ORDER *IN_MAX_DIMENSION]
void inBPMEval(bezierPatchMesh *bpm)
void LOD_eval(int num_vert, REAL *verts, int type, int level)
void vertexCallBack(const GLfloat *vert, void *data)
void texcoordCallBack(const GLfloat *texcoord, void *data)
void inDoEvalCoord2NOGE(REAL u, REAL v, REAL *retPoint, REAL *retNormal)
void inEvalCoord2f(REAL u, REAL v)
void inDoEvalCoord2EM(REAL u, REAL v)
void endCallBack(void *data)
void inPreEvaluateBV_intfac(REAL v)
void inComputeNormal2(REAL *pu, REAL *pv, REAL *n)
void inDoDomain2WithDerivsBV(int k, REAL u, REAL v, REAL u1, REAL u2, int uorder, REAL v1, REAL v2, int vorder, REAL *baseData, REAL *retPoint, REAL *retdu, REAL *retdv)
void inDoEvalCoord2NOGE_BU(REAL u, REAL v, REAL *retPoint, REAL *retNormal)
void inDoDomain2EM(surfEvalMachine *em, REAL u, REAL v, REAL *retPoint)
void inComputeFirstPartials(REAL *p, REAL *pu, REAL *pv)
void inEvalULine(int n_points, REAL v, REAL *u_vals, int stride, REAL ret_points[][3], REAL ret_normals[][3])
void inBPMListEval(bezierPatchMesh *list)
void inPreEvaluateBU(int k, int uorder, int vorder, REAL uprime, REAL *baseData)
REAL global_PBU[IN_MAX_BEZIER_ORDER][IN_MAX_DIMENSION]
REAL global_ucoeff[IN_MAX_BEZIER_ORDER]
void beginCallBack(GLenum type, void *data)
void inEvalUStrip(int n_upper, REAL v_upper, REAL *upper_val, int n_lower, REAL v_lower, REAL *lower_val)
void inDoDomain2WithDerivsEM(surfEvalMachine *em, REAL u, REAL v, REAL *retPoint, REAL *retdu, REAL *retdv)
surfEvalMachine em_vertex
REAL global_PBV[IN_MAX_BEZIER_ORDER][IN_MAX_DIMENSION]
void colorCallBack(const GLfloat *color, void *data)
void inPreEvaluateBV(int k, int uorder, int vorder, REAL vprime, REAL *baseData)
void inPreEvaluateBU_intfac(REAL u)
void inEvalVStrip(int n_left, REAL u_left, REAL *left_val, int n_right, REAL u_right, REAL *right_val)
void normalCallBack(const GLfloat *normal, void *data)
void inPreEvaluate(int order, REAL vprime, REAL *coeff)
void inMap2f(int k, REAL ulower, REAL uupper, int ustride, int uorder, REAL vlower, REAL vupper, int vstride, int vorder, REAL *ctlPoints)
void inMapGrid2f(int nu, REAL u0, REAL u1, int nv, REAL v0, REAL v1)
REAL global_BV[IN_MAX_BEZIER_ORDER][IN_MAX_DIMENSION]
void inDoEvalCoord2NOGE_BV(REAL u, REAL v, REAL *retPoint, REAL *retNormal)
void inEvalPoint2(int i, int j)
void inMap2fEM(int which, int dimension, REAL ulower, REAL uupper, int ustride, int uorder, REAL vlower, REAL vupper, int vstride, int vorder, REAL *ctlPoints)
void inEvalVLine(int n_points, REAL u, REAL *v_vals, int stride, REAL ret_points[][3], REAL ret_normals[][3])
void inDoDomain2WithDerivsBU(int k, REAL u, REAL v, REAL u1, REAL u2, int uorder, REAL v1, REAL v2, int vorder, REAL *baseData, REAL *retPoint, REAL *retdu, REAL *retdv)
void LOD_triangle(REAL A[2], REAL B[2], REAL C[2], int level)
void inPreEvaluateWithDeriv(int order, REAL vprime, REAL *coeff, REAL *coeffDeriv)
surfEvalMachine em_texcoord
void inDoEvalCoord2(REAL u, REAL v, REAL *retPoint, REAL *retNormal)
void inBPMEvalEM(bezierPatchMesh *bpm)
REAL global_vcoeff[IN_MAX_BEZIER_ORDER]
void inEvalMesh2(int lowU, int lowV, int highU, int highV)
REAL global_BU[IN_MAX_BEZIER_ORDER][IN_MAX_DIMENSION]
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
GLAPI void GLAPIENTRY glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)
GLint GLint GLint GLint GLint x
GLAPI void GLAPIENTRY glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points)
GLuint GLuint GLsizei GLenum type
GLAPI void GLAPIENTRY glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)
GLint GLint GLint GLint GLint GLint y
GLAPI void GLAPIENTRY glBegin(GLenum mode)
GLAPI void GLAPIENTRY glVertex3fv(const GLfloat *v)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLAPI void GLAPIENTRY glEnd(void)
GLdouble GLdouble GLdouble r
#define GL_TRIANGLE_STRIP
GLAPI void GLAPIENTRY glNormal3fv(const GLfloat *v)
GLdouble GLdouble GLint ustride
GLdouble GLdouble GLint GLint uorder
GLboolean GLboolean GLboolean b
GLfloat GLfloat GLfloat GLfloat nx
GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint vorder
GLuint GLdouble GLdouble GLint GLint order
GLboolean GLboolean GLboolean GLboolean a
GLfloat GLfloat GLfloat v2
GLdouble GLdouble GLint GLint GLdouble GLdouble GLint vstride
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
static const struct update_accum a1
static CRYPT_DATA_BLOB b1[]
bezierPatch * bpatch_color
bezierPatch * bpatch_texcoord
bezierPatch * bpatch_normal
REAL ucoeffDeriv[IN_MAX_BEZIER_ORDER]
REAL ucoeff[IN_MAX_BEZIER_ORDER]
REAL vcoeff[IN_MAX_BEZIER_ORDER]
REAL vcoeffDeriv[IN_MAX_BEZIER_ORDER]
REAL ctlPoints[IN_MAX_BEZIER_ORDER *IN_MAX_BEZIER_ORDER *IN_MAX_DIMENSION]
_In_ ULONG_PTR _In_opt_ DESIGNVECTOR * pdv