/** * <code>mult</code> multiplies this quaternion by a parameter scalar. The * result is returned as a new quaternion. * * @param scalar * the quaternion to multiply this quaternion by. * @return the new quaternion. */ public Quaternion mult(float scalar) { return new Quaternion(scalar * x, scalar * y, scalar * z, scalar * w); }
/** * <code>subtract</code> subtracts the values of the parameter quaternion * from those of this quaternion. The result is returned as a new * quaternion. * * @param q * the quaternion to subtract from this. * @return the new quaternion. */ public Quaternion subtract(Quaternion q) { return new Quaternion(x - q.x, y - q.y, z - q.z, w - q.w); }
private Quaternion cq(OVRQuatf in) { // TODO do we want to reuse quaternions rather than making new ones? // TODO OpenVRInput does this, but it will probably cause some bugs. return OculusVR.quatO2J(in, new Quaternion()); // This also fixes the coordinate space transform issues. }
/** * Copy this object's orientation to a quaternion. * * @return a new quaternion (not null) */ public Quaternion getPhysicsRotation() { Quaternion quat = new Quaternion(); getPhysicsRotation(objectId, quat); return quat; }
public static com.jme3.math.Quaternion convert(javax.vecmath.Quat4f oldQuat) { com.jme3.math.Quaternion newQuat = new com.jme3.math.Quaternion(); convert(oldQuat, newQuat); return newQuat; }
/** * Stores this rotation value into the given Quaternion. If quat is null, a new Quaternion is created to * hold the value. The value, once stored, is returned. * @param quat The store location for this matrix's rotation. * @return The value of this matrix's rotation. */ public Quaternion getRotation(Quaternion quat) { if (quat==null) quat=new Quaternion(); quat.set(rot); return quat; }
/** * Copy this body's orientation to a quaternion. * * @return a new quaternion (not null) */ public Quaternion getPhysicsRotation() { Quaternion quat = new Quaternion(); getPhysicsRotation(objectId, quat); return quat; }
private static Quaternion toQuat(float ax1v, Vector3f ax1, float ax2v, Vector3f ax2, float ax3v, Vector3f ax3) { // TODO It has some potential in optimization Quaternion q1 = new Quaternion().fromAngleNormalAxis(ax1v, ax1); Quaternion q2 = new Quaternion().fromAngleNormalAxis(ax2v, ax2); Quaternion q3 = new Quaternion().fromAngleNormalAxis(ax3v, ax3); return q1.multLocal(q2).multLocal(q3); } }
@Override public void simpleUpdate(float tpf) { Quaternion quat=new Quaternion(); cam.lookAt(vehicle.getPhysicsLocation(), Vector3f.UNIT_Y); }
/** * Gets the physics object rotation as a quaternion, converts the bullet Matrix3f value * @param rotation the rotation of the actual physics object is stored in this Quaternion */ public Quaternion getPhysicsRotation(Quaternion rotation){ if (rotation == null) { rotation = new Quaternion(); } rBody.getCenterOfMassTransform(tempTrans); return Converter.convert(tempTrans.basis, rotation); }
@Override public void simpleUpdate(float tpf){ Quaternion q = new Quaternion(); angle += tpf; angle %= FastMath.TWO_PI; q.fromAngles(angle, 0, angle); offBox.setLocalRotation(q); offBox.updateLogicalState(tpf); offBox.updateGeometricState(); }
@Override public void simpleUpdate(float tpf){ Quaternion q = new Quaternion(); angle += tpf; angle %= FastMath.TWO_PI; q.fromAngles(angle, 0, angle); offBox.setLocalRotation(q); offBox.updateLogicalState(tpf); offBox.updateGeometricState(); } }
@Override public void simpleUpdate(float tpf){ // Rotate around X axis Quaternion rotate = new Quaternion(); rotate.fromAngleAxis(tpf, Vector3f.UNIT_X); // Combine rotation with previous rotation.multLocal(rotate); // Set new rotation into bone bone.setUserTransforms(Vector3f.ZERO, rotation, Vector3f.UNIT_XYZ); // After changing skeleton transforms, must update world data skeleton.updateWorldVectors(); }
@Override public void simpleUpdate(float tpf){ Quaternion q = new Quaternion(); if (offView.isEnabled()) { angle += tpf; angle %= FastMath.TWO_PI; q.fromAngles(angle, 0, angle); offBox.setLocalRotation(q); offBox.updateLogicalState(tpf); offBox.updateGeometricState(); } }
private void initView() { viewPort.setBackgroundColor(ColorRGBA.DarkGray); cam.setLocation(new Vector3f(8.569681f, 3.335546f, 5.4372444f)); cam.setRotation(new Quaternion(-0.07608022f, 0.9086564f, -0.18992864f, -0.3639813f)); flyCam.setMoveSpeed(10); }
@Override public void simpleInitApp() { cam.setLocation(new Vector3f(27.492603f, 29.138166f, -13.232513f)); cam.setRotation(new Quaternion(0.25168246f, -0.10547892f, 0.02760565f, 0.96164864f)); flyCam.setMoveSpeed(30); setupLighting(); setupFloor(); setupSignpost(); }
@Override public void simpleInitApp() { cam.setLocation(new Vector3f(27.492603f, 29.138166f, -13.232513f)); cam.setRotation(new Quaternion(0.25168246f, -0.10547892f, 0.02760565f, 0.96164864f)); flyCam.setMoveSpeed(30); setupLighting(); setupFloor(); setupSignpost(); } float angle;
@Override public void simpleInitApp() { cam.setLocation(new Vector3f(-32.295086f, 54.80136f, 79.59805f)); cam.setRotation(new Quaternion(0.074364014f, 0.92519957f, -0.24794696f, 0.27748522f)); setupLighting(); setupSkyBox(); setupFloor(); setupSignpost(); setupFilters(); initInput(); }
private static Quaternion spline(Quaternion qnm1, Quaternion qn, Quaternion qnp1, Quaternion store, Quaternion tmp) { Quaternion invQn = new Quaternion(-qn.x, -qn.y, -qn.z, qn.w); log(invQn.mult(qnp1), tmp); log(invQn.mult(qnm1), store); store.addLocal(tmp).multLocal(-1f / 4f); exp(store, tmp); store.set(qn).multLocal(tmp); return store.normalizeLocal(); //return qn * (((qni * qnm1).log() + (qni * qnp1).log()) / -4).exp(); }
/** * Forcefully takes over Camera adding functionality and placing it behind the character * @param tpf Tickes Per Frame */ private void camTakeOver(float tpf) { cam.setLocation(player.getLocalTranslation().add(-8, 2, 0)); cam.lookAt(player.getLocalTranslation(), Vector3f.UNIT_Y); Quaternion rot = new Quaternion(); rot.fromAngleNormalAxis(camAngle, Vector3f.UNIT_Z); cam.setRotation(cam.getRotation().mult(rot)); camAngle *= FastMath.pow(.99f, fpsRate * tpf); }