/*************************************************************************************************************************************/
/* */
/* C O U R B E D E H I L B E R T B I D I M E N S I O N N E L L E : */
/* */
/* */
/* Author of '$xtc/CHilbert_2D.11$c' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20120415171624). */
/* */
/*************************************************************************************************************************************/
#include "INCLUDES.01.I"
double cos();
double sin();
double sqrt();
double x,y;
double rho,theta;
int coordonnee_curviligne=0;
int PRINT_regles=0;
int PRINT_coordonnees=1;
#define PRINT(chaine) \
{ \
if (PRINT_regles) \
{ \
printf("%s",chaine); \
} \
else \
{ \
} \
}
#define PLUS \
{ \
PRINT("+"); \
theta = theta+PI_SUR_2; \
}
#define MOINS \
{ \
PRINT("-"); \
theta = theta-PI_SUR_2; \
}
#define FORWARD \
{ \
PRINT("F"); \
\
if (PRINT_coordonnees) \
{ \
printf("x=%f y=%f\n",x,y); \
} \
\
else \
{ \
} \
x = x + (rho*cos(theta)); \
y = y + (rho*sin(theta)); \
coordonnee_curviligne++; \
\
if (PRINT_coordonnees) \
{ \
printf("x=%f y=%f\n",x,y); \
} \
else \
{ \
} \
}
#define RIGHT \
{ \
PRINT("R"); \
genere_R(n-1); \
}
#define LEFT \
{ \
PRINT("L"); \
genere_L(n-1); \
}
int genere_L(n)
int n;
{
if (n > 0)
{
PLUS;
RIGHT;
FORWARD;
MOINS;
LEFT;
FORWARD;
LEFT;
MOINS;
FORWARD;
RIGHT;
PLUS;
}
else
{
}
return(0);
}
int genere_R(n)
int n;
{
if (n > 0)
{
MOINS;
LEFT;
FORWARD;
PLUS;
RIGHT;
FORWARD;
RIGHT;
PLUS;
FORWARD;
LEFT;
MOINS;
}
else
{
}
return(0);
}
main()
{
int n=5;
rho=(1.0/2.0)/pow(2.0,(double)(n-2));
x=rho/2.0;
y=rho/2.0;
theta=0;
LEFT;
PRINT("\n");
}