Iceman
2002.07.21, 03:13 PM
I'm trying to make one normal out of three verticies. For example this:
glNormal3f(0.0, 0.0, 0.0);
glVertex3f( 0.0, 0.0, 0.0);
glVertex3f( 0.0, 0.0, 0.0);
glVertex3f( 0.0, 0.0, 0.0);
The reason I don't just use GL_FLAT is because I want a smoothed flat plane. What am I doing wrong? Here's the code:
void triNorm(float triNormx[3], float triNormy[3], float triNormz[3]) {
float normCrossx;
float normCrossy;
float normCrossz;
float normDx;
float normDy;
float normDz;
float distance;
normCrossx = (triNormx[0] - triNormx[1]) * (triNormx[1] - triNormx[2]);
normCrossy = (triNormy[0] - triNormy[1]) * (triNormy[1] - triNormy[2]);
normCrossz = (triNormz[0] - triNormz[1]) * (triNormz[1] - triNormz[2]);
distance = sqrt(normCrossx * normCrossx + normCrossy * normCrossy + normCrossz * normCrossz);
normDx = normCrossx / distance;
normDy = normCrossy / distance;
normDz = normCrossz / distance;
glNormal3f(normDx, normDy, normDz);
}
void geTri1VertNorm3f(float vertx1, float verty1, float vertz1) {
triNorm( vertx1, verty1, vertz1);
glVertex3f( vertx1, verty1, vertz1);
}
void geTri2VertNorm3f(float vertx2, float verty2, float vertz2) {
triNorm( vertx2, verty2, vertz2);
glVertex3f( vertx2, verty2, vertz2);
}
void geTri3VertNorm3f(float vertx3, float verty3, float vertz3) {
triNorm( vertx3, verty3, vertz3);
glVertex3f( vertx3, verty3, vertz3);
}
Thanks,
Iceman
glNormal3f(0.0, 0.0, 0.0);
glVertex3f( 0.0, 0.0, 0.0);
glVertex3f( 0.0, 0.0, 0.0);
glVertex3f( 0.0, 0.0, 0.0);
The reason I don't just use GL_FLAT is because I want a smoothed flat plane. What am I doing wrong? Here's the code:
void triNorm(float triNormx[3], float triNormy[3], float triNormz[3]) {
float normCrossx;
float normCrossy;
float normCrossz;
float normDx;
float normDy;
float normDz;
float distance;
normCrossx = (triNormx[0] - triNormx[1]) * (triNormx[1] - triNormx[2]);
normCrossy = (triNormy[0] - triNormy[1]) * (triNormy[1] - triNormy[2]);
normCrossz = (triNormz[0] - triNormz[1]) * (triNormz[1] - triNormz[2]);
distance = sqrt(normCrossx * normCrossx + normCrossy * normCrossy + normCrossz * normCrossz);
normDx = normCrossx / distance;
normDy = normCrossy / distance;
normDz = normCrossz / distance;
glNormal3f(normDx, normDy, normDz);
}
void geTri1VertNorm3f(float vertx1, float verty1, float vertz1) {
triNorm( vertx1, verty1, vertz1);
glVertex3f( vertx1, verty1, vertz1);
}
void geTri2VertNorm3f(float vertx2, float verty2, float vertz2) {
triNorm( vertx2, verty2, vertz2);
glVertex3f( vertx2, verty2, vertz2);
}
void geTri3VertNorm3f(float vertx3, float verty3, float vertz3) {
triNorm( vertx3, verty3, vertz3);
glVertex3f( vertx3, verty3, vertz3);
}
Thanks,
Iceman