Dibujar una espiral es sencillo, solo tienes que echarle un poco de imaginación!
Mira, te explico: Vamos a imaginarnos un círculo, vale, pues ahora imagínate que a medida que se va generando el círculo vamos aumentando el eje perpendicular al área de dicho círculo. Al final obtendrás la espiral que deseas!
Aunque tu deberías intentar diseñar tu propia función, te voy a dar una; aunque debería mejorar mi función o diseñar la suya propia!
#define PI 3.14159265359f
void GenerarEspiral(float Radio, float Longitud, float Espiras, int Ciclos, int Espira[]) {
int Contador = 0;
float MaxRango = 2.0f * Espiras * PI;
for(float i = 0; i <= MaxRango; i += MaxRango / (float)Ciclos) {
Espira[Contador] = Radio * cos(i);
Espira[Contador] = Radio * sin(i);
Espira[Contador] = Longitud * i / MaxRango;
}
}
Nota que no puedes introducir la dirección de la espiral. Si quieres añadirle dirección, eres libre de hacerlo :D
El código funciona de una manera muy simple. No te voy a explicar como funciona, sino como debes hacerlo funcionar (el como funciona puede estudiarlo usted :D). Lo único que tienes que hacer es introducir los datos de una espira común (Radio de la espira, longitud de la misma y el número de espiras que tendrá). El último parámetro es un arreglo que contendrá los vectores de cada parte de la espira.
La espira estará orientada así (por defecto): Plano XY: Se verá un círculo, como si de un cilindro se tratase. Planos XZ e YZ, se verá como un muelle, supongo que se podrá imaginar por qué
Si no entiendes algo del código, o si no funciona (porque no lo he probado), dímero y te lo explicaré con todo detalle.