/*************************************************************************************************************************************/
/* */
/* S U R J E C T I O N F R A C T A L E D E [ 0 , 1 ] D A N S [ 0 , 1 ] x [ 0 , 1 ] D E P E A N O : */
/* */
/* */
/* Author of '$xtc/Peano_SurjectionFractale.23$vv$c' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20220414142936). */
/* */
/*************************************************************************************************************************************/
#include "INCLUDES.01.I"
#define PROFONDEUR \
3
#define TMIN \
0.0
#define TMAX \
1.0
double f0x(t)
double t;
{
return(t);
}
double f0y(t)
double t;
{
return(t);
}
double f1x(t,f0x,f0y)
double t;
double f0x(),f0y();
{
double valeur=t;
/* Definition d'une parabole de sommet {1/2,1} et passant par les points {0,0} et {1,0}... */
return(valeur);
}
double f1y(t,f0x,f0y)
double t;
double f0x(),f0y();
{
double valeur=4*t*(1-t);
/* Definition d'une parabole de sommet {1/2,1} et passant par les points {0,0} et {1,0}... */
return(valeur);
}
#define __Gen \
1
#define NoGen \
0
#define NInter \
4
#define t0 \
Tmin+(0*((Tmax-Tmin)/NInter))
#define t1 \
Tmin+(1*((Tmax-Tmin)/NInter))
#define t2 \
Tmin+(2*((Tmax-Tmin)/NInter))
#define t3 \
Tmin+(3*((Tmax-Tmin)/NInter))
#define t4 \
Tmin+(4*((Tmax-Tmin)/NInter))
double Tmin=TMIN,Tmax=TMAX;
double ax0=+1;
double tx0=0;
double bx0=0;
double ay0=+1;
double ty0=0;
double by0=0;
double ax1=+1;
double tx1=-1;
double bx1=0;
double ay1=+1;
double ty1=-1;
double by1=+1;
double ax2=+1;
double tx2=-2;
double bx2=+1;
double ay2=+1;
double ty2=-2;
double by2=+1;
double ax3=-1;
double tx3=-3;
double bx3=+2;
double ay3=-1;
double ty3=-3;
double by3=+1;
#define GENERE_fnx_fny(nom,F2x,F2y,F1x,F1y,GenX,GenY) \
double nom(t,F2x,F2y) \
double t; \
double F2x(),F2y(); \
{ \
double valeur; \
\
if ((t >= t0) && (t <= t1)) \
{ \
valeur=LIZ2(GenX \
,AXPB(ax0,F2y(AXPB(NInter,t,tx0),&F1x,&F1y),bx0) \
,GenY \
,AXPB(ay0,F2x(AXPB(NInter,t,ty0),&F1x,&F1y),by0) \
); \
} \
else \
{ \
if ((t >= t1 ) && (t <= t2)) \
{ \
valeur=LIZ2(GenX \
,AXPB(ax1,F2x(AXPB(NInter,t,tx1),&F1x,&F1y),bx1) \
,GenY \
,AXPB(ay1,F2y(AXPB(NInter,t,ty1),&F1x,&F1y),by1) \
); \
} \
else \
{ \
if ((t >= t2 ) && (t <= t3)) \
{ \
valeur=LIZ2(GenX \
,AXPB(ax2,F2x(AXPB(NInter,t,tx2),&F1x,&F1y),bx2) \
,GenY \
,AXPB(ay2,F2y(AXPB(NInter,t,ty2),&F1x,&F1y),by2) \
); \
} \
else \
{ \
valeur=LIZ2(GenX \
,AXPB(ax3,F2y(AXPB(NInter,t,tx3),&F1x,&F1y),bx3) \
,GenY \
,AXPB(ay3,F2x(AXPB(NInter,t,ty3),&F1x,&F1y),by3) \
); \
} \
} \
} \
return(valeur/2); \
}
GENERE_fnx_fny(f2x,f1x,f1y,f0x,f0y,__Gen,NoGen);
GENERE_fnx_fny(f2y,f1x,f1y,f0x,f0y,NoGen,__Gen);
GENERE_fnx_fny(f3x,f2x,f2y,f1x,f1y,__Gen,NoGen);
GENERE_fnx_fny(f3y,f2x,f2y,f1x,f1y,NoGen,__Gen);
GENERE_fnx_fny(f4x,f3x,f3y,f2x,f2y,__Gen,NoGen);
GENERE_fnx_fny(f4y,f3x,f3y,f2x,f2y,NoGen,__Gen);
GENERE_fnx_fny(f5x,f4x,f4y,f3x,f3y,__Gen,NoGen);
GENERE_fnx_fny(f5y,f4x,f4y,f3x,f3y,NoGen,__Gen);
void Surjection()
{
double t;
for (t=Tmin ; t<=Tmax ; t=t+0.002)
{
printf("t=%f x=%f y=%f\n",t,f1x(t,&f0x,&f0y),f1y(t,&f0x,&f0y));
}
for (t=Tmin ; t<=Tmax ; t=t+0.001)
{
printf("t=%f x=%f y=%f\n",t,f2x(t,&f1x,&f1y),f2y(t,&f1x,&f1y));
}
for (t=Tmin ; t<=Tmax ; t=t+0.0005)
{
printf("t=%f x=%f y=%f\n",t,f3x(t,&f2x,&f2y),f3y(t,&f2x,&f2y));
}
for (t=Tmin ; t<=Tmax ; t=t+0.00025)
{
printf("t=%f x=%f y=%f\n",t,f4x(t,&f3x,&f3y),f4y(t,&f3x,&f3y));
}
for (t=Tmin ; t<=Tmax ; t=t+0.000125)
{
printf("t=%f x=%f y=%f\n",t,f5x(t,&f4x,&f4y),f5y(t,&f4x,&f4y));
}
}
void main()
{
Surjection();
}