What is a spiral ?
A curve on a plane that winds around a fixed center point at a continuously increasing or decreasing distance from the point.
How to draw it using OpenGL?
Prerequisites : Running a basic OpenGL code.
Making spiral in OpenGL is quite simple because we have the mathematical equations for both the x and y coordinates of the Spiral.
In this example we will go with the logarithmic and the archimedean spiral.
Snapshot of completed code :
Coordinates for logarithmic spiral
Code-Snippet in C++ (OpenGL)
Here a and b are the constants of the equation. You can call the function inside you display in you OpenGL code. Download the complete code from this link.
A curve on a plane that winds around a fixed center point at a continuously increasing or decreasing distance from the point.
A two-dimensional spiral may be described most easily using polar coordinates, where the radius r is a monotonic continuous function of angle θ. The circle would be regarded as a degenerate case (the function not being strictly monotonic, but rather constant).
Some of the more important sorts of two-dimensional spirals include:
- The Archimedean spiral:
- The Euler spiral, Cornu spiral or clothoid
- Fermat's spiral:

- The hyperbolic spiral:

- The lituus:

- The logarithmic spiral:
; approximations of this are found in nature - The Fibonacci spiral and golden spiral: special cases of the logarithmic spiral
Prerequisites : Running a basic OpenGL code.
Making spiral in OpenGL is quite simple because we have the mathematical equations for both the x and y coordinates of the Spiral.
In this example we will go with the logarithmic and the archimedean spiral.
Snapshot of completed code :
Coordinates for logarithmic spiral
Here a and b are the constants of the equation. You can call the function inside you display in you OpenGL code. Download the complete code from this link.
void DrawSpiral(double a,double b)
{
double x, y;
theta = 0;
x = a*pow(2.718281,(double)b*theta)*cos(theta);
y = a*pow(2.718281,(double)b*theta)*sin(theta);
for (int i = 0; i < 1000; i++)
{
glBegin(GL_LINES);
theta = 0.025*i;
glVertex2f((GLfloat)x, (GLfloat)y);
glVertex2f(a*pow(2.718281, (double)b*theta)*cos(theta), a*pow(2.718281, (double)b*theta)*sin(theta));
//glColor3f(r, g, b);
x = a*pow(2.718281, (double)b*theta)*cos(theta);
y = a*pow(2.718281, (double)b*theta)*sin(theta);
glEnd();
}
}



how can i call this function in main open gl
ReplyDelete