2017年11月6日 星期一

Week 8 - 文郁上課誌

                  2017互動技術

2017 / 11 / 6

桌上曲棍球

















void setup(){
  size(700,800);
}
float ballX=250, ballY=450, ballVX=0,ballVY=0;
float ball2X=350, ball2Y=50;
float ball3X=350, ball3Y=748;
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;
    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));
    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);
   
     ballVX=v0.x;  ballVY=v0.y;
   
    if(ball3X<50) {ball3X=50; ballVX =-ballVX;}
    if(ball3X>width-50) {ball3X=width-50; ballVX=-ballVX;}
    if(ball3Y<50) {ball3Y=50; ballVY =-ballVY;}
    if(ball3Y>width-50) {ball3Y=width-50; ballVY=-ballVY;}
  }
  background(255);
  ballX+=ballVX; ballY+=ballVY;
  fill(#AEE8F2); ellipse(ballX, ballY, 100,100);
  fill(#74B73F); ellipse(ball2X,ball2Y, 100,100);
  fill(#74B73F); ellipse(ball3X,ball3Y, 100,100);
}

void mouseDragged(){
  ball3X=mouseX; ball3Y=mouseY;
  ballVX=ballVY=0;
}
void mouseReleased(){
  ballVX = (350-mouseX)/ 10.0;
  ballVY = (400-mouseY)/ 10.0;
}

沒有留言:

張貼留言