作者 主题: 教案草稿_zkyscraper(待逐步更新)  (阅读 3681 次)

zkyscraper

  • Newbie
  • *
  • 帖子: 13
教案草稿_zkyscraper(待逐步更新)
« 于: 六月 07, 2013, 01:26:53 下午 »
程序代码
PGraphics pg;               
View[] views = new View[9];   



PImage  slide1, slide2, slide3, slide4;


PVector translation = new PVector(-400, -100);
PVector vTranslation = new PVector(0, 0);
boolean moving;
int movingCounter;
float rotation;
int stepCounter;

PFont font;

CheckPoint publicCheckPoint;

CheckPoint[] localCheckPoints = new CheckPoint[10];
int triggeredCheckPoint;
boolean publicMove;


void setup() {
  size(displayWidth, displayHeight);
  pg = createGraphics(width, height);
  pg.smooth();
  pg.noStroke();
  pg.fill(100, 150, 255);

  smooth();
  noStroke();

  views[0] = new View(new PVector(400, 100, 0));
  views[1] = new View(new PVector(200, 500, HALF_PI));
  views[2] = new View(new PVector(1800, 400, TWO_PI));
  views[3] = new View(new PVector(1100, 100, 0));
  views[4] = new View(new PVector(1100, 400, 0));
  views[5] = new View(new PVector(1100, 700, 0));
  views[6] = new View(new PVector(400, -400, 0));
  views[7] = new View(new PVector(-600, -200, 0));
  views[8] = new View(new PVector(-1000, 600, 0));

  font = createFont("Arial-Black", 60);
  pg.textFont(font);
  pg.textAlign(CENTER);

  publicCheckPoint = new CheckPoint(true, new PVector(width-200, height-60), 60);

  localCheckPoints[0] = new CheckPoint(false, new PVector((views[0].position.x+views[1].position.x)/2, (views[0].position.y+views[1].position.y)/2), 60, 1);
  localCheckPoints[1] = new CheckPoint(false, new PVector((views[0].position.x+views[2].position.x)/2+60, (views[0].position.y+views[2].position.y)/2-50), 60, 2);
  localCheckPoints[2] = new CheckPoint(false, new PVector((views[0].position.x+views[6].position.x)/2, (views[0].position.y+views[6].position.y)/2+50), 60, 6);
  localCheckPoints[3] = new CheckPoint(false, new PVector((views[0].position.x+views[7].position.x)/2, (views[0].position.y+views[7].position.y)/2), 60, 7);

  localCheckPoints[4] = new CheckPoint(false, new PVector((views[0].position.x+views[6].position.x)/2, (views[0].position.y+views[6].position.y)/2+50), 60, 0);
  localCheckPoints[5] = new CheckPoint(false, new PVector((views[0].position.x+views[7].position.x)/2, (views[0].position.y+views[7].position.y)/2), 60, 0);
  localCheckPoints[6] = new CheckPoint(false, new PVector((views[0].position.x+views[1].position.x)/2, (views[0].position.y+views[1].position.y)/2), 60, 0);
  localCheckPoints[7] = new CheckPoint(false, new PVector((views[0].position.x+views[2].position.x)/2+60, (views[0].position.y+views[2].position.y)/2-50), 60, 0);

  localCheckPoints[8] = new CheckPoint(false, new PVector((views[0].position.x+views[3].position.x)/2+150, (views[0].position.y+views[3].position.y)/2), 60, 3);
  localCheckPoints[9] = new CheckPoint(false, new PVector((views[0].position.x+views[3].position.x)/2+150, (views[0].position.y+views[3].position.y)/2), 60, 0);
}

