2016年3月10日 星期四

Week2 用LeapMotion畫線

今天我們要用leap motion來畫線,我跟龔郁如同學一組共用一個裝置, 1.首先我們先寫出用滑鼠可以畫2D線的程式,成果如下: 並將筆和背景改成自己想要的顏色 程式碼: PVector [] pt = new PVector[10]; //PVector pt1, pt2, pt3, pt4, pt5, pt6, pt7, pt8, pt9, pt10; void setup(){ size(640,480, P3D); for(int i=0;i<10;i++) pt[i] = new PVector(0,0,0); } void draw(){ background(0); stroke(#FC007A); for(int i=9;i>0;i--){ pt[i].x=pt[i-1].x; pt[i].y=pt[i-1].y;} pt[0].x=mouseX; pt[0].y=mouseY; for(int i=1;i<10;i++) line(pt[i].x, pt[i].y, pt[i].z, pt[i-1].x, pt[i-1].y, pt[i-1].z); } 2.然後我們要寫用手來感應畫線的程式 目前我們做到這裡只能出現一條線段。 程式碼如下: import de.voidplus.leapmotion.*; LeapMotion leap; PVector [] pt = new PVector[10]; void setup(){ size(640,480, P3D); for(int i=0;i<10;i++) pt[i] = new PVector(0,0,0); leap = new LeapMotion(this); } void draw(){ background(0); stroke(#FC007A); for(int i=9;i>0;i--){ pt[i].x=pt[i-1].x; pt[i].y=pt[i-1].y;} for(Hand hand : leap.getHands() ){ for(Finger finger : hand.getFingers() ){ switch(finger.getType()) { case 1: PVector now = finger.getPosition(); pt[0].x=now.x; pt[0].y=now.y; break; } } } for(int i=1;i<10;i++) line(pt[i].x, pt[i].y, pt[i].z, pt[i-1].x, pt[i-1].y, pt[i-1].z); } 3.第三步驟,我們希望5根手指頭能夠出現5條線段 成功出現5條線了! 程式碼: import de.voidplus.leapmotion.*; LeapMotion leap; PVector [][] pt = new PVector[5][100]; void setup(){ size(640,480, P3D); for(int f=0;f<5;f++){ for(int i=0;i<100;i++) pt[f][i] = new PVector(0,0,0); } leap = new LeapMotion(this); colorMode(HSB,100); } void draw(){ background(0); for(int f=0;f<5;f++){ for(int i=99;i>0;i--){ pt[f][i].x=pt[f][i-1].x; pt[f][i].y=pt[f][i-1].y;} } for(Hand hand : leap.getHands() ){ for(Finger finger : hand.getFingers() ){ int f=finger.getType(); PVector now = finger.getPosition(); pt[f][0].x=now.x; pt[f][0].y=now.y; } } for(int f=0;f<5;f++){ stroke(f*20, 100, 100); for(int i=1;i<100;i++) line(pt[f][i].x, pt[f][i].y, pt[f][i].z, pt[f][i-1].x, pt[f][i-1].y, pt[f][i-1].z); } }

沒有留言:

張貼留言