顯示具有 00163151_郭徑岳 標籤的文章。 顯示所有文章
顯示具有 00163151_郭徑岳 標籤的文章。 顯示所有文章

2015年6月29日 星期一

期末作品DEMO











本次完成的期末作品為懷舊小遊戲,接元寶
偵測頭部位置,出現籃子,令籃子接住所以隨機掉下來的元寶
每次接到元寶都會加分



1. 操作方式:一開始先將手張開讓程式偵測你的骨架,出現籃子之後就可以移動你的身軀來移動畫面上的籃子接元寶
2. Youtube連結: https://www.youtube.com/watch?v=tHROAzu7cYo
3. 說明:本來接元寶有設定會出現聲音,但是不知道哪個環節出了問題,導致它只會在第一次的播放中出現聲音
import SimpleOpenNI.*;
import ddf.minim.*;
Minim minim1;
AudioPlayer player1;
Minim minim2;
AudioPlayer player2;
SimpleOpenNI openni;
PImage imgYunBao;
PImage basket;
int score=0;
class Fruit {
  float X, Y, VX, VY;
  boolean dead = false;
  Fruit(float x, float y, float vx, float vy) {
    X=x;
    Y=y;
    VX=vx;
    VY=vy;
    dead=false;
  }
  
  void draw() {    
   
    if(dead){ score++; player2.play();dead=false;stop();}
    else{image(imgYunBao,X,Y,50,25);}
    textSize(80);
    text("Score is "+ score,120,120);
    textSize(80);
  
    
    
  }
  void update() {
    X+=VX; 
    Y+=VY; 
    VY+=0.5;
    
    if (X<-100||X>1024||Y<-100||Y>730) {
      X=random(1024);
      Y=random(200);
      VX=random(30)-15;
      VY=-random(30);
      dead=false;
    }
    if(dead==false&&dist(pos1.x+200,718,X,Y)<50||dist(X,Y,mouseX,mouseY)<50 ) {
    dead=true;
    }
  }
}

Fruit fruit[]= new Fruit[20];
PVector pos1=new PVector(-5000,0,0),pos=new PVector(-5000,0,0);
void setup() {
  
  minim1 = new Minim(this);
  player1 = minim1.loadFile("mainjoe.mp3");
  player1.play();
  minim2 = new Minim(this);
  player2 = minim2.loadFile("ding.mp3");
  
  imgYunBao=loadImage("YunBao.png");
  basket=loadImage("01.png");
  size(1024, 768);
  openni = new SimpleOpenNI(this);
  openni.enableDepth();
  openni.enableUser();
  openni.enableRGB();
  for (int i=0; i<5; i++) 
    fruit[i] = new Fruit(random(640), random(240), random(10)-15, -random(10));
}  
  void draw() {
    openni.update();
    image(openni.rgbImage(),0,0,1024,768);
    image(openni.userImage(),0,618,200,150);
    
    for (int i=0; i<5; i++) {
      fruit[i].draw();
      fruit[i].update();
    }
    
    int [] userList=openni.getUsers();
    for(int i=0;i<userList.length;i++){
      if(openni.isTrackingSkeleton(userList[i])){
        
        openni.getJointPositionSkeleton(userList[i],SimpleOpenNI.SKEL_HEAD,pos);
        openni.convertRealWorldToProjective(pos,pos1);
        //println(pos1);
       
        image(basket,pos1.x+200,658,100,100);
      }
  }
  }
  
  void onNewUser(SimpleOpenNI curContext, int userId)
{
  println("onNewUser - userId: " + userId);
  println("\tstart tracking skeleton");
  
  curContext.startTrackingSkeleton(userId);
}

void mouseMoved(){
  strokeWeight(30); stroke(255,0,0); line(mouseX,mouseY,pmouseX,pmouseY);
  strokeWeight(1); stroke(0);
}

void stop()
{
player2.close();
minim2.stop();

}

2015年6月15日 星期一

week17

做出會旋轉的不倒翁,也製作好了人的向前移動方式
卡在不知道如何將不倒翁的每一次都回到最一開始
所以可能要放棄這個計畫
import saito.objloader.*;
PImage imgRoom;
float angle=0,dX=800,dY=600;
float rotY; 
OBJModel model ;

