/*
* $Id$
* This file is a part of the Arakhne Foundation Classes, http://www.arakhne.org/afc
*
* Copyright (c) 2000-2012 Stephane GALLAND.
* Copyright (c) 2005-10, Multiagent Team, Laboratoire Systemes et Transports,
* Universite de Technologie de Belfort-Montbeliard.
* Copyright (c) 2013-2016 The original authors, and other authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.arakhne.afc.math.geometry.d3.afp;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import org.junit.Ignore;
import org.junit.Test;
import org.arakhne.afc.math.MathConstants;
import org.arakhne.afc.math.geometry.PathElementType;
import org.arakhne.afc.math.geometry.d3.Point3D;
import org.arakhne.afc.math.geometry.d3.Shape3D;
import org.arakhne.afc.math.geometry.d3.Transform3D;
import org.arakhne.afc.math.geometry.d3.afp.Segment3afp.UncertainIntersection;
import org.arakhne.afc.math.geometry.d3.ai.PathIterator3ai;
@SuppressWarnings("all")
public abstract class AbstractSegment3afpTest<T extends Segment3afp<?, T, ?, ?, ?, B>,
B extends RectangularPrism3afp<?, ?, ?, ?, ?, B>> extends AbstractShape3afpTest<T, B> {
@Override
protected final T createShape() {
return (T) createSegment(0, 0, 0, 1, 1, 1);
}
@Test
@Ignore
public void staticCcw() {
double x1 = -100;
double y1 = -100;
double z1 = -100;
double x2 = 100;
double y2 = 100;
double z2 = 100;
assertEquals(0, Segment3afp.ccw(x1, y1, z1, x2, y2, z2, x1, y1, z1, 0));
assertEquals(0, Segment3afp.ccw(x2, y2, z2, x1, y1, z1, x1, y1, z1, 0));
assertEquals(0, Segment3afp.ccw(x1, y1, z1, x2, y2, z2, x2, y2, z2, 0));
assertEquals(0, Segment3afp.ccw(x2, y2, z2, x1, y1, z1, x2, y2, z2, 0));
assertEquals(0, Segment3afp.ccw(x1, y1, z1, x2, y2, z2, 0, 0, 0, 0));
assertEquals(0, Segment3afp.ccw(x2, y2, z2, x1, y1, z1, 0, 0, 0, 0));
assertEquals(-1, Segment3afp.ccw(x1, y1, z1, x2, y2, z2, -200, -200, -200, 0));
assertEquals(1, Segment3afp.ccw(x2, y2, z2, x1, y1, z1, -200, -200, -200, 0));
assertEquals(1, Segment3afp.ccw(x1, y1, z1, x2, y2, z2, 200, 200, 200, 0));
assertEquals(-1, Segment3afp.ccw(x2, y2, z2, x1, y1, z1, 200, 200, 200, 0));
assertEquals(-1, Segment3afp.ccw(x1, y1, z1, x2, y2, z2, -200, 200, 200, 0));
assertEquals(1, Segment3afp.ccw(x2, y2, z2, x1, y1, z1, -200, 200, 200, 0));
assertEquals(1, Segment3afp.ccw(x1, y1, z1, x2, y2, z2, 200, -200, -200, 0));
assertEquals(-1, Segment3afp.ccw(x2, y2, z2, x1, y1, z1, 200, -200, -200, 0));
}
@Test
@Ignore
public void staticComputeClosestPointTo() {
Point3D result;
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.computeClosestPointToPoint(0, 0, 0, 1, 1, 1, 0, 0, 0, result);
assertEpsilonEquals(0, result.getX());
assertEpsilonEquals(0, result.getY());
assertEpsilonEquals(0, result.getZ());
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.computeClosestPointToPoint(0, 0, 0, 1, 1, 1, .75, .75, .75, result);
assertEpsilonEquals(.75, result.getX());
assertEpsilonEquals(.75, result.getY());
assertEpsilonEquals(.75, result.getZ());
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.computeClosestPointToPoint(0, 0, 0, 1, 1, 1, -10, -50, 0, result);
assertEpsilonEquals(0, result.getX());
assertEpsilonEquals(0, result.getY());
assertEpsilonEquals(0, result.getZ());
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.computeClosestPointToPoint(0, 0, 0, 1, 1, 1, 200, -50, 0, result);
assertEpsilonEquals(1, result.getX());
assertEpsilonEquals(1, result.getY());
assertEpsilonEquals(1, result.getZ());
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.computeClosestPointToPoint(0, 0, 0, 1, 1, 1, 0, 1, 0, result);
assertEpsilonEquals(.5, result.getX());
assertEpsilonEquals(.5, result.getY());
assertEpsilonEquals(.5, result.getZ());
}
@Test
@Ignore
public void staticComputeCrossingsFromCircle() {
assertEquals(0, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
5, -4, 0, -1, -5, 0));
assertEquals(0, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
-7, -3, 0, -5, -1, 0));
assertEquals(0, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
11, -2, 0, 10, -1, 0));
assertEquals(0, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
3, 5, 0, 1, 6, 0));
assertEquals(-1, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
5, .5, 0, 6, -1, 0));
assertEquals(-2, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
5, 2, 0, 6, -1, 0));
assertEquals(-1, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
5, 2, 0, 6, .5, 0));
assertEquals(MathConstants.SHAPE_INTERSECTS, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
.5, .5, 0, 3, 0, 0));
assertEquals(MathConstants.SHAPE_INTERSECTS, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
0, 2, 0, 3, 0, 0));
assertEquals(MathConstants.SHAPE_INTERSECTS, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
.5, 4, 0, .5, -1, 0));
assertEquals(-2, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
1, 3, 0, 3, 0, 0));
assertEquals(0, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
-1, -5, 0, 5, -4, 0));
assertEquals(0, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
-5, -1, 0, -7, 3, 0));
assertEquals(0, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
10, -1, 0, 11, -2, 0));
assertEquals(0, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
1, 6, 0, 3, 5, 0));
assertEquals(1, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
6, -1, 0, 5, .5, 0));
assertEquals(2, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
6, -1, 0, 5, 2, 0));
assertEquals(1, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
6, .5, 0, 5, 2, 0));
assertEquals(MathConstants.SHAPE_INTERSECTS, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
3, 0, 0, .5, .5, 0));
assertEquals(MathConstants.SHAPE_INTERSECTS, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
3, 0, 0, 0, 2, 0));
assertEquals(MathConstants.SHAPE_INTERSECTS, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
.5, -1, 0, .5, 4, 0));
assertEquals(2, Segment3afp.computeCrossingsFromSphere(
0,
1, 1, 1, 1,
3, 0, 0, 1, 3, 0));
}
@Test
public void staticComputeCrossingsFromPoint() {
assertEquals(
1,
Segment3afp.computeCrossingsFromPoint(
0, 0, 0,
10, -1, 0, 10, 1, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromPoint(
0, 0, 0,
10, -1, 0, 10, -.5, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromPoint(
0, 0, 0,
-10, -1, 0, -10, 1, 0));
}
@Test
public void staticComputeCrossingsFromPointWithoutEquality() {
assertEquals(
1,
Segment3afp.computeCrossingsFromPointWithoutEquality(
0, 0, 0,
10, -1, 0, 10, 1, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromPointWithoutEquality(
0, 0, 0,
10, -1, 0, 10, -.5, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromPointWithoutEquality(
0, 0, 0,
-10, -1, 0, -10, 1, 0));
}
@Test
@Ignore
public void staticComputeCrossingsFromRect() {
assertEquals(
2,
Segment3afp.computeCrossingsFromRect(
0,
0, 0, 0, 1, 1, 0,
10, -5, 0, 10, 5, 0));
assertEquals(
1,
Segment3afp.computeCrossingsFromRect(
0,
0, 0, 0, 1, 1, 0,
10, -5, 0, 10, .5, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromRect(
0,
0, 0, 0, 1, 1, 0,
10, -5, 0, 10, -1, 0));
}
@Test
public void staticComputeCrossingsFromSegment() {
// 0011
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
0, 0, 0, 1, 1, 0,
10, -5, 0, 10, -4, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
0, 0, 0, 1, 1, 0,
10, 5, 0, 10, 4, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
0, 0, 0, 1, 1, 0,
-5, .5, 0, 0, .6, 0));
assertEquals(
1,
Segment3afp.computeCrossingsFromSegment(
0,
0, 0, 0, 1, 1, 0,
10, -1, 0, 11, .6, 0));
assertEquals(
2,
Segment3afp.computeCrossingsFromSegment(
0,
0, 0, 0, 1, 1, 0,
10, -1, 0, 11, 2, 0));
assertEquals(
1,
Segment3afp.computeCrossingsFromSegment(
0,
0, 0, 0, 1, 1, 0,
10, .5, 0, 11, 2, 0));
assertEquals(
-1,
Segment3afp.computeCrossingsFromSegment(
0,
0, 0, 0, 1, 1, 0,
10, 2, 0, 11, .6, 0));
assertEquals(
-2,
Segment3afp.computeCrossingsFromSegment(
0,
0, 0, 0, 1, 1, 0,
10, 2, 0, 11, -1, 0));
assertEquals(
-1,
Segment3afp.computeCrossingsFromSegment(
0,
0, 0, 0, 1, 1, 0,
10, .6, 0, 11, -1, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
0, 0, 0, 1, 1, 0,
0, .5, 0, .25, .5, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
0, 0, 0, 1, 1, 0,
.75, .5, 0, 1, .5, 0));
assertEquals(
1,
Segment3afp.computeCrossingsFromSegment(
0,
0, 0, 0, 1, 1, 0,
5, -5, 0, .75, .5, 0));
assertEquals(
MathConstants.SHAPE_INTERSECTS,
Segment3afp.computeCrossingsFromSegment(
0,
0, 0, 0, 1, 1, 0,
5, -5, 0, 0, 1, 0));
assertEquals(
2,
Segment3afp.computeCrossingsFromSegment(
0,
0, 0, 0, 1, 1, 0,
5, -5, 0, 1, 1, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
0, 0, 0, 1, 1, 0,
-2, 1, 0, 5, -5, 0));
// 1100
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 0, 0, 0,
10, -5, 0, 10, -4, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 0, 0, 0,
10, 5, 0, 10, 4, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 0, 0, 0,
-5, .5, 0, 0, .6, 0));
assertEquals(
1,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 0, 0, 0,
10, -1, 0, 11, .6, 0));
assertEquals(
2,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 0, 0, 0,
10, -1, 0, 11, 2, 0));
assertEquals(
1,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 0, 0, 0,
10, .5, 0, 11, 2, 0));
assertEquals(
-1,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 0, 0, 0,
10, 2, 0, 11, .6, 0));
assertEquals(
-2,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 0, 0, 0,
10, 2, 0, 11, -1, 0));
assertEquals(
-1,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 0, 0, 0,
10, .6, 0, 11, -1, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 0, 0, 0,
0, .5, 0, .25, .5, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 0, 0, 0,
.75, .5, 0, 1, .5, 0));
assertEquals(
1,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 0, 0, 0,
5, -5, 0, .75, .5, 0));
assertEquals(
MathConstants.SHAPE_INTERSECTS,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 0, 0, 0,
5, -5, 0, 0, 1, 0));
assertEquals(
2,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 0, 0, 0,
5, -5, 0, 1, 1, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 0, 0, 0,
-2, 1, 0, 5, -5, 0));
// 0110
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
0, 1, 0, 1, 0, 0,
10, -5, 0, 10, -4, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
0, 1, 0, 1, 0, 0,
10, 5, 0, 10, 4, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
0, 1, 0, 1, 0, 0,
-5, .5, 0, 0, .6, 0));
assertEquals(
1,
Segment3afp.computeCrossingsFromSegment(
0,
0, 1, 0, 1, 0, 0,
10, -1, 0, 11, .6, 0));
assertEquals(
2,
Segment3afp.computeCrossingsFromSegment(
0,
0, 1, 0, 1, 0, 0,
10, -1, 0, 11, 2, 0));
assertEquals(
1,
Segment3afp.computeCrossingsFromSegment(
0,
0, 1, 0, 1, 0, 0,
10, .5, 0, 11, 2, 0));
assertEquals(
-1,
Segment3afp.computeCrossingsFromSegment(
0,
0, 1, 0, 1, 0, 0,
10, 2, 0, 11, .6, 0));
assertEquals(
-2,
Segment3afp.computeCrossingsFromSegment(
0,
0, 1, 0, 1, 0, 0,
10, 2, 0, 11, -1, 0));
assertEquals(
-1,
Segment3afp.computeCrossingsFromSegment(
0,
0, 1, 0, 1, 0, 0,
10, .6, 0, 11, -1, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
0, 1, 0, 1, 0, 0,
0, .5, 0, .25, .5, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
0, 1, 0, 1, 0, 0,
.75, .5, 0, 1, .5, 0));
assertEquals(
1,
Segment3afp.computeCrossingsFromSegment(
0,
0, 1, 0, 1, 0, 0,
5, -.01, 0, .75, .5, 0));
assertEquals(
MathConstants.SHAPE_INTERSECTS,
Segment3afp.computeCrossingsFromSegment(
0,
0, 1, 0, 1, 0, 0,
20, -5, 0, -1, 1, 0));
assertEquals(
MathConstants.SHAPE_INTERSECTS,
Segment3afp.computeCrossingsFromSegment(
0,
0, 1, 0, 1, 0, 0,
5, 10, 0, .25, .5, 0));
// 1001
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
1, 0, 0, 0, 1, 0,
10, -5, 0, 10, -4, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
1, 0, 0, 0, 1, 0,
10, 5, 0, 10, 4, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
1, 0, 0, 0, 1, 0,
-5, .5, 0, 0, .6, 0));
assertEquals(
1,
Segment3afp.computeCrossingsFromSegment(
0,
1, 0, 0, 0, 1, 0,
10, -1, 0, 11, .6, 0));
assertEquals(
2,
Segment3afp.computeCrossingsFromSegment(
0,
1, 0, 0, 0, 1, 0,
10, -1, 0, 11, 2, 0));
assertEquals(
1,
Segment3afp.computeCrossingsFromSegment(
0,
1, 0, 0, 0, 1, 0,
10, .5, 0, 11, 2, 0));
assertEquals(
-1,
Segment3afp.computeCrossingsFromSegment(
0,
1, 0, 0, 0, 1, 0,
10, 2, 0, 11, .6, 0));
assertEquals(
-2,
Segment3afp.computeCrossingsFromSegment(
0,
1, 0, 0, 0, 1, 0,
10, 2, 0, 11, -1, 0));
assertEquals(
-1,
Segment3afp.computeCrossingsFromSegment(
0,
1, 0, 0, 0, 1, 0,
10, .6, 0, 11, -1, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
1, 0, 0, 0, 1, 0,
0, .5, 0, .25, .5, 0));
assertEquals(
0,
Segment3afp.computeCrossingsFromSegment(
0,
1, 0, 0, 0, 1, 0,
.75, .5, 0, 1, .5, 0));
assertEquals(
1,
Segment3afp.computeCrossingsFromSegment(
0,
1, 0, 0, 0, 1, 0,
20, -5, 0, .75, .5, 0));
assertEquals(
MathConstants.SHAPE_INTERSECTS,
Segment3afp.computeCrossingsFromSegment(
0,
1, 0, 0, 0, 1, 0,
20, -5, 0, 0, 1, 0));
assertEquals(
MathConstants.SHAPE_INTERSECTS,
Segment3afp.computeCrossingsFromSegment(
0,
1, 0, 0, 0, 1, 0,
5, 10, 0, .25, .5, 0));
// Others
assertEquals(
MathConstants.SHAPE_INTERSECTS,
Segment3afp.computeCrossingsFromSegment(
0,
7, -5, 0, 1, 1, 0,
4, -3, 0, 1, 1, 0));
assertEquals(
MathConstants.SHAPE_INTERSECTS,
Segment3afp.computeCrossingsFromSegment(
0,
4, -3, 0, 1, 1, 0,
7, -5, 0, 1, 1, 0));
assertEquals(
MathConstants.SHAPE_INTERSECTS,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 4, -3, 0,
7, -5, 0, 1, 1, 0));
assertEquals(
MathConstants.SHAPE_INTERSECTS,
Segment3afp.computeCrossingsFromSegment(
0,
4, -3, 0, 1, 1, 0,
1, 1, 0, 7, -5, 0));
assertEquals(
MathConstants.SHAPE_INTERSECTS,
Segment3afp.computeCrossingsFromSegment(
0,
1, 1, 0, 4, -3, 0,
1, 1, 0, 7, -5, 0));
}
@Test
public void staticComputeFarthestPointTo() {
Point3D p;
p = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.computeFarthestPointTo(0, 0, 0, 1, 1, 0, 0, 0, 0, p);
assertEpsilonEquals(1, p.getX());
assertEpsilonEquals(1, p.getY());
p = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.computeFarthestPointTo(0, 0, 0, 1, 1, 0, .5, .5, 0, p);
assertEpsilonEquals(0, p.getX());
assertEpsilonEquals(0, p.getY());
p = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.computeFarthestPointTo(0, 0, 0, 1, 1, 0, 1, 1, 0, p);
assertEpsilonEquals(0, p.getX());
assertEpsilonEquals(0, p.getY());
p = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.computeFarthestPointTo(0, 0, 0, 1, 1, 0, 2, 2, 0, p);
assertEpsilonEquals(0, p.getX());
assertEpsilonEquals(0, p.getY());
p = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.computeFarthestPointTo(0, 0, 0, 1, 1, 0, -2, 2, 0, p);
assertEpsilonEquals(1, p.getX());
assertEpsilonEquals(1, p.getY());
p = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.computeFarthestPointTo(0, 0, 0, 1, 1, 0, 0.1, 1.2, 0, p);
assertEpsilonEquals(0, p.getX());
assertEpsilonEquals(0, p.getY());
p = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.computeFarthestPointTo(0, 0, 0, 1, 1, 0, 10.1, -.2, 0, p);
assertEpsilonEquals(0, p.getX());
assertEpsilonEquals(0, p.getY());
}
@Test
public void staticComputeLineLineIntersection() {
Point3D result;
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
assertTrue(Segment3afp.computeLineLineIntersection(
1000, 1.5325000286102295, 0, 2500, 1.5325000286102295, 0,
1184.001080023255, 1.6651813832907332, 0, 1200.7014393876193, 1.372326130924099, 0,
result));
assertEpsilonEquals(1191.567365026541, result.getX());
assertEpsilonEquals(1.532500028610229, result.getY());
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
assertTrue(Segment3afp.computeLineLineIntersection(
100, 50, 0, 100, 60, 0,
90, 55, 0, 2000, 55, 0,
result));
assertEpsilonEquals(100, result.getX());
assertEpsilonEquals(55, result.getY());
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
assertFalse(Segment3afp.computeLineLineIntersection(
100, 50, 0, 100, 60, 0,
200, 0, 0, 200, 10, 0,
result));
assertNaN(result.getX());
assertNaN(result.getY());
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
assertTrue(Segment3afp.computeLineLineIntersection(
100, -50, 0, 100, -60, 0,
90, 55, 0, 2000, 55, 0,
result));
assertEpsilonEquals(100, result.getX());
assertEpsilonEquals(55, result.getY());
}
@Test
public void staticComputeLineLineIntersectionFactor() {
assertEpsilonEquals(.1277115766843605, Segment3afp.computeLineLineIntersectionFactor(
1000, 1.5325000286102295, 0, 2500, 1.5325000286102295, 0,
1184.001080023255, 1.6651813832907332, 0, 1200.7014393876193, 1.372326130924099, 0));
assertEpsilonEquals(.5, Segment3afp.computeLineLineIntersectionFactor(
100, 50, 0, 100, 60, 0,
90, 55, 0, 2000, 55, 0));
assertNaN(Segment3afp.computeLineLineIntersectionFactor(
100, 50, 0, 100, 60, 0,
200, 0, 0, 200, 10, 0));
assertEpsilonEquals(-10.5, Segment3afp.computeLineLineIntersectionFactor(
100, -50, 0, 100, -60, 0,
90, 55, 0, 2000, 55, 0));
}
@Test
public void staticComputeProjectedPointOnLine() {
assertEpsilonEquals(.3076923076923077, Segment3afp.computeProjectedPointOnLine(
2, 1, 0,
0, 0, 0, 3, -2, 0));
assertEpsilonEquals(.6666666666666666, Segment3afp.computeProjectedPointOnLine(
2, 1, 0,
0, 0, 0, 3, 0, 0));
assertEpsilonEquals(-.7, Segment3afp.computeProjectedPointOnLine(
2, -1, 0,
0, 0, 0, -3, 1, 0));
assertEpsilonEquals(14.4, Segment3afp.computeProjectedPointOnLine(
2, 150, 0,
0, 0, 0, -3, 1, 0));
assertEpsilonEquals(.5, Segment3afp.computeProjectedPointOnLine(
.5, .5, 0,
0, 0, 0, 1, 1, 0));
}
@Test
public void staticComputeRelativeDistanceLinePoint() {
assertEpsilonEquals(-1.941450686788302, Segment3afp.computeRelativeDistanceLinePoint(
0, 0, 0, 3, -2, 0,
2, 1, 0));
assertEpsilonEquals(1.941450686788302, Segment3afp.computeRelativeDistanceLinePoint(
3, -2, 0, 0, 0, 0,
2, 1, 0));
assertEpsilonEquals(-1, Segment3afp.computeRelativeDistanceLinePoint(
0, 0, 0, 3, 0, 0,
2, 1, 0));
assertEpsilonEquals(1, Segment3afp.computeRelativeDistanceLinePoint(
3, 0, 0, 0, 0, 0,
2, 1, 0));
assertEpsilonEquals(-.3162277660168379, Segment3afp.computeRelativeDistanceLinePoint(
0, 0, 0, -3, 1, 0,
2, -1, 0));
assertEpsilonEquals(.3162277660168379, Segment3afp.computeRelativeDistanceLinePoint(
-3, 1, 0, 0, 0, 0,
2, -1, 0));
assertEpsilonEquals(142.9349502396107, Segment3afp.computeRelativeDistanceLinePoint(
0, 0, 0, -3, 1, 0,
2, 150, 0));
assertEpsilonEquals(-142.9349502396107, Segment3afp.computeRelativeDistanceLinePoint(
-3, 1, 0, 0, 0, 0,
2, 150, 0));
assertEpsilonEquals(0, Segment3afp.computeRelativeDistanceLinePoint(
0, 0, 0, 1, 1, 0,
.5, .5, 0));
assertEpsilonEquals(0, Segment3afp.computeRelativeDistanceLinePoint(
1, 1, 0, 0, 0, 0,
.5, .5, 0));
}
@Test
@Ignore
public void staticComputeSegmentSegmentIntersection() {
Point3D result;
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
assertTrue(Segment3afp.computeSegmentSegmentIntersection(
1000, 1.5325000286102295, 0, 2500, 1.5325000286102295, 0,
1184.001080023255, 1.6651813832907332, 0, 1200.7014393876193, 1.372326130924099, 0,
result));
assertEpsilonEquals(1191.567365026541, result.getX());
assertEpsilonEquals(1.532500028610229, result.getY());
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
assertTrue(Segment3afp.computeSegmentSegmentIntersection(
100, 50, 0, 100, 60, 0,
90, 55, 0, 2000, 55, 0,
result));
assertEpsilonEquals(100, result.getX());
assertEpsilonEquals(55, result.getY());
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
assertFalse(Segment3afp.computeSegmentSegmentIntersection(
100, 50, 0, 100, 60, 0,
200, 0, 0, 200, 10, 0,
result));
assertNaN(result.getX());
assertNaN(result.getY());
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
assertFalse(Segment3afp.computeSegmentSegmentIntersection(
-100, 50, 0, -100, 60, 0,
90, 55, 0, 2000, 55, 0,
result));
assertNaN(result.getX());
assertNaN(result.getY());
}
@Test
@Ignore
public void staticComputeSegmentSegmentIntersectionFactor() {
assertEpsilonEquals(.1277115766843605, Segment3afp.computeSegmentSegmentIntersectionFactor(
1000, 1.5325000286102295, 0, 2500, 1.5325000286102295, 0,
1184.001080023255, 1.6651813832907332, 0, 1200.7014393876193, 1.372326130924099, 0));
assertEpsilonEquals(.5, Segment3afp.computeSegmentSegmentIntersectionFactor(
100, 50, 0, 100, 60, 0,
90, 55, 0, 2000, 55, 0));
assertNaN(Segment3afp.computeSegmentSegmentIntersectionFactor(
100, 50, 0, 100, 60, 0,
200, 0, 0, 200, 10, 0));
assertNaN(Segment3afp.computeSegmentSegmentIntersectionFactor(
100, -50, 0, 100, -60, 0,
90, 55, 0, 2000, 55, 0));
}
@Test
public void staticComputeSideLinePoint() {
assertEquals(0, Segment3afp.computeSideLinePoint(0, 0, 0, 1, 1, 0, 0, 0, 0, 0.1));
assertEquals(0, Segment3afp.computeSideLinePoint(0, 0, 0, 1, 1, 0, 1, 1, 0, 0.1));
assertEquals(0, Segment3afp.computeSideLinePoint(0, 0, 0, 1, 1, 0, .25, .25, 0, 0.1));
assertEquals(1, Segment3afp.computeSideLinePoint(0, 0, 0, 1, 1, 0, 0.2, 0, 0, 0.1));
assertEquals(1, Segment3afp.computeSideLinePoint(0, 0, 0, 1, 1, 0, 120, 0, 0, 0.1));
assertEquals(0, Segment3afp.computeSideLinePoint(0, 0, 0, 1, 1, 0, -20.05, -20, 0, 0.1));
assertEquals(-1, Segment3afp.computeSideLinePoint(0, 0, 0, 1, 1, 0, 0, 0.2, 0, 0.1));
assertEquals(-1, Segment3afp.computeSideLinePoint(0, 0, 0, 1, 1, 0, 0, 120, 0, 0.1));
}
@Test
public void staticGetNoSegmentSegmentWithEndsIntersection() {
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithEndsIntersection(
0, 0, 0, 1, 1, 0,
0, .5, 0, 1, .5, 0));
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithEndsIntersection(
0, 0, 0, 1, 1, 0,
0, 0, 0, 1, 1, 0));
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithEndsIntersection(
0, 0, 0, 1, 1, 0,
0, 0, 0, 2, 2, 0));
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithEndsIntersection(
0, 0, 0, 1, 1, 0,
0, 0, 0, .5, .5, 0));
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithEndsIntersection(
0, 0, 0, 1, 1, 0,
-3, -3, 0, .5, .5, 0));
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithEndsIntersection(
0, 0, 0, 1, 1, 0,
-3, -3, 0, 0, 0, 0));
assertSame(UncertainIntersection.NO, Segment3afp.getNoSegmentSegmentWithEndsIntersection(
0, 0, 0, 1, 1, 0,
-3, -3, 0, -1, -1, 0));
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithEndsIntersection(
0, 0, 0, 1, 1, 0,
-3, 0, 0, 4, 0, 0));
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithEndsIntersection(
0, 0, 0, 1, 1, 0,
-3, -1, 0, 4, -1, 0));
assertSame(UncertainIntersection.NO, Segment3afp.getNoSegmentSegmentWithEndsIntersection(
0, 0, 0, 1, 1, 0,
-3, -1, 0, -1, -1, 0));
assertSame(UncertainIntersection.NO, Segment3afp.getNoSegmentSegmentWithEndsIntersection(
0, 0, 0, 1, 1, 0,
-3, 0, 0, -2, 1, 0));
assertSame(UncertainIntersection.NO, Segment3afp.getNoSegmentSegmentWithEndsIntersection(
0, 0, 0, 1, 1, 0,
10, 0, 0, 9, -1, 0));
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithEndsIntersection(
7, -5, 0, 1, 1, 0,
4, -3, 0, 1, 1, 0));
}
@Test
public void staticGetNoSegmentSegmentWithoutEndsIntersection() {
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithoutEndsIntersection(
0, 0, 0, 1, 1, 0,
0, .5, 0, 1, .5, 0));
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithoutEndsIntersection(
0, 0, 0, 1, 1, 0,
0, 0, 0, 1, 1, 0));
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithEndsIntersection(
0, 0, 0, 1, 1, 0,
0, 0, 0, 2, 2, 0));
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithoutEndsIntersection(
0, 0, 0, 1, 1, 0,
0, 0, 0, .5, .5, 0));
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithoutEndsIntersection(
0, 0, 0, 1, 1, 0,
-3, -3, 0, .5, .5, 0));
assertSame(UncertainIntersection.NO, Segment3afp.getNoSegmentSegmentWithoutEndsIntersection(
0, 0, 0, 1, 1, 0,
-3, -3, 0, 0, 0, 0));
assertSame(UncertainIntersection.NO, Segment3afp.getNoSegmentSegmentWithoutEndsIntersection(
0, 0, 0, 1, 1, 0,
-3, -3, 0, -1, -1, 0));
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithoutEndsIntersection(
0, 0, 0, 1, 1, 0,
-3, 0, 0, 4, 0, 0));
assertSame(UncertainIntersection.PERHAPS, Segment3afp.getNoSegmentSegmentWithoutEndsIntersection(
0, 0, 0, 1, 1, 0,
-3, -1, 0, 4, -1, 0));
assertSame(UncertainIntersection.NO, Segment3afp.getNoSegmentSegmentWithoutEndsIntersection(
0, 0, 0, 1, 1, 0,
-3, -1, 0, -1, -1, 0));
assertSame(UncertainIntersection.NO, Segment3afp.getNoSegmentSegmentWithoutEndsIntersection(
0, 0, 0, 1, 1, 0,
-3, 0, 0, -2, 1, 0));
assertSame(UncertainIntersection.NO, Segment3afp.getNoSegmentSegmentWithoutEndsIntersection(
0, 0, 0, 1, 1, 0,
10, 0, 0, 9, -1, 0));
assertSame(UncertainIntersection.NO, Segment3afp.getNoSegmentSegmentWithoutEndsIntersection(
7, -5, 0, 1, 1, 0,
4, -3, 0, 1, 1, 0));
}
@Test
public void staticComputeDistanceLinePoint() {
assertEpsilonEquals(1.941450686788302, Segment3afp.computeDistanceLinePoint(
0, 0, 0, 3, -2, 0,
2, 1, 0));
assertEpsilonEquals(1.941450686788302, Segment3afp.computeDistanceLinePoint(
3, -2, 0, 0, 0, 0,
2, 1, 0));
assertEpsilonEquals(1, Segment3afp.computeDistanceLinePoint(
0, 0, 0, 3, 0, 0,
2, 1, 0));
assertEpsilonEquals(1, Segment3afp.computeDistanceLinePoint(
3, 0, 0, 0, 0, 0,
2, 1, 0));
assertEpsilonEquals(.3162277660168379, Segment3afp.computeDistanceLinePoint(
0, 0, 0, -3, 1, 0,
2, -1, 0));
assertEpsilonEquals(.3162277660168379, Segment3afp.computeDistanceLinePoint(
-3, 1, 0, 0, 0, 0,
2, -1, 0));
assertEpsilonEquals(142.9349502396107, Segment3afp.computeDistanceLinePoint(
0, 0, 0, -3, 1, 0,
2, 150, 0));
assertEpsilonEquals(142.9349502396107, Segment3afp.computeDistanceLinePoint(
-3, 1, 0, 0, 0, 0,
2, 150, 0));
assertEpsilonEquals(0, Segment3afp.computeDistanceLinePoint(
0, 0, 0, 1, 1, 0,
.5, .5, 0));
assertEpsilonEquals(0, Segment3afp.computeDistanceLinePoint(
1, 1, 0, 0, 0, 0,
.5, .5, 0));
}
@Test
public void staticComputeDistanceSegmentPoint() {
assertEpsilonEquals(1.941450686788302, Segment3afp.computeDistanceSegmentPoint(
0, 0, 0, 3, -2, 0,
2, 1, 0));
assertEpsilonEquals(1.941450686788302, Segment3afp.computeDistanceSegmentPoint(
3, -2, 0, 0, 0, 0,
2, 1, 0));
assertEpsilonEquals(1, Segment3afp.computeDistanceSegmentPoint(
0, 0, 0, 3, 0, 0,
2, 1, 0));
assertEpsilonEquals(1, Segment3afp.computeDistanceSegmentPoint(
3, 0, 0, 0, 0, 0,
2, 1, 0));
assertEpsilonEquals(2.23606797749979, Segment3afp.computeDistanceSegmentPoint(
0, 0, 0, -3, 1, 0,
2, -1, 0));
assertEpsilonEquals(2.23606797749979, Segment3afp.computeDistanceSegmentPoint(
-3, 1, 0, 0, 0, 0,
2, -1, 0));
assertEpsilonEquals(149.0838690133845, Segment3afp.computeDistanceSegmentPoint(
0, 0, 0, -3, 1, 0,
2, 150, 0));
assertEpsilonEquals(149.0838690133845, Segment3afp.computeDistanceSegmentPoint(
-3, 1, 0, 0, 0, 0,
2, 150, 0));
assertEpsilonEquals(0, Segment3afp.computeDistanceSegmentPoint(
0, 0, 0, 1, 1, 0,
.5, .5, 0));
assertEpsilonEquals(0, Segment3afp.computeDistanceSegmentPoint(
1, 1, 0, 0, 0, 0,
.5, .5, 0));
}
@Test
public void staticComputeDistanceSquaredLinePoint() {
assertEpsilonEquals(3.769230769230769, Segment3afp.computeDistanceSquaredLinePoint(
0, 0, 0, 3, -2, 0,
2, 1, 0));
assertEpsilonEquals(3.769230769230769, Segment3afp.computeDistanceSquaredLinePoint(
3, -2, 0, 0, 0, 0,
2, 1, 0));
assertEpsilonEquals(1, Segment3afp.computeDistanceSquaredLinePoint(
0, 0, 0, 3, 0, 0,
2, 1, 0));
assertEpsilonEquals(1, Segment3afp.computeDistanceSquaredLinePoint(
3, 0, 0, 0, 0, 0,
2, 1, 0));
assertEpsilonEquals(.09999999999999996, Segment3afp.computeDistanceSquaredLinePoint(
0, 0, 0, -3, 1, 0,
2, -1, 0));
assertEpsilonEquals(.09999999999999996, Segment3afp.computeDistanceSquaredLinePoint(
-3, 1, 0, 0, 0, 0,
2, -1, 0));
assertEpsilonEquals(20430.39999999979, Segment3afp.computeDistanceSquaredLinePoint(
0, 0, 0, -3, 1, 0,
2, 150, 0));
assertEpsilonEquals(20430.39999999979, Segment3afp.computeDistanceSquaredLinePoint(
-3, 1, 0, 0, 0, 0,
2, 150, 0));
assertEpsilonEquals(0, Segment3afp.computeDistanceSquaredLinePoint(
0, 0, 0, 1, 1, 0,
.5, .5, 0));
assertEpsilonEquals(0, Segment3afp.computeDistanceSquaredLinePoint(
1, 1, 0, 0, 0, 0,
.5, .5, 0));
}
@Test
@Ignore
public void staticComputeDistanceSquaredSegmentPoint() {
assertEpsilonEquals(3.769230769230769, Segment3afp.computeDistanceSquaredSegmentPoint(
0, 0, 0, 3, -2, 0,
2, 1, 0));
assertEpsilonEquals(3.769230769230769, Segment3afp.computeDistanceSquaredSegmentPoint(
3, -2, 0, 0, 0, 0,
2, 1, 0));
assertEpsilonEquals(1, Segment3afp.computeDistanceSquaredSegmentPoint(
0, 0, 0, 3, 0, 0,
2, 1, 0));
assertEpsilonEquals(1, Segment3afp.computeDistanceSquaredSegmentPoint(
3, 0, 0, 0, 0, 0,
2, 1, 0));
assertEpsilonEquals(5, Segment3afp.computeDistanceSquaredSegmentPoint(
0, 0, 0, -3, 1, 0,
2, -1, 0));
assertEpsilonEquals(5, Segment3afp.computeDistanceSquaredSegmentPoint(
-3, 1, 0, 0, 0, 0,
2, -1, 0));
assertEpsilonEquals(22225.99999999998, Segment3afp.computeDistanceSquaredSegmentPoint(
0, 0, 0, -3, 1, 0,
2, 150, 0));
assertEpsilonEquals(22225.99999999998, Segment3afp.computeDistanceSquaredSegmentPoint(
-3, 1, 0, 0, 0, 0,
2, 150, 0));
assertEpsilonEquals(0, Segment3afp.computeDistanceSquaredSegmentPoint(
0, 0, 0, 1, 1, 0,
.5, .5, 0));
assertEpsilonEquals(0, Segment3afp.computeDistanceSquaredSegmentPoint(
1, 1, 0, 0, 0, 0,
.5, .5, 0));
}
@Test
public void staticInterpolate() {
Point3D result;
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.interpolate(1., 2., 0, 3., 4., 0, 0., result);
assertEpsilonEquals(1, result.getX());
assertEpsilonEquals(2, result.getY());
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.interpolate(1., 2., 0, 3., 4., 0, .25, result);
assertEpsilonEquals(1.5, result.getX());
assertEpsilonEquals(2.5, result.getY());
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.interpolate(1., 2., 0, 3., 4., 0, .5, result);
assertEpsilonEquals(2, result.getX());
assertEpsilonEquals(3., result.getY());
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.interpolate(1., 2., 0, 3., 4., 0, .75, result);
assertEpsilonEquals(2.5, result.getX());
assertEpsilonEquals(3.5, result.getY());
result = createPoint(Double.NaN, Double.NaN, Double.NaN);
Segment3afp.interpolate(1., 2., 0, 3., 4., 0, 1., result);
assertEpsilonEquals(3, result.getX());
assertEpsilonEquals(4, result.getY());
}
@Test
public void staticIntersectsLineLine() {
assertTrue(Segment3afp.intersectsLineLine(
0, 0, 0, 1, 1, 0,
0, 0, 0, 1, 1, 0));
assertTrue(Segment3afp.intersectsLineLine(
0, 0, 0, 1, 1, 0,
0, 0, 0, 2, 2, 0));
assertTrue(Segment3afp.intersectsLineLine(
0, 0, 0, 1, 1, 0,
0, 0, 0, .5, .5, 0));
assertTrue(Segment3afp.intersectsLineLine(
0, 0, 0, 1, 1, 0,
-3, -3, 0, .5, .5, 0));
assertTrue(Segment3afp.intersectsLineLine(
0, 0, 0, 1, 1, 0,
-3, -3, 0, 0, 0, 0));
assertTrue(Segment3afp.intersectsLineLine(
0, 0, 0, 1, 1, 0,
-3, -3, 0, -1, -1, 0));
assertTrue(Segment3afp.intersectsLineLine(
0, 0, 0, 1, 1, 0,
-3, 0, 0, 4, 0, 0));
assertFalse(Segment3afp.intersectsLineLine(
0, 0, 0, 1, 1, 0,
-3, 0, 0, -2, 1, 0));
assertFalse(Segment3afp.intersectsLineLine(
0, 0, 0, 1, 1, 0,
10, 0, 0, 9, -1, 0));
}
@Test
public void staticIntersectsSegmentLine() {
assertTrue(Segment3afp.intersectsSegmentLine(
0, 0, 0, 1, 1, 0,
0, 0, 0, 1, 1, 0));
assertTrue(Segment3afp.intersectsSegmentLine(
0, 0, 0, 1, 1, 0,
0, 0, 0, 2, 2, 0));
assertTrue(Segment3afp.intersectsSegmentLine(
0, 0, 0, 1, 1, 0,
0, 0, 0, .5, .5, 0));
assertTrue(Segment3afp.intersectsSegmentLine(
0, 0, 0, 1, 1, 0,
-3, -3, 0, .5, .5, 0));
assertTrue(Segment3afp.intersectsSegmentLine(
0, 0, 0, 1, 1, 0,
-3, -3, 0, 0, 0, 0));
assertTrue(Segment3afp.intersectsSegmentLine(
0, 0, 0, 1, 1, 0,
-3, -3, 0, -1, -1, 0));
assertTrue(Segment3afp.intersectsSegmentLine(
0, 0, 0, 1, 1, 0,
-3, 0, 0, 4, 0, 0));
assertFalse(Segment3afp.intersectsSegmentLine(
0, 0, 0, 1, 1, 0,
-3, 0, 0, -2, 1, 0));
assertFalse(Segment3afp.intersectsSegmentLine(
0, 0, 0, 1, 1, 0,
10, 0, 0, 9, -1, 0));
}
@Test
public void staticIntersectsSegmentSegmentWithEnds() {
assertTrue(Segment3afp.intersectsSegmentSegmentWithEnds(
0, 0, 0, 1, 1, 0,
0, .5, 0, 1, .5, 0));
assertTrue(Segment3afp.intersectsSegmentSegmentWithEnds(
0, 0, 0, 1, 1, 0,
0, 0, 0, 1, 1, 0));
assertTrue(Segment3afp.intersectsSegmentSegmentWithEnds(
0, 0, 0, 1, 1, 0,
0, 0, 0, 2, 2, 0));
assertTrue(Segment3afp.intersectsSegmentSegmentWithEnds(
0, 0, 0, 1, 1, 0,
0, 0, 0, .5, .5, 0));
assertTrue(Segment3afp.intersectsSegmentSegmentWithEnds(
0, 0, 0, 1, 1, 0,
-3, -3, 0, .5, .5, 0));
assertTrue(Segment3afp.intersectsSegmentSegmentWithEnds(
0, 0, 0, 1, 1, 0,
-3, -3, 0, 0, 0, 0));
assertFalse(Segment3afp.intersectsSegmentSegmentWithEnds(
0, 0, 0, 1, 1, 0,
-3, -3, 0, -1, -1, 0));
assertTrue(Segment3afp.intersectsSegmentSegmentWithEnds(
0, 0, 0, 1, 1, 0,
-3, 0, 0, 4, 0, 0));
assertFalse(Segment3afp.intersectsSegmentSegmentWithEnds(
0, 0, 0, 1, 1, 0,
-3, -1, 0, 4, -1, 0));
assertFalse(Segment3afp.intersectsSegmentSegmentWithEnds(
0, 0, 0, 1, 1, 0,
-3, -1, 0, -1, -1, 0));
assertFalse(Segment3afp.intersectsSegmentSegmentWithEnds(
0, 0, 0, 1, 1, 0,
-3, 0, 0, -2, 1, 0));
assertFalse(Segment3afp.intersectsSegmentSegmentWithEnds(
0, 0, 0, 1, 1, 0,
10, 0, 0, 9, -1, 0));
assertTrue(
Segment3afp.intersectsSegmentSegmentWithEnds(
7, -5, 0, 1, 1, 0,
4, -3, 0, 1, 1, 0));
}
@Test
public void staticIntersectsSegmentSegmentWithoutEnds() {
assertTrue(Segment3afp.intersectsSegmentSegmentWithoutEnds(
0, 0, 0, 1, 1, 0,
0, .5, 0, 1, .5, 0));
assertTrue(Segment3afp.intersectsSegmentSegmentWithoutEnds(
0, 0, 0, 1, 1, 0,
0, 0, 0, 1, 1, 0));
assertTrue(Segment3afp.intersectsSegmentSegmentWithoutEnds(
0, 0, 0, 1, 1, 0,
0, 0, 0, 2, 2, 0));
assertTrue(Segment3afp.intersectsSegmentSegmentWithoutEnds(
0, 0, 0, 1, 1, 0,
0, 0, 0, .5, .5, 0));
assertTrue(Segment3afp.intersectsSegmentSegmentWithoutEnds(
0, 0, 0, 1, 1, 0,
-3, -3, 0, .5, .5, 0));
assertFalse(Segment3afp.intersectsSegmentSegmentWithoutEnds(
0, 0, 0, 1, 1, 0,
-3, -3, 0, 0, 0, 0));
assertFalse(Segment3afp.intersectsSegmentSegmentWithoutEnds(
0, 0, 0, 1, 1, 0,
-3, -3, 0, -1, -1, 0));
assertFalse(Segment3afp.intersectsSegmentSegmentWithoutEnds(
0, 0, 0, 1, 1, 0,
-3, 0, 0, 4, 0, 0));
assertFalse(Segment3afp.intersectsSegmentSegmentWithoutEnds(
0, 0, 0, 1, 1, 0,
-3, -1, 0, 4, -1, 0));
assertFalse(Segment3afp.intersectsSegmentSegmentWithoutEnds(
0, 0, 0, 1, 1, 0,
-3, -1, 0, -1, -1, 0));
assertFalse(Segment3afp.intersectsSegmentSegmentWithoutEnds(
0, 0, 0, 1, 1, 0,
-3, 0, 0, -2, 1, 0));
assertFalse(Segment3afp.intersectsSegmentSegmentWithoutEnds(
0, 0, 0, 1, 1, 0,
10, 0, 0, 9, -1, 0));
assertFalse(
Segment3afp.intersectsSegmentSegmentWithoutEnds(
7, -5, 0, 1, 1, 0,
4, -3, 0, 1, 1, 0));
}
@Test
public void staticIsCollinearLines() {
assertTrue(Segment3afp.isCollinearLines(0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0));
assertTrue(Segment3afp.isCollinearLines(0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0));
assertTrue(Segment3afp.isCollinearLines(0, 0, 0, 1, 1, 0, 0, 0, 0, -1, -1, 0));
assertTrue(Segment3afp.isCollinearLines(0, 0, 0, 1, 1, 0, -2, -2, 0, -3, -3, 0));
assertFalse(Segment3afp.isCollinearLines(0, 0, 0, 1, 1, 0, 5, 0, 0, 6, 1, 0));
assertFalse(Segment3afp.isCollinearLines(0, 0, 0, 1, 1, 0, 154, -124, 0, -2, 457, 0));
}
@Test
public void staticIsParallelLines() {
assertTrue(Segment3afp.isParallelLines(0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0));
assertTrue(Segment3afp.isParallelLines(0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0));
assertTrue(Segment3afp.isParallelLines(0, 0, 0, 1, 1, 0, 0, 0, 0, -1, -1, 0));
assertTrue(Segment3afp.isParallelLines(0, 0, 0, 1, 1, 0, -2, -2, 0, -3, -3, 0));
assertTrue(Segment3afp.isParallelLines(0, 0, 0, 1, 1, 0, 5, 0, 0, 6, 1, 0));
assertFalse(Segment3afp.isParallelLines(0, 0, 0, 1, 1, 0, 154, -124, 0, -2, 457, 0));
}
@Test
public void staticIsPointClosedToLine() {
assertTrue(Segment3afp.isPointClosedToLine(0, 0, 0, 1, 1, 0, 0, 0, 0, 0.1));
assertTrue(Segment3afp.isPointClosedToLine(0, 0, 0, 1, 1, 0, 1, 1, 0, 0.1));
assertTrue(Segment3afp.isPointClosedToLine(0, 0, 0, 1, 1, 0, .25, .25, 0, 0.1));
assertFalse(Segment3afp.isPointClosedToLine(0, 0, 0, 1, 1, 0, 0.2, 0, 0, 0.1));
assertFalse(Segment3afp.isPointClosedToLine(0, 0, 0, 1, 1, 0, 120, 0, 0, 0.1));
assertTrue(Segment3afp.isPointClosedToLine(0, 0, 0, 1, 1, 0, -20.05, -20, 0, 0.1));
}
@Test
public void staticIsPointClosedToSegment() {
assertTrue(Segment3afp.isPointClosedToSegment(0, 0, 0, 1, 1, 0, 0, 0, 0, 0.1));
assertTrue(Segment3afp.isPointClosedToSegment(0, 0, 0, 1, 1, 0, 1, 1, 0, 0.1));
assertTrue(Segment3afp.isPointClosedToSegment(0, 0, 0, 1, 1, 0, .25, .25, 0, 0.1));
assertFalse(Segment3afp.isPointClosedToSegment(0, 0, 0, 1, 1, 0, 0.2, 0, 0, 0.1));
assertFalse(Segment3afp.isPointClosedToSegment(0, 0, 0, 1, 1, 0, 120, 0, 0, 0.1));
assertFalse(Segment3afp.isPointClosedToSegment(0, 0, 0, 1, 1, 0, -20.05, -20, 0, 0.1));
}
@Test
@Override
public void testClone() {
T clone = this.shape.clone();
assertNotNull(clone);
assertNotSame(this.shape, clone);
assertEquals(this.shape.getClass(), clone.getClass());
assertEpsilonEquals(0, clone.getX1());
assertEpsilonEquals(0, clone.getY1());
assertEpsilonEquals(0, clone.getZ1());
assertEpsilonEquals(1, clone.getX2());
assertEpsilonEquals(1, clone.getY2());
assertEpsilonEquals(1, clone.getZ2());
}
@Override
public void equalsObject() {
assertFalse(this.shape.equals(null));
assertFalse(this.shape.equals(new Object()));
assertFalse(this.shape.equals(createSegment(0, 0, 0, 5, 0, 0)));
assertFalse(this.shape.equals(createSegment(0, 0, 0, 2, 2, 0)));
assertFalse(this.shape.equals(createSphere(5, 8, 0, 6)));
assertTrue(this.shape.equals(this.shape));
assertTrue(this.shape.equals(createSegment(0, 0, 0, 1, 1, 0)));
}
@Override
public void equalsObject_withPathIterator() {
assertFalse(this.shape.equals(createSegment(0, 0, 0, 5, 0, 0).getPathIterator()));
assertFalse(this.shape.equals(createSegment(0, 0, 0, 2, 2, 0).getPathIterator()));
assertFalse(this.shape.equals(createSphere(5, 8, 0, 6).getPathIterator()));
assertTrue(this.shape.equals(this.shape.getPathIterator()));
assertTrue(this.shape.equals(createSegment(0, 0, 0, 1, 1, 0).getPathIterator()));
}
@Override
public void equalsToPathIterator() {
assertFalse(this.shape.equalsToPathIterator((PathIterator3ai) null));
assertFalse(this.shape.equalsToPathIterator(createSegment(0, 0, 0, 5, 0, 0).getPathIterator()));
assertFalse(this.shape.equalsToPathIterator(createSegment(0, 0, 0, 2, 2, 0).getPathIterator()));
assertFalse(this.shape.equalsToPathIterator(createSphere(5, 8, 0, 6).getPathIterator()));
assertTrue(this.shape.equalsToPathIterator(this.shape.getPathIterator()));
assertTrue(this.shape.equalsToPathIterator(createSegment(0, 0, 0, 1, 1, 0).getPathIterator()));
}
@Override
public void equalsToShape() {
assertFalse(this.shape.equalsToShape(null));
assertFalse(this.shape.equalsToShape((T) createSegment(0, 0, 0, 5, 0, 0)));
assertFalse(this.shape.equalsToShape((T) createSegment(0, 0, 0, 2, 2, 0)));
assertTrue(this.shape.equalsToShape(this.shape));
assertTrue(this.shape.equalsToShape((T) createSegment(0, 0, 0, 1, 1, 0)));
}
@Test
@Override
public void isEmpty() {
assertFalse(this.shape.isEmpty());
this.shape.clear();
assertTrue(this.shape.isEmpty());
}
@Test
@Override
public void clear() {
this.shape.clear();
assertEpsilonEquals(0, this.shape.getX1());
assertEpsilonEquals(0, this.shape.getY1());
assertEpsilonEquals(0, this.shape.getZ1());
assertEpsilonEquals(0, this.shape.getX2());
assertEpsilonEquals(0, this.shape.getY2());
assertEpsilonEquals(0, this.shape.getZ2());
}
@Test
public void getP1() {
Point3D p = this.shape.getP1();
assertNotNull(p);
assertEpsilonEquals(0, p.getX());
assertEpsilonEquals(0, p.getY());
assertEpsilonEquals(0, p.getZ());
}
@Test
public void getP2() {
Point3D p = this.shape.getP2();
assertNotNull(p);
assertEpsilonEquals(1, p.getX());
assertEpsilonEquals(1, p.getY());
assertEpsilonEquals(1, p.getZ());
}
@Test
public void setP1DoubleDouble() {
this.shape.setP1(123.456, -789.159, -1);
assertEpsilonEquals(123.456, this.shape.getX1());
assertEpsilonEquals(-789.159, this.shape.getY1());
assertEpsilonEquals(-1, this.shape.getZ1());
assertEpsilonEquals(1, this.shape.getX2());
assertEpsilonEquals(1, this.shape.getY2());
assertEpsilonEquals(1, this.shape.getZ2());
}
@Test
public void setP1Point3D() {
this.shape.setP1(createPoint(123.456, -789.159, -1));
assertEpsilonEquals(123.456, this.shape.getX1());
assertEpsilonEquals(-789.159, this.shape.getY1());
assertEpsilonEquals(-1, this.shape.getZ1());
assertEpsilonEquals(1, this.shape.getX2());
assertEpsilonEquals(1, this.shape.getY2());
assertEpsilonEquals(1, this.shape.getZ2());
}
@Test
public void setP2DoubleDouble() {
this.shape.setP2(123.456, -789.159, -1);
assertEpsilonEquals(0, this.shape.getX1());
assertEpsilonEquals(0, this.shape.getY1());
assertEpsilonEquals(0, this.shape.getZ1());
assertEpsilonEquals(123.456, this.shape.getX2());
assertEpsilonEquals(-789.159, this.shape.getY2());
assertEpsilonEquals(-1, this.shape.getZ2());
}
@Test
public void setP2Point3D() {
this.shape.setP2(createPoint(123.456, -789.159, -1));
assertEpsilonEquals(0, this.shape.getX1());
assertEpsilonEquals(0, this.shape.getY1());
assertEpsilonEquals(0, this.shape.getZ1());
assertEpsilonEquals(123.456, this.shape.getX2());
assertEpsilonEquals(-789.159, this.shape.getY2());
assertEpsilonEquals(-1, this.shape.getZ2());
}
@Test
public void getX1() {
assertEpsilonEquals(0, this.shape.getX1());
}
@Test
public void getX2() {
assertEpsilonEquals(1, this.shape.getX2());
}
@Test
public void getY1() {
assertEpsilonEquals(0, this.shape.getY1());
}
@Test
public void getY2() {
assertEpsilonEquals(1, this.shape.getY2());
}
@Test
public void getZ1() {
assertEpsilonEquals(0, this.shape.getZ1());
}
@Test
public void getZ2() {
assertEpsilonEquals(1, this.shape.getZ2());
}
@Test
@Ignore
public void length() {
assertEpsilonEquals(Math.sqrt(2), this.shape.getLength());
}
@Test
@Ignore
public void lengthSquared() {
assertEpsilonEquals(2, this.shape.getLengthSquared());
}
@Test
public void setDoubleDoubleDoubleDouble() {
this.shape.set(123.456, 456.789, 456.123, 789.123, 159.753, 789.456);
assertEpsilonEquals(123.456, this.shape.getX1());
assertEpsilonEquals(456.789, this.shape.getY1());
assertEpsilonEquals(456.123, this.shape.getZ1());
assertEpsilonEquals(789.123, this.shape.getX2());
assertEpsilonEquals(159.753, this.shape.getY2());
assertEpsilonEquals(789.456, this.shape.getZ2());
}
@Test
public void setPoint3DPoint3D() {
this.shape.set(createPoint(123.456, 456.789, 456.123), createPoint(789.123, 159.753, 789.456));
assertEpsilonEquals(123.456, this.shape.getX1());
assertEpsilonEquals(456.789, this.shape.getY1());
assertEpsilonEquals(456.123, this.shape.getZ1());
assertEpsilonEquals(789.123, this.shape.getX2());
assertEpsilonEquals(159.753, this.shape.getY2());
assertEpsilonEquals(789.456, this.shape.getZ2());
}
@Test
public void setX1() {
this.shape.setX1(123.456);
assertEpsilonEquals(123.456, this.shape.getX1());
assertEpsilonEquals(0, this.shape.getY1());
assertEpsilonEquals(0, this.shape.getZ1());
assertEpsilonEquals(1, this.shape.getX2());
assertEpsilonEquals(1, this.shape.getY2());
assertEpsilonEquals(1, this.shape.getZ2());
}
@Test
public void setX2() {
this.shape.setX2(123.456);
assertEpsilonEquals(0, this.shape.getX1());
assertEpsilonEquals(0, this.shape.getY1());
assertEpsilonEquals(0, this.shape.getZ1());
assertEpsilonEquals(123.456, this.shape.getX2());
assertEpsilonEquals(1, this.shape.getY2());
assertEpsilonEquals(1, this.shape.getZ2());
}
@Test
public void setY1() {
this.shape.setY1(123.456);
assertEpsilonEquals(0, this.shape.getX1());
assertEpsilonEquals(123.456, this.shape.getY1());
assertEpsilonEquals(0, this.shape.getZ1());
assertEpsilonEquals(1, this.shape.getX2());
assertEpsilonEquals(1, this.shape.getY2());
assertEpsilonEquals(1, this.shape.getZ2());
}
@Test
public void setY2() {
this.shape.setY2(123.456);
assertEpsilonEquals(0, this.shape.getX1());
assertEpsilonEquals(0, this.shape.getY1());
assertEpsilonEquals(0, this.shape.getZ1());
assertEpsilonEquals(1, this.shape.getX2());
assertEpsilonEquals(123.456, this.shape.getY2());
assertEpsilonEquals(1, this.shape.getZ2());
}
@Test
public void setZ1() {
this.shape.setZ1(123.456);
assertEpsilonEquals(0, this.shape.getX1());
assertEpsilonEquals(0, this.shape.getY1());
assertEpsilonEquals(123.456, this.shape.getZ1());
assertEpsilonEquals(1, this.shape.getX2());
assertEpsilonEquals(1, this.shape.getY2());
assertEpsilonEquals(1, this.shape.getZ2());
}
@Test
public void setZ2() {
this.shape.setZ2(123.456);
assertEpsilonEquals(0, this.shape.getX1());
assertEpsilonEquals(0, this.shape.getY1());
assertEpsilonEquals(0, this.shape.getZ1());
assertEpsilonEquals(1, this.shape.getX2());
assertEpsilonEquals(1, this.shape.getY2());
assertEpsilonEquals(123.456, this.shape.getZ2());
}
@Test
@Ignore
public void transformTransform3D() {
Segment3afp s;
Transform3D tr;
tr = new Transform3D();
s = this.shape.clone();
s.transform(tr);
assertEpsilonEquals(0, s.getX1());
assertEpsilonEquals(0, s.getY1());
assertEpsilonEquals(0, s.getZ1());
assertEpsilonEquals(1, s.getX2());
assertEpsilonEquals(1, s.getY2());
assertEpsilonEquals(1, s.getZ2());
tr = new Transform3D();
tr.setTranslation(3.4, 4.5, 0);
s = this.shape.clone();
s.transform(tr);
assertEpsilonEquals(3.4, s.getX1());
assertEpsilonEquals(4.5, s.getY1());
assertEpsilonEquals(4.4, s.getX2());
assertEpsilonEquals(5.5, s.getY2());
tr = new Transform3D();
tr.setRotation(MathConstants.PI);
s = this.shape.clone();
s.transform(tr);
assertEpsilonEquals(0, s.getX1());
assertEpsilonEquals(0, s.getY1());
assertEpsilonEquals(-1, s.getX2());
assertEpsilonEquals(-1, s.getY2());
tr = new Transform3D();
tr.setRotation(MathConstants.QUARTER_PI);
s = this.shape.clone();
s.transform(tr);
assertEpsilonEquals(0, s.getX1());
assertEpsilonEquals(0, s.getX2());
assertEpsilonEquals(1.414213562, s.getY2());
}
@Test
public void clipToRectangle() {
this.shape.set(20, 45, 0, 43, 15, 0);
assertTrue(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(20, this.shape.getX1());
assertEpsilonEquals(45, this.shape.getY1());
assertEpsilonEquals(43, this.shape.getX2());
assertEpsilonEquals(15, this.shape.getY2());
this.shape.set(20, 55, 0, 43, 15, 0);
assertTrue(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(23.45, this.shape.getX1());
assertEpsilonEquals(49.0, this.shape.getY1());
assertEpsilonEquals(43, this.shape.getX2());
assertEpsilonEquals(15, this.shape.getY2());
this.shape.set(20, 0, 0, 43, 15, 0);
assertTrue(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(38.4, this.shape.getX1());
assertEpsilonEquals(12.0, this.shape.getY1());
assertEpsilonEquals(43, this.shape.getX2());
assertEpsilonEquals(15, this.shape.getY2());
this.shape.set(0, 45, 0, 43, 15, 0);
assertTrue(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(10, this.shape.getX1());
assertEpsilonEquals(38.02326, this.shape.getY1());
assertEpsilonEquals(43, this.shape.getX2());
assertEpsilonEquals(15, this.shape.getY2());
this.shape.set(20, 45, 0, 60, 15, 0);
assertTrue(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(20, this.shape.getX1());
assertEpsilonEquals(45, this.shape.getY1());
assertEpsilonEquals(50, this.shape.getX2());
assertEpsilonEquals(22.5, this.shape.getY2());
this.shape.set(5, 45, 0, 30, 55, 0);
assertTrue(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(10, this.shape.getX1());
assertEpsilonEquals(47, this.shape.getY1());
assertEpsilonEquals(15, this.shape.getX2());
assertEpsilonEquals(49, this.shape.getY2());
this.shape.set(40, 55, 0, 60, 15, 0);
assertTrue(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(43, this.shape.getX1());
assertEpsilonEquals(49, this.shape.getY1());
assertEpsilonEquals(50, this.shape.getX2());
assertEpsilonEquals(35, this.shape.getY2());
this.shape.set(40, 0, 0, 60, 40, 0);
assertTrue(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(46, this.shape.getX1());
assertEpsilonEquals(12, this.shape.getY1());
assertEpsilonEquals(50, this.shape.getX2());
assertEpsilonEquals(20, this.shape.getY2());
this.shape.set(0, 40, 0, 20, 0, 0);
assertTrue(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(10, this.shape.getX1());
assertEpsilonEquals(20, this.shape.getY1());
assertEpsilonEquals(14, this.shape.getX2());
assertEpsilonEquals(12, this.shape.getY2());
this.shape.set(0, 45, 0, 100, 15, 0);
assertTrue(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(10, this.shape.getX1());
assertEpsilonEquals(42, this.shape.getY1());
assertEpsilonEquals(50, this.shape.getX2());
assertEpsilonEquals(30, this.shape.getY2());
this.shape.set(20, 100, 0, 43, 0, 0);
assertTrue(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(31.73, this.shape.getX1());
assertEpsilonEquals(49, this.shape.getY1());
assertEpsilonEquals(40.24, this.shape.getX2());
assertEpsilonEquals(12, this.shape.getY2());
this.shape.set(20, 100, 0, 43, 101, 0);
assertFalse(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(20, this.shape.getX1());
assertEpsilonEquals(100, this.shape.getY1());
assertEpsilonEquals(43, this.shape.getX2());
assertEpsilonEquals(101, this.shape.getY2());
this.shape.set(100, 45, 0, 102, 15, 0);
assertFalse(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(100, this.shape.getX1());
assertEpsilonEquals(45, this.shape.getY1());
assertEpsilonEquals(102, this.shape.getX2());
assertEpsilonEquals(15, this.shape.getY2());
this.shape.set(20, 0, 0, 43, -2, 0);
assertFalse(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(20, this.shape.getX1());
assertEpsilonEquals(0, this.shape.getY1());
assertEpsilonEquals(43, this.shape.getX2());
assertEpsilonEquals(-2, this.shape.getY2());
this.shape.set(-100, 45, 0, -48, 15, 0);
assertFalse(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(-100, this.shape.getX1());
assertEpsilonEquals(45, this.shape.getY1());
assertEpsilonEquals(-48, this.shape.getX2());
assertEpsilonEquals(15, this.shape.getY2());
this.shape.set(-100, 60, 0, -98, 61, 0);
assertFalse(this.shape.clipToRectangle(10, 12, 0, 50, 49, 0));
assertEpsilonEquals(-100, this.shape.getX1());
assertEpsilonEquals(60, this.shape.getY1());
assertEpsilonEquals(-98, this.shape.getX2());
assertEpsilonEquals(61, this.shape.getY2());
}
@Override
public void containsDoubleDouble() {
assertTrue(this.shape.contains(0, 0, 0));
assertTrue(this.shape.contains(.5, .5, 0));
assertTrue(this.shape.contains(1, 1, 0));
assertFalse(this.shape.contains(2.3, 4.5, 0));
assertFalse(this.shape.contains(2, 2, 0));
}
@Override
public void containsPoint3D() {
assertTrue(this.shape.contains(createPoint(0, 0, 0)));
assertTrue(this.shape.contains(createPoint(.5, .5, 0)));
assertTrue(this.shape.contains(createPoint(1, 1, 0)));
assertFalse(this.shape.contains(createPoint(2.3, 4.5, 0)));
assertFalse(this.shape.contains(createPoint(2, 2, 0)));
}
@Override
public void getClosestPointTo() {
Point3D p;
p = this.shape.getClosestPointTo(createPoint(0, 0, 0));
assertEpsilonEquals(0, p.getX());
assertEpsilonEquals(0, p.getY());
p = this.shape.getClosestPointTo(createPoint(.5, .5, 0));
assertEpsilonEquals(.5, p.getX());
assertEpsilonEquals(.5, p.getY());
p = this.shape.getClosestPointTo(createPoint(1, 1, 0));
assertEpsilonEquals(1, p.getX());
assertEpsilonEquals(1, p.getY());
p = this.shape.getClosestPointTo(createPoint(2, 2, 0));
assertEpsilonEquals(1, p.getX());
assertEpsilonEquals(1, p.getY());
p = this.shape.getClosestPointTo(createPoint(-2, 2, 0));
assertEpsilonEquals(0, p.getX());
assertEpsilonEquals(0, p.getY());
p = this.shape.getClosestPointTo(createPoint(0.1, 1.2, 0));
assertEpsilonEquals(0.65, p.getX());
assertEpsilonEquals(0.65, p.getY());
p = this.shape.getClosestPointTo(createPoint(10.1, -.2, 0));
assertEpsilonEquals(1, p.getX());
assertEpsilonEquals(1, p.getY());
}
@Override
public void getFarthestPointTo() {
Point3D p;
p = this.shape.getFarthestPointTo(createPoint(0, 0, 0));
assertEpsilonEquals(1, p.getX());
assertEpsilonEquals(1, p.getY());
p = this.shape.getFarthestPointTo(createPoint(.5, .5, 0));
assertEpsilonEquals(0, p.getX());
assertEpsilonEquals(0, p.getY());
p = this.shape.getFarthestPointTo(createPoint(1, 1, 0));
assertEpsilonEquals(0, p.getX());
assertEpsilonEquals(0, p.getY());
p = this.shape.getFarthestPointTo(createPoint(2, 2, 0));
assertEpsilonEquals(0, p.getX());
assertEpsilonEquals(0, p.getY());
p = this.shape.getFarthestPointTo(createPoint(-2, 2, 0));
assertEpsilonEquals(1, p.getX());
assertEpsilonEquals(1, p.getY());
p = this.shape.getFarthestPointTo(createPoint(0.1, 1.2, 0));
assertEpsilonEquals(0, p.getX());
assertEpsilonEquals(0, p.getY());
p = this.shape.getFarthestPointTo(createPoint(10.1, -.2, 0));
assertEpsilonEquals(0, p.getX());
assertEpsilonEquals(0, p.getY());
}
@Override
public void getDistance() {
assertEpsilonEquals(0, this.shape.getDistance(createPoint(0, 0, 0)));
assertEpsilonEquals(0, this.shape.getDistance(createPoint(.5, .5, 0)));
assertEpsilonEquals(0, this.shape.getDistance(createPoint(1, 1, 0)));
assertEpsilonEquals(3.733630941, this.shape.getDistance(createPoint(2.3, 4.5, 0)));
assertEpsilonEquals(1.414213562, this.shape.getDistance(createPoint(2, 2, 0)));
}
@Override
public void getDistanceSquared() {
assertEpsilonEquals(0, this.shape.getDistanceSquared(createPoint(0, 0, 0)));
assertEpsilonEquals(0, this.shape.getDistanceSquared(createPoint(.5, .5, 0)));
assertEpsilonEquals(0, this.shape.getDistanceSquared(createPoint(1, 1, 0)));
assertEpsilonEquals(13.94, this.shape.getDistanceSquared(createPoint(2.3, 4.5, 0)));
assertEpsilonEquals(2, this.shape.getDistanceSquared(createPoint(2, 2, 0)));
}
@Override
public void getDistanceL1() {
assertEpsilonEquals(0, this.shape.getDistanceL1(createPoint(0, 0, 0)));
assertEpsilonEquals(0, this.shape.getDistanceL1(createPoint(.5, .5, 0)));
assertEpsilonEquals(0, this.shape.getDistanceL1(createPoint(1, 1, 0)));
assertEpsilonEquals(4.8, this.shape.getDistanceL1(createPoint(2.3, 4.5, 0)));
assertEpsilonEquals(2, this.shape.getDistanceL1(createPoint(2, 2, 0)));
}
@Override
public void getDistanceLinf() {
assertEpsilonEquals(0, this.shape.getDistanceLinf(createPoint(0, 0, 0)));
assertEpsilonEquals(0, this.shape.getDistanceLinf(createPoint(.5, .5, 0)));
assertEpsilonEquals(0, this.shape.getDistanceLinf(createPoint(1, 1, 0)));
assertEpsilonEquals(3.5, this.shape.getDistanceLinf(createPoint(2.3, 4.5, 0)));
assertEpsilonEquals(1, this.shape.getDistanceLinf(createPoint(2, 2, 0)));
}
@Override
public void setIT() {
this.shape.set((T) createSegment(123.456, 456.789, 0, 789.123, 159.753, 0));
assertEpsilonEquals(123.456, this.shape.getX1());
assertEpsilonEquals(456.789, this.shape.getY1());
assertEpsilonEquals(789.123, this.shape.getX2());
assertEpsilonEquals(159.753, this.shape.getY2());
}
@Override
public void getPathIterator() {
PathIterator3afp pi = this.shape.getPathIterator();
assertElement(pi, PathElementType.MOVE_TO, 0, 0, 0);
assertElement(pi, PathElementType.LINE_TO, 1, 1, 0);
assertNoElement(pi);
}
@Override
public void getPathIteratorTransform3D() {
Transform3D tr;
PathIterator3afp pi;
tr = new Transform3D();
pi = this.shape.getPathIterator(tr);
assertElement(pi, PathElementType.MOVE_TO, 0, 0, 0);
assertElement(pi, PathElementType.LINE_TO, 1, 1, 0);
assertNoElement(pi);
tr = new Transform3D();
tr.makeTranslationMatrix(3.4, 4.5, 0);
pi = this.shape.getPathIterator(tr);
assertElement(pi, PathElementType.MOVE_TO, 3.4, 4.5, 0);
assertElement(pi, PathElementType.LINE_TO, 4.4, 5.5, 0);
assertNoElement(pi);
tr = new Transform3D();
tr.makeRotationMatrix(MathConstants.QUARTER_PI);
pi = this.shape.getPathIterator(tr);
assertElement(pi, PathElementType.MOVE_TO, 0, 0, 0);
assertElement(pi, PathElementType.LINE_TO, 0, 1.414213562, 0);
assertNoElement(pi);
}
@Override
public void createTransformedShape() {
Segment3afp s;
Transform3D tr;
tr = new Transform3D();
s = (Segment3afp) this.shape.createTransformedShape(tr);
assertEpsilonEquals(0, s.getX1());
assertEpsilonEquals(0, s.getY1());
assertEpsilonEquals(0, s.getZ1());
assertEpsilonEquals(1, s.getX2());
assertEpsilonEquals(1, s.getY2());
assertEpsilonEquals(1, s.getZ2());
tr = new Transform3D();
tr.setTranslation(3.4, 4.5, 0);
s = (Segment3afp) this.shape.createTransformedShape(tr);
assertEpsilonEquals(3.4, s.getX1());
assertEpsilonEquals(4.5, s.getY1());
assertEpsilonEquals(4.4, s.getX2());
assertEpsilonEquals(5.5, s.getY2());
tr = new Transform3D();
tr.setRotation(MathConstants.PI);
s = (Segment3afp) this.shape.createTransformedShape(tr);
assertEpsilonEquals(0, s.getX1());
assertEpsilonEquals(0, s.getY1());
assertEpsilonEquals(0, s.getZ1());
assertEpsilonEquals(-1, s.getX2());
assertEpsilonEquals(-1, s.getY2());
assertEpsilonEquals(-1, s.getZ2());
tr = new Transform3D();
tr.setRotation(MathConstants.QUARTER_PI);
s = (Segment3afp) this.shape.createTransformedShape(tr);
assertEpsilonEquals(0, s.getX1());
assertEpsilonEquals(0, s.getY1());
assertEpsilonEquals(0, s.getX2());
assertEpsilonEquals(1.414213562, s.getY2());
}
@Override
public void translateDoubleDouble() {
this.shape.translate(3.4, 4.5, 0);
assertEpsilonEquals(3.4, this.shape.getX1());
assertEpsilonEquals(4.5, this.shape.getY1());
assertEpsilonEquals(4.4, this.shape.getX2());
assertEpsilonEquals(5.5, this.shape.getY2());
}
@Override
public void translateVector3D() {
this.shape.translate(createVector(3.4, 4.5, 0));
assertEpsilonEquals(3.4, this.shape.getX1());
assertEpsilonEquals(4.5, this.shape.getY1());
assertEpsilonEquals(4.4, this.shape.getX2());
assertEpsilonEquals(5.5, this.shape.getY2());
}
@Override
public void toBoundingBox() {
B bb = this.shape.toBoundingBox();
assertEpsilonEquals(0, bb.getMinX());
assertEpsilonEquals(0, bb.getMinY());
assertEpsilonEquals(1, bb.getMaxX());
assertEpsilonEquals(1, bb.getMaxY());
}
@Override
public void toBoundingBoxB() {
B bb = createRectangularPrism(0, 0, 0, 0, 0, 0);
this.shape.toBoundingBox(bb);
assertEpsilonEquals(0, bb.getMinX());
assertEpsilonEquals(0, bb.getMinY());
assertEpsilonEquals(0, bb.getMinZ());
assertEpsilonEquals(1, bb.getMaxX());
assertEpsilonEquals(1, bb.getMaxY());
assertEpsilonEquals(1, bb.getMaxZ());
}
@Override
public void containsRectangularPrism3afp() {
assertFalse(this.shape.contains(createRectangularPrism(0, 0, 0, 1, 1, 0)));
assertFalse(this.shape.contains(createRectangularPrism(0, 0, 0, 0, 0, 0)));
assertFalse(this.shape.contains(createRectangularPrism(10, 10, 0, 1, 1, 0)));
this.shape.set(10, 15, 0, 10, 18, 0);
assertTrue(this.shape.contains(createRectangularPrism(10, 16, 0, 0, 1, 0)));
}
@Override
public void intersectsRectangularPrism3afp() {
this.shape.set(20, 45, 0, 43, 15, 0);
assertTrue(this.shape.intersects(createRectangularPrism(10, 12, 0, 40, 37, 0)));
this.shape.set(20, 55, 0, 43, 15, 0);
assertTrue(this.shape.intersects(createRectangularPrism(10, 12, 0, 40, 37, 0)));
this.shape.set(20, 0, 0, 43, 15, 0);
assertTrue(this.shape.intersects(createRectangularPrism(10, 12, 0, 40, 37, 0)));
this.shape.set(0, 45, 0, 43, 15, 0);
assertTrue(this.shape.intersects(createRectangularPrism(10, 12, 0, 40, 37, 0)));
this.shape.set(20, 45, 0, 60, 15, 0);
assertTrue(this.shape.intersects(createRectangularPrism(10, 12, 0, 40, 37, 0)));
this.shape.set(5, 45, 0, 30, 55, 0);
assertTrue(this.shape.intersects(createRectangularPrism(10, 12, 0, 40, 37, 0)));
this.shape.set(40, 55, 0, 60, 15, 0);
assertTrue(this.shape.intersects(createRectangularPrism(10, 12, 0, 40, 37, 0)));
this.shape.set(40, 0, 0, 60, 40, 0);
assertTrue(this.shape.intersects(createRectangularPrism(10, 12, 0, 40, 37, 0)));
this.shape.set(0, 40, 0, 20, 0, 0);
assertTrue(this.shape.intersects(createRectangularPrism(10, 12, 0, 40, 37, 0)));
this.shape.set(0, 45, 0, 100, 15, 0);
assertTrue(this.shape.intersects(createRectangularPrism(10, 12, 0, 40, 37, 0)));
this.shape.set(20, 100, 0, 43, 0, 0);
assertTrue(this.shape.intersects(createRectangularPrism(10, 12, 0, 40, 37, 0)));
this.shape.set(20, 100, 0, 43, 101, 0);
assertFalse(this.shape.intersects(createRectangularPrism(10, 12, 0, 40, 37, 0)));
this.shape.set(100, 45, 0, 102, 15, 0);
assertFalse(this.shape.intersects(createRectangularPrism(10, 12, 0, 40, 37, 0)));
this.shape.set(20, 0, 0, 43, -2, 0);
assertFalse(this.shape.intersects(createRectangularPrism(10, 12, 0, 40, 37, 0)));
this.shape.set(-100, 45, 0, -48, 15, 0);
assertFalse(this.shape.intersects(createRectangularPrism(10, 12, 0, 50, 49, 0)));
this.shape.set(-100, 60, 0, -98, 61, 0);
assertFalse(this.shape.intersects(createRectangularPrism(10, 12, 0, 40, 37, 0)));
}
@Override
public void intersectsSphere3afp() {
assertFalse(this.shape.intersects(createSphere(10, 10, 0, 1)));
assertTrue(this.shape.intersects(createSphere(0, 0, 0, 1)));
assertTrue(this.shape.intersects(createSphere(0, .5, 0, 1)));
assertTrue(this.shape.intersects(createSphere(.5, 0, 0, 1)));
assertTrue(this.shape.intersects(createSphere(.5, .5, 0, 1)));
assertFalse(this.shape.intersects(createSphere(2, 0, 0, 1)));
assertFalse(this.shape.intersects(createSphere(12, 8, 0, 2)));
assertFalse(this.shape.intersects(createSphere(12, 8, 0, 2.1)));
assertFalse(this.shape.intersects(createSphere(2, 1, 0, 1)));
assertTrue(this.shape.intersects(createSphere(2, 1, 0, 1.1)));
this.shape.set(0, 0, 0, 3, 0, 0);
assertFalse(this.shape.intersects(createSphere(2, 1, 0, 1)));
assertTrue(this.shape.intersects(createSphere(2, 1, 0, 1.1)));
}
@Override
public void intersectsSegment3afp() {
assertFalse(this.shape.intersects(createSegment(10, -5, 0, 10, -4, 0)));
assertFalse(this.shape.intersects(createSegment(10, 5, 0, 10, 4, 0)));
assertFalse(this.shape.intersects(createSegment(-5, .5, 0, 0, .6, 0)));
assertFalse(this.shape.intersects(createSegment(10, -1, 0, 11, .6, 0)));
assertFalse(this.shape.intersects(createSegment(10, -1, 0, 11, 2, 0)));
assertFalse(this.shape.intersects(createSegment(10, .5, 0, 11, 2, 0)));
assertFalse(this.shape.intersects(createSegment(10, 2, 0, 11, .6, 0)));
assertFalse(this.shape.intersects(createSegment(10, 2, 0, 11, -1, 0)));
assertFalse(this.shape.intersects(createSegment(10, .6, 0, 11, -1, 0)));
assertFalse(this.shape.intersects(createSegment(0, .5, 0, .25, .5, 0)));
assertFalse(this.shape.intersects(createSegment(.75, .5, 0, 1, .5, 0)));
assertFalse(this.shape.intersects(createSegment(5, -5, 0, .75, .5, 0)));
assertTrue(this.shape.intersects(createSegment(5, -5, 0, 0, 1, 0)));
assertTrue(this.shape.intersects(createSegment(5, -5, 0, 1, 1, 0)));
assertFalse(this.shape.intersects(createSegment(-2, 1, 0, 5, -5, 0)));
}
@Override
public void intersectsPath3afp() {
Path3afp p;
p = createPath();
p.moveTo(-2, -2, 0);
p.lineTo(-2, 2, 0);
p.lineTo(2, 2, 0);
p.lineTo(2, -2, 0);
assertFalse(this.shape.intersects(p));
p.closePath();
assertTrue(this.shape.intersects(p));
p = createPath();
p.moveTo(-2, -2, 0);
p.lineTo(0, 0, 0);
p.lineTo(-2, 2, 0);
assertFalse(this.shape.intersects(p));
p.closePath();
assertFalse(this.shape.intersects(p));
p = createPath();
p.moveTo(-2, -2, 0);
p.lineTo(2, 2, 0);
p.lineTo(-2, 2, 0);
assertTrue(this.shape.intersects(p));
p.closePath();
assertTrue(this.shape.intersects(p));
p = createPath();
p.moveTo(-2, -2, 0);
p.lineTo(-2, 2, 0);
p.lineTo(2, -2, 0);
assertTrue(this.shape.intersects(p));
p.closePath();
assertTrue(this.shape.intersects(p));
p = createPath();
p.moveTo(-2, 2, 0);
p.lineTo(1, 0, 0);
p.lineTo(2, 1, 0);
assertTrue(this.shape.intersects(p));
p.closePath();
assertTrue(this.shape.intersects(p));
p = createPath();
p.moveTo(-2, 2, 0);
p.lineTo(2, 1, 0);
p.lineTo(1, 0, 0);
assertFalse(this.shape.intersects(p));
p.closePath();
assertTrue(this.shape.intersects(p));
}
@Override
public void intersectsPathIterator3afp() {
Path3afp<?, ?, ?, ?, ?, B> p;
p = createPath();
p.moveTo(-2, -2, 0);
p.lineTo(-2, 2, 0);
p.lineTo(2, 2, 0);
p.lineTo(2, -2, 0);
assertFalse(this.shape.intersects(p.getPathIterator()));
p.closePath();
assertTrue(this.shape.intersects(p.getPathIterator()));
p = createPath();
p.moveTo(-2, -2, 0);
p.lineTo(0, 0, 0);
p.lineTo(-2, 2, 0);
assertFalse(this.shape.intersects(p.getPathIterator()));
p.closePath();
assertFalse(this.shape.intersects(p.getPathIterator()));
p = createPath();
p.moveTo(-2, -2, 0);
p.lineTo(2, 2, 0);
p.lineTo(-2, 2, 0);
assertTrue(this.shape.intersects(p.getPathIterator()));
p.closePath();
assertTrue(this.shape.intersects(p.getPathIterator()));
p = createPath();
p.moveTo(-2, -2, 0);
p.lineTo(-2, 2, 0);
p.lineTo(2, -2, 0);
assertTrue(this.shape.intersects(p.getPathIterator()));
p.closePath();
assertTrue(this.shape.intersects(p.getPathIterator()));
p = createPath();
p.moveTo(-2, 2, 0);
p.lineTo(1, 0, 0);
p.lineTo(2, 1, 0);
assertTrue(this.shape.intersects(p.getPathIterator()));
p.closePath();
assertTrue(this.shape.intersects(p.getPathIterator()));
p = createPath();
p.moveTo(-2, 2, 0);
p.lineTo(2, 1, 0);
p.lineTo(1, 0, 0);
assertFalse(this.shape.intersects(p.getPathIterator()));
p.closePath();
assertTrue(this.shape.intersects(p.getPathIterator()));
}
@Override
public void intersectsShape3D() {
assertTrue(this.shape.intersects((Shape3D) createSphere(0, 0, 0, 1)));
}
@Override
public void operator_addVector3D() {
this.shape.operator_add(createVector(3.4, 4.5, 0));
assertEpsilonEquals(3.4, this.shape.getX1());
assertEpsilonEquals(4.5, this.shape.getY1());
assertEpsilonEquals(4.4, this.shape.getX2());
assertEpsilonEquals(5.5, this.shape.getY2());
}
@Override
public void operator_plusVector3D() {
T shape = this.shape.operator_plus(createVector(3.4, 4.5, 0));
assertNotSame(shape, this.shape);
assertEpsilonEquals(3.4, shape.getX1());
assertEpsilonEquals(4.5, shape.getY1());
assertEpsilonEquals(4.4, shape.getX2());
assertEpsilonEquals(5.5, shape.getY2());
}
@Override
public void operator_removeVector3D() {
this.shape.operator_remove(createVector(3.4, 4.5, 0));
assertEpsilonEquals(-3.4, this.shape.getX1());
assertEpsilonEquals(-4.5, this.shape.getY1());
assertEpsilonEquals(-2.4, this.shape.getX2());
assertEpsilonEquals(-3.5, this.shape.getY2());
}
@Override
public void operator_minusVector3D() {
T shape = this.shape.operator_minus(createVector(3.4, 4.5, 0));
assertEpsilonEquals(-3.4, shape.getX1());
assertEpsilonEquals(-4.5, shape.getY1());
assertEpsilonEquals(-2.4, shape.getX2());
assertEpsilonEquals(-3.5, shape.getY2());
}
@Override
public void operator_multiplyTransform3D() {
Segment3afp s;
Transform3D tr;
tr = new Transform3D();
s = (Segment3afp) this.shape.operator_multiply(tr);
assertEpsilonEquals(0, s.getX1());
assertEpsilonEquals(0, s.getY1());
assertEpsilonEquals(1, s.getX2());
assertEpsilonEquals(1, s.getY2());
tr = new Transform3D();
tr.setTranslation(3.4, 4.5, 0);
s = (Segment3afp) this.shape.operator_multiply(tr);
assertEpsilonEquals(3.4, s.getX1());
assertEpsilonEquals(4.5, s.getY1());
assertEpsilonEquals(4.4, s.getX2());
assertEpsilonEquals(5.5, s.getY2());
tr = new Transform3D();
tr.setRotation(MathConstants.PI);
s = (Segment3afp) this.shape.operator_multiply(tr);
assertEpsilonEquals(0, s.getX1());
assertEpsilonEquals(0, s.getY1());
assertEpsilonEquals(-1, s.getX2());
assertEpsilonEquals(-1, s.getY2());
tr = new Transform3D();
tr.setRotation(MathConstants.QUARTER_PI);
s = (Segment3afp) this.shape.operator_multiply(tr);
assertEpsilonEquals(0, s.getX1());
assertEpsilonEquals(0, s.getY1());
assertEpsilonEquals(0, s.getX2());
assertEpsilonEquals(1.414213562, s.getY2());
}
@Override
public void operator_andPoint3D() {
assertTrue(this.shape.operator_and(createPoint(0, 0, 0)));
assertTrue(this.shape.operator_and(createPoint(.5, .5, 0)));
assertTrue(this.shape.operator_and(createPoint(1, 1, 0)));
assertFalse(this.shape.operator_and(createPoint(2.3, 4.5, 0)));
assertFalse(this.shape.operator_and(createPoint(2, 2, 0)));
}
@Override
public void operator_andShape3D() {
assertTrue(this.shape.operator_and(createSphere(0, 0, 0, 1)));
}
@Override
public void operator_upToPoint3D() {
assertEpsilonEquals(0, this.shape.operator_upTo(createPoint(0, 0, 0)));
assertEpsilonEquals(0, this.shape.operator_upTo(createPoint(.5, .5, 0)));
assertEpsilonEquals(0, this.shape.operator_upTo(createPoint(1, 1, 0)));
assertEpsilonEquals(3.733630941, this.shape.operator_upTo(createPoint(2.3, 4.5, 0)));
assertEpsilonEquals(1.414213562, this.shape.operator_upTo(createPoint(2, 2, 0)));
}
@Test
public void issue15() {
Segment3afp segment = createSegment(-20, -20, 0, 20, 20, 0);
Path3afp path = createPath();
path.moveTo(5, 5, 0);
path.lineTo(5, -5, 0);
path.lineTo(-5, -5, 0);
path.lineTo(-5, 5, 0);
path.lineTo(5, 5, 0);
assertTrue(path.intersects(segment));
}
}