2020年12月21日 星期一

week15

1. 使用PVector叫出圖形


2.

PVector user;                                    1.宣告PVector,讓setup()跟draw()用的到

void setup()
{
  
  size(600,600);

  user = new PVector(10,20);            2.只在setup()做一次

}

void draw()
{
  
    background(255);
 
    ellipse(user.x,user.y,20,20);            3.使用PVector的值

}




3.可以拉出線

PVector user;
PVector Y;
void setup()
{
  size(600,400);
  user = new PVector(100,300);
  Y=new PVector(100,300);
}
void draw()
{
  background(255);
  line(user.x,user.y,Y.x,Y.y);
  textSize(40);
  fill(255,0,0); text("Y",Y.x-17,Y.y+20);
  fill(255);ellipse(user.x,user.y,20,20);
}
void mouseDragged()
{
  user.x=mouseX;
  user.y=mouseY;
}
void mouseReleased()
{

}



4.射出彈珠

PVector user;
PVector Y , v = null;     //V是速率
void setup()
{
  size(600,400);
  user = new PVector(100,300);
  Y=new PVector(100,300);
}
void draw()
{
  background(255);
  line(user.x,user.y,Y.x,Y.y);
  textSize(40);
  fill(255,0,0); text("Y",Y.x-17,Y.y+20);
  fill(255);ellipse(user.x,user.y,20,20);
  if(v!=null) user.add(v);
}
void mouseDragged()
{
  user.x=mouseX;
  user.y=mouseY;
}
void mouseReleased()
{
  PVector diff =PVector.sub(Y,user);
  v=diff.div(10);
}



5.射出的彈珠加上重力加速度

PVector user;
PVector Y , v = null;     //V是速率
void setup()
{
  size(600,400);
  user = new PVector(100,300);
  Y=new PVector(100,300);
}
void draw()
{
  background(255);
  if(mousePressed)line(user.x,user.y,Y.x,Y.y);
  textSize(40);
  fill(255,0,0); text("Y",Y.x-17,Y.y+20);
  fill(255);ellipse(user.x,user.y,20,20);
  if(v!=null) 
    {
      user.add(v);
      v.y+=0.98;
    }
}
void mouseDragged()
{
  user.x=mouseX;
  user.y=mouseY;
  v=null;
}
void mouseReleased()
{
  PVector diff =PVector.sub(Y,user);
  v=diff.div(4);
}



6.監視器回傳搖桿值




7.P語言畫出搖桿位置

                                                                arduino:
void setup()
{
   pinMode(2, INPUT_PULLUP);
   Serial.begin(9600);  
}
void loop()
{
  int x=analogRead(A0);  
  int y=analogRead(A1);
  int sw=digitalRead(2);  

  Serial.write(x/4);
  Serial.write(y/4);
  Serial.write(sw);
  delay(20);
}

                                                            processing:

import processing.serial.*;
Serial myPort;
void setup(){
  size(256,256);
  myPort = new Serial(this,"COM3",9600);
}
int ballX=0,ballY=0;
void draw()
{
  background(255);
  if(myPort.available()>=3){
    int x=myPort.read();
    int y=myPort.read();
    int sw=myPort.read();
    ballX=x;
    ballY=y;
  }
  ellipse(ballX,ballY,10,10);
}





沒有留言:

張貼留言