From cdf203b95bccd0e7e01e83800ad8435f4a2da8c3 Mon Sep 17 00:00:00 2001 From: hackbard Date: Thu, 27 Mar 2003 15:37:38 +0000 Subject: [PATCH] began propability calc of amorph<->cryst --- Makefile | 2 +- defines.h | 4 ++++ display.c | 23 +++++++++++---------- display.h | 14 +++++++++++++ main.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++++------- random.c | 3 ++- random.h | 9 ++++++++ 7 files changed, 96 insertions(+), 20 deletions(-) create mode 100644 display.h create mode 100644 random.h diff --git a/Makefile b/Makefile index 8949339..e2b0539 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ OBJS = random.o display.o OBJS2 = morpheus morpheus: $(OBJS) - $(CC) -o $@ $(OBJS) $(LIBS) main.c + $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS) main.c all: morpheus clean: diff --git a/defines.h b/defines.h index aac6562..8305711 100644 --- a/defines.h +++ b/defines.h @@ -16,11 +16,15 @@ #define DEFAULT_SLOPE_NEL 1 #define DEFAULT_START_NEL 0 +#define DEFAULT_A_P_RANGE 2 +#define DEFAULT_A_P_FAKTOR 1 + #define DEFAULT_STEPS 5000 /* program defines, dont touch ;) */ #define URAND_MAX 0xffffffff +#define URAND_2_MAX 0xffff typedef unsigned int u32; typedef long long unsigned int u64; diff --git a/display.c b/display.c index 4ef9546..7619be2 100644 --- a/display.c +++ b/display.c @@ -8,14 +8,6 @@ #include "defines.h" -#ifdef USE_DFB_API -// static IDirectFB *dfb=NULL; -// static IDirectFBSurface *primary_surface=NULL; -// static IDirectFBFont *font=NULL; -// static int screen_width=0; -// static int screen_height=0; -#endif - int display_init(int x,int y,int z,display *display,void *cell,int *argc,char **argv) { #ifdef USE_DFB_API @@ -97,7 +89,10 @@ int display_draw(display *display,int x,int y,int z) for(z_c=0;z_cmax_z;z_c++) { dfb_choose_color((u32 *)(display->cell_p+x_c+y_c*(display->max_x-1)+z_c*(display->max_x-1)*(display->max_y-1)),&r,&g,&b); - display->primary_surface->SetColor(display->primary_surface,r,g,b,a); + if(x_c==x && z_c==z) + display->primary_surface->SetColor(display->primary_surface,0xff,0xff,0,0); + else + display->primary_surface->SetColor(display->primary_surface,r,g,b,a); display->primary_surface->DrawRectangle(display->primary_surface,x_c*display_faktor_x+DISPLAY_X_FREE/3,z_c*display_faktor_y+DISPLAY_Y_FREE/3,display_faktor_x,display_faktor_y); } } @@ -108,7 +103,10 @@ int display_draw(display *display,int x,int y,int z) for(z_c=0;z_cmax_z;z_c++) { dfb_choose_color((u32 *)(display->cell_p+x_c+y_c*(display->max_x-1)+z_c*(display->max_x-1)*(display->max_y-1)),&r,&g,&b); - display->primary_surface->SetColor(display->primary_surface,r,g,b,a); + if(y_c==y && z_c==z) + display->primary_surface->SetColor(display->primary_surface,0xff,0xff,0,0); + else + display->primary_surface->SetColor(display->primary_surface,r,g,b,a); display->primary_surface->DrawRectangle(display->primary_surface,(y_c+display->max_x)*display_faktor_x+2*DISPLAY_X_FREE/3,z_c*display_faktor_y+DISPLAY_Y_FREE/3,display_faktor_x,display_faktor_y); } } @@ -119,7 +117,10 @@ int display_draw(display *display,int x,int y,int z) for(y_c=0;y_cmax_y;y_c++) { dfb_choose_color((u32 *)(display->cell_p+x_c+y_c*(display->max_x-1)+z_c*(display->max_x-1)*(display->max_y-1)),&r,&g,&b); - display->primary_surface->SetColor(display->primary_surface,r,g,b,a); + if(x_c==x && y_c==y) + display->primary_surface->SetColor(display->primary_surface,0xff,0xff,0,0); + else + display->primary_surface->SetColor(display->primary_surface,r,g,b,a); display->primary_surface->DrawRectangle(display->primary_surface,x_c*display_faktor_x+DISPLAY_X_FREE/3,(y_c+display->max_z)*display_faktor_y+2*DISPLAY_Y_FREE/3,display_faktor_x,display_faktor_y); } } diff --git a/display.h b/display.h new file mode 100644 index 0000000..4beb565 --- /dev/null +++ b/display.h @@ -0,0 +1,14 @@ +/* + * display.h + * + */ + +/* function prototypes */ + +int display_init(int x,int y,int z,display *display,void *cell,int *argc,char ** +argv); +int display_release(display *display); +int dfb_choose_color(u32 *cell_p,unsigned char *r,unsigned char *g,unsigned char + *b); +int display_draw(display *display,int x,int y,int z); + diff --git a/main.c b/main.c index 2b88640..d508e7d 100644 --- a/main.c +++ b/main.c @@ -13,12 +13,18 @@ #include #include +#include #include #include #include +/* important defines */ #include "defines.h" +/* function prototypes */ +#include "random.h" +#include "display.h" + /* global variables */ u32 sum_z_cells; int random_fd; /* /dev/urandom file descriptor */ @@ -37,27 +43,57 @@ int usage() puts("-Y \t display area intercept point y (default # y cells / 2)"); puts("-Z \t display area intercept point z (default # z cells / 2)"); puts("-d \t refresh every loops (default 100)"); + puts("-r \t pressure range from amorphous SiCx (default 2)"); + puts("-f \t faktor for pressure from amorphous SiCx (default 1)"); return -23; } int make_amorph(u32 *cell) { - *cell=*cell|AMORPH; + *cell|=AMORPH; return 23; } int make_cryst(u32 *cell) { - *cell=*cell&(~AMORPH); + *cell&=~AMORPH; return 23; } /* look at cell ... */ -int process_cell(u32 *cell) +int process_cell(void *cell_p,u32 x,u32 y,u32 z,u32 x_max,u32 y_max,u32 z_max,int range,int faktor) { - /* tag it ... testing! */ - make_amorph(cell); - + /* is amorph? */ + u32 *cell; + int i,j,k; + float count; + cell=(u32 *)(cell_p+x+y*(x_max-1)+z*(x_max-1)*(y_max-1)); + count=0; + for(i=-range;i<=range;i++) + for(j=-range;j<=range;j++) + for(k=-range;k<=range;k++) + if(!(i==0 && j==0 && k==0) && (x>=range && x=range && y=range && z