void draw() {
  for (int i=0; i<views.length; i++) {
    views[i].update();
  }

  pg.beginDraw();
  pg.background(0);
  pg.translate(width/2+translation.x, height/2+translation.y);


  if (publicMove) {
    if (moving && movingCounter<views.length-1) {
      slowTranslate(new PVector(-views[movingCounter].position.x, -views[movingCounter].position.y), new PVector(-views[movingCounter+1].position.x, -views[movingCounter+1].position.y));
    }
    else if (moving && movingCounter == views.length-1) {
      slowTranslate(new PVector(-views[movingCounter].position.x, -views[movingCounter].position.y), new PVector(-views[0].position.x, -views[0].position.y));
    }
  }
  else {
    if (moving) {
      slowTranslate(new PVector(-views[movingCounter].position.x, -views[movingCounter].position.y), new PVector(-localCheckPoints[triggeredCheckPoint].viewN.position.x, -localCheckPoints[triggeredCheckPoint].viewN.position.y));
    }
  }
  translation.x += vTranslation.x;
  translation.y += vTranslation.y;

  //=====================================================================================================================
  //                                            Draw stuff on views
  //public style
  pg.textFont(font);
  pg.noStroke();


  //views[0]==========================================================

  pg.pushStyle();
 
  pg.fill(0, 200, 255);
  pg.rect(views[0].position.x-330, views[0].position.y-160,700,380);

  pg.fill(255);
  pg.textSize(30);

  pg.text("Name: ZHOU Shaocong", views[0].position.x-300, views[0].position.y-120);
  pg.text("Current:Lenovo R&T", views[0].position.x-300, views[0].position.y-80);
  pg.text("Previous:Motorola", views[0].position.x-300, views[0].position.y-40);
  pg.text("Working scope:creative coding/prototype design", views[0].position.x-300, views[0].position.y);
  pg.text("Experience:processing 4 years", views[0].position.x-300, views[0].position.y+40);
  pg.text("Experience:2 workshop and several speeches", views[0].position.x-300, views[0].position.y+80);
  pg.text("My part:introduction, android mode, NUI", views[0].position.x-300, views[0].position.y+120);
  pg.text("Zkyscraper@gmail.com", views[0].position.x-300, views[0].position.y+160);
  pg.text("Demo_Monkeys @WEIBO", views[0].position.x-300, views[0].position.y+200);
 
  pg.popStyle();

  //views[1]========================================================
  pg.pushStyle();
 
  pg.fill(255, 206, 9);
  pg.rect(views[1].position.x-350, views[1].position.y-180,740,340);

  pg.fill(255);
  pg.textSize(30);

  pg.text("Download: Processing.org", views[1].position.x-300, views[1].position.y-120);
  pg.text("Download: Java.com", views[1].position.x-300, views[1].position.y-80);
  pg.text("Sketch folder", views[1].position.x-300, views[1].position.y-40);
  pg.text("Library folder", views[1].position.x-300, views[1].position.y);
  pg.text("Prefrence.txt", views[1].position.x-300, views[1].position.y+40);
  pg.text("Online reference", views[1].position.x-300, views[1].position.y+80);
  pg.text("Great examples", views[1].position.x-300, views[1].position.y+120);

  pg.popStyle();

  //views[2]=====================================================================================================
  pg.pushStyle();
 
  pg.fill(0, 174, 151);
  pg.rect(views[2].position.x-330, views[2].position.y-160,700,300);

  pg.fill(255);
  pg.textSize(60);

  pg.text("Variables", views[2].position.x-300, views[2].position.y-90);
  pg.text("int, float, string, color", views[2].position.x-300, views[2].position.y-20);
  pg.text("Local vs Public", views[2].position.x-300, views[2].position.y+50);

  pg.popStyle();

  //views[3]=====================================================================================================

  pg.pushStyle();
    pg.fill(20, 119, 80);
  pg.rect(views[3].position.x-330, views[3].position.y-160,1100,300);
 
  pg.fill(255, 119, 80);
  pg.rect(views[3].position.x-330, views[3].position.y-160,900,300);
 


  pg.fill(255);
  pg.textSize(60);

  pg.text("void setup() {  }", views[3].position.x-300, views[3].position.y-90);
  pg.text("size(), smooth(), frameRate(), loop()", views[3].position.x-300, views[3].position.y-20);
  pg.text("setup() is not necessary!", views[3].position.x-300, views[3].position.y+50);

  pg.popStyle();

  //views[4]=====================================================================================================

  pg.pushStyle();
 
  pg.fill(255, 52, 132);
  pg.rect(views[4].position.x-330, views[4].position.y-160,500,300);

  pg.fill(255);
  pg.textSize(100);

  pg.text("Why P5?", views[4].position.x-300, views[4].position.y);

  pg.popStyle();

  //views[5]=====================================================================================================

  pg.pushStyle();
 
  pg.fill(255, 228, 0);
  pg.rect(views[5].position.x-330, views[5].position.y-160,900,300);

  pg.fill(255);
  pg.textSize(60);
  pg.text("Career position:", views[5].position.x-300, views[5].position.y-90);
  pg.text("design --> prototype --> decision", views[5].position.x-300, views[5].position.y-20);
  pg.text("design --->  demo  --->  funding", views[5].position.x-300, views[5].position.y+50);

  pg.popStyle();

  //views[6]=====================================================================================================
  pg.pushStyle();
  pg.fill(255, 206, 9);
  pg.rect(views[6].position.x-330, views[6].position.y-160,700,300);

  pg.fill(255);
  pg.textSize(30);

  pg.text("Applications:", views[6].position.x-300, views[6].position.y-120);
  pg.text("Desk top software demo,JAVA", views[6].position.x-300, views[6].position.y-80);
  pg.text("Browser side service demo, JavaScript", views[6].position.x-300, views[6].position.y-40);
  pg.text("Smart device side APP demo, Android", views[6].position.x-300, views[6].position.y);
  pg.text("Data visualization", views[6].position.x-300, views[6].position.y+40);
  pg.text("Media art and installation", views[6].position.x-300, views[6].position.y+80);
  pg.text("Nature User Interface", views[6].position.x-300, views[6].position.y+120);

  pg.popStyle();

  //views[7]=====================================================================================================
  pg.pushStyle();

  pg.fill(234, 18, 175);
  pg.rect(views[7].position.x-330, views[7].position.y-160,900,300);

  pg.fill(255);
  pg.textSize(60);

  pg.text("Let's show the movie here", views[7].position.x-300, views[7].position.y-20);


  pg.popStyle();

  //views[8]=====================================================================================================
  pg.pushStyle();
  pg.fill(0, 200, 255);
  pg.textSize(100);
  pg.text("[ Thanks! ]", views[8].position.x, views[8].position.y);
  pg.popStyle();
  //                                            Draw ends
  //===================================================================================================================== 
  for (int i=0; i<localCheckPoints.length; i++) {
    if (movingCounter!=localCheckPoints[i].viewNumber) {
      localCheckPoints[i].update();
      localCheckPoints[i].display(pg);
    }
  }

  pg.endDraw();


  //Display stuff on first layer
  background(0);
  image(pg,0,0);

  checkCheckPoints();
  publicCheckPoint.update();
  publicCheckPoint.display(g);
}

