2020年6月19日 星期五

可以拉的線











下面兩張圖是這個程式可以讓被拉的線放開滑鼠後會彈回來。

被拉的時候



放開彈回去的樣子
void setup()
{
  size(300,300);
}
float x=100,y=150;
void draw(){
  background(#002966);
  stroke(#b7efff);
  line(x,y,200,150);
  
  fill(#b7efff);
  ellipse(x,y,13,13);
  ellipse(200,150,13,13);
  if(!mousePressed){
    float dx=x-200;
    float dy=y-150;
    float len=sqrt(dx*dx+dy*dy);
    x-=dx*(len-100)/len;
    y-=dy*(len-100)/len;
  }
}
void mouseDragged(){
  x=mouseX; y=mouseY;
}

彈回來會減速
void setup()
{
  size(300,300);
}
float x=100,y=150;
void draw(){
  background(#002966);
  stroke(#b7efff);
  line(x,y,200,150);
  
  fill(#b7efff);
  ellipse(x,y,13,13);
  ellipse(200,150,13,13);
  if(!mousePressed){
    float dx=x-200;
    float dy=y-150;
    float len=sqrt(dx*dx+dy*dy);
    x-=dx*(len-100)/len*0.1;
    y-=dy*(len-100)/len*0.1;
  }
}
void mouseDragged(){
  x=mouseX; y=mouseY;
}

新的東西~~~

這個圈圈會跟著滑鼠移動。
void setup(){
  size(400,300);
}
float x=100,y=150;
void draw(){
  background(#002966);
  ellipse(x,y,50,50);
  
  float dx=x-mouseX;
  float dy=y-mouseY;
  float len=sqrt(dx*dx+dy*dy);
  x-=dx*0.1;
  y-=dy*0.1;
}

讓圈圈跟滑鼠距離相隔100。
void setup(){
  size(400,300);
}
float x=100,y=150;
void draw(){
  background(#002966);
  ellipse(x,y,50,50);
  
  float dx=x-mouseX;
  float dy=y-mouseY;
  float len=sqrt(dx*dx+dy*dy);
  x-=dx*(len-100)/len*0.1;
  y-=dy*(len-100)/len*0.1;
}

void setup()
{
  size(300,300);
}
float x=100,y=150,vx,vy;
void draw(){
  background(#002966);
  stroke(#b7efff);
  line(x,y,200,150);
  
  fill(#b7efff);
  ellipse(x,y,13,13);
   ellipse(200,150,13,13);
  if(!mousePressed){
    float dx=x-200;
    float dy=y-150;
    float len=sqrt(dx*dx+dy*dy);
    float f=(len-100);
    dx/=len;
    dy/=len;
    vx-=f*dx*0.0001;
    vy-=f*dy*0.0001;
    x+=vx;
    y+=vy;
    //x-=dx*(len-100)/len*0.1;
    //y-=dy*(len-100)/len*0.1;
  }
}
void mouseDragged(){
  x=mouseX; y=mouseY;
}

沒有留言:

張貼留言