//#include <GL/glut.h> // depends on where glut is installed - only one of these lines is necessary.
#include <glut.h>
#include <stdlib.h>

void init(void)
{
	glClearColor(0.0, 0.0, 0.0, 0.0);
	glShadeModel(GL_FLAT);
}

void display(void)
{
	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(1.0, 1.0, 1.0);
	glLoadIdentity();

	gluLookAt(5.0, 5.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

	// The following code draws the x, y, and z axis in 3d space.
	glBegin(GL_LINES);
	// x axis
	glColor3f(1.0, 0.0, 0.0); //red
	glVertex3f(0.0, 0.0, 0.0);
	glVertex3f(8.0, 0.0, 0.0); 

	// y axis
	glColor3f(0.0, 1.0, 0.0); //green
	glVertex3f(0.0, 0.0, 0.0);
	glVertex3f(0.0, 8.0, 0.0);

	// z axis
	glColor3f(0.0, 0.0, 1.0); //blue
	glVertex3f(0.0, 0.0, 0.0);
	glVertex3f(0.0, 0.0, 8.0);
	glEnd();


	glColor3f(1.0, 1.0, 1.0); //white
	glutWireTeapot(2.0);

	glFlush();
}

void reshape(int w, int h)
{
	glViewport(0, 0, (GLsizei) w, (GLsizei) h);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);
	glMatrixMode(GL_MODELVIEW);
}

int main(int argc, char** argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	glutInitWindowSize(500, 500);
	glutInitWindowPosition(100, 100);
	glutCreateWindow(argv[0]);
	init();
	glutDisplayFunc(display);
	glutReshapeFunc(reshape);
	glutMainLoop();
	return 0;
}