void slowTranslate(PVector current, PVector next) {


  print("Counter = "+movingCounter);
  print(" Start = "+views[movingCounter].position.x+","+views[movingCounter].position.y);
  print("  End = "+next.x+","+next.y);
  print("  v= "+vTranslation.x+","+vTranslation.y);
  println ("  trans= "+translation.x+","+translation.y);


  vTranslation.x = (next.x - current.x)/50;
  vTranslation.y = (next.y - current.y)/50;

  if (dist(translation.x, translation.y, next.x, next.y)<=10) {
    moving =false;


    if (!publicMove) movingCounter = localCheckPoints[triggeredCheckPoint].viewNumber;
    else {
      movingCounter +=1;
      //      if(movingCounter ==views.length) movingCounter =0;
    }
    if (movingCounter==views.length) movingCounter =0;
    vTranslation.x = 0;
    vTranslation.y = 0;
    translation.x = next.x;
    translation.y = next.y;
  }
}

void keyPressed() {
  moving= true;
}

void checkCheckPoints() {
  if (publicCheckPoint.triggered) {
    moving =true;
    publicCheckPoint.triggered =false;
  }

  for (int i = 0; i<localCheckPoints.length; i++) {
    if (localCheckPoints[i].triggered) {
      triggeredCheckPoint = i;
      moving =true;
      localCheckPoints[i].triggered =false;
    }
  }
}

class View {
  PVector position, onScreenPosition;
  boolean on;
  float rotation;

  View(PVector _pos) {
    position = new PVector(_pos.x, _pos.y, _pos.z);
    onScreenPosition = new PVector(_pos.x, _pos.y);
    on = true;
  }

  void update() {
   
    onScreenPosition.x = translation.x+width/2 + position.x;
    onScreenPosition.y = translation.y+height/2 + position.y;
   
//    rotate(translation.z);
  }
}

class CheckPoint {
  boolean publicCheckPoint;
  PVector position, onScreenPosition;
  int counter;
  boolean triggered, mouseOut, renewed;
  int diameter, steps;
  float angleViews;
  int viewNumber;
  View viewC, viewN;

  CheckPoint(boolean _cp, PVector _p, int _d) {
    publicCheckPoint = _cp;
    position = new PVector(_p.x, _p.y);
    onScreenPosition = new PVector(_p.x, _p.y);
    diameter = _d;
    steps =30;
  }

  CheckPoint(boolean _cp, PVector _p, int _d, int _n) {
    publicCheckPoint = _cp;
    position = new PVector(_p.x, _p.y);
    onScreenPosition = new PVector(position.x, position.y);
    diameter = _d;
    steps =30;

    viewNumber = _n;
    viewN = views[_n];
  }

  void update() {
    if (!publicCheckPoint) {
      onScreenPosition.x = translation.x+width/2 + position.x;
      onScreenPosition.y = translation.y+height/2 + position.y;

      angleViews = atan2(viewN.position.y-views[movingCounter].position.y, viewN.position.x-views[movingCounter].position.x );
    }


    if (!moving && dist(mouseX, mouseY, onScreenPosition.x, onScreenPosition.y)<diameter/2) {
      counter++;
    }
    else {
    }

    if (counter>steps) {
      triggered =true;
      if (publicCheckPoint) publicMove =true;
      else publicMove =false;
      counter = 0;
    }
  }

