Package toxi.geom.mesh

Examples of toxi.geom.mesh.TriangleMesh


      super(ID);
    }

    public void draw(PGraphics g, GmlStroke stroke, float scale, float minTime, float maxTime) {

      TriangleMesh mesh = buildMesh(stroke, minTime, maxTime);
      mesh.scale(scale);

      g.pushMatrix();
      g.pushStyle();

      // Style
View Full Code Here


    }


    // TODO move that to an Helper
    private TriangleMesh buildMesh(GmlStroke stroke, float minTime, float maxTime) {
      TriangleMesh mesh = new TriangleMesh("");

      if (stroke.getPoints().size() > 0) { 

        GmlPoint prev = new GmlPoint();
        GmlPoint pos = new GmlPoint();
        Vec3D a = new Vec3D();
        Vec3D b = new Vec3D();
        Vec3D p = new Vec3D();
        Vec3D q = new Vec3D();
        float weight = 0;

        prev.set(stroke.getPoints().get(0));

        float curPoint = 1;

        for (GmlPoint point: stroke.getPoints()) {
          if (point.time < minTime) continue;
          if (point.time > maxTime) break;
          pos.set(point);

          // use distance to previous point as target stroke weight
          //weight += (pos.distanceTo(prev)*4-weight)*0.1;
          weight = 0.025f;

          // define offset points for the triangle strip
          a.set(pos);
          b.set(pos);
          a.addSelf(0, weight, curPoint * .0005f);
          b.addSelf(0, -weight, curPoint * .0005f);

          if (!q.isZeroVector() && !p.isZeroVector()) {
            // add 2 faces to the mesh
            mesh.addFace(p, b, q);
            mesh.addFace(p, b, a);
          }

          // store current points for next iteration
          prev.set(pos);
          p.set(a);
          q.set(b);
          ++curPoint;
        }
      }
      mesh.computeVertexNormals();
      return mesh;
    }
View Full Code Here

    }


    @Override
      public void draw(PGraphics g, GmlStroke stroke, float scale, float minTime, float maxTime) {
      TriangleMesh mesh = buildMesh(stroke, minTime, maxTime);
      mesh.scale(scale);

      g.pushMatrix();
      g.pushStyle();

      g.beginShape(PConstants.TRIANGLES);
View Full Code Here

      g.popMatrix();
    }

    // TODO move that to an Helper
    private TriangleMesh buildMesh(GmlStroke stroke, float minTime, float maxTime) {
      TriangleMesh mesh = new TriangleMesh("");

      if (stroke.getPoints().size() > 0) { 

        GmlPoint pos = new GmlPoint();
        Vec3D a = new Vec3D();
        Vec3D b = new Vec3D();
        Vec3D p = new Vec3D();
        Vec3D q = new Vec3D();
        float weight = 0.25f;

        float curPoint = 1;

        for (GmlPoint point: stroke.getPoints()) {
          if (point.time < minTime) continue;
          if (point.time > maxTime) break;

          pos.set(point);

          // define offset points for the triangle strip
          a.set(pos);
          b.set(pos);

          float angle = point.rotation.z;

          Vec3D aShift = new Vec3D(weight/2 * (float) Math.sin(Math.PI * angle - .25f), weight/2 * (float) Math.cos(Math.PI * angle - .25f), (curPoint+1) * .0005f);
          Vec3D bShift = new Vec3D(weight/2 * (float) Math.sin(Math.PI * angle + .25f), weight/2 * (float) Math.cos(Math.PI * angle + .25f), (curPoint+1) * .0005f);

          a.addSelf(aShift);
          b.addSelf(bShift);

          if (!q.isZeroVector() && !p.isZeroVector()) {
            // add 2 faces to the mesh
            mesh.addFace(p, b, q);
            mesh.addFace(p, b, a);
          }

          // store current points for next iteration
          p.set(a);
          q.set(b);
          ++curPoint;
        }
      }
      mesh.computeVertexNormals();
      return mesh;
    }
View Full Code Here

    super(ID);
  }

  public void draw(PGraphics g, GmlStroke stroke, float scale, float minTime, float maxTime) {

    TriangleMesh mesh = buildMesh(stroke, minTime, maxTime);
    mesh.scale(scale);

    g.pushMatrix();
    g.pushStyle();

    // Style
View Full Code Here

  }


  // TODO move that to an Helper
  private static TriangleMesh buildMesh(GmlStroke stroke, float minTime, float maxTime) {
    TriangleMesh mesh = new TriangleMesh("");

    if (stroke.getPoints().size() > 0) { 

      GmlPoint prev = new GmlPoint();
      GmlPoint pos = new GmlPoint();
      Vec3D a = new Vec3D();
      Vec3D b = new Vec3D();
      Vec3D p = new Vec3D();
      Vec3D q = new Vec3D();
      float weight = 0;

      prev.set(stroke.getPoints().get(0));

      for (GmlPoint point: stroke.getPoints()) {
        if (point.time < minTime) continue;
        if (point.time > maxTime) break;
        pos.set(point);

        // use distance to previous point as target stroke weight
        weight += (pos.distanceTo(prev)*4-weight)*0.1;

        // define offset points for the triangle strip
        a.set(pos);
        b.set(pos);
        a.addSelf(0, 0, weight);
        b.addSelf(0, 0, -weight);

        // add 2 faces to the mesh
        mesh.addFace(p,b,q);
        mesh.addFace(p, b, a);

        // store current points for next iteration
        prev.set(pos);
        p.set(a);
        q.set(b);
     
    }
    mesh.computeVertexNormals();
    return mesh;
  }
View Full Code Here

    }

    public Mesh3D createControlMesh(Mesh3D mesh) {
        Vec3D[] prev = null;
        if (mesh == null) {
            mesh = new TriangleMesh();
        }
        int resU = surf.getControlNet().uLength();
        int resV = surf.getControlNet().vLength();
        Vec2D dUV = maxUV.scale(1f / resU, 1f / resV);
        for (int u = 0; u < resU; u++) {
View Full Code Here

        double iresU = knotU.get(knotU.length() - 1) / resU;
        double iresV = knotV.get(knotV.length() - 1) / resV;
        Vec3D[] prev = null;
        Vec3D[] first = null;
        if (mesh == null) {
            mesh = new TriangleMesh();
        }
        Vec2D dUV = maxUV.scale(1f / resU, 1f / resV);
        for (int u = 0; u <= resU; u++) {
            Vec3D[] curr = new Vec3D[resV + 1];
            for (int v = 0; v <= resV; v++) {
View Full Code Here

        return toMesh(null);
    }

    public Mesh3D toMesh(Mesh3D mesh) {
        if (mesh == null) {
            mesh = new TriangleMesh("aabb", 8, 12);
        }
        Vec3D a = min;
        Vec3D g = max;
        Vec3D b = new Vec3D(a.x, a.y, g.z);
        Vec3D c = new Vec3D(g.x, a.y, g.z);
View Full Code Here

        return toMesh(mesh, null, 0);
    }

    public Mesh3D toMesh(Mesh3D mesh, Vec2D centroid2D, float extrude) {
        if (mesh == null) {
            mesh = new TriangleMesh();
        }
        final int num = vertices.size();
        if (centroid2D == null) {
            centroid2D = getCentroid();
        }
View Full Code Here

TOP

Related Classes of toxi.geom.mesh.TriangleMesh

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.