/* * $Id$ * * Copyright (c) 2006-10, Multiagent Team, Laboratoire Systemes et Transports, Universite de Technologie de Belfort-Montbeliard. * Copyright (C) 2016 Stephane GALLAND. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * This program is free software; you can redistribute it and/or modify */ package org.arakhne.afc.math.geometry.d3.continuous; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertTrue; /** * @author $Author: hjaffali$ * @version $FullVersion$ * @mavengroupid $GroupId$ * @mavenartifactid $ArtifactId$ */ public class AlignedBox3fTest extends AbstractBoxedShape3fTestCase<AlignedBox3f>{ @Override protected AlignedBox3f createShape() { return new AlignedBox3f(0, 0, 0, 1, 1, 1); } @Override public void toBoundingBox() { assertTrue(new AlignedBox3f(0,0,0,1,1,1).equals(this.r.toBoundingBox())); } @Override public void toBoundingBoxAlignedBox3x() { AlignedBox3f A = new AlignedBox3f(); this.r.toBoundingBox(A); assertTrue(this.r.toBoundingBox().equals(A)); } @Override public void clear() { this.r.clear(); assertTrue(this.r.equals(new AlignedBox3f(0,0,0,0,0,0))); } @Override public void setDoubleDoubleDoubleDoubleDoubleDouble() { this.r.set(0, 0, 0, 2, 2, 2); assertTrue(this.r.equals(new AlignedBox3f(0,0,0,2,2,2))); this.r.set(-1, -1, -1, 2, 2, 2); assertTrue(this.r.equals(new AlignedBox3f(-1,-1,-1,2,2,2))); this.r.set(1, 1, 1, 2, 2, 2); assertTrue(this.r.equals(new AlignedBox3f(1,1,1,2,2,2))); } @Override public void setPoint3xPoint3x() { this.r.set(new Point3f(0,0,0), new Point3f(2,2,2)); assertTrue(this.r.equals(new AlignedBox3f(0,0,0,2,2,2))); this.r.set(new Point3f(-1,-1,-1), new Point3f(1,1,1)); assertTrue(this.r.equals(new AlignedBox3f(-1,-1,-1,2,2,2))); this.r.set(new Point3f(1,1,1), new Point3f(3,3,3)); assertTrue(this.r.equals(new AlignedBox3f(1,1,1,2,2,2))); } @Override public void setSizeXDouble() { this.r.setSizeX(3); assertEpsilonEquals(0, this.r.getMinX()); assertEpsilonEquals(3, this.r.getMaxX()); this.r.setFromCorners(1, 1, 1, 2, 2, 2); this.r.setSizeX(9); assertEpsilonEquals(1, this.r.getMinX()); assertEpsilonEquals(10, this.r.getMaxX()); } @Override public void setSizeYDouble() { this.r.setSizeY(3); assertEpsilonEquals(0, this.r.getMinY()); assertEpsilonEquals(3, this.r.getMaxY()); this.r.setFromCorners(1, 1, 1, 2, 2, 2); this.r.setSizeY(9); assertEpsilonEquals(1, this.r.getMinY()); assertEpsilonEquals(10, this.r.getMaxY()); } @Override public void setSizeZDouble() { this.r.setSizeZ(3); assertEpsilonEquals(0, this.r.getMinZ()); assertEpsilonEquals(3, this.r.getMaxZ()); this.r.setFromCorners(1, 1, 1, 2, 2, 2); this.r.setSizeZ(9); assertEpsilonEquals(1, this.r.getMinZ()); assertEpsilonEquals(10, this.r.getMaxZ()); } @Override public void setFromCornersPoint3DPoint3D() { this.r.setFromCorners(new Point3f(0,0,0), new Point3f(2,2,2)); assertTrue(this.r.equals(new AlignedBox3f(0,0,0,2,2,2))); this.r.setFromCorners(new Point3f(-1,-1,-1), new Point3f(1,1,1)); assertTrue(this.r.equals(new AlignedBox3f(-1,-1,-1,2,2,2))); this.r.setFromCorners(new Point3f(1,1,1), new Point3f(3,3,3)); assertTrue(this.r.equals(new AlignedBox3f(1,1,1,2,2,2))); } @Override public void setFromCornersDoubleDoubleDoubleDoubleDoubleDouble() { this.r.setFromCorners(0,0,0,2,2,2); assertTrue(this.r.equals(new AlignedBox3f(0,0,0,2,2,2))); this.r.setFromCorners(-1,-1,-1,1,1,1); assertTrue(this.r.equals(new AlignedBox3f(-1,-1,-1,2,2,2))); this.r.setFromCorners(1,1,1,3,3,3); assertTrue(this.r.equals(new AlignedBox3f(1,1,1,2,2,2))); } @Override public void setFromCenterDoubleDoubleDoubleDoubleDoubleDouble() { this.r.setFromCenter(1, 1, 1, 2, 2, 2); assertTrue(this.r.equals(new AlignedBox3f(0,0,0,2,2,2))); this.r.setFromCenter(0, 0, 0, -1, -1, -1); assertTrue(this.r.equals(new AlignedBox3f(-1,-1,-1,2,2,2))); this.r.setFromCenter(2, 2, 2, 3, 3, 3); assertTrue(this.r.equals(new AlignedBox3f(1,1,1,2,2,2))); } @Override public void getMinX() { assertEpsilonEquals(0, this.r.getMinX()); this.r.setFromCorners(-1,-1,-1,1,1,1); assertEpsilonEquals(-1, this.r.getMinX()); this.r.setFromCorners(-2,-1,-1,1,1,1); assertEpsilonEquals(-2, this.r.getMinX()); this.r.set(new Point3f(0,0,0), new Point3f(2,2,2)); assertEpsilonEquals(0, this.r.getMinX()); } @Override public void setMinXDouble() { this.r.setMinX(2.3f); assertEpsilonEquals(1f, this.r.getMinX()); assertEpsilonEquals(2.3f, this.r.getMaxX()); this.r.setMinX(-3.4f); assertEpsilonEquals(-3.4f, this.r.getMinX()); assertEpsilonEquals(2.3f, this.r.getMaxX()); } @Override public void getMin() { assertEpsilonEquals(new Point3f(0,0,0),this.r.getMin()); this.r.setMinX(2.3f); this.r.setMinY(3f); this.r.setMaxZ(2.3f); assertEpsilonEquals(new Point3f(1,1,0),this.r.getMin()); } @Override public void getMax() { assertEpsilonEquals(new Point3f(1,1,1),this.r.getMax()); this.r.setMinX(2.3f); this.r.setMinY(3f); this.r.setMaxZ(2.3f); assertEpsilonEquals(new Point3f(2.3,3,2.3),this.r.getMax()); } @Override public void getCenter() { assertEpsilonEquals(new Point3f(0.5,0.5,0.5),this.r.getCenter()); this.r.setMinX(2.3f); this.r.setMinY(3f); this.r.setMaxZ(2.3f); assertEpsilonEquals(new Point3f((2.3+1)/2.,2,2.3/2.),this.r.getCenter()); } @Override public void getCenterX() { assertEpsilonEquals(0.5,this.r.getCenterX()); this.r.setMinX(2.3f); assertEpsilonEquals((2.3+1)/2f,this.r.getCenterX()); } @Override public void getMaxX() { assertEpsilonEquals(1, this.r.getMaxX()); this.r.setFromCorners(-1,-1,-1,1,1,1); assertEpsilonEquals(1, this.r.getMaxX()); this.r.setFromCorners(-1,-1,-1,2,1,1); assertEpsilonEquals(2, this.r.getMaxX()); this.r.set(new Point3f(0,0,0), new Point3f(2,2,2)); assertEpsilonEquals(2, this.r.getMaxX()); } @Override public void setMaxXDouble() { this.r.setMaxX(2.3f); assertEpsilonEquals(0f, this.r.getMinX()); assertEpsilonEquals(2.3f, this.r.getMaxX()); this.r.setMaxX(-3.4f); assertEpsilonEquals(-3.4f, this.r.getMinX()); assertEpsilonEquals(0f, this.r.getMaxX()); } @Override public void getMinY() { assertEpsilonEquals(0, this.r.getMinY()); this.r.setFromCorners(-1,-1,-1,1,1,1); assertEpsilonEquals(-1, this.r.getMinY()); this.r.setFromCorners(-1,-2,-1,1,1,1); assertEpsilonEquals(-2, this.r.getMinY()); this.r.set(new Point3f(0,0,0), new Point3f(2,2,2)); assertEpsilonEquals(0, this.r.getMinY()); } @Override public void setMinYDouble() { this.r.setMinY(2.3f); assertEpsilonEquals(1f, this.r.getMinY()); assertEpsilonEquals(2.3f, this.r.getMaxY()); this.r.setMinY(-3.4f); assertEpsilonEquals(-3.4f, this.r.getMinY()); assertEpsilonEquals(2.3f, this.r.getMaxY()); } @Override public void getCenterY() { assertEpsilonEquals(0.5,this.r.getCenterY()); this.r.setMinY(2.3f); assertEpsilonEquals((2.3+1)/2f,this.r.getCenterY()); } @Override public void getMaxY() { assertEpsilonEquals(1, this.r.getMaxY()); this.r.setFromCorners(-1,-1,-1,1,1,1); assertEpsilonEquals(1, this.r.getMaxY()); this.r.setFromCorners(-1,-1,-1,1,2,1); assertEpsilonEquals(2, this.r.getMaxY()); this.r.set(new Point3f(0,0,0), new Point3f(2,2,2)); assertEpsilonEquals(2, this.r.getMaxY()); } @Override public void setMaxYDouble() { this.r.setMaxY(2.3f); assertEpsilonEquals(0f, this.r.getMinY()); assertEpsilonEquals(2.3f, this.r.getMaxY()); this.r.setMaxY(-3.4f); assertEpsilonEquals(-3.4f, this.r.getMinY()); assertEpsilonEquals(0f, this.r.getMaxY()); } @Override public void getMinZ() { assertEpsilonEquals(0, this.r.getMinZ()); this.r.setFromCorners(-1,-1,-1,1,1,1); assertEpsilonEquals(-1, this.r.getMinZ()); this.r.setFromCorners(-1,-1,-2,1,1,1); assertEpsilonEquals(-2, this.r.getMinZ()); this.r.set(new Point3f(0,0,0), new Point3f(2,2,2)); assertEpsilonEquals(0, this.r.getMinZ()); } @Override public void setMinZDouble() { this.r.setMinZ(2.3f); assertEpsilonEquals(1f, this.r.getMinZ()); assertEpsilonEquals(2.3f, this.r.getMaxZ()); this.r.setMinZ(-3.4f); assertEpsilonEquals(-3.4f, this.r.getMinZ()); assertEpsilonEquals(2.3f, this.r.getMaxZ()); } @Override public void getCenterZ() { assertEpsilonEquals(0.5,this.r.getCenterZ()); this.r.setMinZ(2.3f); assertEpsilonEquals((2.3+1)/2f,this.r.getCenterZ()); } @Override public void getMaxZ() { assertEpsilonEquals(1, this.r.getMaxZ()); this.r.setFromCorners(-1,-1,-1,1,1,9); assertEpsilonEquals(9, this.r.getMaxZ()); this.r.setFromCorners(-1,-1,-1,1,1,3); assertEpsilonEquals(3, this.r.getMaxZ()); this.r.set(new Point3f(0,0,0), new Point3f(2,2,2)); assertEpsilonEquals(2, this.r.getMaxZ()); } @Override public void setMaxZDouble() { this.r.setMaxZ(2.3f); assertEpsilonEquals(0f, this.r.getMinZ()); assertEpsilonEquals(2.3f, this.r.getMaxZ()); this.r.setMaxZ(-3.4f); assertEpsilonEquals(-3.4f, this.r.getMinZ()); assertEpsilonEquals(0f, this.r.getMaxZ()); } @Override public void getSizeX() { assertEpsilonEquals(1, this.r.getSizeX()); this.r.setFromCorners(-1,-1,-1,1,1,9); assertEpsilonEquals(2, this.r.getSizeX()); this.r.setFromCorners(-1,-1,-1,1,1,3); assertEpsilonEquals(2, this.r.getSizeX()); this.r.set(new Point3f(0,0,0), new Point3f(2,2,2)); assertEpsilonEquals(2, this.r.getSizeX()); } @Override public void getSizeY() { assertEpsilonEquals(1, this.r.getSizeY()); this.r.setFromCorners(-1,-1,-1,1,1,9); assertEpsilonEquals(2, this.r.getSizeY()); this.r.setFromCorners(-1,-1,-1,1,2,3); assertEpsilonEquals(3, this.r.getSizeY()); this.r.set(new Point3f(0,0,0), new Point3f(2,2,2)); assertEpsilonEquals(2, this.r.getSizeY()); } @Override public void getSizeZ() { assertEpsilonEquals(1, this.r.getSizeZ()); this.r.setFromCorners(-1,-1,-1,1,1,9); assertEpsilonEquals(10, this.r.getSizeZ()); this.r.setFromCorners(-1,-1,-1,1,1,3); assertEpsilonEquals(4, this.r.getSizeZ()); this.r.set(new Point3f(0,0,0), new Point3f(2,2,2)); assertEpsilonEquals(2, this.r.getSizeZ()); } @Override public void translateDoubleDoubleDouble() { Vector3f translation = new Vector3f(this.random.nextDouble()*20,this.random.nextDouble()*20,this.random.nextDouble()*20); this.r.translate(translation.getX(),translation.getY(),translation.getZ()); assertTrue(this.r.equals(new AlignedBox3f(0+translation.getX(),0+translation.getY(),0+translation.getZ(),this.r.getSizeX(),this.r.getSizeY(),this.r.getSizeZ()))); } @Override public void isEmpty() { assertFalse(this.r.isEmpty()); this.r.clear(); assertTrue(this.r.isEmpty()); this.r.setFromCorners(0, 0, 0, 2, 2, 2); assertFalse(this.r.isEmpty()); } @Override public void inflateDoubleDoubleDoubleDoubleDoubleDouble() { double minX = 1;///this.random.nextDouble()*20; double minY = 2;//this.random.nextDouble()*20; double minZ = 3;//this.random.nextDouble()*20; double maxX = 4;//this.random.nextDouble()*20; double maxY = 5;//this.random.nextDouble()*20; double maxZ = 6;//this.random.nextDouble()*20; AlignedBox3f A = new AlignedBox3f(0,0,0,1,1,1); A.setFromCorners( minX + A.getMinX() ,minY + A.getMinY() ,minZ + A.getMinZ() , maxX + A.getMaxX() ,maxY + A.getMaxY() ,maxZ + A.getMaxZ() ); this.r.inflate(minX ,minY ,minZ ,maxX ,maxY ,maxZ); assertTrue(this.r.equals(A)); } @Override public void translateVector3D() { Vector3f translation = new Vector3f(this.random.nextDouble()*20,this.random.nextDouble()*20,this.random.nextDouble()*20); this.r.translate(translation); assertTrue(this.r.equals(new AlignedBox3f(0+translation.getX(),0+translation.getY(),0+translation.getZ(),this.r.getSizeX(),this.r.getSizeY(),this.r.getSizeZ()))); } @Override public void setXDoubleDouble() { assertEpsilonEquals(0, this.r.getMinX()); assertEpsilonEquals(1, this.r.getMaxX()); this.r.setX(2, 12); assertEpsilonEquals(2, this.r.getMinX()); assertEpsilonEquals(12, this.r.getMaxX()); this.r.setX(12, -120); assertEpsilonEquals(-120, this.r.getMinX()); assertEpsilonEquals(12, this.r.getMaxX()); this.r.setX(1, 0); assertEpsilonEquals(0, this.r.getMinX()); assertEpsilonEquals(1, this.r.getMaxX()); } @Override public void setYDoubleDouble() { assertEpsilonEquals(0, this.r.getMinY()); assertEpsilonEquals(1, this.r.getMaxY()); this.r.setY(2, 12); assertEpsilonEquals(2, this.r.getMinY()); assertEpsilonEquals(12, this.r.getMaxY()); this.r.setY(12, -120); assertEpsilonEquals(-120, this.r.getMinY()); assertEpsilonEquals(12, this.r.getMaxY()); this.r.setY(1, 0); assertEpsilonEquals(0, this.r.getMinY()); assertEpsilonEquals(1, this.r.getMaxY()); } @Override public void setZDoubleDouble() { assertEpsilonEquals(0, this.r.getMinZ()); assertEpsilonEquals(1, this.r.getMaxZ()); this.r.setZ(2, 12); assertEpsilonEquals(2, this.r.getMinZ()); assertEpsilonEquals(12, this.r.getMaxZ()); this.r.setZ(12, -120); assertEpsilonEquals(-120, this.r.getMinZ()); assertEpsilonEquals(12, this.r.getMaxZ()); this.r.setZ(1, 0); assertEpsilonEquals(0, this.r.getMinZ()); assertEpsilonEquals(1, this.r.getMaxZ()); } @Override public void testClone() { AlignedBox3f b = this.r.clone(); assertNotSame(b, this.r); assertEpsilonEquals(this.r.getMinX(), b.getMinX()); assertEpsilonEquals(this.r.getMinY(), b.getMinY()); assertEpsilonEquals(this.r.getMinZ(), b.getMinZ()); assertEpsilonEquals(this.r.getMaxX(), b.getMaxX()); assertEpsilonEquals(this.r.getMaxY(), b.getMaxY()); assertEpsilonEquals(this.r.getMaxZ(), b.getMaxZ()); b.set(this.r.getMinX()+1f, this.r.getMinY()+1f, this.r.getMinZ()+1f, this.r.getSizeX()+1f, this.r.getSizeY()+1f, this.r.getSizeZ()+1f); assertNotEpsilonEquals(this.r.getMinX(), b.getMinX()); assertNotEpsilonEquals(this.r.getMinY(), b.getMinY()); assertNotEpsilonEquals(this.r.getMinZ(), b.getMinZ()); assertNotEpsilonEquals(this.r.getMaxX(), b.getMaxX()); assertNotEpsilonEquals(this.r.getMaxY(), b.getMaxY()); assertNotEpsilonEquals(this.r.getMaxZ(), b.getMaxZ()); } @Override public void distancePoint3D() { this.r.setFromCorners(0, 0, 0, 2, 2, 2); assertEpsilonEquals(0,this.r.distance(new Point3f(0,0,0))); assertEpsilonEquals(0,this.r.distance(new Point3f(1,1,1))); assertEpsilonEquals(0,this.r.distance(new Point3f(2,0,2))); assertEpsilonEquals(0,this.r.distance(new Point3f(0.5,0,2))); assertEpsilonEquals(new Point3f(2,0,0).getDistance(new Point3f(3,0,0)),this.r.distance(new Point3f(3,0,0))); assertEpsilonEquals(new Point3f(1,2,1).getDistance(new Point3f(1,7,1)),this.r.distance(new Point3f(1,7,1))); assertEpsilonEquals(new Point3f(2,2,2).getDistance(new Point3f(3,7,3)),this.r.distance(new Point3f(3,7,3))); assertEpsilonEquals(new Point3f(0,2,2).getDistance(new Point3f(-1,7,3)),this.r.distance(new Point3f(-1,7,3))); } @Override public void containsPoint3D() { this.r.setFromCorners(0, 0, 0, 2, 2, 2); assertTrue(this.r.contains(new Point3f(1, 1, 1))); assertTrue(this.r.contains(new Point3f(0, 0, 0))); assertTrue(this.r.contains(new Point3d(0, 0, 2))); assertTrue(this.r.contains(new Point3d(2, 0, 2))); assertTrue(this.r.contains(new Point3f(0.5, 1, 0.5))); assertTrue(this.r.contains(new Point3d(1.5, 2, 1.5))); assertFalse(this.r.contains(new Point3f(10.5, 2, 10.5))); assertFalse(this.r.contains(new Point3d(105, 200, 105))); assertFalse(this.r.contains(new Point3f(2, 2, 3))); assertFalse(this.r.contains(new Point3f(0, 0, -1))); assertFalse(this.r.contains(new Point3d(-2, 2, 0))); assertFalse(this.r.contains(new Point3d(10.5, 0, 10.5))); } @Override public void testEquals() { AlignedBox3f b = this.r.clone(); AlignedBox3f c = new AlignedBox3f(this.r); assertTrue(b.equals(this.r)); assertTrue(this.r.equals(b)); assertTrue(this.r.equals(this.r)); assertTrue(b.equals(c)); assertTrue(this.r.equals(c)); } @Override public void testHashCode() { long bits = 1L; bits = 31L * bits + Double.doubleToLongBits(this.r.getMinX()); bits = 31L * bits + Double.doubleToLongBits(this.r.getMinY()); bits = 31L * bits + Double.doubleToLongBits(this.r.getMinZ()); bits = 31L * bits + Double.doubleToLongBits(this.r.getMaxX()); bits = 31L * bits + Double.doubleToLongBits(this.r.getMaxY()); bits = 31L * bits + Double.doubleToLongBits(this.r.getMaxZ()); int hashcode= (int) (bits ^ (bits >> 32)); assertEpsilonEquals(hashcode,this.r.hashCode()); } @Override public void distanceSquaredPoint3D() { this.r.setFromCorners(0, 0, 0, 2, 2, 2); assertEpsilonEquals(0,this.r.distanceSquared(new Point3f(0,0,0))); assertEpsilonEquals(0,this.r.distanceSquared(new Point3f(1,1,1))); assertEpsilonEquals(0,this.r.distanceSquared(new Point3f(2,0,2))); assertEpsilonEquals(0,this.r.distanceSquared(new Point3f(0.5,0,2))); assertEpsilonEquals(new Point3f(2,0,0).getDistanceSquared(new Point3f(3,0,0)),this.r.distanceSquared(new Point3f(3,0,0))); assertEpsilonEquals(new Point3f(1,2,1).getDistanceSquared(new Point3f(1,7,1)),this.r.distanceSquared(new Point3f(1,7,1))); assertEpsilonEquals(new Point3f(2,2,2).getDistanceSquared(new Point3f(3,7,3)),this.r.distanceSquared(new Point3f(3,7,3))); assertEpsilonEquals(new Point3f(0,2,2).getDistanceSquared(new Point3f(-1,7,3)),this.r.distanceSquared(new Point3f(-1,7,3))); } @Override public void distanceL1Point3D() { this.r.setFromCorners(0, 0, 0, 2, 2, 2); assertEpsilonEquals(0,this.r.distanceL1(new Point3f(0,0,0))); assertEpsilonEquals(0,this.r.distanceL1(new Point3f(1,1,1))); assertEpsilonEquals(0,this.r.distanceL1(new Point3f(2,0,2))); assertEpsilonEquals(0,this.r.distanceL1(new Point3f(0.5,0,2))); assertEpsilonEquals(new Point3f(2,0,0).getDistanceL1(new Point3f(3,0,0)),this.r.distanceL1(new Point3f(3,0,0))); assertEpsilonEquals(new Point3f(1,2,1).getDistanceL1(new Point3f(1,7,1)),this.r.distanceL1(new Point3f(1,7,1))); assertEpsilonEquals(new Point3f(2,2,2).getDistanceL1(new Point3f(3,7,3)),this.r.distanceL1(new Point3f(3,7,3))); assertEpsilonEquals(new Point3f(0,2,2).getDistanceL1(new Point3f(-1,7,3)),this.r.distanceL1(new Point3f(-1,7,3))); } @Override public void distanceLinfPoint3D() { this.r.setFromCorners(0, 0, 0, 2, 2, 2); assertEpsilonEquals(0,this.r.distanceLinf(new Point3f(0,0,0))); assertEpsilonEquals(0,this.r.distanceLinf(new Point3f(1,1,1))); assertEpsilonEquals(0,this.r.distanceLinf(new Point3f(2,0,2))); assertEpsilonEquals(0,this.r.distanceLinf(new Point3f(0.5,0,2))); assertEpsilonEquals(new Point3f(2,0,0).getDistanceLinf(new Point3f(3,0,0)),this.r.distanceLinf(new Point3f(3,0,0))); assertEpsilonEquals(new Point3f(1,2,1).getDistanceLinf(new Point3f(1,7,1)),this.r.distanceLinf(new Point3f(1,7,1))); assertEpsilonEquals(new Point3f(2,2,2).getDistanceLinf(new Point3f(3,7,3)),this.r.distanceLinf(new Point3f(3,7,3))); assertEpsilonEquals(new Point3f(0,2,2).getDistanceLinf(new Point3f(-1,7,3)),this.r.distanceLinf(new Point3f(-1,7,3))); } @Override public void containsDoubleDoubleDouble() { this.r.setFromCorners(0, 0, 0, 2, 2, 2); assertTrue(this.r.contains(1, 1, 1)); assertTrue(this.r.contains(0, 0, 0)); assertTrue(this.r.contains(0, 0, 2)); assertTrue(this.r.contains(2, 0, 2)); assertTrue(this.r.contains(0.5, 1, 0.5)); assertTrue(this.r.contains(1.5, 2, 1.5)); assertFalse(this.r.contains(10.5, 2, 10.5)); assertFalse(this.r.contains(105, 200, 105)); assertFalse(this.r.contains(2, 2, 3)); assertFalse(this.r.contains(0, 0, -1)); assertFalse(this.r.contains(-2, 2, 0)); assertFalse(this.r.contains(10.5, 0, 10.5)); } @Override public void intersectsAlignedBox3x() { this.r.setFromCorners(0, 0, 0, 2, 2, 2); AlignedBox3f alignedBox = new AlignedBox3f(); alignedBox.setFromCorners(0, 0, 0, 2, 2, 2); assertTrue(this.r.intersects(alignedBox)); alignedBox.setFromCorners(-2, 0, 0, 0, 2, 2); assertFalse(this.r.intersects(alignedBox)); alignedBox.setFromCorners(-1.9, 0, 0, 0.1, 2, 2); assertTrue(this.r.intersects(alignedBox)); alignedBox.setFromCorners(-1, 0, 0, 1, 2, 2); assertTrue(this.r.intersects(alignedBox)); alignedBox.setFromCorners(5, 5, 5, 10, 10, 10); assertFalse(this.r.intersects(alignedBox)); alignedBox.setFromCorners(1, 1, 1, 3, 3, 3); assertTrue(this.r.intersects(alignedBox)); } @Override public void intersectsSphere3x() { throw new UnsupportedOperationException(); } @Override public void intersectsSegment3x() { this.r.setFromCorners(0, 0, 0, 2, 2, 2); assertTrue(this.r.intersects(new Segment3f(0,0,0,2,2,2))); assertTrue(this.r.intersects(new Segment3f(-1,-1,-1,3,3,3))); assertTrue(this.r.intersects(new Segment3f(0.5,0.5,0.5,1,1,1))); assertTrue(this.r.intersects(new Segment3f(2,0,0,1,1,2))); assertTrue(this.r.intersects(new Segment3f(0,0,0,-1,-1,-1))); assertFalse(this.r.intersects(new Segment3f(-1,-1,-1,-3,-3,-3))); assertFalse(this.r.intersects(new Segment3f(-0.0001,-0.0001,-0.0001,-0.00001,-0.00001,-0.00001))); } @Override public void intersectsTriangle3x() { this.r.setFromCorners(0, 0, 0, 2, 2, 2); assertTrue(this.r.intersects(new Triangle3f(0,0,0,2,2,2,1,3,1))); assertTrue(this.r.intersects(new Triangle3f(-1,-1,-1,3,3,3,0,10,10))); assertTrue(this.r.intersects(new Triangle3f(0.5,0.5,0.5,1.5,1,1,1,2,2))); assertTrue(this.r.intersects(new Triangle3f(3,0,2,7,1,1,-0.5,-0.5,-2))); assertTrue(this.r.intersects(new Triangle3f(0,0,0,-1,-1,-1,-1,1,1))); assertFalse(this.r.intersects(new Triangle3f(-1,-1,-1,-3,0,-3,-5,-5,0))); assertFalse(this.r.intersects(new Triangle3f(-0.0001,-0.0001,-0.0001,-0.00001,-0.00001,-0.00001,-1,-1,-1))); } @Override public void intersectsCapsule3x() { throw new UnsupportedOperationException(); } @Override public void intersectsOrientedBox3x() { throw new UnsupportedOperationException(); } @Override public void intersectsAbstractPlane3D() { this.r.setFromCorners(0, 0, 0, 2, 2, 2); assertTrue(this.r.intersects(new Plane4f(new Vector3f(0,0,1),new Point3f(1,1,1)))); assertTrue(this.r.intersects(new Plane4f(new Vector3f(0,1,0),new Point3f(1,1,1)))); assertTrue(this.r.intersects(new Plane4f(new Vector3f(1,0,0),new Point3f(1,1,1)))); assertFalse(this.r.intersects(new Plane4f(new Vector3f(0,1,0),new Point3f(1,3,1)))); assertTrue(this.r.intersects(new Plane4f(new Vector3f(0,1,0),new Point3f(0,2,2)))); assertTrue(this.r.intersects(new Plane4f(new Vector3f(1,0,0),new Point3f(0,2,2)))); assertFalse(this.r.intersects(new Plane4f(new Vector3f(1,0,1),new Point3f(4,0,4)))); } }