  void display(PGraphics _p) {
    if (!publicCheckPoint) {
      //     _p.beginDraw();

      _p.fill(255, 100);
      _p.noStroke();
      _p.ellipse(position.x, position.y, diameter, diameter);
      _p.fill(0, 200, 255);
      _p.arc(position.x, position.y, diameter, diameter, 0, TWO_PI*counter/steps);
      _p.fill(0,100);
      _p.ellipse(position.x, position.y, diameter*0.8, diameter*0.8);

      _p.fill(0, 200, 255, 150);
      if (!moving) {     
        //     _p.ellipse(position.x, position.y, diameter*0.3,diameter*0.3);
        _p.pushMatrix();
        _p.translate(position.x, position.y);
        _p.rotate(angleViews);
        _p.rect(0, 2, diameter/2, -4);
        //     _p.rect(0,2,-diameter/2,-4);
        _p.popMatrix();
      }
      else {
        _p.rect(position.x-10, position.y-10, 5, 20);
        _p.rect(position.x+5, position.y-10, 5, 20);
      }
      //    _p.endDraw();
      //   image(_p,0,0);
    } 
    else {
      fill(255, 100);
      noStroke();
      ellipse(position.x, position.y, diameter, diameter);
      fill(0, 200, 255);
      arc(position.x, position.y, diameter, diameter, 0, TWO_PI*counter/steps);
      fill(0);
      ellipse(position.x, position.y, diameter*0.8, diameter*0.8);

      fill(0, 200, 255);
      if (!moving) {     
        triangle(position.x-7, position.y+12, position.x-7, position.y-12, position.x+12, position.y);
      }
      else {
        rect(position.x-10, position.y-10, 5, 20);
        rect(position.x+5, position.y-10, 5, 20);
      }
    }
  }
}

« 最后编辑时间: 六月 07, 2013, 01:57:51 下午 作者 zkyscraper »

zkyscraper

  • Newbie
  • *
  • 帖子: 13
Re: 教案草稿_zkyscraper(待逐步更新)
« 回复 #1 于: 六月 21, 2013, 07:46:52 下午 »
程序代码
import com.onformative.leap.LeapMotionP5;
import com.leapmotion.leap.Finger;
import com.leapmotion.leap.Gesture.State;
import com.leapmotion.leap.Gesture.Type;
import com.leapmotion.leap.Hand;
import com.leapmotion.leap.SwipeGesture;

import processing.video.*;
Movie movie1,movie2,movie3;

LeapMotionP5 leap;

PGraphics pg;               
View[] views = new View[9];   

PImage  slide1, slide2, slide3, slide4;


PVector translation = new PVector(-400, -100);
PVector vTranslation = new PVector(0, 0);
boolean moving;
int movingCounter;
float rotation;
int stepCounter;

PFont font;

CheckPoint publicCheckPoint;

CheckPoint[] localCheckPoints = new CheckPoint[10];
int triggeredCheckPoint;
boolean publicMove;

PVector[] fingerPosition = new PVector[20];
PVector indexPosition;
int fingerCounter;

void setup() {
  size(displayWidth, displayHeight);
  pg = createGraphics(width, height);
  pg.smooth();
  pg.noStroke();
  pg.fill(100, 150, 255);
 
    movie1 = new Movie(this, "01.mov");
  movie2 = new Movie(this, "02.mov");
 
  leap = new LeapMotionP5(this);
  leap.enableGesture(Type.TYPE_SWIPE);
 
  indexPosition = new PVector(0,0,0);

  smooth();
  noStroke();
  noCursor();

  views[0] = new View(new PVector(400, 100, 0));
  views[1] = new View(new PVector(200, 500, HALF_PI));
  views[2] = new View(new PVector(1800, 400, TWO_PI));
  views[3] = new View(new PVector(1100, 100, 0));
  views[4] = new View(new PVector(1100, 400, 0));
  views[5] = new View(new PVector(1100, 700, 0));
  views[6] = new View(new PVector(400, -400, 0));
  views[7] = new View(new PVector(-600, -200, 0));
  views[8] = new View(new PVector(-1000, 600, 0));

  font = createFont("Arial-Black", 60);
  pg.textFont(font);
  pg.textAlign(CENTER);

  publicCheckPoint = new CheckPoint(true, new PVector(width-200, height-60), 60);

  localCheckPoints[0] = new CheckPoint(false, new PVector((views[0].position.x+views[1].position.x)/2, (views[0].position.y+views[1].position.y)/2), 60, 1);
  localCheckPoints[1] = new CheckPoint(false, new PVector((views[0].position.x+views[2].position.x)/2+60, (views[0].position.y+views[2].position.y)/2-50), 60, 2);
  localCheckPoints[2] = new CheckPoint(false, new PVector((views[0].position.x+views[6].position.x)/2, (views[0].position.y+views[6].position.y)/2+50), 60, 6);
  localCheckPoints[3] = new CheckPoint(false, new PVector((views[0].position.x+views[7].position.x)/2, (views[0].position.y+views[7].position.y)/2), 60, 7);

  localCheckPoints[4] = new CheckPoint(false, new PVector((views[0].position.x+views[6].position.x)/2, (views[0].position.y+views[6].position.y)/2+50), 60, 0);
  localCheckPoints[5] = new CheckPoint(false, new PVector((views[0].position.x+views[7].position.x)/2, (views[0].position.y+views[7].position.y)/2), 60, 0);
  localCheckPoints[6] = new CheckPoint(false, new PVector((views[0].position.x+views[1].position.x)/2, (views[0].position.y+views[1].position.y)/2), 60, 0);
  localCheckPoints[7] = new CheckPoint(false, new PVector((views[0].position.x+views[2].position.x)/2+60, (views[0].position.y+views[2].position.y)/2-50), 60, 0);

  localCheckPoints[8] = new CheckPoint(false, new PVector((views[0].position.x+views[3].position.x)/2+150, (views[0].position.y+views[3].position.y)/2), 60, 3);
  localCheckPoints[9] = new CheckPoint(false, new PVector((views[0].position.x+views[3].position.x)/2+150, (views[0].position.y+views[3].position.y)/2), 60, 0);
}

