Package javax.vecmath

Examples of javax.vecmath.Matrix3f


  public void buildJacobian() {
    Vector3f tmp = Stack.alloc(Vector3f.class);
    Vector3f tmp1 = Stack.alloc(Vector3f.class);
    Vector3f tmp2 = Stack.alloc(Vector3f.class);
    Vector3f tmpVec = Stack.alloc(Vector3f.class);
    Matrix3f mat1 = Stack.alloc(Matrix3f.class);
    Matrix3f mat2 = Stack.alloc(Matrix3f.class);
   
    Transform centerOfMassA = rbA.getCenterOfMassTransform(Stack.alloc(Transform.class));
    Transform centerOfMassB = rbB.getCenterOfMassTransform(Stack.alloc(Transform.class));

    appliedImpulse = 0f;

    if (!angularOnly) {
      Vector3f pivotAInW = Stack.alloc(rbAFrame.origin);
      centerOfMassA.transform(pivotAInW);

      Vector3f pivotBInW = Stack.alloc(rbBFrame.origin);
      centerOfMassB.transform(pivotBInW);

      Vector3f relPos = Stack.alloc(Vector3f.class);
      relPos.sub(pivotBInW, pivotAInW);

      Vector3f[] normal/*[3]*/ = new Vector3f[]{Stack.alloc(Vector3f.class), Stack.alloc(Vector3f.class), Stack.alloc(Vector3f.class)};
      if (relPos.lengthSquared() > BulletGlobals.FLT_EPSILON) {
        normal[0].set(relPos);
        normal[0].normalize();
      }
      else {
        normal[0].set(1f, 0f, 0f);
      }

      TransformUtil.planeSpace1(normal[0], normal[1], normal[2]);

      for (int i = 0; i < 3; i++) {
        mat1.transpose(centerOfMassA.basis);
        mat2.transpose(centerOfMassB.basis);

        tmp1.sub(pivotAInW, rbA.getCenterOfMassPosition(tmpVec));
        tmp2.sub(pivotBInW, rbB.getCenterOfMassPosition(tmpVec));

        jac[i].init(
            mat1,
            mat2,
            tmp1,
            tmp2,
            normal[i],
            rbA.getInvInertiaDiagLocal(Stack.alloc(Vector3f.class)),
            rbA.getInvMass(),
            rbB.getInvInertiaDiagLocal(Stack.alloc(Vector3f.class)),
            rbB.getInvMass());
      }
    }

    // calculate two perpendicular jointAxis, orthogonal to hingeAxis
    // these two jointAxis require equal angular velocities for both bodies

    // this is unused for now, it's a todo
    Vector3f jointAxis0local = Stack.alloc(Vector3f.class);
    Vector3f jointAxis1local = Stack.alloc(Vector3f.class);

    rbAFrame.basis.getColumn(2, tmp);
    TransformUtil.planeSpace1(tmp, jointAxis0local, jointAxis1local);

    // TODO: check this
    //getRigidBodyA().getCenterOfMassTransform().getBasis() * m_rbAFrame.getBasis().getColumn(2);

    Vector3f jointAxis0 = Stack.alloc(jointAxis0local);
    centerOfMassA.basis.transform(jointAxis0);

    Vector3f jointAxis1 = Stack.alloc(jointAxis1local);
    centerOfMassA.basis.transform(jointAxis1);

    Vector3f hingeAxisWorld = Stack.alloc(Vector3f.class);
    rbAFrame.basis.getColumn(2, hingeAxisWorld);
    centerOfMassA.basis.transform(hingeAxisWorld);

    mat1.transpose(centerOfMassA.basis);
    mat2.transpose(centerOfMassB.basis);
    jacAng[0].init(jointAxis0,
        mat1,
        mat2,
        rbA.getInvInertiaDiagLocal(Stack.alloc(Vector3f.class)),
        rbB.getInvInertiaDiagLocal(Stack.alloc(Vector3f.class)));
View Full Code Here


    totalForce.set(0f, 0f, 0f);
    totalTorque.set(0f, 0f, 0f);
  }
 
  public void updateInertiaTensor() {
    Matrix3f mat1 = Stack.alloc(Matrix3f.class);
    MatrixUtil.scale(mat1, worldTransform.basis, invInertiaLocal);

    Matrix3f mat2 = Stack.alloc(worldTransform.basis);
    mat2.transpose();

    invInertiaTensorWorld.mul(mat1, mat2);
  }
