RghtHndSd

03-31-2009, 06:43 PM

Not entirely certain if this is the right place. I'm giving a seminar presentation on Morse Theory, and part of this involves an example with a function (actually, set of functions) which acts on the surface of a Torus. I have a function f(x,y,z,t) which when given a value on the torus and a time t will define what color I want to set that point.

The problem is that the behavior of this function on a small scale is rather crucial. Two "sections" of the torus coming together at a corner can't look like they are doing so in a more parabolic fashion, and vice-versa. So far I've been trying to increase my polygon count, but I'm at the limits of my laptop and it's still not really as nice as I want it.

Right now I'm defining the torus with GL_QUAD_STRIP and using display lists. So for each time t, I need a different list because at each different point in time the function f will result in coloring the torus a bit differently. 100 or so such lists will be sufficient.

An example of such a function is simply:

f(x,y,z,t) gives red if z < k(t), blue otherwise, for some function k(t).

There are a few more functions like this, each a bit more complicated, but that's the main idea. So is this the right way to be going about this? Or is there something more efficient I can do?

What I'm going to attempt next is to write an adaptive algorithm so that my polygon count increases at certain points on the torus.

The problem is that the behavior of this function on a small scale is rather crucial. Two "sections" of the torus coming together at a corner can't look like they are doing so in a more parabolic fashion, and vice-versa. So far I've been trying to increase my polygon count, but I'm at the limits of my laptop and it's still not really as nice as I want it.

Right now I'm defining the torus with GL_QUAD_STRIP and using display lists. So for each time t, I need a different list because at each different point in time the function f will result in coloring the torus a bit differently. 100 or so such lists will be sufficient.

An example of such a function is simply:

f(x,y,z,t) gives red if z < k(t), blue otherwise, for some function k(t).

There are a few more functions like this, each a bit more complicated, but that's the main idea. So is this the right way to be going about this? Or is there something more efficient I can do?

What I'm going to attempt next is to write an adaptive algorithm so that my polygon count increases at certain points on the torus.