/** * Read this body's angular factor for the X axis. * * @return the angular factor */ public float getAngularFactor() { return getAngularFactor(null).getX(); }
/** * Writes the value to the data buffer. * * @param data the data buffer. * @param value the value. */ protected void write(final ByteBuffer data, final Vector3f value) { if (value == null) { data.putLong(0).putInt(0); } else { data.putFloat(value.getX()) .putFloat(value.getY()) .putFloat(value.getZ()); } if (layout == Layout.std140) { data.putInt(0); } }
/** * Apply a scale to this matrix. * * @param scale * the scale to apply */ public void scale(Vector3f scale) { m00 *= scale.getX(); m10 *= scale.getX(); m20 *= scale.getX(); m30 *= scale.getX(); m01 *= scale.getY(); m11 *= scale.getY(); m21 *= scale.getY(); m31 *= scale.getY(); m02 *= scale.getZ(); m12 *= scale.getZ(); m22 *= scale.getZ(); m32 *= scale.getZ(); }
@Override protected void serialize(int i, Vector3f store) { int j = i*getTupleSize(); array[j] = store.getX(); array[j+1] = store.getY(); array[j+2] = store.getZ(); }
/** * The method updates the geometry according to the poitions of the bones. */ public void updateGeometry() { VertexBuffer vb = this.getBuffer(Type.Position); FloatBuffer posBuf = this.getFloatBuffer(Type.Position); posBuf.clear(); for (int i = 0; i < skeleton.getBoneCount(); ++i) { Bone bone = skeleton.getBone(i); Vector3f head = bone.getModelSpacePosition(); posBuf.put(head.getX()).put(head.getY()).put(head.getZ()); if (boneLengths != null) { Vector3f tail = head.add(bone.getModelSpaceRotation().mult(Vector3f.UNIT_Y.mult(boneLengths.get(i)))); posBuf.put(tail.getX()).put(tail.getY()).put(tail.getZ()); } } posBuf.flip(); vb.updateData(posBuf); this.updateBound(); }
/** * The method updates the geometry according to the positions of the bones. */ public void updateGeometry() { VertexBuffer vb = this.getBuffer(Type.Position); FloatBuffer posBuf = this.getFloatBuffer(Type.Position); posBuf.clear(); for (int i = 0; i < skeleton.getBoneCount(); ++i) { Bone bone = skeleton.getBone(i); Vector3f head = bone.getModelSpacePosition(); posBuf.put(head.getX()).put(head.getY()).put(head.getZ()); if (boneLengths != null) { Vector3f tail = head.add(bone.getModelSpaceRotation().mult(Vector3f.UNIT_Y.mult(boneLengths.get(i)))); posBuf.put(tail.getX()).put(tail.getY()).put(tail.getZ()); } } posBuf.flip(); vb.updateData(posBuf); this.updateBound(); } }
for (Iterator<Vector3f> it = spline.getControlPoints().iterator(); it.hasNext();) { Vector3f vector3f = it.next(); array[i] = vector3f.getX(); i++; array[i] = vector3f.getY();
for (int j = 1; j < nbSubSegments; j++) { spline.interpolate((float) j / nbSubSegments, cptCP, temp); array[i] = temp.getX(); i++; array[i] = temp.getY();
for (int j = 1; j < nbSubSegments; ++j) { spline.interpolate((float) j / nbSubSegments, currentControlPoint, temp); array[lineIndex++] = temp.getX(); array[lineIndex++] = temp.getY(); array[lineIndex++] = temp.getZ();
/** * Randomly Places a cube on the map between 30 and 90 paces away from player */ private void randomizeCube() { Geometry cube = fcube.clone(); int playerX = (int) player.getLocalTranslation().getX(); int playerZ = (int) player.getLocalTranslation().getZ(); // float x = FastMath.nextRandomInt(playerX + difficulty + 10, playerX + difficulty + 150); float x = FastMath.nextRandomInt(playerX + difficulty + 30, playerX + difficulty + 90); float z = FastMath.nextRandomInt(playerZ - difficulty - 50, playerZ + difficulty + 50); cube.getLocalTranslation().set(x, 0, z); // playerX+difficulty+30,playerX+difficulty+90 Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); if (!solidBox){ mat.getAdditionalRenderState().setWireframe(true); } mat.setColor("Color", obstacleColors.get(FastMath.nextRandomInt(0, obstacleColors.size() - 1))); cube.setMaterial(mat); rootNode.attachChild(cube); cubeField.add(cube); }
/** * The method updates the geometry according to the poitions of the bones. */ public void updateGeometry() { VertexBuffer vb = this.getBuffer(Type.Position); FloatBuffer posBuf = this.getFloatBuffer(Type.Position); posBuf.clear(); for (int i = 0; i < skeleton.getBoneCount(); ++i) { Bone bone = skeleton.getBone(i); Vector3f parentTail = bone.getModelSpacePosition().add(bone.getModelSpaceRotation().mult(Vector3f.UNIT_Y.mult(boneLengths.get(i)))); for (Bone child : bone.getChildren()) { Vector3f childHead = child.getModelSpacePosition(); Vector3f v = childHead.subtract(parentTail); float pointDelta = v.length() / POINT_AMOUNT; v.normalizeLocal().multLocal(pointDelta); Vector3f pointPosition = parentTail.clone(); for (int j = 0; j < POINT_AMOUNT; ++j) { posBuf.put(pointPosition.getX()).put(pointPosition.getY()).put(pointPosition.getZ()); pointPosition.addLocal(v); } } } posBuf.flip(); vb.updateData(posBuf); this.updateBound(); }
/** * <code>whichSide</code> takes a plane (typically provided by a view * frustum) to determine which side this bound is on. * * @param plane * the plane to check against. */ public Plane.Side whichSide(Plane plane) { float radius = FastMath.abs(xExtent * plane.getNormal().getX()) + FastMath.abs(yExtent * plane.getNormal().getY()) + FastMath.abs(zExtent * plane.getNormal().getZ()); float distance = plane.pseudoDistance(center); //changed to < and > to prevent floating point precision problems if (distance < -radius) { return Plane.Side.Negative; } else if (distance > radius) { return Plane.Side.Positive; } else { return Plane.Side.None; } }
double xDistance = difference(xCentre, posVec.getX()); double yDistance = difference(worldCentre.getZ(), posVec.getZ()); double lonDistanceInDegrees = (xDistance * minutesPerWorldUnit) / 60; lat = findLat(mp, 0.0, 85.0); lon = (posVec.getX() < xCentre ? centre.getLongitude() - lonDistanceInDegrees : centre.getLongitude() + lonDistanceInDegrees);
private String formatValue(MatParam param) { Object value = param.getValue(); if (value == null) { return null; } switch (param.getVarType()) { case Vector2: Vector2f v2 = (Vector2f) value; return v2.getX() + " " + v2.getY(); case Vector3: Vector3f v3 = (Vector3f) value; return v3.getX() + " " + v3.getY() + " " + v3.getZ(); case Vector4: if (value instanceof ColorRGBA) { ColorRGBA c = (ColorRGBA) value; return c.getRed() + " " + c.getGreen() + " " + c.getBlue() + " " + c.getAlpha(); } else { Vector4f v4 = (Vector4f) value; return v4.getX() + " " + v4.getY() + " " + v4.getZ() + " " + v4.getW(); } default: return value.toString(); } } }
case Vector3: Vector3f v3 = (Vector3f) val; return v3.getX() + " " + v3.getY() + " " + v3.getZ(); case Vector4:
public CollisionResult collideWithSweepSphere(SweepSphere other){ temp1.set(velocity).subtractLocal(other.velocity); temp2.set(center).subtractLocal(other.center); temp3.set(dimension).addLocal(other.dimension); // delta V // delta C // Rsum float a = temp1.lengthSquared(); float b = 2f * temp1.dot(temp2); float c = temp2.lengthSquared() - temp3.getX() * temp3.getX(); float t = getLowestRoot(a, b, c, 1); // no collision if (Float.isNaN(t)) return null; CollisionResult result = new CollisionResult(); result.setDistance(velocity.length() * t); temp1.set(velocity).multLocal(t).addLocal(center); temp2.set(other.velocity).multLocal(t).addLocal(other.center); temp3.set(temp2).subtractLocal(temp1); // temp3 contains center to other.center vector // normalize it to get normal temp2.set(temp3).normalizeLocal(); result.setContactNormal(new Vector3f(temp2)); // temp3 is contact point temp3.set(temp2).multLocal(dimension).addLocal(temp1); result.setContactPoint(new Vector3f(temp3)); return result; }
public BoundingVolume transform(Matrix4f trans, BoundingVolume store) { BoundingBox box; if (store == null || store.getType() != Type.AABB) { box = new BoundingBox(); } else { box = (BoundingBox) store; } TempVars vars = TempVars.get(); float w = trans.multProj(center, box.center); box.center.divideLocal(w); Matrix3f transMatrix = vars.tempMat3; trans.toRotationMatrix(transMatrix); // Make the rotation matrix all positive to get the maximum x/y/z extent transMatrix.absoluteLocal(); vars.vect1.set(xExtent, yExtent, zExtent); transMatrix.mult(vars.vect1, vars.vect1); // Assign the biggest rotations after scales. box.xExtent = FastMath.abs(vars.vect1.getX()); box.yExtent = FastMath.abs(vars.vect1.getY()); box.zExtent = FastMath.abs(vars.vect1.getZ()); vars.release(); return box; }
tempQuat.mult(vec, vec); newPositions[i] = vec.getX(); newPositions[i + 1] = vec.getY(); newPositions[i + 2] = vec.getZ();
private Node createPlayer() { Dome b = new Dome(Vector3f.ZERO, 10, 100, 1); Geometry playerMesh = new Geometry("Box", b); playerMaterial = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); playerMaterial.setColor("Color", ColorRGBA.Red); playerMesh.setMaterial(playerMaterial); playerMesh.setName("player"); Box floor = new Box(100, 0, 100); Geometry floorMesh = new Geometry("Box", floor); Vector3f translation = Vector3f.ZERO.add(playerMesh.getLocalTranslation().getX(), playerMesh.getLocalTranslation().getY() - 1, 0); floorMesh.setLocalTranslation(translation); floorMaterial = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); floorMaterial.setColor("Color", ColorRGBA.LightGray); floorMesh.setMaterial(floorMaterial); floorMesh.setName("floor"); Node playerNode = new Node(); playerNode.attachChild(playerMesh); playerNode.attachChild(floorMesh); return playerNode; }
transMatrix.mult(vars.vect1, vars.vect2); box.xExtent = FastMath.abs(vars.vect2.getX()); box.yExtent = FastMath.abs(vars.vect2.getY()); box.zExtent = FastMath.abs(vars.vect2.getZ());