/** * Copies information from a source ray into this ray. * * @param source * the ray to copy information from */ public void set(Ray source) { origin.set(source.getOrigin()); direction.set(source.getDirection()); }
Vector3f d = vars.vect2.set(r.getDirection()); inv.multNormal(r.getDirection(), r.getDirection()); r.getOrigin().z}; float[] invDirections = {1f / r.getDirection().x, 1f / r.getDirection().y, 1f / r.getDirection().z}; r.getDirection().normalizeLocal();
Vector3f direction = this.walkRay.getDirection();
public float distanceSquared(Ray r) { Vector3f kDiff = r.getOrigin().subtract(origin); float fA01 = -r.getDirection().dot(direction); float fB0 = kDiff.dot(r.getDirection()); float fB1 = -kDiff.dot(direction); float fC = kDiff.lengthSquared();
public boolean intersects(Ray ray) { assert Vector3f.isValidVector(center); TempVars vars = TempVars.get(); Vector3f diff = vars.vect1.set(ray.getOrigin()).subtractLocal(center); float radiusSquared = getRadius() * getRadius(); float a = diff.dot(diff) - radiusSquared; if (a <= 0.0) { vars.release(); // in sphere return true; } // outside sphere float b = ray.getDirection().dot(diff); vars.release(); if (b >= 0.0) { return false; } return b * b >= a; }
final float[] fAWxDdU = vars.fAWxDdU; fWdU[0] = ray.getDirection().dot(Vector3f.UNIT_X); fAWdU[0] = FastMath.abs(fWdU[0]); fDdU[0] = diff.dot(Vector3f.UNIT_X); fWdU[1] = ray.getDirection().dot(Vector3f.UNIT_Y); fAWdU[1] = FastMath.abs(fWdU[1]); fDdU[1] = diff.dot(Vector3f.UNIT_Y); fWdU[2] = ray.getDirection().dot(Vector3f.UNIT_Z); fAWdU[2] = FastMath.abs(fWdU[2]); fDdU[2] = diff.dot(Vector3f.UNIT_Z); Vector3f wCrossD = ray.getDirection().cross(diff, vars.vect2);
Vector3f p2 = segEnd; Vector3f p3 = ray.origin; Vector3f p4 = vars.vect3.set(ray.getDirection()).multLocal(Math.min(ray.getLimit(), 1000)).addLocal(ray.getOrigin()); Vector3f p13 = vars.vect4.set(p1).subtractLocal(p3); Vector3f p43 = vars.vect5.set(p4).subtractLocal(p3);
tracer.setGridOrigin(patch.getWorldTranslation()); workRay.getOrigin().set(worldPick.getDirection()).multLocal(pd.cr.getDistance()-.1f).addLocal(worldPick.getOrigin());
/** * Copies information from a source ray into this ray. * * @param source * the ray to copy information from */ public void set(Ray source) { origin.set(source.getOrigin()); direction.set(source.getDirection()); }
/** * Copies information from a source ray into this ray. * * @param source * the ray to copy information from */ public void set(Ray source) { origin.set(source.getOrigin()); direction.set(source.getDirection()); }
public static Line3D jmeRayToRay3d(Ray ray) { return new Line3D(jmeVector3fToJ3DPoint3d(ray.getOrigin()), jmeVector3fToVecmathVector3d(ray.getDirection())); }
public static Ray3d jmeRayToRay3d(Ray ray) { return new Ray3d(jmeVector3fToJ3DPoint3d(ray.getOrigin()), jmeVector3fToVecmathVector3d(ray.getDirection())); }
public static Ray transformRayFromJMECoordinateToZup(Ray jmeRay) { Vector3f origin = new Vector3f(jmeRay.getOrigin()); Vector3f direction = new Vector3f(jmeRay.getDirection()); transformFromJMECoordinatesToZup(origin); transformFromJMECoordinatesToZup(direction); return new Ray(origin, direction); }
public static Ray transformRayFromZupToJMECoordinate(Ray zupRay) { Vector3f origin = new Vector3f(zupRay.getOrigin()); Vector3f direction = new Vector3f(zupRay.getDirection()); transformFromZupToJMECoordinates(origin); transformFromZupToJMECoordinates(direction); return new Ray(origin, direction); }
public static Ray transformRayFromJMECoordinateToZup(Ray jmeRay) { Vector3f origin = new Vector3f(jmeRay.getOrigin()); Vector3f direction = new Vector3f(jmeRay.getDirection()); transformFromJMECoordinatesToZup(origin); transformFromJMECoordinatesToZup(direction); return new Ray(origin, direction); }
public static Ray transformRayFromZupToJMECoordinate(Ray zupRay) { Vector3f origin = new Vector3f(zupRay.getOrigin()); Vector3f direction = new Vector3f(zupRay.getDirection()); transformFromZupToJMECoordinates(origin); transformFromZupToJMECoordinates(direction); return new Ray(origin, direction); }
public boolean intersects(Ray ray) { assert Vector3f.isValidVector(center); TempVars vars = TempVars.get(); Vector3f diff = vars.vect1.set(ray.getOrigin()).subtractLocal(center); float radiusSquared = getRadius() * getRadius(); float a = diff.dot(diff) - radiusSquared; if (a <= 0.0) { // in sphere return true; } // outside sphere float b = ray.getDirection().dot(diff); vars.release(); if (b >= 0.0) { return false; } return b * b >= a; }
Vector3f dir = new Vector3f(ray.getDirection().x, ray.getDirection().y, ray.getDirection().z); Point3f nearest = getNearestIntersection(origin, dir, getLidarResolution(), geom.getWorldTransform()); if (nearest != null)
public final void intersectWhere(Ray r, Geometry[] geoms, float sceneMin, float sceneMax, CollisionResults results){ for (OCTTriangle t : tris){ float d = r.intersects(t.get1(), t.get2(), t.get3()); if (Float.isInfinite(d)) continue; Vector3f contactPoint = new Vector3f(r.getDirection()).multLocal(d).addLocal(r.getOrigin()); CollisionResult result = new CollisionResult(geoms[t.getGeometryIndex()], contactPoint, d, t.getTriangleIndex()); results.addCollision(result); } for (int i = 0; i < 8; i++){ Octnode child = children[i]; if (child == null) continue; if (child.bbox.intersects(r)){ child.intersectWhere(r, geoms, sceneMin, sceneMax, results); } } }
public boolean intersects(Ray ray) { assert Vector3f.isValidVector(center); TempVars vars = TempVars.get(); Vector3f diff = vars.vect1.set(ray.getOrigin()).subtractLocal(center); float radiusSquared = getRadius() * getRadius(); float a = diff.dot(diff) - radiusSquared; if (a <= 0.0) { vars.release(); // in sphere return true; } // outside sphere float b = ray.getDirection().dot(diff); vars.release(); if (b >= 0.0) { return false; } return b * b >= a; }