Package toxi.geom

Examples of toxi.geom.Vec3D


    assertTrue("scale on y : ", scaler.equalsWithTolerance(new Vec3D(15f, 50, 25), .000001f));       
  }

  @Test
  public void testGetFitInside2DXYDifferentYLarger() {
    Vec3D container = new Vec3D(100, 200, 100);
    Vec3D aspectRatio = new Vec3D(1, .3f, .5f);
    float ratio = .5f;
    Vec3D scaler = Vec3DUtils.getFitInside2DXY(container, aspectRatio, ratio);
    assertTrue("scale on y : ", scaler.equalsWithTolerance(new Vec3D(50, 15, 25), .000001f));           
  }
View Full Code Here


    mesh.clear();

    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;

    for (GmlPoint point: points) {
      if (prev.isZeroVector()) {
        prev.set(point);
      }
      pos.set(point);
      // use distance to previous point as target stroke weight
      weight += (Math.sqrt(pos.distanceTo(prev))*2-weight)*0.1;

      /*weight = 0;
      if(pos.time- prev.time != 0) {
        weight = pos.distanceTo(prev);
      }*/

      // TODO set an upper limit to weight

      // 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,a,b);

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

   * @param v - vector
   * @return vector which can be used to scale
   */
  public static Vec3D getScalingCoef(final Vec3D v) {
    float coef = getLongestAxisSize(v);
    Vec3D vCoef = new Vec3D(coef, coef, coef);
    return vCoef;
  }
View Full Code Here

   * with a tolerance of .0000001
   * @param v - vector
   * @return boolean
   */
  public static boolean isNormalized(Vec3D v) {
    Vec3D min = new Vec3D(-0.0000001f, -0.0000001f, -0.0000001f);
    Vec3D max = new Vec3D(1.0000001f, 1.0000001f, 1.0000001f);
    if (v.isInAABB(AABB.fromMinMax(min, max)))
    return true;
    LOGGER.log(Level.FINEST, v+" doesn't fit in "+ min + "/" + max);
    return false;
  }
View Full Code Here

   * to a max of 1 in either x, y or z axis
   * @param v - vector
   * @return vector normalizer
   */
  public static Vec3D getNormalizer(final Vec3D v) {
    Vec3D vCoef = getScalingCoef(v).getReciprocal();
    return vCoef;
  }
View Full Code Here

   * Returns a normalized vector to a max of 1 in either x, y or z axis
   * @param v - vector
   * @return normalized vector
   */
  public static Vec3D getNormalized(final Vec3D v) {
    Vec3D normalized = v.scale(getNormalizer(v));
    return normalized;
  }
View Full Code Here

   
    if (!Vec3DUtils.isNormalized(v)) {
      LOGGER.log(Level.FINEST, v + " is not normalized. Might end up with incorrect rotation");
    }
   
    Vec3D translation = new Vec3D();

    // X
    if (Math.abs(up.x) == 1) {

      // Change the centroid
     
      translation.set(centroid.x, centroid.y, centroid.z);
     
      // X = 1
      if (up.x == 1) {
        transpose(v, translation, Vec3D.Z_AXIS, (float) -Math.PI/2);
      }
      // X = -1
      else {
        transpose(v, translation, Vec3D.Z_AXIS, (float) Math.PI/2);
      }
    }
    // Y
    else if (Math.abs(up.y) == 1) {

      translation.set(centroid.x, centroid.y, centroid.z);
     
      // Y = 1
      if (up.y == 1) {
        transpose(v, translation, Vec3D.Z_AXIS, (float) Math.PI);
      }
      // Y = -1
      // Do nothing
    }
    // Z
    else {

      // Z = 1
      if (up.z == 1) {
        v.addSelf(new Vec3D(0, 0, -centroid.z*2));
        translation.set(0, 0, 0f);
        transpose(v, translation, Vec3D.X_AXIS, (float) Math.PI/2);
      }
      //Z = -1
      else {
        translation.set(centroid.x, 0, centroid.z);
        transpose(v, translation, Vec3D.Y_AXIS, (float) Math.PI);
        translation.set(0, 0, 0);
        transpose(v, translation, Vec3D.X_AXIS, (float) Math.PI/2);
        v.addSelf(0, 1f, 0);   
      }
    }
  }
View Full Code Here

   * @param up - current up vector
   */

  public static void reorient(Vec3D v, final Vec3D up) {
   
    Vec3D centroid = new Vec3D(0.5f, 0.5f, 0.5f);
    Vec3D upTarget = new Vec3D(0, -1, 0);
   
    reorient(v, centroid, up, upTarget)
  }
View Full Code Here

   */
  public static Vec3D getGraffScale(Vec3D screen, GmlEnvironment environment, float screenGraffRatio) {

    // TODO refactor and optimize
   
    Vec3D graffScale = new Vec3D(1, 1, 1);

    Vec3D up = environment.up;   
    Vec3D screenBounds = environment.screenBounds;
   
    float screenRatio = screen.x/screen.y;
    LOGGER.log(Level.FINEST, "screen ratio: "+screenRatio);
   
    // Remap the graff to the screen
View Full Code Here

   * @param param - String
   * @return Vec3D
   */
  public final Vec3D getVec3D(String param) {
    try {
      Vec3D v = (Vec3D) map.get(param);
      return v;
    }
    catch (Exception e) {
      LOGGER.log(Level.FINEST, "Returning null. Reason: "+ param +" value is not a Vec3D");
      return null;
View Full Code Here

TOP

Related Classes of toxi.geom.Vec3D

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.