package jp.eclipse; import java.lang.Math; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; import android.widget.TextView; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; public class MainActivity extends Activity implements Runnable{ final static int DELAY=1; GumowskiView gV; Handler hn; double mu, a,b,dm; Paint p=new Paint(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); requestWindowFeature(Window.FEATURE_NO_TITLE); LinearLayout LL=new LinearLayout(this); setContentView(LL); gV=new GumowskiView(this); LL.addView(gV); p.setColor(Color.BLUE); p.setStyle(Paint.Style.FILL); hn =new Handler(); hn.postDelayed(this,DELAY); } @Override public void run() { // TODO 自動生成されたメソッド・スタブ mu +=dm; if(mu>(1-dm)) onDestroy(); else{ gV.invalidate(); hn.postDelayed(this, DELAY); } } public void onDestroy(){ super.onDestroy(); hn.removeCallbacks(this); } class GumowskiView extends View{ public GumowskiView(Context cn){ super(cn); a= 0.008F; b=0.05F; dm=0.001F; mu=-1+dm; } protected void onDraw(Canvas cs){ super.onDraw(cs); double X,Y,XN,G; float XP,YP, mX; mX=(float) (Math.floor(mu*1000+0.5)/1000); cs.drawText(" GumowskiとMiraの写像 μ="+ mX, 10, 10, p); X=0.1F; Y=0; G=mu*X+2*(1-mu)*X*X/(1+X*X); for(int i=0;i<10000;i++){ XP=(float)(250-X*5); YP=(float)(200-Y*5); cs.drawRect(XP, YP,XP+1,YP+1,p); XN=X; X=Y+a*(1-b*Y*Y)*Y+G; G=mu*X+2*(1-mu)*X*X/(1+X*X); Y=-XN+G; } } } }