]> hackdaworld.org Git - physik/nlsop.git/commitdiff
-
authorhackbard <hackbard>
Wed, 14 May 2003 23:41:38 +0000 (23:41 +0000)
committerhackbard <hackbard>
Wed, 14 May 2003 23:41:38 +0000 (23:41 +0000)
dfbapi.c
nlsop.c
nlsop.h
random.c

index dfb3ae845e9abf626b136d8882f5ea10a5702082..138f7e44bfaa7bdcf983ba50081af874652a3f5a 100644 (file)
--- a/dfbapi.c
+++ b/dfbapi.c
@@ -232,7 +232,7 @@ int d3_lattice_draw(d3_lattice *d3_l,int x,int y,int z,int arg_c,char **arg_v)
    d3_l->p_surface->SetColor(d3_l->p_surface,r,g,b,a);
    d3_l->p_surface->DrawRectangle(d3_l->p_surface,
                                   x_c*d3_l->fakt_x+X_GAP,
-                                  y_c*d3_l->fakt_x+d3_l->info_x,
+                                  y_c*d3_l->fakt_y+d3_l->info_y,
                                   d3_l->fakt_x,d3_l->fakt_y);
   }
  }
@@ -272,6 +272,9 @@ int d3_lattice_draw(d3_lattice *d3_l,int x,int y,int z,int arg_c,char **arg_v)
   }
  }
 
+ /* now we flip all to surface */
+ d3_l->p_surface->Flip(d3_l->p_surface,NULL,0);
+
  return 1;
 }
 
diff --git a/nlsop.c b/nlsop.c
index 736003adb64d2dfc48c0b4179eab6c3f9c4c9cb8..1d2e6d6320dce6ae2f11b32e95b74dd9b35f9ea2 100644 (file)
--- a/nlsop.c
+++ b/nlsop.c
@@ -99,7 +99,8 @@ int process_cell(d3_lattice *d3_l,u32 x,u32 y,u32 z,int r,double a,double b,int
 
 int distrib_c(d3_lattice *d3_l,int t_c,double a,double b)
 {
- int i,j,k,total,area,sum;
+ int i,j,k,total,area;
+ double sum;
  int temp,left;
  int *area_h;
  u32 x,y,z;
@@ -108,7 +109,7 @@ int distrib_c(d3_lattice *d3_l,int t_c,double a,double b)
  area_h=(int *)malloc(d3_l->max_z*sizeof(int));
 
  total=0;
- sum=0;
+ sum=b*d3_l->max_z+a*d3_l->max_z*(d3_l->max_z+1)/2;
  for(i=0;i<d3_l->max_z;i++)
  {
   area_h[i]=0;
@@ -116,15 +117,11 @@ int distrib_c(d3_lattice *d3_l,int t_c,double a,double b)
   {
    if(!(*(d3_l->status+(i*area)+j)&AMORPH))
    {
-    sum+=(i+1)*a+b;
     area_h[i]+=1;
    }
   }
- }
- for(i=0;i<d3_l->max_z;i++)
- {
-  temp=((i+1)*a+b)*t_c/(sum+area_h[i]);
-  if(temp>1)
+  temp=(int)((i+1)*a+b)*t_c/(sum*area_h[i]);
+  if(temp)
   {
    for(j=0;j<area;j++)
    {
@@ -140,7 +137,7 @@ int distrib_c(d3_lattice *d3_l,int t_c,double a,double b)
   {
    x=get_rand(d3_l->max_x);
    y=get_rand(d3_l->max_y);
-   if(!(*(d3_l->status+(i*area)+x+y*d3_l->max_x)&AMORPH))
+   if(!(*(d3_l->status+(i*area)+j)&AMORPH))
    {
     *(d3_l->extra+(i*area)+x+y*d3_l->max_x)+=1;
     total+=1;
@@ -158,9 +155,9 @@ int distrib_c(d3_lattice *d3_l,int t_c,double a,double b)
   {
    *(d3_l->extra+x+y*d3_l->max_x+z*d3_l->max_x*d3_l->max_y)+=1;
    left-=1;
-   total+=1;
   }
  }
+ free(area_h);
 
  return 1;
 }
@@ -251,7 +248,7 @@ int main(int argc,char **argv)
  char conc_txt[MAX_TXT];
  char steps_txt[MAX_TXT];
  char cc_txt[MAX_TXT];
- char **arg_v;
+ char *arg_v[MAX_ARGV];
  d3_lattice d3_l;
 
  max_x=X;
@@ -382,6 +379,7 @@ int main(int argc,char **argv)
 
  if(!strcmp(l_file,""))
  {
+  i=0;
   while((i<steps) && (quit==0) && (escape==0))
   {
    x_c=get_rand(d3_l.max_x);
@@ -391,9 +389,9 @@ int main(int argc,char **argv)
    process_cell(&d3_l,x_c,y_c,z_c,range,a_ap,b_ap,&cc);
    if(i%refresh==0)
    {
-    sprintf(x_txt,"x: %d",x);
-    sprintf(y_txt,"y: %d",y);
-    sprintf(z_txt,"z: %d",z);
+    sprintf(x_txt,"x: %d",x+1);
+    sprintf(y_txt,"y: %d",y+1);
+    sprintf(z_txt,"z: %d",z+1);
     sprintf(status_txt,"status: %c",(*(d3_l.status+x+y*d3_l.max_x+z*d3_l.max_x*d3_l.max_y)&AMORPH)?'a':'c');
     sprintf(conc_txt,"conc: %d",*(d3_l.extra+x+y*d3_l.max_x+z*d3_l.max_x*d3_l.max_y));
     sprintf(steps_txt,"step: %d",i);
diff --git a/nlsop.h b/nlsop.h
index 54c3bbff2c0a9ea678dbdde9a5118466b98c87b1..c2baf3e9f3f9e14c5d1b493b07aff5ff783a04bb 100644 (file)
--- a/nlsop.h
+++ b/nlsop.h
@@ -33,5 +33,6 @@ typedef unsigned int u32;
 
 #define MAX_CHARS 64
 #define MAX_TXT 32
+#define MAX_ARGV 16
 
 #endif /* NLSOP_H */
index 66943173da8d8bcc55b8ef190b57bd18df7efa59..4d96243786f5aab2fec4d74b42fea35d02736e1f 100644 (file)
--- a/random.c
+++ b/random.c
@@ -63,7 +63,7 @@ u32 get_rand(u32 max)
   }
   c_ptr=b_ptr;
  }
+
  return((u32)(*(c_ptr++)*(max*1.0/((long long unsigned int)URAND_MAX+1))));
 }