diff --git a/Parameters_June21.md b/Parameters_June21.md index 1659993..a2de1bf 100644 --- a/Parameters_June21.md +++ b/Parameters_June21.md @@ -469,6 +469,9 @@ it may be necessary to modify two constants as follows: #define LUMAMP 0.3 /* amplitude of luminosity variation for scheme C_LUM */ #define HUEMEAN 250.0 /* mean value of hue for color scheme C_HUE */ #define HUEAMP -250.0 /* amplitude of variation of hue for color scheme C_HUE */ +// Maybe wrong version, if colors look wrong try +// #define HUEMEAN 220.0 /* mean value of hue for color scheme C_HUE */ +// #define HUEAMP -240.0 /* amplitude of variation of hue for color scheme C_HUE */ /* Basic math */ diff --git a/Parameters_May21.md b/Parameters_May21.md index 72aafd3..c8598eb 100644 --- a/Parameters_May21.md +++ b/Parameters_May21.md @@ -2190,6 +2190,22 @@ double x, y; } } +void draw_segment(x1, y1, x2, y2, h, s, l) +/* draw line segment (x1,y1)-(x2,y2) in color (h,s,l) */ +double x1, y1, x2, y2, h, s, l; +{ + double rgb[3], pos[2]; + + glBegin(GL_LINE_STRIP); + hsl_to_rgb(h, s, l, rgb); + glColor3f(rgb[0], rgb[1], rgb[2]); + xy_to_pos(x1, y1, pos); + glVertex2d(pos[0], pos[1]); + xy_to_pos(x2, y2, pos); + glVertex2d(pos[0], pos[1]); + glEnd(); +} + void draw_billiard() /* draws the billiard boundary */ { double x0, x, y, phi, r = 0.01, pos[2], pos1[2], alpha, dphi, omega, rgb[3]; @@ -2275,48 +2291,349 @@ void evolve_wave(phi, psi, xy_in) } } } - - - ``` ### 8 May 21 - If life gives you a lemon billiard, use it to make lemonade! ### -**Program:** `xxx.c` +**Program:** `particle_billiard.c` -**Initial condition in function `animation()`:** `xxx` +**Initial condition in function `animation()`:** `init_line_config(0.0, -0.7, 0.0, 0.7, 0.0, configs);` ``` +#define MOVIE 1 /* set to 1 to generate movie */ + +#define WINWIDTH 1280 /* window width */ +#define WINHEIGHT 720 /* window height */ + +#define XMIN -2.0 +#define XMAX 2.0 /* x interval */ +#define YMIN -1.125 +#define YMAX 1.125 /* y interval for 9/16 aspect ratio */ + +/* Choice of the billiard table */ + +#define B_DOMAIN 2 /* choice of domain shape */ + +#define D_RECTANGLE 0 /* rectangular domain */ +#define D_ELLIPSE 1 /* elliptical domain */ +#define D_STADIUM 2 /* stadium-shaped domain */ +#define D_SINAI 3 /* Sinai billiard */ +#define D_DIAMOND 4 /* diamond-shaped billiard */ +#define D_TRIANGLE 5 /* triangular billiard */ +#define D_ANNULUS 7 /* annulus */ +#define D_POLYGON 8 /* polygon */ + +#define LAMBDA -0.8 /* parameter controlling shape of billiard */ +#define MU 0.1 /* second parameter controlling shape of billiard */ +#define FOCI 1 /* set to 1 to draw focal points of ellipse */ +#define NPOLY 8 /* number of sides of polygon */ +#define APOLY 1.0 /* angle by which to turn polygon, in units of Pi/2 */ + +#define RESAMPLE 0 /* set to 1 if particles should be added when dispersion too large */ +#define DEBUG 0 /* draw trajectories, for debugging purposes */ + +#define NPART 10000 /* number of particles */ +#define NPARTMAX 50000 /* maximal number of particles after resampling */ +#define LMAX 0.01 /* minimal segment length triggering resampling */ +#define DMIN 0.02 /* minimal distance to boundary for triggering resampling */ +#define CYCLE 1 /* set to 1 for closed curve (start in all directions) */ + +#define NSTEPS 5000 /* number of frames of movie */ +#define TIME 750 /* time between movie frames, for fluidity of real-time simulation */ +#define DPHI 0.00001 /* integration step */ +#define NVID 750 /* number of iterations between images displayed on screen */ + +#define NCOLORS 10 /* number of colors */ +#define COLORSHIFT 0 /* hue of initial color */ +#define NSEG 100 /* number of segments of boundary */ +#define LENGTH 0.05 /* length of velocity vectors */ + +#define BLACK 1 /* set to 1 for black background */ + +/* Decreasing TIME accelerates the animation and the movie */ +/* For constant speed of movie, TIME*DPHI should be kept constant */ +/* However, increasing DPHI too much deterioriates quality of simulation */ +/* NVID tells how often a picture is drawn in the animation, increase it for faster anim */ +/* For a good quality movie, take for instance TIME = 400, DPHI = 0.00005, NVID = 100 */ + +#define PAUSE 1000 /* number of frames after which to pause */ +#define PSLEEP 1 /* sleep time during pause */ +#define SLEEP1 1 /* initial sleeping time */ +#define SLEEP2 1000 /* final sleeping time */ + +#define PI 3.141592654 +#define DPI 6.283185307 +#define PID 1.570796327 ``` ### 7 May 21 - Diffraction - Young's double-slit experiment with waves ### -**Program:** `xxx.c` +**Program:** `wave_billiard.c` -**Initial condition in function `animation()`:** `xxx` +**Initial condition in function `animation()`:** `init_wave(-1.0, 0.0, phi, psi, xy_in);` ``` +#define MOVIE 1 /* set to 1 to generate movie */ + +/* General geometrical parameters */ + +#define WINWIDTH 1280 /* window width */ +#define WINHEIGHT 720 /* window height */ + +#define NX 640 /* number of grid points on x axis */ +#define NY 360 /* number of grid points on y axis */ + +/* setting NX to WINWIDTH and NY to WINHEIGHT increases resolution */ +/* but will multiply run time by 4 */ + +#define XMIN -2.0 +#define XMAX 2.0 /* x interval */ +#define YMIN -1.125 +#define YMAX 1.125 /* y interval for 9/16 aspect ratio */ + +/* Choice of the billiard table */ + +#define B_DOMAIN 9 /* choice of domain shape */ + +#define D_RECTANGLE 0 /* rectangular domain */ +#define D_ELLIPSE 1 /* elliptical domain */ +#define D_STADIUM 2 /* stadium-shaped domain */ +#define D_SINAI 3 /* Sinai billiard */ +#define D_DIAMOND 4 /* diamond-shaped billiard */ +#define D_TRIANGLE 5 /* triangular billiard */ +#define D_FLAT 6 /* flat interface */ +#define D_ANNULUS 7 /* annulus */ +#define D_POLYGON 8 /* polygon */ +#define D_YOUNG 9 /* Young diffraction slits */ + +#define LAMBDA 0.5 /* parameter controlling the dimensions of domain */ +#define MU 0.04 /* parameter controlling the dimensions of domain */ +#define NPOLY 8 /* number of sides of polygon */ +#define APOLY 1.0 /* angle by which to turn polygon, in units of Pi/2 */ +#define FOCI 1 /* set to 1 to draw focal points of ellipse */ + +/* You can add more billiard tables by adapting the functions */ +/* xy_in_billiard and draw_billiard below */ + +/* Physical patameters of wave equation */ + +#define OMEGA 0.7 /* frequency of periodic excitation */ +#define COURANT 0.01 /* Courant number */ +#define GAMMA 0.0 /* damping factor in wave equation */ +#define KAPPA 0.0 /* "elasticity" term enforcing oscillations */ +/* The Courant number is given by c*DT/DX, where DT is the time step and DX the lattice spacing */ +/* The physical damping coefficient is given by GAMMA/(DT)^2 */ +/* Increasing COURANT speeds up the simulation, but decreases accuracy */ +/* For similar wave forms, COURANT^2*GAMMA should be kept constant */ + +/* For debugging purposes only */ +#define FLOOR 0 /* set to 1 to limit wave amplitude to VMAX */ +#define VMAX 10.0 /* max value of wave amplitude */ + +/* Parameters for length and speed of simulation */ + +#define NSTEPS 4000 //7500 /* number of frames of movie */ +#define NVID 50 /* number of iterations between images displayed on screen */ +#define NSEG 100 /* number of segments of boundary */ + +#define PAUSE 100 /* number of frames after which to pause */ +#define PSLEEP 1 /* sleep time during pause */ +#define SLEEP1 1 /* initial sleeping time */ +#define SLEEP2 1 /* final sleeping time */ + +/* Color schemes */ + +#define COLOR_SCHEME 1 /* choice of color scheme */ + +#define C_LUM 0 /* color scheme modifies luminosity (with slow drift of hue) */ +#define C_HUE 1 /* color scheme modifies hue */ + +#define SCALE 1 /* set to 1 to adjust color scheme to variance of field */ +#define SLOPE 1.0 /* sensitivity of color on wave amplitude */ +#define ATTENUATION 0.0 /* exponential attenuation coefficient of contrast with time */ + +#define COLORHUE 260 /* initial hue of water color for scheme C_LUM */ +#define COLORDRIFT 0.0 /* how much the color hue drifts during the whole simulation */ +#define LUMMEAN 0.5 /* amplitude of luminosity variation for scheme C_LUM */ +#define LUMAMP 0.3 /* amplitude of luminosity variation for scheme C_LUM */ +#define HUEMEAN 220.0 /* mean value of hue for color scheme C_HUE */ +#define HUEAMP 60.0 /* amplitude of variation of hue for color scheme C_HUE */ + +/* Basic math */ + +#define PI 3.141592654 +#define DPI 6.283185307 +#define PID 1.570796327 ``` ### 6 May 21 - Wave fronts in a square: Dr Jekyll shouting from Hyde Park Corner ### -**Program:** `xxx.c` +**Program:** `drop_billiard.c` -**Initial condition in function `animation()`:** `xxx` +**Initial condition in function `animation()`:** `init_drop_config(1.0, 1.0, PI, 3.0*DPI, configs);` ``` +#define MOVIE 0 /* set to 1 to generate movie */ + +#define WINWIDTH 1280 /* window width */ +#define WINHEIGHT 720 /* window height */ + +#define XMIN -2.0 +#define XMAX 2.0 /* x interval */ +#define YMIN -1.125 +#define YMAX 1.125 /* y interval for 9/16 aspect ratio */ + +/* Choice of the billiard table */ + +#define B_DOMAIN 0 /* choice of domain shape */ + +#define D_RECTANGLE 0 /* rectangular domain */ +#define D_ELLIPSE 1 /* elliptical domain */ +#define D_STADIUM 2 /* stadium-shaped domain */ +#define D_SINAI 3 /* Sinai billiard */ +#define D_DIAMOND 4 /* diamond-shaped billiard */ +#define D_TRIANGLE 5 /* triangular billiard */ +#define D_ANNULUS 7 /* annulus */ +#define D_POLYGON 8 /* polygon */ + +#define LAMBDA 1.0 /* parameter controlling shape of billiard */ +#define MU 0.1 /* second parameter controlling shape of billiard */ +#define FOCI 1 /* set to 1 to draw focal points of ellipse */ +#define NPOLY 8 /* number of sides of polygon */ +#define APOLY 1.0 /* angle by which to turn polygon, in units of Pi/2 */ + +#define RESAMPLE 0 /* set to 1 if particles should be added when dispersion too large */ + +#define NPART 20000 /* number of particles */ +#define NPARTMAX 20000 /* maximal number of particles after resampling */ +#define LMAX 0.01 /* minimal segment length triggering resampling */ +#define LPERIODIC 2.0 /* lines longer than this are not drawn (useful for Sinai billiard) */ +#define DMIN 0.02 /* minimal distance to boundary for triggering resampling */ +#define MARGIN 1.0 /* distance above which points of curve are not drawn */ +#define CYCLE 0 /* set to 1 for closed curve (start in all directions) */ + +#define NSTEPS 10000 /* number of frames of movie */ +#define TIME 100 /* time between movie frames, for fluidity of real-time simulation */ +#define DPHI 0.0001 /* integration step */ +#define NVID 100 /* number of iterations between images displayed on screen */ +#define NCOLORS 20 /* number of colors */ +#define COLORSHIFT 90 /* hue of initial color */ +#define NSEG 100 /* number of segments of boundary */ + +#define BLACK 1 /* set to 1 for black background */ + +/* Decreasing TIME accelerates the animation and the movie */ +/* For constant speed of movie, TIME*DPHI should be kept constant */ +/* However, increasing DPHI too much deterioriates quality of simulation */ +/* For a good quality movie, take for instance TIME = 50, DPHI = 0.0002 */ + +#define PAUSE 1000 /* number of frames after which to pause */ +#define PSLEEP 1 /* sleep time during pause */ +#define SLEEP1 1 /* initial sleeping time */ +#define SLEEP2 100 /* final sleeping time */ + +#define PI 3.141592654 +#define DPI 6.283185307 +#define PID 1.570796327 ``` ### 5 May 21 - Winter is coming ### -**Program:** `xxx.c` +**Program:** `wave_billiard.c` -**Initial condition in function `animation()`:** `xxx` +**Initial condition in function `animation()`:** `init_wave(0.0, 0.0, phi, psi, xy_in);` ``` +#define MOVIE 1 /* set to 1 to generate movie */ + +/* General geometrical parameters */ + +#define WINWIDTH 1280 /* window width */ +#define WINHEIGHT 720 /* window height */ + +#define NX 640 /* number of grid points on x axis */ +#define NY 360 /* number of grid points on y axis */ + +/* setting NX to WINWIDTH and NY to WINHEIGHT increases resolution */ +/* but will multiply run time by 4 */ + +#define XMIN -2.0 +#define XMAX 2.0 /* x interval */ +#define YMIN -1.125 +#define YMAX 1.125 /* y interval for 9/16 aspect ratio */ + +/* Choice of the billiard table */ + +#define B_DOMAIN 8 /* choice of domain shape */ + +#define D_RECTANGLE 0 /* rectangular domain */ +#define D_ELLIPSE 1 /* elliptical domain */ +#define D_STADIUM 2 /* stadium-shaped domain */ +#define D_SINAI 3 /* Sinai billiard */ +#define D_DIAMOND 4 /* diamond-shaped billiard */ +#define D_TRIANGLE 5 /* triangular billiard */ +#define D_FLAT 6 /* flat interface */ +#define D_ANNULUS 7 /* annulus */ +#define D_POLYGON 8 /* polygon */ + +#define LAMBDA 1.0 /* parameter controlling the dimensions of domain */ +#define NPOLY 6 /* number of sides of polygon */ +#define FOCI 1 /* set to 1 to draw focal points of ellipse */ + +/* You can add more billiard tables by adapting the functions */ +/* xy_in_billiard and draw_billiard below */ + +/* Physical patameters of wave equation */ + +#define COURANT 0.01 /* Courant number */ +#define GAMMA 0.0 /* damping factor in wave equation */ +#define KAPPA 5.0e-7 /* "elasticity" term enforcing oscillations */ +/* The Courant number is given by c*DT/DX, where DT is the time step and DX the lattice spacing */ +/* The physical damping coefficient is given by GAMMA/(DT)^2 */ +/* Increasing COURANT speeds up the simulation, but decreases accuracy */ +/* For similar wave forms, COURANT^2*GAMMA should be kept constant */ + +/* For debugging purposes only */ +#define FLOOR 0 /* set to 1 to limit wave amplitude to VMAX */ +#define VMAX 10.0 /* max value of wave amplitude */ + +/* Parameters for length and speed of simulation */ + +#define NSTEPS 4575 //7500 /* number of frames of movie */ +#define NVID 50 /* number of iterations between images displayed on screen */ +#define NSEG 100 /* number of segments of boundary */ + +#define PAUSE 1000 /* number of frames after which to pause */ +#define PSLEEP 1 /* sleep time during pause */ +#define SLEEP1 1 /* initial sleeping time */ +#define SLEEP2 1 /* final sleeping time */ + +/* Color schemes */ + +#define COLOR_SCHEME 1 /* choice of color scheme */ + +#define C_LUM 0 /* color scheme modifies luminosity (with slow drift of hue) */ +#define C_HUE 1 /* color scheme modifies hue */ + +#define SCALE 1 /* set to 1 to adjust color scheme to variance of field */ +#define SLOPE 1.0 /* sensitivity of color on wave amplitude */ +#define ATTENUATION 0.0 /* exponential attenuation coefficient of contrast with time */ + +#define COLORHUE 260 /* initial hue of water color for scheme C_LUM */ +#define COLORDRIFT 0.0 /* how much the color hue drifts during the whole simulation */ +#define LUMMEAN 0.5 /* amplitude of luminosity variation for scheme C_LUM */ +#define LUMAMP 0.3 /* amplitude of luminosity variation for scheme C_LUM */ +#define HUEMEAN 235.0 /* mean value of hue for color scheme C_HUE */ +#define HUEAMP 60.0 /* amplitude of variation of hue for color scheme C_HUE */ + +/* Basic math */ + +#define PI 3.141592654 +#define DPI 6.283185307 +#define PID 1.570796327 ``` @@ -2332,31 +2649,261 @@ void evolve_wave(phi, psi, xy_in) ### 3 May 21 - The Revelation of Sonmi 451 ### -**Program:** `xxx.c` +**Program:** `wave_billiard.c` -**Initial condition in function `animation()`:** `xxx` +**Initial condition in function `animation()`:** `init_wave(0.0, 0.6, phi, psi, xy_in);` ``` +#define MOVIE 0 /* set to 1 to generate movie */ + +/* General geometrical parameters */ + +#define WINWIDTH 1280 /* window width */ +#define WINHEIGHT 720 /* window height */ + +#define NX 640 /* number of grid points on x axis */ +#define NY 360 /* number of grid points on y axis */ + +/* setting NX to WINWIDTH and NY to WINHEIGHT increases resolution */ +/* but will multiply run time by 4 */ + +#define XMIN -2.0 +#define XMAX 2.0 /* x interval */ +#define YMIN -1.125 +#define YMAX 1.125 /* y interval for 9/16 aspect ratio */ + +/* Choice of the billiard table */ + +#define B_DOMAIN 7 /* choice of domain shape */ + +#define D_RECTANGLE 0 /* rectangular domain */ +#define D_ELLIPSE 1 /* elliptical domain */ +#define D_STADIUM 2 /* stadium-shaped domain */ +#define D_SINAI 3 /* Sinai billiard */ +#define D_DIAMOND 4 /* diamond-shaped billiard */ +#define D_TRIANGLE 5 /* triangular billiard */ +#define D_FLAT 6 /* flat interface */ +#define D_ANNULUS 7 /* annulus */ +#define D_POLYGON 8 /* polygon */ + +#define LAMBDA 0.5 /* parameter controlling the dimensions of domain */ +#define NPOLY 6 /* number of sides of polygon */ +#define FOCI 1 /* set to 1 to draw focal points of ellipse */ + +/* You can add more billiard tables by adapting the functions */ +/* xy_in_billiard and draw_billiard below */ + +/* Physical patameters of wave equation */ + +#define COURANT 0.01 /* Courant number */ +#define GAMMA 0.0 /* damping factor in wave equation */ +#define KAPPA 1.0e-8 /* "elasticity" term enforcing oscillations */ +/* The Courant number is given by c*DT/DX, where DT is the time step and DX the lattice spacing */ +/* The physical damping coefficient is given by GAMMA/(DT)^2 */ +/* Increasing COURANT speeds up the simulation, but decreases accuracy */ +/* For similar wave forms, COURANT^2*GAMMA should be kept constant */ + +/* For debugging purposes only */ +#define FLOOR 0 /* set to 1 to limit wave amplitude to VMAX */ +#define VMAX 10.0 /* max value of wave amplitude */ + +/* Parameters for length and speed of simulation */ + +#define NSTEPS 7900 //7500 /* number of frames of movie */ +#define NVID 75 /* number of iterations between images displayed on screen */ +#define NSEG 100 /* number of segments of boundary */ + +#define PAUSE 1000 /* number of frames after which to pause */ +#define PSLEEP 1 /* sleep time during pause */ +#define SLEEP1 1 /* initial sleeping time */ +#define SLEEP2 1 /* final sleeping time */ + +/* Color schemes */ + +#define COLOR_SCHEME 1 /* choice of color scheme */ + +#define C_LUM 0 /* color scheme modifies luminosity (with slow drift of hue) */ +#define C_HUE 1 /* color scheme modifies hue */ + +#define SCALE 1 /* set to 1 to adjust color scheme to variance of field */ +#define SLOPE 1.0 /* sensitivity of color on wave amplitude */ +#define ATTENUATION 0.0 /* exponential attenuation coefficient of contrast with time */ + +#define COLORHUE 260 /* initial hue of water color for scheme C_LUM */ +#define COLORDRIFT 0.0 /* how much the color hue drifts during the whole simulation */ +#define LUMMEAN 0.5 /* amplitude of luminosity variation for scheme C_LUM */ +#define LUMAMP 0.3 /* amplitude of luminosity variation for scheme C_LUM */ +#define HUEMEAN 310.0 /* mean value of hue for color scheme C_HUE */ +#define HUEAMP 110.0 /* amplitude of variation of hue for color scheme C_HUE */ + +/* Basic math */ + +#define PI 3.141592654 +#define DPI 6.283185307 +#define PID 1.570796327 ``` ### 2 May 21 - Triangulating the circle ### -**Program:** `xxx.c` +**Program:** `drop_billiard.c` (old version) -**Initial condition in function `animation()`:** `xxx` +**Initial condition in function `animation()`:** `init_drop_config(0.0, -0.5, 0.0, DPI, configs);` ``` +#define WINWIDTH 1280 /* window width */ +#define WINHEIGHT 720 /* window height */ + +/* Choice of the billiard table */ + +#define B_DOMAIN 5 /* choice of domain shape */ + +#define D_RECTANGLE 0 /* rectangular domain */ +#define D_ELLIPSE 1 /* elliptical domain */ +#define D_STADIUM 2 /* stadium-shaped domain */ +#define D_SINAI 3 /* Sinai billiard */ +#define D_DIAMOND 4 /* diamond-shaped billiard */ +#define D_TRIANGLE 5 /* triangular billiard */ + + +#define LAMBDA 1.73205080756888 /* parameter controlling shape of billiard */ +#define FOCI 1 /* set to 1 to draw focal points of ellipse */ + +#define MOVIE 1 /* set to 1 to generate movie */ +#define RESAMPLE 0 /* set to 1 if particles should be added when dispersion too large */ + +#define XMIN -2.0 +#define XMAX 2.0 /* x interval */ +#define YMIN -1.125 +#define YMAX 1.125 /* y interval for 9/16 aspect ratio */ + +#define NPART 10000 /* number of particles */ +#define NPARTMAX 20000 /* maximal number of particles after resampling */ +#define LMAX 0.01 /* minimal segment length triggering resampling */ +#define DMIN 0.02 /* minimal distance to boundary for triggering resampling */ +#define MARGIN 1.0 /* distance above which points of curve are not drawn */ +#define CYCLE 0 /* set to 1 for closed curve (start in all directions) */ + +#define NSTEPS 5000 /* number of frames of movie */ +#define TIME 75 /* time between movie frames, for fluidity of real-time simulation */ +#define DPHI 0.0001 /* integration step */ +#define NVID 50 /* number of iterations between images displayed on screen */ + /* TIME shoud be a multiple of NVID */ +#define NCOLORS 10 /* number of colors */ +#define COLORSHIFT 200 /* hue of initial color */ +#define NSEG 100 /* number of segments of boundary */ + +#define BLACK 1 /* set to 1 for black background */ + + +/* Decreasing TIME accelerates the animation and the movie */ +/* For constant speed of movie, TIME*DPHI should be kept constant */ +/* However, increasing DPHI too much deterioriates quality of simulation */ +/* For a good quality movie, take for instance TIME = 50, DPHI = 0.0002 */ + +#define PAUSE 1000 /* number of frames after which to pause */ +#define PSLEEP 1 /* sleep time during pause */ +#define SLEEP1 1 /* initial sleeping time */ +#define SLEEP2 100 /* final sleeping time */ + +#define PI 3.141592654 +#define DPI 6.283185307 +#define PID 1.570796327 ``` ### 1 May 21 - Snell's law of refraction ### -**Program:** `xxx.c` +**Program:** `wave_billiard.c` (old version, should be remade by using option `TWOSPEED 1`) -**Initial condition in function `animation()`:** `xxx` - -``` +**Initial condition in function `animation()`:** `init_wave(-1.0, 0.5, phi, psi, xy_in);` + +``` +#define MOVIE 0 /* set to 1 to generate movie */ + +/* General geometrical parameters */ + +#define WINWIDTH 1280 /* window width */ +#define WINHEIGHT 720 /* window height */ + +#define NX 640 /* number of grid points on x axis */ +#define NY 360 /* number of grid points on y axis */ + +/* setting NX to WINWIDTH and NY to WINHEIGHT increases resolution */ +/* but will multiply run time by 4 */ + +#define XMIN -2.0 +#define XMAX 2.0 /* x interval */ +#define YMIN -1.125 +#define YMAX 1.125 /* y interval for 9/16 aspect ratio */ + +/* Choice of the billiard table */ + +#define B_DOMAIN 6 /* choice of domain shape */ + +#define D_RECTANGLE 0 /* rectangular domain */ +#define D_ELLIPSE 1 /* elliptical domain */ +#define D_STADIUM 2 /* stadium-shaped domain */ +#define D_SINAI 3 /* Sinai billiard */ +#define D_DIAMOND 4 /* diamond-shaped billiard */ +#define D_TRIANGLE 5 /* triangular billiard */ +#define D_FLAT 6 /* flat interface */ + +#define LAMBDA 1.0 /* parameter controlling the dimensions of domain */ +#define FOCI 1 /* set to 1 to draw focal points of ellipse */ + +/* You can add more billiard tables by adapting the functions */ +/* xy_in_billiard and draw_billiard below */ + +/* Physical patameters of wave equation */ + +#define COURANT 0.01 /* Courant number */ +#define COURANT1 0.005 /* Courant number in second domain */ +#define GAMMA 0.0 /* damping factor in wave equation */ +#define KAPPA 5.0e-9 /* "elasticity" term enforcing oscillations */ +/* The Courant number is given by c*DT/DX, where DT is the time step and DX the lattice spacing */ +/* The physical damping coefficient is given by GAMMA/(DT)^2 */ +/* Increasing COURANT speeds up the simulation, but decreases accuracy */ +/* For similar wave forms, COURANT^2*GAMMA should be kept constant */ + +/* For debugging purposes only */ +#define FLOOR 0 /* set to 1 to limit wave amplitude to VMAX */ +#define VMAX 10.0 /* max value of wave amplitude */ + +/* Parameters for length and speed of simulation */ + +#define NSTEPS 8000 //7500 /* number of frames of movie */ +#define NVID 75 /* number of iterations between images displayed on screen */ +#define NSEG 100 /* number of segments of boundary */ + +#define PAUSE 100 /* number of frames after which to pause */ +#define PSLEEP 1 /* sleep time during pause */ +#define SLEEP1 1 /* initial sleeping time */ +#define SLEEP2 1 /* final sleeping time */ + +/* Color schemes */ + +#define COLOR_SCHEME 0 /* choice of color scheme */ + +#define C_LUM 0 /* color scheme modifies luminosity (with slow drift of hue) */ +#define C_HUE 1 /* color scheme modifies hue */ + +#define SCALE 1 /* set to 1 to adjust color scheme to variance of field */ +#define SLOPE 1.0 /* sensitivity of color on wave amplitude */ +#define ATTENUATION 0.0 /* exponential attenuation coefficient of contrast with time */ + +#define COLORHUE 260 /* initial hue of water color for scheme C_LUM */ +#define COLORDRIFT 0.0 /* how much the color hue drifts during the whole simulation */ +#define LUMMEAN 0.5 /* amplitude of luminosity variation for scheme C_LUM */ +#define LUMAMP 0.3 /* amplitude of luminosity variation for scheme C_LUM */ +#define HUEMEAN 330.0 /* mean value of hue for color scheme C_HUE */ +#define HUEAMP 90.0 /* amplitude of variation of hue for color scheme C_HUE */ + +/* Basic math */ + +#define PI 3.141592654 +#define DPI 6.283185307 +#define PID 1.570796327 ```