|

// Bifurcation Diagram
// Tom Dixon - Period 3
#include "glaux.h"
static void Init() {
glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
}
static void Reshape(int w, int h) {
glViewport(0, 0, GLint(w), GLint(h));
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 4.0, 0.0, 1.0, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
}
static void key_esc() { auxQuit(); }
void showdiagram() { // Draws bifurcation diagram
double k, x;
glColor3f(1.0, 1.0, 0.0);
glBegin(GL_POINTS);
for(k=0; k<4; k+=0.001) { // Step through k
x=0.33;
for(int i=0; i<15; i++) { // Iterate function, plotting each value
x=k*x*(1-x);
glVertex3f(k, x, 0.0);
}
}
glEnd();
}
static void display() {
glClear(GL_COLOR_BUFFER_BIT);
showdiagram();
glFlush();
auxSwapBuffers();
}
void main() {
auxInitDisplayMode(AUX_RGBA);
auxInitPosition(50, 50, 800, 400);
if (auxInitWindow("Logistic Growth Function")==GL_FALSE) auxQuit();
Init();
auxExposeFunc(Reshape);
auxReshapeFunc(Reshape);
auxMainLoop(display);
}
|