void setup(){
  size(800,600,P3D);
  imgRoom=loadImage("room.jpg");
    model = new OBJModel(this, "NoDaoWon.obj", TRIANGLES);
    model.enableDebug();

    model.scale(20);
    model.translateToCenter();
}
void draw(){
  background(255);
  pushMatrix();
    imageMode(CENTER);
    image(imgRoom,400,300,dX,dY);
    
    translate(width/2, height/2, 0);
    rotY=millis()/500.0;
    rotateY(rotY);
    model.draw();
    
  popMatrix();
}
void keyPressed(){
  if(keyCode==LEFT||keyCode==RIGHT){dX*=1.1;dY*=1.1;}
}

2015年6月1日 星期一

week15

PImage imgRoom;
float angle=0,dX=800,dY=600;
void setup(){
  size(800,600,P3D);
  imgRoom=loadImage("room.jpg");
}
void draw(){
  background(255);
  pushMatrix();
    imageMode(CENTER);
    image(imgRoom,400,300,dX,dY);
  popMatrix();
}
void keyPressed(){
  if(keyCode==LEFT||keyCode==RIGHT){dX*=1.1;dY*=1.1;}
 

}

2015年5月25日 星期一

week14

測試FAAST使用


利用FAAST帶出利用左手和右手上下高度的不同 來對滑鼠座左右移動



做一個P語言程式,滑鼠往左移動或往右移動可帶動方塊旋轉
float angle=0;
void setup(){
  size(800,600,P3D);
}
void draw(){
  background(255);
  pushMatrix();
    translate(width/2,height/2);
    rotateZ(angle/180.0);
    rect(0,0,100,100);
   popMatrix();
}
void mouseMoved(){
  int x=mouseX-pmouseX;
  int y=mouseY-pmouseY;
  if(x>0)angle+=1;
  if(x<0)angle-=1;
}
void keyPressed(){
  if(key=='l')angle++;
  if(key=='r')angle--;
}



先利用FAAAAAAST去設定往前傾10度可以按下上的按鍵,跟往後傾10度會按下下的按鍵
然後再進去P語言程式內去設定按上加速和按下減速
以及設定圖片到程式裏面
以下為程式碼,VEL為速度
float angle=0,dX=0,dY=0,vel=1;
PImage imgCar;
void setup(){
  size(800,600,P3D);
  imgCar=loadImage("car.png");
}
void draw(){
  background(255);
  for(int i=-1;i<=8;i++){
    for(int j=-1;j<=6;j++){
      rect(i*100+dX%100,j*100+dY%100,100,100);
    }
  }
  pushMatrix();
    translate(width/2,height/2);
    rotateZ(angle);
    image(imgCar,-100,-50,200,100);
   popMatrix();
   dX-=vel*cos(angle);
   dY-=vel*sin(angle);
}
void mouseMoved(){
  int x=mouseX-pmouseX;
  int y=mouseY-pmouseY;
  if(x>0)angle+=1/40.0;
  if(x<0)angle-=1/40.0;
}
void keyPressed(){
  if(key=='l')angle++;
  if(key=='r')angle--;
  if(keyCode==UP)vel*=1.1;
  if(keyCode==DOWN)vel*=0.9;
  println("vel:"+vel);
}

2015年5月18日 星期一

week13

跳出很多水果球
import SimpleOpenNI.*;
SimpleOpenNI openni;
class Fruit {
  float X, Y, VX, VY;
  Fruit(float x, float y, float vx, float vy) {
    X=x;
    Y=y;
    VX=vx;
    VY=vy;
  }
  void draw() {
    ellipse(X, Y, 50, 50);
  }
  void update() {
    X+=VX;
    Y+=VY;
    VY+=1.98;
    if (X<-100||X>740||Y<-100||Y>580) {
      X=random(640);
      Y=random(240);
      VX=random(30)-15;
      VY=-random(30);
    }
  }
}
Fruit fruit[]= new Fruit[20];
void setup() {
  size(640, 480);
  openni = new SimpleOpenNI(this);
  openni.enableDepth();
  openni.enableUser();
  for (int i=0; i<20; i++)
    fruit[i] = new Fruit(random(640), random(240), random(30)-15, -random(30));
  }
  void draw() {
    openni.update();
    image(openni.userImage(), 0, 0);
    for (int i=0; i<20; i++) {
      fruit[i].draw();
      fruit[i].update();
    }
  }

