// ------------------------------------------------------------------------ // This program is complementary material for the book: // // Frank Nielsen // // Visual Computing: Geometry, Graphics, and Vision // // ISBN: 1-58450-427-7 // // Charles River Media, Inc. // // // All programs are available at http://www.charlesriver.com/visualcomputing/ // // You may use this program for ACADEMIC and PERSONAL purposes ONLY. // // // The use of this program in a commercial product requires EXPLICITLY // written permission from the author. The author is NOT responsible or // liable for damage or loss that may be caused by the use of this program. // // Copyright (c) 2005. Frank Nielsen. All rights reserved. // ------------------------------------------------------------------------ // ------------------------------------------------------------------------ // File: isometricprojection.cppm // // Description: Choosing the view direction to get an isometric projection of cube(s) // -------------- #include "stdafx.h" #include #include #include #include using namespace std; #define M_PI 3.14159265 double theta = 45.0, phi=45.0; double pos=4.0; void display(void) { float xeye,yeye,zeye; glClearColor(1,1,1,1); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(54,1.0,1.0,50.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); xeye = pos * cos(phi*M_PI/180.0) * cos(theta*M_PI/180.0); yeye = pos * cos(phi*M_PI/180.0) * sin(theta*M_PI/180.0); zeye = pos * sin(phi*M_PI/180.0); gluLookAt(xeye,yeye,zeye, 0.0,0.0,0.0, 0.0,0.0,1.0); // Draw principal axes glColor3f(0.5,0.5,0.5); glLineWidth(5.0); glBegin(GL_LINES); glVertex3f(0.0,0.0,0.0); glVertex3f(3,0.0,0.0); glVertex3f(0.0,0.0,0.0); glVertex3f(0.0,3,0.0); glVertex3f(0.0,0.0,0.0); glVertex3f(0.0,0.0,3); glEnd(); // DrawCube glColor3f(0,0,0); glLineWidth(2.0); glutWireCube(1.0); glPushMatrix(); glTranslatef(0,-1,0); glColor3f(0,0,1); glutWireCube(1.0); glPopMatrix(); glPushMatrix(); glTranslatef(-1,0,0); glColor3f(1,0,0); glutWireCube(1.0); glPopMatrix(); glPushMatrix(); glTranslatef(0,0,-1); glColor3f(0,1,0); glutWireCube(1.0); glPopMatrix(); glFlush(); glutSwapBuffers(); } void keyboard(unsigned char key,int x,int y) { glutPostRedisplay(); } int _tmain(int argc, _TCHAR* argv[]) { cout<<"Visual Computing: Geometry, Graphics, and Vision (ISBN:1-58450-427-7)"<