2017年11月10日金曜日

sand3

int a = 20;
int columns =  10;
int rows =  30;
int[] h = new int[columns];

void setup(){
  size(200, 600);  // size should be a * (columns, rows)
  smooth();
   frameRate(10);
  //Draw grids
  stroke(0,200,0);
  for (int j = 0; j < rows; j++){
    for (int i = 0; i < columns; i++){
      rect(i*a,j*a,a,a);
    }
  }

 // display();
}

void draw() {
  drop();
  display();
  generate();
  display();
}

void display() {
  for (int i = 0; i < columns; i++){  // i runs 0 to columns-1  (columns)
    for (int j = 0; j < h[i]; j++){ // j runs 0 to h[i]-1  ( h[i]  )
      fill(0);
      rect((i)*a,(rows-1-j)*a,a,a);
    }
    for (int j = h[i]; j < rows-1; j++){  // j runs h[i] to rows -1  (  rows-h[i])
      fill(255);
      rect(i*a,(rows-1-j)*a,a,a);
    }
  }
}

 void generate() {
    // int next[] = new int[columns];
    for (int i = 0; i < columns-1; i++){
   if (h[i] - h[i+1] > 2){
    h[i] = h[i]-1;
    h[i+1] = h[i+1] +1;
      }
    }
    if (h[columns-1] > 2){
    h[columns-1] = h[columns-1]-1;
    }
  }

void drop(){
  h[0] +=1;
 //if (mousePressed == true){
 //h[int(mouseX/a)] +=1;
 // }
}

void mousePressed(){
  noLoop();
 save("slope2.png");
}

//void mouseReleased() {
  //loop();
 //}

sand5

int a = 20;
int columns =  30;
int rows =  30;
int s = 3;  //critical slope
int[] h = new int[columns];

void setup(){
  size(600, 600);  // size should be a * (columns, rows)
  smooth();
   frameRate(5);
  //Draw grids
  stroke(0,200,0);
  for (int j = 0; j < rows; j++){
    for (int i = 0; i < columns; i++){
      rect(i*a,j*a,a,a);
    }
  }
 // display();
}

void draw() {
  drop();
  display();
  generate();
  display();
  saveFrame();
}

void display() {
  for (int i = 0; i < columns; i++){  // i runs 0 to columns-1  (columns)
    for (int j = 0; j < h[i]; j++){ // j runs 0 to h[i]-1  ( h[i]  )
      fill(0);
      rect((i)*a,(rows-j-1)*a,a,a);   //rows-1-j
    }
    for (int j = h[i]; j < rows-1; j++){  // j runs h[i] to rows -1  (  rows-h[i])
      fill(255);
      rect(i*a,(rows-j-1)*a,a,a);
    }
  }
}

 void generate() {
    // int next[] = new int[columns];
    for (int i = 0; i < columns-1; i++){
      int d = h[i] - h[i+1];
   if (d > s-1){   // edit here
     h[i] = h[i] - d;
   for (int j=0; j < columns-1; j++){
    if ( j > i && j < i+ d +1   )
    h[j] +=1; // drop cells  
  }
   }
    }
    if (h[columns-1] > s-1){    // edit here
    h[columns-1] = 0;
    }
  }

void drop(){
  h[0] +=1;
 //if (mousePressed == true){
 //h[int(mouseX/a)] +=1;
 // }
}

void mousePressed(){
  noLoop();
 //save("img.png");
}

//void mouseReleased() {
  //loop();
 //}

2017年11月4日土曜日

Processing for mac 復旧

No menu items appear with 3.3.6 on ...






このバグが治って,ちゃんと使えるようになっていた。

High Sierra 10.13.1   2017/10/31  のアップデートにて。

2017年10月13日金曜日

Nature of code の使い方

0. Processing をインストールする。  Windows と mac では、普通にクリックしていけばインストールできる。 Linux では、一旦ファイルを解凍してからスクリプトを走らせるとインストールできる。


1. The Nature of Code のサイトに行く

2.  テキストを読みたい場合は、一番下までスクロールして、左「Read Now」に進む。日本語で読みたい場合は、訳書を買う。

3. コードをダウンロード するには、同じく一番下の右側「Download Code」に進む。ダウンロードしたらフォルダを回答する。

4. 目的のファイルを読みこめば実行できる。


【例】

例えば、Exercise_7_01_WolframCA_randomizedrules を実行する場合、processing からこのフォルダの中のどちらかを開く。自動的に中の2つのファイルが開かれる。

CA.pde: CA の クラスを定義しているファイル

Exercise_7_04_WolframCA_scrolling.pde:
こちらが、実際に動作させているファイルである。


【注意】 Nature of code の本に書いてあるコードは、クラスの定義だけなので、これ単体では動かない。




理科課題研究(平成21年3月=2009年3月)

学習指導要領から抜粋。 https://www.mext.go.jp/component/a_menu/education/micro_detail/__icsFiles/afieldfile/2011/03/30/1304427_002.pdf https://www.mext...