Package processing.core

Examples of processing.core.PVector


   */
  @Test
  public void test_applyProjection() {
    MyBeing being1 = new MyBeing(zeroVector(), zeroVector(), 1, 1);
    MyBeing being2 = new MyBeing(makeVector(1, 0), zeroVector(), 1, 1);
    PVector projection = being1.getShape().projectionVector(being2.getShape());
    assertEquals(projection.x, 1, 1e-8);
    assertEquals(projection.y, 0, 1e-8);
    ImpulseCollision collision = new ImpulseCollision(being1, being2, projection, 1.0f);
    collision.calculateDisplacement();
    collision.applyDisplacement();
View Full Code Here


  }
 
  public boolean detect(MassedBeing being1, MassedBeing being2) {
    if(being1 == being2) // no self-interaction
      return false;
    PVector r = PVector.sub(being1.getPosition(), being2.getPosition());
    float d_squared = r.dot(r);
    // check if the distance is within the maximum range
    return d_squared <= _maxRangeSquared && d_squared != 0;
  }
View Full Code Here

    return d_squared <= _maxRangeSquared && d_squared != 0;
  }

  public void handle(MassedBeing being1, MassedBeing being2) {
    // F = k * q1 * q2 / r^2
    PVector r = PVector.sub(being2.getPosition(), being1.getPosition());
    double d_squared = (double)r.dot(r);
    double F = _k * beingFactor(being1) * beingFactor(being2) / d_squared;
    r.normalize();
    PVector force = PVector.mult(r, (float)F);
    being2.addForce(force);
    being1.addForce(reverse(force));
  }
View Full Code Here

      return false;
    }
   
    // find the projection vector between the bounding boxes of the beings
    // NOTE: always call on smallerBeing -- gives projection vector back IN to biggerBeing
    PVector projection = biggerBeing.getBoundingBox().projectionVector(smallerBeing.getBoundingBox());
   
    if(projection == null || being1==being2) {
      return false// if they aren't colliding
    }
    if(projection.x==0 && Math.abs(projection.y)<smallerBeingHeight) {
      projection.sub(makeVector(0, smallerBeingHeight * sign(projection.y)));
      MassedBeing.addImpulseCollision(biggerBeing, smallerBeing, projection);
      return true;
    } else if (projection.y==0 && Math.abs(projection.x)<smallerBeingWidth) {
      projection.sub(makeVector(smallerBeingWidth * sign(projection.x), 0));
      MassedBeing.addImpulseCollision(biggerBeing, smallerBeing, projection);
      return true;
    }
    else
      return false;
View Full Code Here

    _elasticity = new Float(elasticity);
  }
 
  public boolean detect(A being1, B being2) {
    // find the projection vector between the beings
    PVector projection = being1.getShape().projectionVector(being2.getShape());
    if(projection == null)
      return false// if they aren't colliding
    // store the collision
    if(_elasticity == null)
      MassedBeing.addImpulseCollision(being1, being2, projection);
View Full Code Here

    assert v1 != null : "Physics.calculateImpulse: v1 must be a valid PVector";
    assert v2 != null : "Physics.calculateImpulse: v2 must be a valid PVector";
    assert normal != null : "Physics.calculateImpulse: normal must be a valid PVector";
    assert !(normal.x == 0 && normal.y == 0) : "Physics.calculateImpulse: normal must be nonzero";
   
    PVector numerator = PVector.sub(v2, v1); // calculate relative velocity
    numerator.mult(-1 - elasticity);      // factor by elasticity
    float result = numerator.dot(normal);    // find normal component
    result /= normal.dot(normal);       // normalize
    result /= (1 / m1 + 1 / m2);       // factor in mass
   
    return PVector.mult(normal, result);
  }
View Full Code Here

  }


  void addVertex(float x, float y, float z, float u, float v)
  {
    PVector vert = new PVector(x, y, z);
    PVector texCoord = new PVector(u, v);
    PVector vertNorm = PVector.div(vert, vert.mag());

    vertices.add(vert);
    texCoords.add(texCoord);
    normals.add(vertNorm);
  }
View Full Code Here

  }


  void addVertex(float x, float y, float z, float u, float v)
  {
    PVector vert = new PVector(x, y, z);
    PVector texCoord = new PVector(u, v);
    PVector vertNorm = PVector.div(vert, vert.mag());

    vertices.add(vert);
    texCoords.add(texCoord);
    normals.add(vertNorm);
  }
View Full Code Here

    _points = points;
   
    //Create the list of lines in the polygon
    _axes = new ArrayList<PVector>();
    Iterator<PVector> pit = _points.iterator();
    PVector first = pit.next();
    PVector pre2 = first;
    PVector second = pit.next();
    PVector pre = second;
    while(pit.hasNext()) {
      PVector p = pit.next();
      addAxis(p, pre, pre2);
      pre2 = pre;
      pre = p;
    }
View Full Code Here

    _points = (ArrayList<PVector>) Arrays.asList(points);
   
    //Create the list of lines in the polygon
    _axes = new ArrayList<PVector>();
    Iterator<PVector> pit = _points.iterator();
    PVector first = pit.next();
    PVector pre2 = first;
    PVector second = pit.next();
    PVector pre = second;
    while(pit.hasNext()) {
      PVector p = pit.next();
      addAxis(p, pre, pre2);
      pre2 = pre;
      pre = p;
    }
View Full Code Here

TOP

Related Classes of processing.core.PVector

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.