畫出線碰到
import SimpleOpenNI.*;
SimpleOpenNI openni;
class Fruit {
  float X, Y, VX, VY;
  boolean dead = false;
  Fruit(float x, float y, float vx, float vy) {
    X=x;
    Y=y;
    VX=vx;
    VY=vy;
    dead=false;
  }
  void draw() {
    if(dead) fill(255,0,0);
    else fill(255);
    ellipse(X, Y, 50, 50);
  }
  void update() {
    X+=VX; 
    Y+=VY; 
    VY+=1.98;
    if (X<-100||X>740||Y<-100||Y>580) {
      X=random(640);
      Y=random(240);
      VX=random(30)-15;
      VY=-random(30);
      dead=false;
    }
    if(dist(X,Y,mouseX,mouseY)<50) dead=true;
  }
}

void mouseMoved(){
  strokeWeight(30); stroke(255,0,0); line(mouseX,mouseY,pmouseX,pmouseY);
  strokeWeight(1); stroke(0);
}
Fruit fruit[]= new Fruit[20];
void setup() {
  size(640, 480);
  openni = new SimpleOpenNI(this);
  openni.enableDepth();
  openni.enableUser();
  for (int i=0; i<20; i++) 
    fruit[i] = new Fruit(random(640), random(240), random(30)-15, -random(30));
  }
  void draw() {
    openni.update();
    image(openni.userImage(), 0, 0);
    for (int i=0; i<20; i++) {
      fruit[i].draw();
      fruit[i].update();
    }
  }
偵測人體碰到
import SimpleOpenNI.*;
SimpleOpenNI openni;
class Fruit {
  float X, Y, VX, VY;
  boolean dead = false;
  Fruit(float x, float y, float vx, float vy) {
    X=x;
    Y=y;
    VX=vx;
    VY=vy;
    dead=false;
  }
  void draw() {
    if(dead) fill(255,0,0);
    else fill(255);
    ellipse(X, Y, 50, 50);
  }
  void update() {
    X+=VX; 
    Y+=VY; 
    VY+=1.98;
    if (X<-100||X>740||Y<-100||Y>580) {
      X=random(640);
      Y=random(240);
      VX=random(30)-15;
      VY=-random(30);
      dead=false;
    }
    if(dist(X,Y,mouseX,mouseY)<50) dead=true;
    if(X>0&&X<640&&Y>0&&Y<480&&openni.userImage().pixels[int(X)+int(Y)*640]==color(0,0,255)) dead=true;
  }
}

void mouseMoved(){
  strokeWeight(30); stroke(255,0,0); line(mouseX,mouseY,pmouseX,pmouseY);
  strokeWeight(1); stroke(0);
}
Fruit fruit[]= new Fruit[20];
void setup() {
  size(640, 480);
  openni = new SimpleOpenNI(this);
  openni.enableDepth();
  openni.enableUser();
  for (int i=0; i<20; i++) 
    fruit[i] = new Fruit(random(640), random(240), random(30)-15, -random(30));
  }
  void draw() {
    openni.update();
    image(openni.userImage(), 0, 0);
    for (int i=0; i<20; i++) {
      fruit[i].draw();
      fruit[i].update();
    }
  }


