2020年6月19日 星期五

17

虎克定律
void setup()
{
  size(300,300);
}
void draw()
{
  background(#002966);
  stroke(#b7efff);                                                      →點的顏色
  line(100,150,200,150);
  
  fill(#b7efff);
  ellipse(100,150,13,13);
  ellipse(200,150,13,13);
}

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);
}
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;
    y-=dy*(len-100)/len;           
  }                                                                                               讓線條回彈
}
void mouseDragged()
{
  x=mouseX;y=mouseY;
}

→按著拉長


→放開


len概念



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;                                                             →回彈變慢//每次只走1/10
    y-=dy*(len-100)/len*0.1;                                                             →回彈變慢//每次只走1/10
  }
}
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;                                                                 →target:mouse
    float dy=y-mouseY;                                                                 →target:mouse
    float len=sqrt(dx*dx+dy*dy);
    x-=dx*0.1;
    y-=dy*0.1;
  }




//會保持距離
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;                                                     →保持100距離
    y-=dy*(len-100)/len*0.1;                                                     →保持100距離
  }



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);
    dx/=len;
    dy/=len;
    vx-= f*dx*0.0001;                                                             →不同彈性係數,彈力越強動越快
    vy-= f*dy*0.0001;                                                             →//0.1快 0.0001慢
    x+=vx;
    y+=vy;
  }
}
void mouseDragged()
{
  x=mouseX;y=mouseY;
}


→課堂作業




沒有留言:

張貼留言