diff options
| author | Kyle K <kylek389@gmail.com> | 2010-10-16 14:40:15 -0500 | 
|---|---|---|
| committer | Kamil Kaminski <kamilkss@gmail.com> | 2010-10-16 14:40:15 -0500 | 
| commit | cd22d3731e2eb0c6ab6ac91aa78c11fa98544389 (patch) | |
| tree | 9a56a04a52e604097adb1f5b5332c34230c8039b | |
| parent | 4843f992664c1ddabe1d99755f8e2282af19a615 (diff) | |
| download | GLPyramid-cd22d3731e2eb0c6ab6ac91aa78c11fa98544389.tar.gz GLPyramid-cd22d3731e2eb0c6ab6ac91aa78c11fa98544389.tar.bz2 GLPyramid-cd22d3731e2eb0c6ab6ac91aa78c11fa98544389.zip | |
glut: slim down the math3d.c and math3d.h
| -rw-r--r-- | glut/math3d.c | 397 | ||||
| -rw-r--r-- | glut/math3d.h | 1 | ||||
| -rw-r--r-- | sdl/GL_notes.txt | 12 | ||||
| -rw-r--r-- | sdl/GL_todo.txt | 4 | 
4 files changed, 26 insertions, 388 deletions
| diff --git a/glut/math3d.c b/glut/math3d.c index cdfb8cd..9a4be87 100644 --- a/glut/math3d.c +++ b/glut/math3d.c @@ -1,13 +1,3 @@ -/* revision 5 */ - -/* @2009 Kamil Kaminski - *  - * this code is not yet endian aware - * the style of the syntax is original k&r except there's \n - * after the opening { and extra space after if statement, - * and for/while loops - */ -  #include "math3d.h"  void m3dFindNormal(M3DVector3f result, const M3DVector3f point1,  @@ -101,375 +91,13 @@ void m3dRotationMatrix44(M3DMatrix44f m, float angle, float x, float y, float z)      #undef M  } -/* draw a torus (doughnut), using the current 1d texture for light shading */ -/* this funct accepts 4x4 trans matrix to be applied to the vertices */ -void gltDrawTorus(GLfloat majorRadius, GLfloat minorRadius, GLint numMajor,  -                  GLint numMinor) -{ -    M3DVector3f vNormal; -    double majorStep = 2.0f * M3D_PI / numMajor; -    double minorStep = 2.0f * M3D_PI / numMinor; -    int i, j; - -    for (i = 0; i < numMajor; ++i) -    { -        double a0 = i * majorStep; -        double a1 = a0 + majorStep; -        GLfloat x0 = (GLfloat) cos(a0); -        GLfloat y0 = (GLfloat) sin(a0); -        GLfloat x1 = (GLfloat) cos(a1); -        GLfloat y1 = (GLfloat) sin(a1); - -        glBegin(GL_TRIANGLE_STRIP); -        for (j = 0; j <= numMinor; ++j) -        { -            double b = j * minorStep; -            GLfloat c = (GLfloat) cos(b); -            GLfloat r = minorRadius * c + majorRadius; -            GLfloat z = minorRadius * (GLfloat) sin(b); - -            glTexCoord2f((float) (i) / (float) (numMajor), (float) (j) \ -                         / (float) (numMinor)); -            vNormal[0] = x0 * c; -            vNormal[1] = y0 * c; -            vNormal[2] = z / minorRadius; -            m3dNormalizeVector(vNormal); -            glNormal3fv(vNormal); -            glVertex3f(x0 * r, y0 * r, z); - -            glTexCoord2f((float) (i + 1) / (float) (numMajor), (float) (j) \ -                         / (float) (numMinor)); -            vNormal[0] = x1 * c; -            vNormal[1] = y1 * c; -            vNormal[2] = z / minorRadius; -            m3dNormalizeVector(vNormal); -            glNormal3fv(vNormal); -            glVertex3f(x1 * r, y1 * r, z); -        } -        glEnd(); -    } -} - -/* this function just specifically draws the jet */ -/* FIXME needs to accepts parameters of location and lightning */ -void DrawJet(int nShadow) -{ -    M3DVector3f vNormal; - -    /* nose cone, set material color, note we only have to set to black  -     * for the shadow once  -     */ -    if (nShadow == 0) -        glColor3ub(128, 128, 128); -    else -        glColor3ub(0, 0, 0); - -    /* nose cone, points straight down, set material color */ -    /* follow few lines use manual approach */ -    glBegin(GL_TRIANGLES); -    glNormal3f(0.0f, -1.0f, 0.0f); -    glNormal3f(0.0f, -1.0f, 0.0f); -    glVertex3f(0.0f, 0.0f, 60.0f); -    glVertex3f(-15.0f, 0.0f, 30.0f); -    glVertex3f(15.0f, 0.0f, 30.0f); - -    /* verticies for this panel */ -    { -    M3DVector3f vPoints[3] = { {15.0f, 0.0f, 30.0f} -    , -    {0.0f, 15.0f, 30.0f} -    , -    {0.0f, 0.0f, 60.0f} -    }; - -    /* calculate the normal for the plane */ -    m3dFindNormal(vNormal, vPoints[0], vPoints[1], vPoints[2]); -    glNormal3fv(vNormal); -    glVertex3fv(vPoints[0]); -    glVertex3fv(vPoints[1]); -    glVertex3fv(vPoints[2]); -    } - -    { -    M3DVector3f vPoints[3] = { {0.0f, 0.0f, 60.0f} -    , -    {0.0f, 15.0f, 30.0f} -    , -    {-15.0f, 0.0f, 30.0f} -    }; - -    m3dFindNormal(vNormal, vPoints[0], vPoints[1], vPoints[2]); -    glNormal3fv(vNormal); -    glVertex3fv(vPoints[0]); -    glVertex3fv(vPoints[1]); -    glVertex3fv(vPoints[2]); -    } - -    /* body of the plane */ -    { -    M3DVector3f vPoints[3] = { {-15.0f, 0.0f, 30.0f} -    , -    {0.0f, 15.0f, 30.0f} -    , -    {0.0f, 0.0f, -56.0f} -    }; - -    m3dFindNormal(vNormal, vPoints[0], vPoints[1], vPoints[2]); -    glNormal3fv(vNormal); -    glVertex3fv(vPoints[0]); -    glVertex3fv(vPoints[1]); -    glVertex3fv(vPoints[2]); -    } - -    { -    M3DVector3f vPoints[3] = { {0.0f, 0.0f, -56.0f} -    , -    {0.0f, 15.0f, 30.0f} -    , -    {15.0f, 0.0f, 30.0f} -    }; - -    m3dFindNormal(vNormal, vPoints[0], vPoints[1], vPoints[2]); -    glNormal3fv(vNormal); -    glVertex3fv(vPoints[0]); -    glVertex3fv(vPoints[1]); -    glVertex3fv(vPoints[2]); -    } - -    glNormal3f(0.0f, -1.0f, 0.0f); -    glVertex3f(15.0f, 0.0f, 30.0f); -    glVertex3f(-15.0f, 0.0f, 30.0f); -    glVertex3f(0.0f, 0.0f, -56.0f); - -    /* left wing, large triangle for bottom of wing */ -    { -    M3DVector3f vPoints[3] = { {0.0f, 2.0f, 27.0f} -    , -    {-60.0f, 2.0f, -8.0f} -    , -    {60.0f, 2.0f, -8.0f} -    }; - -    m3dFindNormal(vNormal, vPoints[0], vPoints[1], vPoints[2]); -    glNormal3fv(vNormal); -    glVertex3fv(vPoints[0]); -    glVertex3fv(vPoints[1]); -    glVertex3fv(vPoints[2]); -    } - -    { -    M3DVector3f vPoints[3] = { {60.0f, 2.0f, -8.0f} -    , -    {0.0f, 7.0f, -8.0f} -    , -    {0.0f, 2.0f, 27.0f} -    }; - -    m3dFindNormal(vNormal, vPoints[0], vPoints[1], vPoints[2]); -    glNormal3fv(vNormal); -    glVertex3fv(vPoints[0]); -    glVertex3fv(vPoints[1]); -    glVertex3fv(vPoints[2]); -    } - -    { -    M3DVector3f vPoints[3] = { {60.0f, 2.0f, -8.0f} -    , -    {-60.0f, 2.0f, -8.0f} -    , -    {0.0f, 7.0f, -8.0f} -    }; - -    m3dFindNormal(vNormal, vPoints[0], vPoints[1], vPoints[2]); -    glNormal3fv(vNormal); -    glVertex3fv(vPoints[0]); -    glVertex3fv(vPoints[1]); -    glVertex3fv(vPoints[2]); -    } - -    { -    M3DVector3f vPoints[3] = { {0.0f, 2.0f, 27.0f} -    , -    {0.0f, 7.0f, -8.0f} -    , -    {-60.0f, 2.0f, -8.0f} -    }; - -    m3dFindNormal(vNormal, vPoints[0], vPoints[1], vPoints[2]); -    glNormal3fv(vNormal); -    glVertex3fv(vPoints[0]); -    glVertex3fv(vPoints[1]); -    glVertex3fv(vPoints[2]); -    } - -    /* tail section */ -    /* bottom of back fin */ -    glNormal3f(0.0f, -1.0f, 0.0f); -    glVertex3f(-30.0f, -0.50f, -57.0f); -    glVertex3f(30.0f, -0.50f, -57.0f); -    glVertex3f(0.0f, -0.50f, -40.0f); - -    { -    M3DVector3f vPoints[3] = { {0.0f, -0.5f, -40.0f} -    , -    {30.0f, -0.5f, -57.0f} -    , -    {0.0f, 4.0f, -57.0f} -    }; - -    m3dFindNormal(vNormal, vPoints[0], vPoints[1], vPoints[2]); -    glNormal3fv(vNormal); -    glVertex3fv(vPoints[0]); -    glVertex3fv(vPoints[1]); -    glVertex3fv(vPoints[2]); -    } - -    { -    M3DVector3f vPoints[3] = { {0.0f, 4.0f, -57.0f} -    , -    {-30.0f, -0.5f, -57.0f} -    , -    {0.0f, -0.5f, -40.0f} -    }; - -    m3dFindNormal(vNormal, vPoints[0], vPoints[1], vPoints[2]); -    glNormal3fv(vNormal); -    glVertex3fv(vPoints[0]); -    glVertex3fv(vPoints[1]); -    glVertex3fv(vPoints[2]); -    } - -    { -    M3DVector3f vPoints[3] = { {30.0f, -0.5f, -57.0f} -    , -    {-30.0f, -0.5f, -57.0f} -    , -    {0.0f, 4.0f, -57.0f} -    }; - -    m3dFindNormal(vNormal, vPoints[0], vPoints[1], vPoints[2]); -    glNormal3fv(vNormal); -    glVertex3fv(vPoints[0]); -    glVertex3fv(vPoints[1]); -    glVertex3fv(vPoints[2]); -    } - -    { -    M3DVector3f vPoints[3] = { {0.0f, 0.5f, -40.0f} -    , -    {3.0f, 0.5f, -57.0f} -    , -    {0.0f, 25.0f, -65.0f} -    }; - -    m3dFindNormal(vNormal, vPoints[0], vPoints[1], vPoints[2]); -    glNormal3fv(vNormal); -    glVertex3fv(vPoints[0]); -    glVertex3fv(vPoints[1]); -    glVertex3fv(vPoints[2]); -    } - -    { -    M3DVector3f vPoints[3] = { {0.0f, 25.0f, -65.0f} -    , -    {-3.0f, 0.5f, -57.0f} -    , -    {0.0f, 0.5f, -40.0f} -    }; - -    m3dFindNormal(vNormal, vPoints[0], vPoints[1], vPoints[2]); -    glNormal3fv(vNormal); -    glVertex3fv(vPoints[0]); -    glVertex3fv(vPoints[1]); -    glVertex3fv(vPoints[2]); -    } - -    { -    M3DVector3f vPoints[3] = { {3.0f, 0.5f, -57.0f} -    , -    {-3.0f, 0.5f, -57.0f} -    , -    {0.0f, 25.0f, -65.0f} -    }; - -    m3dFindNormal(vNormal, vPoints[0], vPoints[1], vPoints[2]); -    glNormal3fv(vNormal); -    glVertex3fv(vPoints[0]); -    glVertex3fv(vPoints[1]); -    glVertex3fv(vPoints[2]); -    } - -    glEnd(); -} - -void gltDrawUnitAxes(void) -{ -    GLUquadricObj *pObj; /* temporary, used for quadrics */ - -    /* measurements */ -    float fAxisRadius = 0.025f; -    float fAxisHeight = 1.0f; -    float fArrowRadius = 0.06f; -    float fArrowHeight = 0.1f; - -    /* setup the quadric object */ -    pObj = gluNewQuadric(); -    gluQuadricDrawStyle(pObj, GLU_FILL); -    gluQuadricNormals(pObj, GLU_SMOOTH); -    gluQuadricOrientation(pObj, GLU_OUTSIDE); -    gluQuadricTexture(pObj, GLU_FALSE); - -    /* draw the blue z axis first with arrowed head */ -    glColor3f(0.0f, 0.0f, 1.0f); -    gluCylinder(pObj, fAxisRadius, fAxisRadius, fAxisHeight, 10, 1); -    glPushMatrix(); -    glTranslatef(0.0f, 0.0f, 1.0f); -    gluCylinder(pObj, fArrowRadius, 0.0f, fArrowHeight, 10, 1); -    glRotatef(180.0f, 1.0f, 0.0f, 0.0f); -    gluDisk(pObj, fAxisRadius, fArrowRadius, 10, 1); -    glPopMatrix(); - -    /* draw the red x axis 2nd with arrowed head */ -    glColor3f(1.0f, 0.0f, 0.0f); -    glPushMatrix(); -    glRotatef(90.0f, 0.0f, 1.0f, 0.0f); -    gluCylinder(pObj, fAxisRadius, fAxisRadius, fAxisHeight, 10, 1); -    glPushMatrix(); -    glTranslatef(0.0f, 0.0f, 1.0f); -    gluCylinder(pObj, fArrowRadius, 0.0f, fArrowHeight, 10, 1); -    glRotatef(180.0f, 0.0f, 1.0f, 0.0f); -    gluDisk(pObj, fAxisRadius, fArrowRadius, 10, 1); -    glPopMatrix(); -    glPopMatrix(); - -    /* draw the green y axis 3rd with arrowed head */ -    glColor3f(0.0f, 1.0f, 0.0f); -    glPushMatrix(); -    glRotatef(-90.0f, 1.0f, 0.0f, 0.0f); -    gluCylinder(pObj, fAxisRadius, fAxisRadius, fAxisHeight, 10, 1); -    glPushMatrix(); -    glTranslatef(0.0f, 0.0f, 1.0f); -    gluCylinder(pObj, fArrowRadius, 0.0f, fArrowHeight, 10, 1); -    glRotatef(180.0f, 1.0f, 0.0f, 0.0f); -    gluDisk(pObj, fAxisRadius, fArrowRadius, 10, 1); -    glPopMatrix(); -    glPopMatrix(); - -    /* white sphere at origin */ -    glColor3f(1.0f, 1.0f, 1.0f); -    gluSphere(pObj, 0.05f, 15, 15); - -    /* delete the quadric */ -    gluDeleteQuadric(pObj); -} - -#define A(row,col)  a[(col<<2)+row] -#define B(row,col)  b[(col<<2)+row] -#define P(row,col)  product[(col<<2)+row] -  void m3dMatrixMultiply44(M3DMatrix44f product, const M3DMatrix44f a,                            const M3DMatrix44f b)  { +    #define A(row,col)  a[(col<<2)+row] +    #define B(row,col)  b[(col<<2)+row] +    #define P(row,col)  product[(col<<2)+row] +      int i;      for (i = 0; i < 4; i++)      { @@ -479,18 +107,12 @@ void m3dMatrixMultiply44(M3DMatrix44f product, const M3DMatrix44f a,          P(i, 2) = ai0 * B(0, 2) + ai1 * B(1, 2) + ai2 * B(2, 2) + ai3 * B(3, 2);          P(i, 3) = ai0 * B(0, 3) + ai1 * B(1, 3) + ai2 * B(2, 3) + ai3 * B(3, 3);      } +     +    #undef A +    #undef B +    #undef P  } -#undef A -#undef B -#undef P - - -/*************************************************************/ -/* unrelated functions that do not have much to do with math */ -/*                                                           */ -/*************************************************************/ -  GLint gltWriteTGA(const char *szFileName)  {      FILE *pFile;              /* file pointer */ @@ -611,7 +233,7 @@ GLbyte *gltLoadTGA(const char *szFileName, GLint *iWidth, GLint *iHeight,      if (pBits == NULL)      {          perror("malloc"); -        return 0; +        return NULL;      }      /* read in the bits */ @@ -647,3 +269,4 @@ GLbyte *gltLoadTGA(const char *szFileName, GLint *iWidth, GLint *iHeight,      /* return pointer to image data */      return pBits;  } + diff --git a/glut/math3d.h b/glut/math3d.h index ed72e56..e33b387 100644 --- a/glut/math3d.h +++ b/glut/math3d.h @@ -127,3 +127,4 @@ static inline void m3dTransposeMatrix44(M3DMatrix44f dst,  }  #endif + diff --git a/sdl/GL_notes.txt b/sdl/GL_notes.txt index a370290..59267e0 100644 --- a/sdl/GL_notes.txt +++ b/sdl/GL_notes.txt @@ -44,5 +44,15 @@ OBJ Loader  Pipeline  - Display Lists: precompile series of OpenGL commands (static) -- Vertex Array: modifiable, gets rid of glBegin() and glEnd() ? +    GLuint identifiers +    1st identifier = glGenLists() +    glNewList() +        commands +    glEndList() +     +- Vertex Array: modifiable, gets rid of glBegin() and glEnd() +    glEnableClientState() +        glVertexPointer() || glTexCoordPointer() || glNormalPointer() +	    glDrawArrays() || glDrawElements() +    glDisableClientState() diff --git a/sdl/GL_todo.txt b/sdl/GL_todo.txt index fc7e49f..e269185 100644 --- a/sdl/GL_todo.txt +++ b/sdl/GL_todo.txt @@ -17,3 +17,7 @@ todo:  pyramid:  - could do with 2 textures and practice generating and binding textures +gltools: +- could have init() that would load textures for each func, and in each func +  we would have to bind the particular texture + | 