水果爆溜~~~~
import SimpleOpenNI.*;
SimpleOpenNI openni;
PImage imUser;
class Fruit {
  float X, Y, VX, VY,split=0,angle=0;
  boolean dead = false;
  Fruit(float x, float y, float vx, float vy) {
    X=x;
    Y=y;
    VX=vx;
    VY=vy;
    dead=false;
  }
  void draw() {
    if(dead){ fill(255,0,0);
      arc(X+split,Y,50,50,angle,angle+PI,CHORD);
      arc(X-split,Y,50,50,angle+PI,angle+PI*2,CHORD);
    }
    else{ fill(255);ellipse(X, Y, 50, 50);}
  }
  void update() {
    X+=VX/2; 
    Y+=VY/2; 
    VY+=0.5/2;
    if (X<-100||X>740||Y<-100||Y>580) {
      X=random(640);
      Y=random(240);
      VX=random(10)-15;
      VY=-random(10);
      dead=false;
      split=0;
    }
    if(dead==false&&dist(X,Y,mouseX,mouseY)<50){
      dead=true;
      angle = atan2(mouseY-pmouseY,mouseX-pmouseX);
    }
    if(dead==false&&X>0 && X<640 &&Y>0 &&Y<480 &&openni.userImage().pixels[int(X)+int(Y)*640]==color(0,0,255)) {
    dead=true;
    }
    if(dead) split+=2;
  }
}
void mouseMoved(){
  strokeWeight(30); stroke(255,0,0); line(mouseX,mouseY,pmouseX,pmouseY);
  strokeWeight(1); stroke(0);
}
Fruit fruit[]= new Fruit[20];
void setup() {
  size(640, 480);
  openni = new SimpleOpenNI(this);
  openni.enableDepth();
  openni.enableUser();
  for (int i=0; i<5; i++) 
    fruit[i] = new Fruit(random(640), random(240), random(10)-15, -random(10));
  }
  void draw() {
    openni.update();
    image(openni.userImage(), 0, 0);
    for (int i=0; i<5; i++) {
      fruit[i].draw();
      fruit[i].update();
    }
  }

2015年5月11日 星期一

week12


抓屁股位置

import SimpleOpenNI.*;
SimpleOpenNI  openni;
void setup(){
  size(640, 480);
  openni = new SimpleOpenNI(this);
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
}
void draw(){
  background(255);
  openni.update();
  image(openni.userImage(), 0, 0,640,480);
  int[] userList = openni.getUsers();
  for(int i=0;i<userList.length;i++)
  {
      if(openni.isTrackingSkeleton(userList[i])){
          PVector pos=new PVector();
          openni.getJointPositionSkeleton(userList[i],SimpleOpenNI.SKEL_LEFT_HIP,pos);
          println(pos);
          println(userList[i]);
      }
  }
}
void onNewUser(SimpleOpenNI curContext, int userId)
{
  curContext.startTrackingSkeleton(userId);
}

抓頭的位置並新增圓球

import SimpleOpenNI.*;
SimpleOpenNI  openni;
void setup(){
  size(640, 480);
  openni = new SimpleOpenNI(this);
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
}
void draw(){
  background(255);
  openni.update();
  image(openni.userImage(), 0, 0,640,480);
  int[] userList = openni.getUsers();
  for(int i=0;i<userList.length;i++)
  {
      if(openni.isTrackingSkeleton(userList[i])){
          PVector pos=new PVector();
          openni.getJointPositionSkeleton(userList[i],SimpleOpenNI.SKEL_HEAD,pos);
          println(pos);
          fill(255);
          ellipse(320+pos.x/3,240-pos.y/3,50,50);
      }
  }
}
void onNewUser(SimpleOpenNI curContext, int userId)
{
  curContext.startTrackingSkeleton(userId);
}


抓頭的位置新增遮罩及背景圖
import SimpleOpenNI.*;
SimpleOpenNI  openni;
PImage imgBG,imgMask;
void setup(){
  size(640, 480);
  openni = new SimpleOpenNI(this);
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
  imgBG=loadImage("what.jpg");
  imgMask=createImage(1024,640,ARGB);
  imgMask.loadPixels();
  for(int i=0;i<1024*640;i++){
    imgMask.pixels[i]=color(0,0,255,220);
  }
  imgMask.updatePixels();
}
void draw(){
  image(imgBG,0,0);
  openni.update();
  image(openni.userImage(), 0, 0,64,48);
  image(imgMask,0,0);
  int[] userList = openni.getUsers();
  for(int i=0;i<userList.length;i++)
  {
      if(openni.isTrackingSkeleton(userList[i])){
          PVector pos=new PVector();
          openni.getJointPositionSkeleton(userList[i],SimpleOpenNI.SKEL_HEAD,pos);
          println(pos);
          fill(255);
          ellipse(320+pos.x/3,240-pos.y/3,50,50);
      }
  }
}
void onNewUser(SimpleOpenNI curContext, int userId)
{
  curContext.startTrackingSkeleton(userId);
}








