120 likes | 280 Views
Viewing and Navigating using OpenGL. Outside-In Viewing. Object is centered. Observer navigates on a sphere surrounding the object. Inside-Out Viewing. Viewer centered. Observer navigates, looks toward a point On the sphere. Sphere center moves with observer. Inside-Out Viewing.
E N D
Outside-In Viewing Object is centered. Observer navigates on a sphere surrounding the object.
Inside-Out Viewing Viewer centered. Observer navigates, looks toward a point On the sphere. Sphere center moves with observer.
Inside-Out Viewing Viewer centered. Observer navigates, looks toward a point On the sphere. Sphere center moves with observer.
y x z Some Spherical Geometry (x,y,z) r q f
y x z Viewing: Outside-In (x,y,z) gluLookAt(x,y,z,0,0,0,0,1,0);
Outside In ViewingSample Code glLoadIdentity(); // start with an identity in the MODELVIEW transformation x = radius * cos(theta) * cos(phi); y = radius * sin(theta); z = -radius * cos(theta)* sin(phi); gluLookAt(x,y,z,0,0,0,0,1,0); //multiply viewing component of transformation glutSolidTeapot(1.0); // draw what is being looked at (around origin)
Viewing: Outside In Possible Navigation Key Mapping • GLUT_KEY_LEFT increase phi • GLUT_KEY_RIGHT decrease phi • GLUT_KEY_UP increase theta • GLUT_KEY_DOWN decrease theta • GLUT_KEY_PAGE_UP increase radius • GLUT_KEY_PAGE_DOWN decrease radius
y x z Viewing: Inside Out, from Origin (x,y,z) gluLookAt(0,0,0,x,y,z,0,1,0);
Y’ X’ z’ Viewing: Inside Out, from Arbitrary Point (x,y,z) gluLookAt(x0,y0,z0,x,y,z,0,1,0);
Inside Out ViewingSample Code glLoadIdentity(); // start with an identity in the MODELVIEW transformation x = radius * cos(theta) * cos(phi); y = radius * sin(theta); z = -radius * cos(theta)* sin(phi); gluLookAt(xo,yo,zo,xo+x,yo+y,zo+z,0,1,0); //multiply viewing transformation glutSolidTeapot(1.0);
Viewing: Inside Out Possible Navigation Key Mapping • GLUT_KEY_LEFT increase phi (look left) • GLUT_KEY_RIGHT decrease phi (look right) • GLUT_KEY_UP increase theta (look up) • GLUT_KEY_DOWN decrease theta (look down) • GLUT_KEY_PAGE_UP walk in direction of view • GLUT_KEY_PAGE_DOWN walk away from direction of view