I am having trouble displaying data, and must be misunderstanding something about transforms

I want to graph values between xmin,xmax,ymin,ymax

glOrtho should do it.

If I use glOrtho(0,1,0,1)

and plot values within those ranges, it works.

If I want to translate to arbitrary scale, I try:

glTranslatef(-xMin,-yMin,-1);

glScaled(1/deltaX, 1/deltaY, 1);

and get nothing. Thinking I had slipped a gasket, I tried reversing the two, but that’s wrong too. I also tried eliminating the translate and scale, and changing the observer to:

gluOrtho2D(xMin, xMax, yMin, yMax);

So first, any help on this specific problem would be greatly appreciated. Second, in order to debug problems in the future, I’d like a routine that takes a point x,y,z and performs the translation done by the current opengl transform. Is there any way to extract the current state of the matrix, multiply on my x,y,z value, so I can print the results?

thanks,

Dov

```
double xMin = -74;
double yMin = 38;
double xMax = -70;
double yMax = 42;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, 1, 0, 1);
//gluOrtho2D(xMin, xMax, yMin, yMax);
glMatrixMode(GL_MODELVIEW);
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
glLoadIdentity();
glPushMatrix();
glTranslated(0.93,0.05,0);
glScaled(0.05, 0.9, 1);
scale->generateLegend(white, medFont, 19.0, 7, 24.0);
glPopMatrix();
```

#if 0

glColor3ubv(white);

glBegin(GL_QUADS);

glVertex2f(0, 0);

glVertex2f(1, 0);

glVertex2f(1, 1);

glVertex2f(0, 1);

glEnd();

#endif

cout << xMin << “,” << yMin << " " <<

xMax << “,” << yMax << "

";

double deltaX = xMax - xMin;

double deltaY = yMax - yMin;

double centerX = (xMax + xMin)/2;

double centerY = (yMax + yMin)/2;

glTranslatef(-xMin,-yMin,-1);

//glTranslatef(-centerX,-centerY,-1);

glScaled(1/deltaX, 1/deltaY, 1);

glColor3ubv(green);

glBegin(GL_QUADS);

glVertex2f(xMin, yMin);

glVertex2f(xMax, yMin);

glVertex2f(xMax, yMax);

glVertex2f(xMin, yMax);

glEnd();

}

};