import SimpleOpenNI.*;
SimpleOpenNI  openni;
PImage imgBG,imgMask;
void setup(){
  size(640, 480);
  openni = new SimpleOpenNI(this);
  openni.enableRGB();
  openni.enableDepth();
  openni.enableUser();
  imgBG=loadImage("what.jpg");
  imgMask=createImage(1024,640,ARGB);
  imgMask.loadPixels();
  for(int i=0;i<1024*640;i++){
    imgMask.pixels[i]=color(0,0,255,220);
  }
  imgMask.updatePixels();
}
void draw(){
  image(imgBG,0,0);
  openni.update();
  image(openni.userImage(), 0, 0,64,48);
  image(imgMask,0,0);
  int[] userList = openni.getUsers();
  for(int i=0;i<userList.length;i++)
  {
      if(openni.isTrackingSkeleton(userList[i])){
          PVector pos=new PVector();
          openni.getJointPositionSkeleton(userList[i],SimpleOpenNI.SKEL_HEAD,pos);
          println(pos);
          fill(255);
          ellipse(320+pos.x/3,240-pos.y/3,50,50);
      }
  }
}
void onNewUser(SimpleOpenNI curContext, int userId)
{
  curContext.startTrackingSkeleton(userId);
}

2015年4月27日 星期一

week10




無法觀看請到這裡
https://drive.google.com/file/d/0B7aK8WDuM6-UZl95MHVMSi1fS2s/view?usp=sharing






import de.voidplus.leapmotion.*;
import ddf.minim.*;
Minim minim1;
AudioPlayer player1;
Minim minim2;
AudioPlayer player2;
Minim minim3;
AudioPlayer player3;
Minim minim4;
AudioPlayer player4;
Minim minim5;
AudioPlayer player5;
Minim minim6;
AudioPlayer player6;
LeapMotion leap;
PImage img0;
PImage img1;
PImage img2;
PImage img3;
PImage img4;
PImage img5;
PImage img6;
PImage img7;
PImage img8;
PImage img9;
PImage img10;
PImage img11;
PImage img12;
PImage img13;
PImage img14;
PImage img15;
PImage img16;


void setup() {
  size(800, 500, P3D);
  img0=loadImage("234484-13031Q3353876_burned (1).png");
  img1=loadImage("234484-13031Q3353876_burned (2).png");
  img2=loadImage("234484-13031Q3353876_burned (3).png");
  img3=loadImage("234484-13031Q3353876_burned (4).png");
  img4=loadImage("234484-13031Q3353876_burned (5).png");
  img5=loadImage("Fireball_NSMB.png");
  img6=loadImage("53243.png");
  img7=loadImage("53244.png");
  img8=loadImage("53245.png");
  img9=loadImage("53246.png");
  img10=loadImage("53247.png");
  img11=loadImage("53248.png");
  img12=loadImage("53249.png");
  img13=loadImage("53240.png");
  img14=loadImage("53241.png");
  img15=loadImage("53242.png");
  img16=loadImage("532421.png");
  minim1 = new Minim(this);
  //player1 = minim1.loadFile("Amazing Grace.mp3");
  //minim2 = new Minim(this);
  //player2 = minim2.loadFile("Amazing Grace.mp3");
  //minim3 = new Minim(this);
  //player3 = minim3.loadFile("Amazing Grace.mp3");
  minim4 = new Minim(this);
  player4 = minim4.loadFile("thunder.wav");
  minim5 = new Minim(this);
  player5 = minim5.loadFile("explosion2.mp3");
  //minim6 = new Minim(this);
  //player6 = minim6.loadFile("Amazing Grace.mp3");
  imageMode(CENTER);
  //player1.isPlaying() == false;
  //player2.isPlaying() == false;
  //player3.isPlaying() == false;
  player4.pause();
  player5.pause();
  //player6.isPlaying() == false;
  leap = new LeapMotion(this);
}


float nowX=0, nowY, nowA=0;

