/*************************************************************************************************************************************/ /* */ /* 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(); }