void draw() {
 
    for (int i =0; i<fingerCounter; i++) {
    ellipse(fingerPosition[i].x, fingerPosition[i].y, 10, 10);
  }
 
  for (int i=0; i<views.length; i++) {
    views[i].update();
  }

  pg.beginDraw();
  pg.background(0);
  pg.translate(width/2+translation.x, height/2+translation.y);


  if (publicMove) {
    if (moving && movingCounter<views.length-1) {
      slowTranslate(new PVector(-views[movingCounter].position.x, -views[movingCounter].position.y), new PVector(-views[movingCounter+1].position.x, -views[movingCounter+1].position.y));
    }
    else if (moving && movingCounter == views.length-1) {
      slowTranslate(new PVector(-views[movingCounter].position.x, -views[movingCounter].position.y), new PVector(-views[0].position.x, -views[0].position.y));
    }
  }
  else {
    if (moving) {
      slowTranslate(new PVector(-views[movingCounter].position.x, -views[movingCounter].position.y), new PVector(-localCheckPoints[triggeredCheckPoint].viewN.position.x, -localCheckPoints[triggeredCheckPoint].viewN.position.y));
    }
  }
  translation.x += vTranslation.x;
  translation.y += vTranslation.y;

  //=====================================================================================================================
  //                                            Draw stuff on views
  //public style
  pg.textFont(font);
  pg.noStroke();


  //views[0]==========================================================

  pg.pushStyle();
 
  pg.fill(0, 200, 255);
  pg.rect(views[0].position.x-330, views[0].position.y-160,700,380);

  pg.fill(255);
  pg.textSize(30);

  pg.text("Name: ZHOU Shaocong", views[0].position.x-300, views[0].position.y-120);
  pg.text("Current:Lenovo R&T", views[0].position.x-300, views[0].position.y-80);
  pg.text("Previous:Motorola", views[0].position.x-300, views[0].position.y-40);
  pg.text("Working scope:creative coding/prototype design", views[0].position.x-300, views[0].position.y);
  pg.text("Experience:processing 4 years", views[0].position.x-300, views[0].position.y+40);
  pg.text("Experience:2 workshop and several speeches", views[0].position.x-300, views[0].position.y+80);
  pg.text("My part:introduction, android mode, NUI", views[0].position.x-300, views[0].position.y+120);
  pg.text("Zkyscraper@gmail.com", views[0].position.x-300, views[0].position.y+160);
  pg.text("Demo_Monkeys @WEIBO", views[0].position.x-300, views[0].position.y+200);
 
  pg.popStyle();

  //views[1]========================================================
  pg.pushStyle();
 
  pg.fill(255, 206, 9);
  pg.rect(views[1].position.x-350, views[1].position.y-180,740,340);

  pg.fill(255);
  pg.textSize(30);

  pg.text("Download: Processing.org", views[1].position.x-300, views[1].position.y-120);
  pg.text("Download: Java.com", views[1].position.x-300, views[1].position.y-80);
  pg.text("Sketch folder", views[1].position.x-300, views[1].position.y-40);
  pg.text("Library folder", views[1].position.x-300, views[1].position.y);
  pg.text("Prefrence.txt", views[1].position.x-300, views[1].position.y+40);
  pg.text("Online reference", views[1].position.x-300, views[1].position.y+80);
  pg.text("Great examples", views[1].position.x-300, views[1].position.y+120);

  pg.popStyle();

  //views[2]=====================================================================================================
  pg.pushStyle();
 
  pg.fill(0, 174, 151);
  pg.rect(views[2].position.x-330, views[2].position.y-160,700,300);

  pg.fill(255);
  pg.textSize(60);

  pg.text("Variables", views[2].position.x-300, views[2].position.y-90);
  pg.text("int, float, string, color", views[2].position.x-300, views[2].position.y-20);
  pg.text("Local vs Public", views[2].position.x-300, views[2].position.y+50);

  pg.popStyle();

  //views[3]=====================================================================================================

  pg.pushStyle();
    pg.fill(20, 119, 80);
  pg.rect(views[3].position.x-330, views[3].position.y-160,1100,300);
 
  pg.fill(255, 119, 80);
  pg.rect(views[3].position.x-330, views[3].position.y-160,900,300);
 

  pg.fill(255);
  pg.textSize(60);

  pg.text("void setup() {  }", views[3].position.x-300, views[3].position.y-90);
  pg.text("size(), smooth(), frameRate(), loop()", views[3].position.x-300, views[3].position.y-20);
  pg.text("setup() is not necessary!", views[3].position.x-300, views[3].position.y+50);

  pg.popStyle();

  //views[4]=====================================================================================================

  pg.pushStyle();
 
  pg.fill(255, 52, 132);
  pg.rect(views[4].position.x-330, views[4].position.y-160,500,300);

  pg.fill(255);
  pg.textSize(100);

  pg.text("Why P5?", views[4].position.x-300, views[4].position.y);

  pg.popStyle();

  //views[5]=====================================================================================================

  pg.pushStyle();
 
  pg.fill(255, 228, 0);
  pg.rect(views[5].position.x-330, views[5].position.y-160,900,300);

  pg.fill(255);
  pg.textSize(60);
  pg.text("Career position:", views[5].position.x-300, views[5].position.y-90);
  pg.text("design --> prototype --> decision", views[5].position.x-300, views[5].position.y-20);
  pg.text("design --->  demo  --->  funding", views[5].position.x-300, views[5].position.y+50);

  pg.popStyle();
 //views[7]=====================================================================================================
  pg.pushStyle();

  pg.fill(234, 18, 175);
  pg.rect(views[7].position.x-430, views[7].position.y-160,1050,360);

  pg.fill(255);
  pg.textSize(60);

  pg.text("Let's show the movie here", views[7].position.x-300, views[7].position.y-20);
      pg.image(movie1, views[7].position.x-400, views[7].position.y-120);
    pg.image(movie2, views[7].position.x+100, views[7].position.y-120);
   
   if(movingCounter == 7) {
    movie1.loop();
    movie2.loop();

  } else {
    movie1.stop();
     movie2.stop();
  }

  pg.popStyle();
 
  //views[6]=====================================================================================================
  pg.pushStyle();
  pg.pushMatrix();
  pg.translate(0,-100);
//  pg.fill(255, 206, 9);
//  pg.rect(views[6].position.x-330, views[6].position.y-160,700,300);
//
//  pg.fill(255);
//  pg.textSize(30);
//
//  pg.text("Applications:", views[6].position.x-300, views[6].position.y-120);
//  pg.text("Desk top software demo,JAVA", views[6].position.x-300, views[6].position.y-80);
//  pg.text("Browser side service demo, JavaScript", views[6].position.x-300, views[6].position.y-40);
//  pg.text("Smart device side APP demo, Android", views[6].position.x-300, views[6].position.y);
//  pg.text("Data visualization", views[6].position.x-300, views[6].position.y+40);
//  pg.text("Media art and installation", views[6].position.x-300, views[6].position.y+80);
//  pg.text("Nature User Interface", views[6].position.x-300, views[6].position.y+120);

  if (dist(indexPosition.x,indexPosition.y, views[6].onScreenPosition.x, views[6].onScreenPosition.y)<120) views[6].on =true;
  else views[6].on =false;
  int spreadSize = views[6].on? 500:240;

pg.fill(0, 200, 255);
  pg.ellipse(views[6].position.x, views[6].position.y, spreadSize, spreadSize);
    if (views[6].on) {
    pg.pushMatrix();
    pg.translate(views[6].position.x, views[6].position.y);
    pg.rotate(-0.05*TWO_PI);
    pg.translate(260,0);
    pg.textSize(20);
    pg.text("Desk top software demo,JAVA", 0, 0);
    pg.popMatrix();
  }

  pg.fill(0, 255, 0);
  pg.arc(views[6].position.x, views[6].position.y, spreadSize, spreadSize, 0, 0.48*TWO_PI);

  if (views[6].on) {
    pg.pushMatrix();
    pg.translate(views[6].position.x, views[6].position.y);
    pg.rotate(0.42*TWO_PI);
    pg.translate(260,0);
    pg.rotate(PI);
    pg.textSize(20);
    pg.text("Smart device side APP demo, Android", -260, 0);
    pg.popMatrix();
  }

  pg.fill(255, 200, 0);
  pg.arc(views[6].position.x, views[6].position.y, spreadSize, spreadSize, 0, 0.27*TWO_PI);
  if (views[6].on) {
    pg.pushMatrix();
    pg.translate(views[6].position.x, views[6].position.y);
    pg.rotate(0.15*TWO_PI);
    pg.translate(260,0);
    pg.textSize(20);
    pg.text("Browser side service demo, JavaScript", 0, 0);
    pg.popMatrix();
  }

  pg.fill(255, 50, 0);
  pg.arc(views[6].position.x, views[6].position.y, spreadSize, spreadSize, 0, 0.12*TWO_PI);
  if (views[6].on) {
    pg.pushMatrix();
    pg.translate(views[6].position.x, views[6].position.y);
    pg.rotate(0.1*TWO_PI);
    pg.translate(260,0);
    pg.textSize(20);
    pg.text("Data visualization", 0, 0);
    pg.popMatrix();
  }
 
    pg.fill(155, 150, 250);
  pg.arc(views[6].position.x, views[6].position.y, spreadSize, spreadSize, 0, 0.08*TWO_PI);
  if (views[6].on) {
    pg.pushMatrix();
    pg.translate(views[6].position.x, views[6].position.y);
    pg.rotate(0.04*TWO_PI);
    pg.translate(260,0);
    pg.textSize(20);
    pg.text("Media art and installation", 0, 0);
    pg.popMatrix();
  }


  pg.fill(0);
  pg.ellipse(views[6].position.x, views[6].position.y, 180, 180);

  if (views[6].on) pg.fill(255);
  else pg.fill(0, 200, 255);
  pg.textSize(90);
  pg.text("AP", views[6].position.x-55, views[6].position.y+35);


pg.popMatrix();
  pg.popStyle();

 

  //views[8]=====================================================================================================
  pg.pushStyle();
  pg.fill(0, 200, 255);
  pg.textSize(100);
  pg.text("[ Thanks! ]", views[8].position.x, views[8].position.y);
  pg.popStyle();
  //                                            Draw ends
  //===================================================================================================================== 
  for (int i=0; i<localCheckPoints.length; i++) {
    if (movingCounter!=localCheckPoints[i].viewNumber) {
      localCheckPoints[i].update();
      localCheckPoints[i].display(pg);
    }
  }

  pg.endDraw();


  //Display stuff on first layer
  background(0);
  image(pg,0,0);

  checkCheckPoints();
  publicCheckPoint.update();
  publicCheckPoint.display(g);
 
//======================================================================
//  The leap motion part
//======================================================================
  fill(255, 20);
  fingerCounter =0;
  for (Finger finger : leap.getFingerList()) {
    PVector fingerPos = leap.getTip(finger);

    fingerPosition[fingerCounter] = new PVector(fingerPos.x, fingerPos.y, fingerPos.z);
    fingerCounter++;
    //    ellipse(fingerPos.x, fingerPos.y, 10, 10);
  }
  if (fingerPosition[0]!=null && fingerCounter <=2) {
     indexPosition.x = fingerPosition[0].x;
     indexPosition.y = fingerPosition[0].y;
     indexPosition.z = fingerPosition[0].z;
  } else {
    indexPosition.x = -100;
     indexPosition.y = -100;
     indexPosition.z = -100;
  }
 
  fill(255, 0, 0, 100);
  for (int i =0; i<fingerCounter; i++) {
    ellipse(fingerPosition[i].x, fingerPosition[i].y, 10, 10);
  }
}

