/** * @param worldVertices * an array of vectors describing a polygon * @return the distance from our origin to the primitive or POSITIVE_INFINITY if we do not intersect. */ @Override public double getDistanceToPrimitive(final Vector3[] worldVertices) { // Intersection test final Vector3 intersect = Vector3.fetchTempInstance(); try { if (intersects(worldVertices, intersect)) { return getOrigin().distance(intersect); } } finally { Vector3.releaseTempInstance(intersect); } return Double.POSITIVE_INFINITY; }
/** * @param worldVertices * an array of vectors describing a polygon * @return the distance from our origin to the primitive or POSITIVE_INFINITY if we do not intersect. */ @Override public double getDistanceToPrimitive(final Vector3[] worldVertices) { // Intersection test final Vector3 intersect = Vector3.fetchTempInstance(); try { if (intersects(worldVertices, intersect)) { return getOrigin().distance(intersect); } } finally { Vector3.releaseTempInstance(intersect); } return Double.POSITIVE_INFINITY; }
_rayLocation.set(_walkRay.getDirection()).multiplyLocal(_totalTravel).addLocal(_walkRay.getOrigin());
_rayLocation.set(_walkRay.getDirection()).multiplyLocal(_totalTravel).addLocal(_walkRay.getOrigin());
_rayLocation.set(_walkRay.getDirection()).multiplyLocal(_totalTravel).addLocal(_walkRay.getOrigin());
_rayLocation.set(_walkRay.getDirection()).multiplyLocal(_totalTravel).addLocal(_walkRay.getOrigin());
@Override public IntersectionRecord intersectsPrimitivesWhere(final Ray3 ray) { if (_picker != null) { final Vector3 normalStore = new Vector3(); final Vector3 intersect = _picker.getTerrainIntersection(getWorldTransform(), _terrainCamera.getLocation(), ray, null, normalStore); if (intersect != null) { final double distance = intersect.distance(ray.getOrigin()); final IntersectionRecord record = new IntersectionRecord(new double[] { distance }, new Vector3[] { intersect }, new Vector3[] { normalStore }, null); return record; } } return null; }
@Override public IntersectionRecord intersectsPrimitivesWhere(final Ray3 ray) { if (_picker != null) { final Vector3 normalStore = new Vector3(); final Vector3 intersect = _picker.getTerrainIntersection(getWorldTransform(), _terrainCamera.getLocation(), ray, null, normalStore); if (intersect != null) { final double distance = intersect.distance(ray.getOrigin()); final IntersectionRecord record = new IntersectionRecord(new double[] { distance }, new Vector3[] { intersect }, new Vector3[] { normalStore }, null); return record; } } return null; }
positions[i] = ray.getDirection().multiply(distances[i], new Vector3()).addLocal(ray.getOrigin());
positions[i] = ray.getDirection().multiply(distances[i], new Vector3()).addLocal(ray.getOrigin());
@Test public void testData() { final Ray3 ray = new Ray3(); assertEquals(Vector3.UNIT_Z, ray.getDirection()); assertEquals(Vector3.ZERO, ray.getOrigin()); ray.setDirection(Vector3.NEG_UNIT_X); assertEquals(Vector3.NEG_UNIT_X, ray.getDirection()); ray.setOrigin(Vector3.ONE); assertEquals(Vector3.ONE, ray.getOrigin()); final Ray3 ray2 = new Ray3(ray); assertEquals(Vector3.NEG_UNIT_X, ray2.getDirection()); assertEquals(Vector3.ONE, ray2.getOrigin()); ray.set(new Ray3()); assertEquals(Vector3.UNIT_Z, ray.getDirection()); assertEquals(Vector3.ZERO, ray.getOrigin()); }
final Vector3 start = _walkRay.getOrigin().subtract(_gridOrigin, null);
final Vector3 start = _walkRay.getOrigin().subtract(_gridOrigin, null);
final Vector3 start = _walkRay.getOrigin().subtract(_gridOrigin, null);
final Vector3 start = _walkRay.getOrigin().subtract(_gridOrigin, null);