예제 #1
0
    // --------------------------------------------------------
    public PShape form() {

      PShape f;

      f = createShape();
      f.beginShape();
      f.noFill();
      f.stroke(0, 255, 0);
      f.strokeWeight(5);
      f.strokeJoin(ROUND);
      f.curveVertex(position.get(0).x, position.get(0).y);

      for (PVector p : position) f.curveVertex(p.x, p.y);

      f.curveVertex(position.get(position.size() - 1).x, position.get(position.size() - 1).y);
      f.endShape();

      return f;
    }
예제 #2
0
    // -------------------------------------------
    public PShape createForm() {

      PShape s = createShape();

      s.beginShape();
      s.noStroke();
      s.fill(0xffFF5757);

      for (PVector p : pointForm) s.curveVertex(p.x, p.y);

      // TO CLOSE THE FORM
      s.curveVertex(pointForm.get(0).x, pointForm.get(0).y);
      s.curveVertex(pointForm.get(1).x, pointForm.get(1).y);
      s.curveVertex(pointForm.get(2).x, pointForm.get(2).y);

      s.endShape();

      return s;
    }
예제 #3
0
    // -----------------------------------------------
    public PShape complexLeaf() {

      PShape s = createShape();

      s.beginShape();
      s.fill(0xffFF5757);
      s.noStroke();
      s.scale(ratio);

      s.rotate(angle);

      // First point
      s.curveVertex(skeleton.position.get(0).x, skeleton.position.get(0).y);
      s.curveVertex(skeleton.position.get(0).x, skeleton.position.get(0).y);

      // Middle points
      for (int i = 1; i < skeleton.position.size() - 1; i++) {

        float x = skeleton.position.get(i).x;
        float y = skeleton.position.get(i).y;

        float a = skeleton.angle.get(i);
        ;
        x += cos(a - angleVeins) * sizeVeins;
        y += sin(a - angleVeins) * sizeVeins;

        s.curveVertex(x, y);

        Veins v = new Veins(skeleton.position.get(i), new PVector(x, y));
        veins.add(v);
      }

      // Peak point
      s.curveVertex(
          skeleton.position.get(skeleton.position.size() - 1).x,
          skeleton.position.get(skeleton.position.size() - 1).y);

      // Return Middle points
      for (int i = skeleton.position.size() - 2; i >= 1; i--) {

        float x = skeleton.position.get(i).x;
        float y = skeleton.position.get(i).y;

        float a = skeleton.angle.get(i);
        x += cos(a - PI + angleVeins) * sizeVeins;
        y += sin(a - PI + angleVeins) * sizeVeins;

        s.curveVertex(x, y);

        Veins v = new Veins(skeleton.position.get(i), new PVector(x, y));
        veins.add(v);
      }

      // Last point
      s.curveVertex(skeleton.position.get(0).x, skeleton.position.get(0).y);
      s.curveVertex(skeleton.position.get(0).x, skeleton.position.get(0).y);

      s.endShape();

      return s;
    }
예제 #4
0
    // -----------------------------------------------
    public PShape stem() {

      PShape s = createShape();

      s.beginShape();
      s.noFill();
      s.stroke(255);
      s.strokeWeight(1);
      s.scale(ratio);

      s.rotate(angle);

      // First point
      s.curveVertex(skeleton.position.get(0).x, skeleton.position.get(0).y);

      // Middle points
      for (PVector p : skeleton.position) s.curveVertex(p.x, p.y);

      // Last point
      s.curveVertex(
          skeleton.position.get(skeleton.position.size() - 1).x,
          skeleton.position.get(skeleton.position.size() - 1).y);

      s.endShape();
      return s;
    }
예제 #5
0
    // -----------------------------------------------
    public PShape simpleLeaf(float ratio) {

      PShape s = createShape();

      s = createShape();
      s.beginShape();
      s.fill(c);
      s.noStroke();

      s.rotate(angle);
      s.curveVertex(0, 0);
      s.curveVertex(0, 0);
      s.curveVertex(30, -50);
      s.curveVertex(0, -100);
      s.curveVertex(-30, -50);
      s.curveVertex(0, 0);
      s.curveVertex(0, 0);
      s.scale(ratio);

      s.endShape();

      return s;
    }
예제 #6
0
    // -----------------------------------------------
    public PShape leafveins() {

      PShape master = createShape(GROUP);

      for (Veins v : veins) {

        PShape s = createShape();
        s.beginShape();
        s.noFill();
        s.stroke(255);
        s.strokeWeight(1);
        s.scale(ratio);

        s.rotate(angle);
        s.vertex(v.begin.x, v.begin.y);
        s.vertex(v.begin.x, v.begin.y);
        s.vertex(v.end.x, v.end.y);
        s.vertex(v.end.x, v.end.y);
        s.endShape();

        master.addChild(s);
      }

      return master;
    }