summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKyle K <kylek389@gmail.com>2010-10-16 14:40:15 -0500
committerKamil Kaminski <kamilkss@gmail.com>2010-10-16 14:40:15 -0500
commitcd22d3731e2eb0c6ab6ac91aa78c11fa98544389 (patch)
tree9a56a04a52e604097adb1f5b5332c34230c8039b
parent4843f992664c1ddabe1d99755f8e2282af19a615 (diff)
downloadGLPyramid-cd22d3731e2eb0c6ab6ac91aa78c11fa98544389.tar.gz
GLPyramid-cd22d3731e2eb0c6ab6ac91aa78c11fa98544389.tar.bz2
GLPyramid-cd22d3731e2eb0c6ab6ac91aa78c11fa98544389.zip
glut: slim down the math3d.c and math3d.h
-rw-r--r--glut/math3d.c397
-rw-r--r--glut/math3d.h1
-rw-r--r--sdl/GL_notes.txt12
-rw-r--r--sdl/GL_todo.txt4
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
+