ikabod00

02-11-2007, 11:21 AM

I am unsure as to how to create a regularly fluctuated polygon in OpenGL. I need to create just a basic one for an assignment for a class. It doesn't need to be anything fancy. Some help would be much appreciated, thanks. :)

dorbie

02-11-2007, 07:58 PM

http://nehe.gamedev.net/lesson.asp?index=01

ikabod00

02-12-2007, 07:08 AM

I have looked around NeHe before. I was unable to find anything about regularly fluctuated polygons. Perhaps I missed it, if its there, could you like me directly. Thanks

plasmonster

02-12-2007, 07:12 AM

What's a fluctuated polygon?

Once you define it precisely, it'll be a beam reach for the homeland :-)

(Note that no one here is going to do your homework for you.)

ikabod00

02-12-2007, 07:41 AM

Oh, I dont' want anyone to do my homework. I am just looking for some help in drawing. I just need to draw one, to show problems with rendering it. A regularly fluctuate polygon is kinda like this:

_/\/\/\/\/\/\_

that would be a side view of one

songho

02-13-2007, 09:38 AM

You may use a periodic function (sine or triangle) to compute amplitute (height) of a vertex.

The equation to compute height look like this;

output = amp * FUNC( freq * ( time - phase ) ) + offset

where amp is amplitude of wave

FUNC() is one of wave functions (sine, triangle, saw...)

freq is frequency of wave

phase is the horizontal shift

offset is vertical shiftHere is an example using above equation. To make it simple, let's use amp=1, freq=1, offset=0, and time =0. Now, the equation is just FUNC(-phase), which means you need calculate only phase.

Let's say 10 points are laid in a row, for instance, 0, 1, 2, 3, ... 8, 9. And I want to make a triangular wave with these 10 points

* * *

********** => * * * * *

* *The wavelength of the above triangle wave is 4 units, therefore, you can get the phase (horizontal shift) by dividing wavelength;

0/4, 1/4, 2/4, 3/4, ... 8/4, 9/4.

These are input arguments of FUNC(), And here is the body of FUNC() look like;

// factor the phase, so the value is fit between 0~1.

float factor = phase - (int)phase;

// describe only triangle wave here

if(factor < 0.25f) // 0 ~ 0.25

output = 4 * factor;

else if(timeFact < 0.75f) // 0.25 ~ 0.75

output = 2 - (4 * factor);

else // 0.75 ~ 1

output = 4 * factor - 4;With above FUNC(), you can the final height values;

OUTPUT: 0, 1, 0, -1, 0, 1, 0, -1, 0, 1

I am not sure my description is enough to understand, so feel free to ask further questions.

ikabod00

02-13-2007, 10:04 AM

Nope, that was easy enough to understand. I will look into that, and see if I can make that work. Thanks alot. :)

Powered by vBulletin® Version 4.2.2 Copyright © 2014 vBulletin Solutions, Inc. All rights reserved.