void draw() {
  background(255);
  for (Hand hand : leap.getHands ()) {
    textSize(20);
    PVector hand_position = hand.getPosition();
    switch(hand.getOutstrechtedFingers().size()) {
    case 0:
      {
        text("please use your hand to make your magic", 400, 250);
      }
      break;
    case 1:
      {
        image(img16, 400, 250, 800, 500);
        float hand_time= hand.getTimeVisible();
        float i=400+hand_time*300;

        if (i<1000) {
          pushMatrix();
          image(img10, hand_position.x, hand_position.y, i+300, i+300);
          popMatrix();
          player4.play();
        } else {
          image(img9, 400, 250, 800, 500);
          player4.play();
        }
      }
      break;
    case 2:
      {
        background(255);
        float hand_time= hand.getTimeVisible();
        float i=100+hand_time*300;

        if (i<500) {
          pushMatrix();
          image(img11, hand_position.x, hand_position.y, i+300, i+300);
          popMatrix();
        } else {
          image(img12, 400, 250, 800, 500);
        }
      }
      break;
    case 3:
      {
        image(img15, 400, 250, 800, 500);
        float hand_time= hand.getTimeVisible();
        float i=10+hand_time*100;

        if (i<200) {
          pushMatrix();
          image(img13, hand_position.x, hand_position.y, i+300, i+300);
          popMatrix();
        } else {
          image(img14, 400, 250, 800, 500);
        }
      }
      break;
    case 4:
      {
        image(img7, 400, 250, 800, 500);
        pushMatrix();
        image(img4, hand_position.x, hand_position.y-100, 200, 200);
        popMatrix();
      }
      break;

    case 5:
      {
        image(img6, 400, 250, 800, 500);
        float hand_time= hand.getTimeVisible();
        float i=200-hand_time*100;

        if (i>0) {
          pushMatrix();
          image(img5, hand_position.x, hand_position.y+10-i, i+50, i);
          popMatrix();
        } else {
          image(img8, 400, 250, 800, 500);
          player5.play();
        }
      }
      // player1.isPlaying() == false;
      //player2.isPlaying() == false;
      // player3.isPlaying() == false;
      minim4.stop();
      minim5.stop();
      //player6.isPlaying() == false;
      break;
    }
    hand.draw();
  }
}

2015年4月13日 星期一

week07




import de.voidplus.leapmotion.*;
LeapMotion leap;

void setup() {
  size(800, 500, P3D);

  leap = new LeapMotion(this);
}


float nowX=0, nowY, nowA=0;

void draw() {
  background(255);
  for (Hand hand : leap.getHands ()) {
    switch(hand.getOutstrechtedFingers().size()) {
    case 0:
      {
        pushMatrix();
        translate(hand.getPosition().x, hand.getPosition().y);
        rotateZ(radians(hand.getPitch()));
        //rotateZ(-radians(hand.getRoll()));
        rotateY(-radians(hand.getYaw()));
        stroke(0);
        fill(50);
        box(100);
        popMatrix();
      }
      break;
    case 1:
      {
        pushMatrix();
        translate(hand.getPosition().x, hand.getPosition().y);
        rotateZ(radians(hand.getPitch()));
        //rotateZ(-radians(hand.getRoll()));
        rotateY(-radians(hand.getYaw()));
        stroke(0);
        fill(100);
        box(100);
        popMatrix();
      }
      break;
    case 2:
      {
        pushMatrix();
        translate(hand.getPosition().x, hand.getPosition().y);
        rotateZ(radians(hand.getPitch()));
        //rotateZ(-radians(hand.getRoll()));
        rotateY(-radians(hand.getYaw()));
        stroke(0);
        fill(150);
        box(100);
        popMatrix();
      }
      break;
    case 3:
      {
        pushMatrix();
        translate(hand.getPosition().x, hand.getPosition().y);
        rotateZ(radians(hand.getPitch()));
        //rotateZ(-radians(hand.getRoll()));
        rotateY(-radians(hand.getYaw()));
        stroke(0);
        fill(200);
        box(100);
        popMatrix();
      }
      break;
    case 4:
      {
        pushMatrix();
        translate(hand.getPosition().x, hand.getPosition().y);
        rotateZ(radians(hand.getPitch()));
        //rotateZ(-radians(hand.getRoll()));
        rotateY(-radians(hand.getYaw()));
        stroke(0);
        fill(0);
        box(100);
        popMatrix();
      }
      break;

    case 5:
      {
        pushMatrix();
        translate(hand.getPosition().x, hand.getPosition().y);
        rotateZ(radians(hand.getPitch()));
        //rotateZ(-radians(hand.getRoll()));
        rotateY(-radians(hand.getYaw()));
        stroke(0);
        fill(255,0,0);
        sphere(50);
        popMatrix();
      }
      break;
    }
    hand.draw();
  }
}