void slowTranslate(PVector current, PVector next) {


  print("Counter = "+movingCounter);
  print(" Start = "+views[movingCounter].position.x+","+views[movingCounter].position.y);
  print("  End = "+next.x+","+next.y);
  print("  v= "+vTranslation.x+","+vTranslation.y);
  println ("  trans= "+translation.x+","+translation.y);


  vTranslation.x = (next.x - current.x)/50;
  vTranslation.y = (next.y - current.y)/50;

  if (dist(translation.x, translation.y, next.x, next.y)<=10) {
    moving =false;


    if (!publicMove) movingCounter = localCheckPoints[triggeredCheckPoint].viewNumber;
    else {
      movingCounter +=1;
      //      if(movingCounter ==views.length) movingCounter =0;
    }
    if (movingCounter==views.length) movingCounter =0;
    vTranslation.x = 0;
    vTranslation.y = 0;
    translation.x = next.x;
    translation.y = next.y;
  }
}

void keyPressed() {
  moving= true;
}

void checkCheckPoints() {
  if (publicCheckPoint.triggered) {
    moving =true;
    publicCheckPoint.triggered =false;
  }

  for (int i = 0; i<localCheckPoints.length; i++) {
    if (localCheckPoints[i].triggered) {
      triggeredCheckPoint = i;
      moving =true;
      localCheckPoints[i].triggered =false;
    }
  }
}

