Programación General > C/C++
curva de koch en c++
luchojimenez:
funcion inciar curva de koch algoritmo
Iniciar_Koch( Punto_Inicial, Longitud, Número_Iteraciones )
1. Declarar: Cursor como un punto y un ángulo
2. Inicializar Cursor:
3. Cursor.punto ← Punto_Inicial
4. Cursor.ángulo ← 0
5. Dibujar_Koch( Cursor, Longitud, Número_Iteraciones )
6. Terminar
--- Código: ---
void koch()
{
float x ,y,lon,tet ;
int n_i;
x=100;
y=200;
tet=0;
dibujar_koch(x,y,lon,n_i,ang);
}
--- Fin del código ---
luchojimenez:
bueno creo logre encontrar una en la web un codigo que dibuja el copo de koch me sera muy util para empezar a dibujar otro tipos de figuras co0n funciones recursivas
luchojimenez:
--- Código: ---/*El siguiente programa ha sido probado y testeado bajo MS-DOS*/
/*Programado en Borland C++ 5.0*/
/*Grafica el Fractal de Von Koch en forma recursiva.*/
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
#include <math.h>
#define PI 3.14159
/************************Funciones*****************/
/*Dibuja una linea de longitud r y angulo angulo*/
void draw(double r,double angulo);
/*Simplemente arma el denominado copo de Koch */
void copoKoch(int orden, double r);
/*Grafica la curva de Von Koch en forma recursiva como es de esperarse*/
void koch(int orden,double r,double angulo);
/*Inicia el modo grafico*/
int iniModoGrafico(int *X_max, int *Y_max);
/****************************************************/
int
main(void)
{
int Xm,Ym;
float lado; /*Longitud de cada lado de */
int orden; /*Indica el orden del fractal.Orden 0 es el caso Base*/
printf("Ingrese el orden: ");
scanf("%d",&orden);
printf("Ingrese el lado: ");
scanf("%f",&lado);
iniModoGrafico(&Xm,&Ym);
moveto( ((Xm+1)/2)-(Xm+1)/4,((Ym+1) /2)+(Ym+1)/4);
copoKoch(orden,lado);
getch();
closegraph();
return 0;
}
/**************************/
void copoKoch(int orden, double r)
{
koch(orden,r,PI/3);
koch(orden,r,-PI/3);
koch(orden,r,PI);
}
/**************************/
void draw(double r,double angulo)
{
linerel(r*cos(angulo), -r*sin (angulo));
}
/*********************************/
int iniModoGrafico(int *X_max, int *Y_max)
{
int controlador = DETECT, modo, numerror;
initgraph(&controlador, &modo, "C:\\BC5\\BGI");
numerror = graphresult(); /*Si queres podes usar numerror*/
if (numerror != grOk) /* grOk vale 0 si no hay error */
return numerror;
*X_max = getmaxx();
*Y_max = getmaxy();
return 0;
}
/**************************/
void koch(int orden,double r,double angulo)
{
if(orden==0)
draw(r,angulo);
else
{
koch(orden-1,r/3,angulo);
koch(orden-1,r/3,angulo+(PI/3));
koch(orden-1,r/3,angulo-(PI/3));
koch(orden-1,r/3,angulo);
}
}
/**************************/
--- Fin del código ---
Navegación
[*] Página Anterior
Ir a la versión completa