View Full Code Here

          convexToLocal.set(convexToTrans.origin);
          worldTocollisionObject.transform(convexToLocal);

          // rotation of box in local mesh space = MeshRotation^-1 * ConvexToRotation
          Transform rotationXform = Stack.alloc(Transform.class);
          Matrix3f tmpMat = Stack.alloc(Matrix3f.class);
          tmpMat.mul(worldTocollisionObject.basis, convexToTrans.basis);
          rotationXform.set(tmpMat);

          BridgeTriangleConvexcastCallback tccb = new BridgeTriangleConvexcastCallback(castShape, convexFromTrans, convexToTrans, resultCallback, collisionObject, triangleMesh, colObjWorldTransform);
          tccb.hitFraction = resultCallback.closestHitFraction;
          tccb.normalInWorldSpace = true;
         
          Vector3f boxMinLocal = Stack.alloc(Vector3f.class);
          Vector3f boxMaxLocal = Stack.alloc(Vector3f.class);
          castShape.getAabb(rotationXform, boxMinLocal, boxMaxLocal);
          triangleMesh.performConvexcast(tccb, convexFromLocal, convexToLocal, boxMinLocal, boxMaxLocal);
        }
        else {
          ConcaveShape triangleMesh = (ConcaveShape)collisionShape;
          Transform worldTocollisionObject = Stack.alloc(Transform.class);
          worldTocollisionObject.inverse(colObjWorldTransform);

          Vector3f convexFromLocal = Stack.alloc(Vector3f.class);
          convexFromLocal.set(convexFromTrans.origin);
          worldTocollisionObject.transform(convexFromLocal);

          Vector3f convexToLocal = Stack.alloc(Vector3f.class);
          convexToLocal.set(convexToTrans.origin);
          worldTocollisionObject.transform(convexToLocal);

          // rotation of box in local mesh space = MeshRotation^-1 * ConvexToRotation
          Transform rotationXform = Stack.alloc(Transform.class);
          Matrix3f tmpMat = Stack.alloc(Matrix3f.class);
          tmpMat.mul(worldTocollisionObject.basis, convexToTrans.basis);
          rotationXform.set(tmpMat);

          BridgeTriangleConvexcastCallback tccb = new BridgeTriangleConvexcastCallback(castShape, convexFromTrans, convexToTrans, resultCallback, collisionObject, triangleMesh, colObjWorldTransform);
          tccb.hitFraction = resultCallback.closestHitFraction;
          tccb.normalInWorldSpace = false;
View Full Code Here

    Vector3f localCenter = Stack.alloc(Vector3f.class);
    localCenter.add(localAabbMax, localAabbMin);
    localCenter.scale(0.5f);

    Matrix3f abs_b = Stack.alloc(trans.basis);
    MatrixUtil.absolute(abs_b);

    Vector3f center = Stack.alloc(localCenter);
    trans.transform(center);

    Vector3f extent = Stack.alloc(Vector3f.class);
    abs_b.getRow(0, tmp);
    extent.x = tmp.dot(localHalfExtents);
    abs_b.getRow(1, tmp);
    extent.y = tmp.dot(localHalfExtents);
    abs_b.getRow(2, tmp);
    extent.z = tmp.dot(localHalfExtents);

    Vector3f margin = Stack.alloc(Vector3f.class);
    margin.set(getMargin(), getMargin(), getMargin());
    extent.add(margin);
View Full Code Here

    Vector3f localCenter = Stack.alloc(Vector3f.class);
    localCenter.add(localAabbMax, localAabbMin);
    localCenter.scale(0.5f);

    Matrix3f abs_b = Stack.alloc(trans.basis);
    MatrixUtil.absolute(abs_b);

    Vector3f center = Stack.alloc(localCenter);
    trans.transform(center);

    Vector3f extent = Stack.alloc(Vector3f.class);
    Vector3f tmp = Stack.alloc(Vector3f.class);
    abs_b.getRow(0, tmp);
    extent.x = tmp.dot(localHalfExtents);
    abs_b.getRow(1, tmp);
    extent.y = tmp.dot(localHalfExtents);
    abs_b.getRow(2, tmp);
    extent.z = tmp.dot(localHalfExtents);

    aabbMin.sub(center, extent);
    aabbMax.add(center, extent);
  }