class View {
  PVector position, onScreenPosition;
  boolean on;
  float rotation;

  View(PVector _pos) {
    position = new PVector(_pos.x, _pos.y, _pos.z);
    onScreenPosition = new PVector(_pos.x, _pos.y);
//    on = true;
  }

  void update() {
   
    onScreenPosition.x = translation.x+width/2 + position.x;
    onScreenPosition.y = translation.y+height/2 + position.y;
   
//    rotate(translation.z);
  }
}

class CheckPoint {
  boolean publicCheckPoint;
  PVector position, onScreenPosition;
  int counter;
  boolean triggered, mouseOut, renewed;
  int diameter, steps;
  float angleViews;
  int viewNumber;
  View viewC, viewN;

  CheckPoint(boolean _cp, PVector _p, int _d) {
    publicCheckPoint = _cp;
    position = new PVector(_p.x, _p.y);
    onScreenPosition = new PVector(_p.x, _p.y);
    diameter = _d;
    steps =30;
  }

  CheckPoint(boolean _cp, PVector _p, int _d, int _n) {
    publicCheckPoint = _cp;
    position = new PVector(_p.x, _p.y);
    onScreenPosition = new PVector(position.x, position.y);
    diameter = _d;
    steps =30;

    viewNumber = _n;
    viewN = views[_n];
  }

