天文学の授業で「地動説に対する反論」を説明する為にProcessingで作成したアニメーション。こういう教材を簡単に作れるので、本当はどこかの授業で学生さんにProcessingを触ってもらいたいところ。Processing.jsで動かしたアリストテレス or ニュートン的な描像はそれぞれ、
こちらと
こちら。
float glevel=0.8;
float x;
float xb, yb, vy=0, vxw;
float headsize;
int t=0;
int ball_start=150;
float g;
float[] xbo=new float[500];
float[] ybo=new float[500];
void setup() {
  x=100;
  size(1100, 700);
  colorMode(RGB, 256);
  background(255, 255, 255);
  headsize=width*0.03;
  frameRate(50);
  xb=0;
  yb=height*glevel*0.15;
  g=0.05;
  vxw=width*0.002;
  for (int i=0; i<500 i="" p="">    xbo[i]=0;
    ybo[i]=0;
  }
}
void draw() {
  background(255, 255, 255);
  //smooth() ;
  //World
  stroke(0, 0, 0);
  strokeWeight(1);
  line(0, height*glevel, width, height*glevel);
  noStroke();
  //point
  fill(255, 0, 0);
  ellipse(x, height*glevel, width*0.01, width*0.01);
  //man
  fill(0, 0, 0);
  //head
  ellipse(x+width*0.1, height*glevel*0.71, headsize, headsize);
  //body
  rect(x+width*(0.1-0.025), height*glevel*0.75, width*(0.05), height*0.1);
  //leg
  rect(x+width*(0.1-0.025), height*glevel*0.89, width*(0.02), height*0.085);
  rect(x+width*(0.1+0.005), height*glevel*0.89, width*(0.02), height*0.085);
  //arm
  rect(x+width*(0.1-0.045), height*glevel*0.75, width*(0.015), height*0.08);
  rect(x+width*(0.1+0.03), height*glevel*0.75, width*(0.015), height*0.08);
  //Bar
  strokeWeight(10);
  stroke(183, 65, 14);
  line(x+width*0.2, height*glevel, x+width*0.2, height*glevel*0.1);
  line(x, height*glevel*0.1, x+width*0.2, height*glevel*0.1);
  //Ball Shadow
  for (int i=1; i    if ( i%20==0) {
      stroke(150);
      strokeWeight(1);
      noFill();
      ellipse(xbo[i], ybo[i], width*0.03, width*0.03);
    }
  }
  //Ball
  xbo[t]=xb;
  ybo[t]=yb;
  if (t>ball_start & yb<=height*glevel) {
    vy=vy+g;
    yb=yb+vy;
    //下の1文を入れるか入れないかが両者の差。
    xb=x;
  } else {
    xb=x;
  }
  if (yb>=height*glevel) {
    vy=0;
    yb=height*glevel;
    xb=xb+vxw;
  }
  noStroke();
  fill(0, 0, 255);
  ellipse(xb, yb, width*0.03, width*0.03);
  x=x+vxw;
  print(t, "\n");
  if (t<499 p="">    t++;
  }
}
499>500>