View Full Code Here

//    btQuaternion orn0 = transform0.getRotation();
//    btQuaternion orn1a = transform1.getRotation();
//    btQuaternion orn1 = orn0.farthest(orn1a);
//    btQuaternion dorn = orn1 * orn0.inverse();
// #else
    Matrix3f tmp = Stack.alloc(Matrix3f.class);
    tmp.set(transform0.basis);
    MatrixUtil.invert(tmp);

    Matrix3f dmat = Stack.alloc(Matrix3f.class);
    dmat.mul(transform1.basis, tmp);

    Quat4f dorn = Stack.alloc(Quat4f.class);
    MatrixUtil.getRotation(dmat, dorn);
// #endif

View Full Code Here

  }
 
  public void invXform(Vector3f inVec, Vector3f out) {
    out.sub(inVec, origin);

    Matrix3f mat = Stack.alloc(basis);
    mat.transpose();
    mat.transform(out);
  }
View Full Code Here

    Vector3f halfExtentsWithMargin = Stack.alloc(Vector3f.class);
    halfExtentsWithMargin.x = halfExtents.x + margin;
    halfExtentsWithMargin.y = halfExtents.y + margin;
    halfExtentsWithMargin.z = halfExtents.z + margin;

    Matrix3f abs_b = Stack.alloc(t.basis);
    MatrixUtil.absolute(abs_b);

    Vector3f tmp = Stack.alloc(Vector3f.class);

    Vector3f center = Stack.alloc(t.origin);
    Vector3f extent = Stack.alloc(Vector3f.class);
    abs_b.getRow(0, tmp);
    extent.x = tmp.dot(halfExtentsWithMargin);
    abs_b.getRow(1, tmp);
    extent.y = tmp.dot(halfExtentsWithMargin);
    abs_b.getRow(2, tmp);
    extent.z = tmp.dot(halfExtentsWithMargin);

    aabbMinOut.sub(center, extent);
    aabbMaxOut.add(center, extent);
  }
View Full Code Here

    Vector3f localCenter = Stack.alloc(Vector3f.class);
    localCenter.add(localAabbMax, localAabbMin);
    localCenter.scale(0.5f);

    Matrix3f abs_b = Stack.alloc(trans.basis);
    MatrixUtil.absolute(abs_b);

    Vector3f center = Stack.alloc(localCenter);
    trans.transform(center);

    Vector3f extent = Stack.alloc(Vector3f.class);
    Vector3f tmp = Stack.alloc(Vector3f.class);

    abs_b.getRow(0, tmp);
    extent.x = tmp.dot(localHalfExtents);
    abs_b.getRow(1, tmp);
    extent.y = tmp.dot(localHalfExtents);
    abs_b.getRow(2, tmp);
    extent.z = tmp.dot(localHalfExtents);

    aabbMinOut.sub(center, extent);
    aabbMaxOut.add(center, extent);
  }
View Full Code Here

    Vector3f localCenter = Stack.alloc(Vector3f.class);
    localCenter.add(localAabbMax, localAabbMin);
    localCenter.scale(0.5f);

    Matrix3f abs_b = Stack.alloc(trans.basis);
    MatrixUtil.absolute(abs_b);

    Vector3f center = Stack.alloc(localCenter);
    trans.transform(center);

    Vector3f tmp = Stack.alloc(Vector3f.class);

    Vector3f extent = Stack.alloc(Vector3f.class);
    abs_b.getRow(0, tmp);
    extent.x = tmp.dot(localHalfExtents);
    abs_b.getRow(1, tmp);
    extent.y = tmp.dot(localHalfExtents);
    abs_b.getRow(2, tmp);
    extent.z = tmp.dot(localHalfExtents);

    aabbMin.sub(center, extent);
    aabbMax.add(center, extent);
  }
View Full Code Here

TOP

Related Classes of javax.vecmath.Matrix3f

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.