  void update() {
    if (!publicCheckPoint) {
      onScreenPosition.x = translation.x+width/2 + position.x;
      onScreenPosition.y = translation.y+height/2 + position.y;

      angleViews = atan2(viewN.position.y-views[movingCounter].position.y, viewN.position.x-views[movingCounter].position.x );
    }


    if (!moving && dist(indexPosition.x,indexPosition.y, onScreenPosition.x, onScreenPosition.y)<diameter/2) {
      counter++;
    }
    else {
    }

    if (counter>steps) {
      triggered =true;
      if (publicCheckPoint) publicMove =true;
      else publicMove =false;
      counter = 0;
    }
  }

  void display(PGraphics _p) {
    if (!publicCheckPoint) {
      //     _p.beginDraw();

      _p.fill(255, 100);
      _p.noStroke();
      _p.ellipse(position.x, position.y, diameter, diameter);
      _p.fill(0, 200, 255);
      _p.arc(position.x, position.y, diameter, diameter, 0, TWO_PI*counter/steps);
      _p.fill(0,100);
      _p.ellipse(position.x, position.y, diameter*0.8, diameter*0.8);

      _p.fill(0, 200, 255, 150);
      if (!moving) {     
        //     _p.ellipse(position.x, position.y, diameter*0.3,diameter*0.3);
        _p.pushMatrix();
        _p.translate(position.x, position.y);
        _p.rotate(angleViews);
        _p.rect(0, 2, diameter/2, -4);
        //     _p.rect(0,2,-diameter/2,-4);
        _p.popMatrix();
      }
      else {
        _p.rect(position.x-10, position.y-10, 5, 20);
        _p.rect(position.x+5, position.y-10, 5, 20);
      }
      //    _p.endDraw();
      //   image(_p,0,0);
    } 
    else {
      fill(255, 100);
      noStroke();
      ellipse(position.x, position.y, diameter, diameter);
      fill(0, 200, 255);
      arc(position.x, position.y, diameter, diameter, 0, TWO_PI*counter/steps);
      fill(0);
      ellipse(position.x, position.y, diameter*0.8, diameter*0.8);

      fill(0, 200, 255);
      if (!moving) {     
        triangle(position.x-7, position.y+12, position.x-7, position.y-12, position.x+12, position.y);
      }
      else {
        rect(position.x-10, position.y-10, 5, 20);
        rect(position.x+5, position.y-10, 5, 20);
      }
    }
  }
}
void movieEvent(Movie m) {
  m.read();
}

void mouseClicked() {
  publicMove =true;
  moving= true;


}

public void swipeGestureRecognized(SwipeGesture gesture) {
  if (gesture.state() == State.STATE_STOP) {
  publicMove =true;
  moving= true;
  }
  else if (gesture.state() == State.STATE_START) {
  }
  else if (gesture.state() == State.STATE_UPDATE) {
  }
}

public void stop() {
  leap.stop();
}

vinjn

  • SuperManager
  • Hero Member
  • *****
  • 帖子: 586
Re: 教案草稿_zkyscraper(待逐步更新)
« 回复 #2 于: 六月 21, 2013, 10:12:26 下午 »
这么长的代码推荐用 github

zkyscraper

  • Newbie
  • *
  • 帖子: 13
Re: 教案草稿_zkyscraper(待逐步更新)
« 回复 #3 于: 六月 22, 2013, 11:05:59 上午 »
好的!

Tags: