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; iif ( 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>
2017年4月7日金曜日
地球の自転に対するアリストテレス or ニュートン的描像
天文学の授業で「地動説に対する反論」を説明する為にProcessingで作成したアニメーション。こういう教材を簡単に作れるので、本当はどこかの授業で学生さんにProcessingを触ってもらいたいところ。Processing.jsで動かしたアリストテレス or ニュートン的な描像はそれぞれ、こちらとこちら。