// // Computergraphik II // Prof. Dr. Juergen Doellner // Wintersemester 2001/02 // // Rahmenprogramm zu Aufgabenzettel 3 // #include "cginterpolation.h" #include "vector.h" #include #include CGInterpolation::CGInterpolation() { run_ = false; zoom_ = 0.15; culling_ = false; max_ = 100; // maximale Laenge des Arrays counter_ = 0; // Anzahl der Vertices list_ = new Vector[max_]; // Array mit Vertices ref_ = Vector(8.0, -1.0, 1.0); // Referenzpunkt loadGeometry(); // Import der Geometriedaten } CGInterpolation::~CGInterpolation() { } void CGInterpolation::drawScene() { glPushMatrix(); glScaled(zoom_, zoom_, zoom_); static GLuint cache = 0; if (cache == 0) { cache = glGenLists(1); // Display-Liste glNewList(cache, GL_COMPILE_AND_EXECUTE); // Display-Liste glColor3f(0.5, 0.4, 0.4); drawObject(ref_); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glTranslatef(ref_[0],ref_[1],ref_[2]); glColor3f(0.9, 0.1, 0.2); glutSolidSphere(0.1,16,16); glPopMatrix(); glEndList(); // Display-Liste } else { glCallList(cache); // Display-Liste } glPopMatrix(); } void CGInterpolation::drawObject(const Vector& ref) { // draw geometry // normieren Sie Ihre Abstandsfunktion double dMaxDistance = 0; double dMinDistance = 999999999999; for(unsigned int i=0; i dMaxDistance) dMaxDistance = dDistance; if (dDistance < dMinDistance) dMinDistance = dDistance; } // Zeichnen Sie die Dreiecke mit Farbwerten an den Vertices. glBegin(GL_TRIANGLES); for(i=0; i> buf; while (s.good()) { Vector v0; Vector v1; Vector v2; s >> v0 >> v1 >> v2; if(counter_+3 >= max_) { max_*=2; Vector* newList = new Vector[max_]; for(unsigned int i=0; i