/*
* $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;
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.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import org.junit.Assume;
import org.junit.Test;
@SuppressWarnings("all")
public abstract class AbstractPoint3DTest<P extends Point3D<? super P, ? super V>, V extends Vector3D<? super V, ? super P>,
TT extends Tuple3D>
extends AbstractTuple3DTest<TT> {
public abstract P createPoint(double x, double y, double z);
public abstract V createVector(double x, double y, double z);
@Test
public final void staticIsCollinearPoints() {
assertTrue(Point3D.isCollinearPoints(0, 0, 0, 0, 0, 0, 0, 0, 0));
assertTrue(Point3D.isCollinearPoints(-6, -4, 0, -1, 3, 0, 4, 10, 0));
assertFalse(Point3D.isCollinearPoints(0, 0, 0, 1, 1, 0, 1, -5, 0));
}
@Test
public final void staticGetDistancePointPoint() {
assertEpsilonEquals(0, Point3D.getDistancePointPoint(0, 0, 0, 0, 0, 0));
assertEpsilonEquals(Math.sqrt(5), Point3D.getDistancePointPoint(0, 0, 0, 1, 2, 0));
assertEpsilonEquals(Math.sqrt(2), Point3D.getDistancePointPoint(0, 0, 0, 1, 1, 0));
}
@Test
public final void staticGetDistanceSquaredPointPoint() {
assertEpsilonEquals(0, Point3D.getDistanceSquaredPointPoint(0, 0, 0, 0, 0, 0));
assertEpsilonEquals(5, Point3D.getDistanceSquaredPointPoint(0, 0, 0, 1, 2, 0));
assertEpsilonEquals(2, Point3D.getDistanceSquaredPointPoint(0, 0, 0, 1, 1, 0));
}
@Test
public final void staticGetDistanceL1PointPoint() {
assertEpsilonEquals(4, Point3D.getDistanceL1PointPoint(1.0, 2.0, 0, 3.0, 0, 0));
assertEpsilonEquals(0, Point3D.getDistanceL1PointPoint(1.0, 2.0, 0, 1 ,2, 0));
assertEpsilonEquals(0, Point3D.getDistanceL1PointPoint(1, 2, 0, 1.0, 2.0, 0));
assertEpsilonEquals(4, Point3D.getDistanceL1PointPoint(1.0, 2.0, 0, -1, 0, 0));
}
@Test
public final void staticGetDistanceLinfPointPoint() {
assertEpsilonEquals(2, Point3D.getDistanceLinfPointPoint(1.0, 2.0, 0, 3.0, 0, 0));
assertEpsilonEquals(0, Point3D.getDistanceLinfPointPoint(1.0, 2.0, 0, 1, 2, 0));
assertEpsilonEquals(0, Point3D.getDistanceLinfPointPoint(1, 2, 1.0, 0, 2.0, 0));
assertEpsilonEquals(2, Point3D.getDistanceLinfPointPoint(1.0, 2.0, 0, -1, 0, 0));
}
@Test
public final void getDistanceSquaredPoint3D() {
Point3D point = createPoint(0, 0, 0);
Point3D point2 = createPoint(0, 0, 0);
Point3D point3 = createPoint(1, 2, 0);
Point3D point4 = createPoint(1, 1, 0);
assertEpsilonEquals(0, point.getDistanceSquared(point2));
assertEpsilonEquals(5, point.getDistanceSquared(point3));
assertEpsilonEquals(2, point.getDistanceSquared(point4));
}
@Test
public final void getDistancePoint3D() {
Point3D point = createPoint(0, 0, 0);
Point3D point2 = createPoint(0, 0, 0);
Point3D point3 = createPoint(1, 2, 0);
Point3D point4 = createPoint(1, 1, 0);
assertEpsilonEquals(0, point.getDistance(point2));
assertEpsilonEquals(Math.sqrt(5), point.getDistance(point3));
assertEpsilonEquals(Math.sqrt(2), point.getDistance(point4));
}
@Test
public final void getDistanceL1Point3D() {
Point3D point = createPoint(1, 2, 0);
Point3D point2 = createPoint(3, 0, 0);
Point3D point3 = createPoint(1, 2, 0);
Point3D point4 = createPoint(-1, 0, 0);
assertEpsilonEquals(4, point.getDistanceL1(point2));
assertEpsilonEquals(0, point.getDistanceL1(point));
assertEpsilonEquals(0, point.getDistanceL1(point3));
assertEpsilonEquals(4, point.getDistanceL1(point4));
}
@Test
public final void getDistanceLinfPoint3D() {
Point3D point = createPoint(1, 2, 0);
Point3D point2 = createPoint(3, 0, 0);
Point3D point3 = createPoint(1, 2, 0);
Point3D point4 = createPoint(-1, 0, 0);
assertEpsilonEquals(2, point.getDistanceLinf(point2));
assertEpsilonEquals(0, point.getDistanceLinf(point));
assertEpsilonEquals(0, point.getDistanceLinf(point3));
assertEpsilonEquals(2, point.getDistanceLinf(point4));
}
@Test
public final void getIdistanceL1Point3D() {
Point3D point = createPoint(1, 2, 0);
Point3D point2 = createPoint(3, 0, 0);
Point3D point3 = createPoint(1, 2, 0);
Point3D point4 = createPoint(-1, 0, 0);
assertEquals(4, point.getIdistanceL1(point2));
assertEquals(0, point.getIdistanceL1(point));
assertEquals(0, point.getIdistanceL1(point3));
assertEquals(4, point.getIdistanceL1(point4));
}
@Test
public final void getIdistanceLinfPoint3D() {
Point3D point = createPoint(1, 2, 0);
Point3D point2 = createPoint(3, 0, 0);
Point3D point3 = createPoint(1, 2, 0);
Point3D point4 = createPoint(-1, 0, 0);
assertEquals(2, point.getIdistanceLinf(point2));
assertEquals(0, point.getIdistanceLinf(point));
assertEquals(0, point.getIdistanceLinf(point3));
assertEquals(2, point.getIdistanceLinf(point4));
}
@Test(expected = UnsupportedOperationException.class)
public final void toUnmodifiable_exception() {
Point3D origin = createPoint(2, 3, 0);
Point3D immutable = origin.toUnmodifiable();
assertEpsilonEquals(origin, immutable);
immutable.add(1, 2, 0);
}
@Test
public final void toUnmodifiable_changeInOrigin() {
Point3D origin = createPoint(2, 3, 0);
assumeMutable(origin);
Point3D immutable = origin.toUnmodifiable();
assertEpsilonEquals(origin, immutable);
assertEpsilonEquals(origin, immutable);
}
@Test
public final void testClonePoint() {
Point3D origin = createPoint(23, 45, 0);
Tuple3D clone = origin.clone();
assertNotNull(clone);
assertNotSame(origin, clone);
assertEpsilonEquals(origin.getX(), clone.getX());
assertEpsilonEquals(origin.getY(), clone.getY());
}
@Test
public final void operator_plusVector3D() {
Point3D point = createPoint(1, 2, 0);
Point3D point2 = createPoint(3, 0, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
Point3D r;
r = point.operator_plus(vector1);
assertFpPointEquals(1, 2, 0, r);
r = point.operator_plus(vector2);
assertFpPointEquals(2, 4, 0, r);
r = point.operator_plus(vector3);
assertFpPointEquals(2, -3, 0, r);
r = point2.operator_plus(vector1);
assertFpPointEquals(3, 0, 0, r);
r = point2.operator_plus(vector2);
assertFpPointEquals(4, 2, 0, r);
r = point2.operator_plus(vector3);
assertFpPointEquals(4, -5, 0, r);
}
@Test
public final void operator_minusVector3D() {
Point3D point = createPoint(1, 2, 0);
Point3D point2 = createPoint(3, 0, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
Point3D r;
r = point.operator_minus(vector1);
assertFpPointEquals(1, 2, 0, r);
r = point.operator_minus(vector2);
assertFpPointEquals(0, 0, 0, r);
r = point.operator_minus(vector3);
assertFpPointEquals(0, 7, 0, r);
r = point2.operator_minus(vector1);
assertFpPointEquals(3, 0, 0, r);
r = point2.operator_minus(vector2);
assertFpPointEquals(2, -2, 0, r);
r = point2.operator_minus(vector3);
assertFpPointEquals(2, 5, 0, r);
}
@Test
public final void operator_minusPoint3D_iffp() {
Assume.assumeFalse(isIntCoordinates());
Point3D point = createPoint(0, 0, 0);
Point3D point2 = createPoint(1, 0, 0);
Point3D vector = createPoint(-1.2, -1.2, 0);
Point3D vector2 = createPoint(2.0, 1.5, 0);
Vector3D newVector;
newVector = point.operator_minus(vector);
assertFpVectorEquals(1.2, 1.2, 0, newVector);
newVector = point2.operator_minus(vector2);
assertFpVectorEquals(-1.0, -1.5, 0, newVector);
}
@Test
public final void operator_minusPoint3D_ifi() {
Assume.assumeTrue(isIntCoordinates());
Point3D point = createPoint(0, 0, 0);
Point3D point2 = createPoint(1, 0, 0);
Point3D vector = createPoint(-1.2, -1.2, 0);
Point3D vector2 = createPoint(2.0, 1.5, 0);
Vector3D newVector;
newVector = point.operator_minus(vector);
assertFpVectorEquals(1, 1, 0, newVector);
newVector = point2.operator_minus(vector2);
assertFpVectorEquals(-1, -2, 0, newVector);
}
@Test
public final void operator_equalsTuple3D() {
Point3D point = createPoint(49, -2, 0);
assertFalse(point.operator_equals(null));
assertTrue(point.operator_equals(point));
assertFalse(point.operator_equals(createPoint(49, -3, 0)));
assertFalse(point.operator_equals(createPoint(0, 0, 0)));
assertTrue(point.operator_equals(createPoint(49, -2, 0)));
}
@Test
public final void operator_notEqualsTuple3D() {
Point3D point = createPoint(49, -2, 0);
assertTrue(point.operator_notEquals(null));
assertFalse(point.operator_notEquals(point));
assertTrue(point.operator_notEquals(createPoint(49, -3, 0)));
assertTrue(point.operator_notEquals(createPoint(0, 0, 0)));
assertFalse(point.operator_notEquals(createPoint(49, -2, 0)));
}
@Test
public final void testEqualsObject() {
Point3D point = createPoint(49, -2, 0);
assertFalse(point.equals((Object) null));
assertTrue(point.equals((Object) point));
assertFalse(point.equals((Object) createPoint(49, -3, 0)));
assertFalse(point.equals((Object) createPoint(0, 0, 0)));
assertTrue(point.equals((Object) createPoint(49, -2, 0)));
}
@Test
public final void operator_upToPoint3D() {
Point3D point = createPoint(0, 0, 0);
Point3D point2 = createPoint(0, 0, 0);
Point3D point3 = createPoint(1, 2, 0);
Point3D point4 = createPoint(1, 1, 0);
assertEpsilonEquals(0, point.operator_upTo(point2));
assertEpsilonEquals(Math.sqrt(5), point.operator_upTo(point3));
assertEpsilonEquals(Math.sqrt(2), point.operator_upTo(point4));
}
@Test
public final void operator_elvisPoint3D() {
Point3D orig1 = createPoint(45, -78, 0);
Point3D orig2 = createPoint(0, 0, 0);
Point3D param = createPoint(-5, -1.4, 0);
Point3D result;
result = orig1.operator_elvis(null);
assertSame(orig1, result);
result = orig1.operator_elvis(orig1);
assertSame(orig1, result);
result = orig1.operator_elvis(param);
assertSame(orig1, result);
result = orig2.operator_elvis(null);
assertNull(result);
result = orig2.operator_elvis(orig2);
assertSame(orig2, result);
result = orig2.operator_elvis(param);
assertSame(param, result);
}
@Test
public abstract void operator_andShape3D();
@Test
public abstract void operator_upToShape3D();
@Test
public void addPoint3DVector3D() {
Point3D point = createPoint(1, 2, 0);
Point3D point2 = createPoint(3, 0, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.add(point, vector1);
assertFpPointEquals(1, 2, 0, point);
point.add(point, vector2);
assertFpPointEquals(2, 4, 0, point);
point.add(point, vector3);
assertFpPointEquals(3, -1, 0, point);
point.add(point2, vector1);
assertFpPointEquals(3, 0, 0, point);
point.add(point2, vector2);
assertFpPointEquals(4, 2, 0, point);
point.add(point2, vector3);
assertFpPointEquals(4, -5, 0, point);
}
@Test
public void addVector3DPoint3D() {
Point3D point = createPoint(1, 2, 0);
Point3D point2 = createPoint(3, 0, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.add(vector1, point);
assertFpPointEquals(1, 2, 0, point);
point.add(vector2, point);
assertFpPointEquals(2, 4, 0, point);
point.add(vector3, point);
assertFpPointEquals(3, -1, 0, point);
point.add(vector1, point2);
assertFpPointEquals(3, 0, 0, point);
point.add(vector2, point2);
assertFpPointEquals(4, 2, 0, point);
point.add(vector3, point2);
assertFpPointEquals(4, -5, 0, point);
}
@Test
public void addVector3D() {
Point3D point = createPoint(1, 2, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.add(vector1);
assertFpPointEquals(1, 2, 0, point);
point.add(vector2);
assertFpPointEquals(2, 4, 0, point);
point.add(vector3);
assertFpPointEquals(3, -1, 0, point);
point.add(vector1);
assertFpPointEquals(3, -1, 0, point);
point.add(vector2);
assertFpPointEquals(4, 1, 0, point);
point.add(vector3);
assertFpPointEquals(5, -4, 0, point);
}
@Test
public void scaleAddDoubleVector3DPoint3D_iffp() {
Assume.assumeFalse(isIntCoordinates());
Point3D point = createPoint(1, 2, 0);
Point3D point2 = createPoint(3, 0, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.scaleAdd(2.5, vector1, point);
assertFpPointEquals(1, 2, 0, point);
point.scaleAdd(-2.5, vector2, point);
assertFpPointEquals(-1.5, -3, 0, point);
point.scaleAdd(2.5, vector3, point);
assertFpPointEquals(1, -15.5, 0, point);
point.scaleAdd(-2.5, vector1, point2);
assertFpPointEquals(3, 0, 0, point);
point.scaleAdd(2.5, vector2, point2);
assertFpPointEquals(5.5, 5, 0, point);
point.scaleAdd(-2.5, vector3, point2);
assertFpPointEquals(0.5, 12.5, 0, point);
}
@Test
public void scaleAddDoubleVector3DPoint3D_ifi() {
Assume.assumeTrue(isIntCoordinates());
Point3D point = createPoint(1, 2, 0);
Point3D point2 = createPoint(3, 0, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.scaleAdd(2.5, vector1, point);
assertIntPointEquals(1, 2, 0, point);
point.scaleAdd(-2.5, vector2, point);
assertIntPointEquals(-1, -3, 0, point);
point.scaleAdd(2.5, vector3, point);
assertIntPointEquals(2, -15, 0, point);
point.scaleAdd(-2.5, vector1, point2);
assertIntPointEquals(3, 0, 0, point);
point.scaleAdd(2.5, vector2, point2);
assertIntPointEquals(6, 5, 0, point);
point.scaleAdd(-2.5, vector3, point2);
assertIntPointEquals(1, 13, 0, point);
}
@Test
public void scaleAddIntVector3DPoint3D() {
Point3D point = createPoint(1, 2, 0);
Point3D point2 = createPoint(3, 0, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.scaleAdd(2, vector1, point);
assertFpPointEquals(1, 2, 0, point);
point.scaleAdd(-2, vector2, point);
assertFpPointEquals(-1, -2, 0, point);
point.scaleAdd(2, vector3, point);
assertFpPointEquals(1, -12, 0, point);
point.scaleAdd(-2, vector1, point2);
assertFpPointEquals(3, 0, 0, point);
point.scaleAdd(2, vector2, point2);
assertFpPointEquals(5, 4, 0, point);
point.scaleAdd(-2, vector3, point2);
assertFpPointEquals(1, 10, 0, point);
}
@Test
public void scaleAddIntPoint3DVector3D() {
Point3D point = createPoint(1, 2, 0);
Point3D point2 = createPoint(3, 0, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.scaleAdd(2, point, vector1);
assertFpPointEquals(2, 4, 0, point);
point.scaleAdd(-2, point, vector2);
assertFpPointEquals(-3, -6, 0, point);
point.scaleAdd(2, point, vector3);
assertFpPointEquals(-5, -17, 0, point);
point.scaleAdd(-2, point2, vector1);
assertFpPointEquals(-6, 0, 0, point);
point.scaleAdd(2, point2, vector2);
assertFpPointEquals(7, 2, 0, point);
point.scaleAdd(-2, point2, vector3);
assertFpPointEquals(-5, -5, 0, point);
}
@Test
public void scaleAddDoublePoint3DVector3D_iffp() {
Assume.assumeFalse(isIntCoordinates());
Point3D point = createPoint(1, 2, 0);
Point3D point2 = createPoint(3, 0, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.scaleAdd(2.5, point, vector1);
assertFpPointEquals(2.5, 5, 0, point);
point.scaleAdd(-2.5, point, vector2);
assertFpPointEquals(-5.25, -10.5, 0, point);
point.scaleAdd(2.5, point, vector3);
assertFpPointEquals(-12.125, -31.25, 0, point);
point.scaleAdd(-2.5, point2, vector1);
assertFpPointEquals(-7.5, 0, 0, point);
point.scaleAdd(2.5, point2, vector2);
assertFpPointEquals(8.5, 2, 0, point);
point.scaleAdd(-2.5, point2, vector3);
assertFpPointEquals(-6.5, -5, 0, point);
}
@Test
public void scaleAddDoublePoint3DVector3D_ifi() {
Assume.assumeTrue(isIntCoordinates());
Point3D point = createPoint(1, 2, 0);
Point3D point2 = createPoint(3, 0, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.scaleAdd(2.5, point, vector1);
assertIntPointEquals(3, 5, 0, point);
point.scaleAdd(-2.5, point, vector2);
assertIntPointEquals(-6, -10, 0, point);
point.scaleAdd(2.5, point, vector3);
assertIntPointEquals(-14, -30, 0, point);
point.scaleAdd(-2.5, point2, vector1);
assertIntPointEquals(-7, 0, 0, point);
point.scaleAdd(2.5, point2, vector2);
assertIntPointEquals(9, 2, 0, point);
point.scaleAdd(-2.5, point2, vector3);
assertIntPointEquals(-6, -5, 0, point);
}
@Test
public void scaleAddIntVector3D() {
Point3D point = createPoint(1, 2, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.scaleAdd(2, vector1);
assertFpPointEquals(2, 4, 0, point);
point.scaleAdd(-2, vector2);
assertFpPointEquals(-3, -6, 0, point);
point.scaleAdd(2, vector3);
assertFpPointEquals(-5, -17, 0, point);
point.scaleAdd(-2, vector1);
assertFpPointEquals(10, 34, 0, point);
point.scaleAdd(2, vector2);
assertFpPointEquals(21, 70, 0, point);
point.scaleAdd(-2, vector3);
assertFpPointEquals(-41, -145, 0, point);
}
@Test
public void scaleAddDoubleVector3D_iffp() {
Assume.assumeFalse(isIntCoordinates());
Point3D point = createPoint(1, 2, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.scaleAdd(2.5, vector1);
assertFpPointEquals(2.5, 5, 0, point);
point.scaleAdd(-2.5, vector2);
assertFpPointEquals(-5.25, -10.5, 0, point);
point.scaleAdd(2.5, vector3);
assertFpPointEquals(-12.125, -31.25, 0, point);
point.scaleAdd(-2.5, vector1);
assertFpPointEquals(30.312, 78.125, 0, point);
point.scaleAdd(2.5, vector2);
assertFpPointEquals(76.781, 197.312, 0, point);
point.scaleAdd(-2.5, vector3);
assertFpPointEquals(-190.95, -498.28, 0, point);
}
@Test
public void scaleAddDoubleVector3D_ifi() {
Assume.assumeTrue(isIntCoordinates());
Point3D point = createPoint(1, 2, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.scaleAdd(2.5, vector1);
assertIntPointEquals(3, 5, 0, point);
point.scaleAdd(-2.5, vector2);
assertIntPointEquals(-6, -10, 0, point);
point.scaleAdd(2.5, vector3);
assertIntPointEquals(-14, -30, 0, point);
point.scaleAdd(-2.5, vector1);
assertIntPointEquals(35, 75, 0, point);
point.scaleAdd(2.5, vector2);
assertIntPointEquals(89, 190, 0, point);
point.scaleAdd(-2.5, vector3);
assertIntPointEquals(-221, -480, 0, point);
}
@Test
public void subPoint3DVector3D() {
Point3D point = createPoint(1, 2, 0);
Point3D point2 = createPoint(3, 0, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.sub(point, vector1);
assertFpPointEquals(1, 2, 0, point);
point.sub(point, vector2);
assertFpPointEquals(0, 0, 0, point);
point.sub(point, vector3);
assertFpPointEquals(-1, 5, 0, point);
point.sub(point2, vector1);
assertFpPointEquals(3, 0, 0, point);
point.sub(point2, vector2);
assertFpPointEquals(2, -2, 0, point);
point.sub(point2, vector3);
assertFpPointEquals(2, 5, 0, point);
}
@Test
public void subVector3D() {
Point3D point = createPoint(1, 2, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.sub(vector1);
assertFpPointEquals(1, 2, 0, point);
point.sub(vector2);
assertFpPointEquals(0, 0, 0, point);
point.sub(vector3);
assertFpPointEquals(-1, 5, 0, point);
point.sub(vector1);
assertFpPointEquals(-1, 5, 0, point);
point.sub(vector2);
assertFpPointEquals(-2, 3, 0, point);
point.sub(vector3);
assertFpPointEquals(-3, 8, 0, point);
}
@Test
public void operator_addVector3D() {
Point3D point = createPoint(1, 2, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.operator_add(vector1);
assertFpPointEquals(1, 2, 0, point);
point.operator_add(vector2);
assertFpPointEquals(2, 4, 0, point);
point.operator_add(vector3);
assertFpPointEquals(3, -1, 0, point);
point.operator_add(vector1);
assertFpPointEquals(3, -1, 0, point);
point.operator_add(vector2);
assertFpPointEquals(4, 1, 0, point);
point.operator_add(vector3);
assertFpPointEquals(5, -4, 0, point);
}
@Test
public void operator_removeVector3D() {
Point3D point = createPoint(1, 2, 0);
Vector3D vector1 = createVector(0, 0, 0);
Vector3D vector2 = createVector(1, 2, 0);
Vector3D vector3 = createVector(1, -5, 0);
point.operator_remove(vector1);
assertFpPointEquals(1, 2, 0, point);
point.operator_remove(vector2);
assertFpPointEquals(0, 0, 0, point);
point.operator_remove(vector3);
assertFpPointEquals(-1, 5, 0, point);
point.operator_remove(vector1);
assertFpPointEquals(-1, 5, 0, point);
point.operator_remove(vector2);
assertFpPointEquals(-2, 3, 0, point);
point.operator_remove(vector3);
assertFpPointEquals(-3, 8, 0, point);
}
}