下面為讀圖用
import de.voidplus.leapmotion.*;
LeapMotion leap;
PImage img;
void setup() {
  size(800, 500, P3D);
  img=loadImage("1.jpg");
  leap = new LeapMotion(this);
}


float nowX=0, nowY, nowA=0;
void draw() {
  background(255);
  for (Hand hand : leap.getHands ()) {
    switch(hand.getOutstrechtedFingers().size()) {
    case 0:
      {
        pushMatrix();
        translate(hand.getPosition().x-50, hand.getPosition().y-50);
        //rotateZ(radians(hand.getPitch()));
        //rotateZ(-radians(hand.getRoll()));
        //rotateY(-radians(hand.getYaw()));
        //stroke(0);
        //fill(50);
        image(img,0,0);
        popMatrix();
      }
      break;
    case 1:
      {
        pushMatrix();..................................................

2015年3月23日 星期一

2015年3月16日 星期一

week04




import de.voidplus.leapmotion.*;
LeapMotion leap;
void setup() {
  size(600, 600, P3D);
  leap = new LeapMotion(this);
}
float nowX=0,nowY,nowA=0;
void draw() {
  nowY+=cos(nowA);nowX+=sin(nowA);
  background(255);
  for(int i=-10;i<=10;i++){
    for(int j=-10;j<=10;j++){
      pushMatrix();
      translate(300,300);
      rotateX(radians(70));
      rotateZ(nowA);
      translate(i*200+nowX,j*200+nowY,0);
      fill(255);box(200);
      popMatrix();
    }
  }


  for (Hand hand : leap.getHands ()) {
    hand.draw();
    float angle = hand.getYaw();
    PVector pos = hand.getPosition();
    nowA +=radians(-angle/40);
    translate(pos.x, pos.y , pos.z);
    rotateY(-radians(angle));
    fill(128);stroke(0);box(100);
  }
}

2015年3月9日 星期一

Week03

import de.voidplus.leapmotion.*;
LeapMotion leap;

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

  leap = new LeapMotion(this);
}
void draw() {
  background(255); 
   for (Hand hand : leap.getHands ()){
   
     //println("yaw:"+hand.getYaw());
     println("pitch:"+hand.getPitch());
     //println("roll:"+hand.getROll());
     pushMatrix();
     translate(hand.getPosition().x,hand.getPosition().y);
     rotateZ(radians(hand.getPitch()));
     //rotateZ(-radians(hand.getRoll()));
     rotateY(-radians(hand.getYaw()));
     stroke(0);fill(255);box(100);
     popMatrix();
   hand.draw();
   myDraw(hand.getPosition());
   myDraw(hand.getThumb().getPosition());
   myDraw(hand.getIndexFinger().getPosition());
   myDraw(hand.getMiddleFinger().getPosition());
   myDraw(hand.getRingFinger().getPosition());
   myDraw(hand.getPinkyFinger().getPosition());
   }
}
void myDraw(PVector pos){
pushMatrix();
translate(pos.x,pos.y);
fill(255,0,0);sphere(20);
popMatrix();
}





import de.voidplus.leapmotion.*;
LeapMotion leap;
void setup() {
  size(600, 600, P3D);
  leap = new LeapMotion(this);
}
void draw(){
background(255);
println(leap.getHands().size());
fill(255,0,0);
textSize(40);
for (Hand hand : leap.getHands ()){
  if(hand.isRight()){
    text("right:"+hand.getOutstrechtedFingers().size()
      ,400,300);  
  }else
    text("left:"+hand.getOutstrechtedFingers().size()
      ,200,300);
  }
}




未打完之體感修改圖形
import de.voidplus.leapmotion.*;
int[][][] sapce = new int [20][20][20];
LeapMotion leap;
void setup() {
  size(600, 600, P3D);
  leap = new LeapMotion(this);
}
void draw(){
background(255);
float rot=0,handX=200,handY=200,cutX=0,cutY=0,cutZ=0,cut=0;
float



2015年3月2日 星期一

WEEK01





import de.voidplus.leapmotion.*;
LeapMotion leap;

void setup() {
  size(800, 500, P3D);

  leap = new LeapMotion(this);
}
void draw(){
    background(255);
    for(Hand hand :leap.getHands()){
    hand.draw();
    }
}