2018年1月11日 星期四

40147027S-Week10

以processing與手機互動

  1. 將 processing 右上角的 java改成app mode
  2. 下載 android模式
彈力球範例:

  1.  void setup() {
    size(500, 500);
    }
    float ballX=250, ballY=450, ballVX=1.3, ballVY=-10;
    float ball2X=250, ball2Y=50;
    void draw() {
    if ( dist(ballX, ballY, ball2X, ball2Y)<100 ) {
    float cx=(ballX+ball2X)/2, cy=(ballY+ball2Y)/2;
    float nx=ballX-ball2X, ny=ballY-ball2Y;
    line(ballX,ballY, ball2X,ball2Y);
    PVector N=new PVector(nx, ny);
    N.normalize();
    PVector v0=new PVector(ballVX, ballVY);
    float len= -N.dot(v0);
    v0.add(N.mult(len*2));
    line(cx,cy, cx+10*ballVX, cy+10*ballVY);
    line(cx,cy, cx+20*v0.x, cy+20*v0.y);
    ellipse(cx, cy, 10, 10);
    stroke(0);
    line(ballX, ballY, ball2X, ball2Y);
    stroke(255, 128, 0);
    line(cx, cy, cx+5*ballVX, cy+5*ballVY);
    stroke(255, 128, 0);
    line(cx, cy, cx+5*v0.x, cy+5*v0.y);
    stroke(255, 0, 0);
    line(cx, cy, cx+N.x, cy+N.y);
    //return;
    ballVX=v0.x;
    ballVY=v0.y;
    }
    background(255);
    ballX+=ballVX;
    ballY+=ballVY;
    if(ballX<50 || ballX>500-50) ballVX = -ballVX;
    if(ballY<50 || ballY>500-50) ballVY = -ballVY;
    ellipse(ballX, ballY, 100, 100);
    ellipse(ball2X, ball2Y, 100, 100);
    }
    void mouseDragged(){
    ball2X=mouseX; ball2Y=mouseY;
    }

沒有留言:

張貼留言