/*
* $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.d2;
import static org.arakhne.afc.testtools.XbaseInlineTestUtil.assertInlineParameterUsage;
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;
import org.arakhne.afc.math.geometry.coordinatesystem.CoordinateSystem2D;
@SuppressWarnings("all")
public abstract class AbstractPoint2DTest<P extends Point2D<? super P, ? super V>, V extends Vector2D<? super V, ? super P>,
TT extends Tuple2D>
extends AbstractTuple2DTest<TT> {
public abstract P createPoint(double x, double y);
public abstract V createVector(double x, double y);
@Test
public final void staticIsCollinearPoints() {
assertTrue(Point2D.isCollinearPoints(0, 0, 0, 0, 0, 0));
assertTrue(Point2D.isCollinearPoints(-6, -4, -1, 3, 4, 10));
assertFalse(Point2D.isCollinearPoints(0, 0, 1, 1, 1, -5));
//
assertInlineParameterUsage(Point2D.class, "isCollinearPoints", //$NON-NLS-1$
double.class, double.class, double.class, double.class, double.class, double.class);
}
@Test
public final void staticGetDistancePointPoint() {
assertEpsilonEquals(0, Point2D.getDistancePointPoint(0, 0, 0, 0));
assertEpsilonEquals(Math.sqrt(5), Point2D.getDistancePointPoint(0, 0, 1, 2));
assertEpsilonEquals(Math.sqrt(2), Point2D.getDistancePointPoint(0, 0, 1, 1));
}
@Test
public final void staticGetDistanceSquaredPointPoint() {
assertEpsilonEquals(0, Point2D.getDistanceSquaredPointPoint(0, 0, 0, 0));
assertEpsilonEquals(5, Point2D.getDistanceSquaredPointPoint(0, 0, 1, 2));
assertEpsilonEquals(2, Point2D.getDistanceSquaredPointPoint(0, 0, 1, 1));
//
assertInlineParameterUsage(Point2D.class, "getDistancePointPoint", double.class, double.class, double.class, double.class); //$NON-NLS-1$
}
@Test
public final void staticGetDistanceL1PointPoint() {
assertEpsilonEquals(4, Point2D.getDistanceL1PointPoint(1.0, 2.0, 3.0, 0));
assertEpsilonEquals(0, Point2D.getDistanceL1PointPoint(1.0, 2.0, 1 ,2));
assertEpsilonEquals(0, Point2D.getDistanceL1PointPoint(1, 2, 1.0, 2.0));
assertEpsilonEquals(4, Point2D.getDistanceL1PointPoint(1.0, 2.0, -1, 0));
//
assertInlineParameterUsage(Point2D.class, "getDistanceL1PointPoint", double.class, double.class, double.class, double.class); //$NON-NLS-1$
}
@Test
public final void staticGetDistanceLinfPointPoint() {
assertEpsilonEquals(2, Point2D.getDistanceLinfPointPoint(1.0,2.0,3.0,0));
assertEpsilonEquals(0, Point2D.getDistanceLinfPointPoint(1.0,2.0,1,2));
assertEpsilonEquals(0, Point2D.getDistanceLinfPointPoint(1,2,1.0,2.0));
assertEpsilonEquals(2, Point2D.getDistanceLinfPointPoint(1.0,2.0,-1,0));
//
assertInlineParameterUsage(Point2D.class, "getDistanceLinfPointPoint", double.class, double.class, double.class, double.class); //$NON-NLS-1$
}
@Test
public final void getDistanceSquaredPoint2D() {
Point2D point = createPoint(0, 0);
Point2D point2 = createPoint(0, 0);
Point2D point3 = createPoint(1, 2);
Point2D point4 = createPoint(1, 1);
assertEpsilonEquals(0, point.getDistanceSquared(point2));
assertEpsilonEquals(5, point.getDistanceSquared(point3));
assertEpsilonEquals(2, point.getDistanceSquared(point4));
//
assertInlineParameterUsage(Point2D.class, "getDistanceSquaredPointPoint", double.class, double.class, double.class, double.class); //$NON-NLS-1$
}
@Test
public final void getDistancePoint2D() {
Point2D point = createPoint(0, 0);
Point2D point2 = createPoint(0, 0);
Point2D point3 = createPoint(1, 2);
Point2D point4 = createPoint(1, 1);
assertEpsilonEquals(0, point.getDistance(point2));
assertEpsilonEquals(Math.sqrt(5), point.getDistance(point3));
assertEpsilonEquals(Math.sqrt(2), point.getDistance(point4));
}
@Test
public final void getDistanceL1Point2D() {
Point2D point = createPoint(1, 2);
Point2D point2 = createPoint(3, 0);
Point2D point3 = createPoint(1, 2);
Point2D point4 = createPoint(-1, 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 getDistanceLinfPoint2D() {
Point2D point = createPoint(1, 2);
Point2D point2 = createPoint(3, 0);
Point2D point3 = createPoint(1, 2);
Point2D point4 = createPoint(-1, 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 getIdistanceL1Point2D() {
Point2D point = createPoint(1, 2);
Point2D point2 = createPoint(3, 0);
Point2D point3 = createPoint(1, 2);
Point2D point4 = createPoint(-1, 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 getIdistanceLinfPoint2D() {
Point2D point = createPoint(1, 2);
Point2D point2 = createPoint(3, 0);
Point2D point3 = createPoint(1, 2);
Point2D point4 = createPoint(-1, 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() {
Point2D origin = createPoint(2, 3);
Point2D immutable = origin.toUnmodifiable();
assertEpsilonEquals(origin, immutable);
immutable.add(1, 2);
}
@Test
public final void toUnmodifiable_changeInOrigin() {
Point2D origin = createPoint(2, 3);
assumeMutable(origin);
Point2D immutable = origin.toUnmodifiable();
assertEpsilonEquals(origin, immutable);
assertEpsilonEquals(origin, immutable);
}
@Test
public final void testClonePoint() {
Point2D origin = createPoint(23, 45);
Tuple2D clone = origin.clone();
assertNotNull(clone);
assertNotSame(origin, clone);
assertEpsilonEquals(origin.getX(), clone.getX());
assertEpsilonEquals(origin.getY(), clone.getY());
}
@Test
public final void operator_plusVector2D() {
Point2D point = createPoint(1, 2);
Point2D point2 = createPoint(3, 0);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
Point2D r;
r = point.operator_plus(vector1);
assertFpPointEquals(1, 2, r);
r = point.operator_plus(vector2);
assertFpPointEquals(2, 4, r);
r = point.operator_plus(vector3);
assertFpPointEquals(2, -3, r);
r = point2.operator_plus(vector1);
assertFpPointEquals(3, 0, r);
r = point2.operator_plus(vector2);
assertFpPointEquals(4, 2, r);
r = point2.operator_plus(vector3);
assertFpPointEquals(4, -5, r);
}
@Test
public final void operator_plusDouble_iffp() {
Assume.assumeFalse(isIntCoordinates());
Point2D point = createPoint(1, 2);
assertFpPointEquals(46.6, 47.6, point.operator_plus(45.6));
}
@Test
public final void operator_plusDouble_ifi() {
Assume.assumeTrue(isIntCoordinates());
Point2D point = createPoint(1, 2);
assertIntPointEquals(47, 48, point.operator_plus(45.6));
}
@Test
public final void operator_minusVector2D() {
Point2D point = createPoint(1, 2);
Point2D point2 = createPoint(3, 0);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
Point2D r;
r = point.operator_minus(vector1);
assertFpPointEquals(1, 2, r);
r = point.operator_minus(vector2);
assertFpPointEquals(0, 0, r);
r = point.operator_minus(vector3);
assertFpPointEquals(0, 7, r);
r = point2.operator_minus(vector1);
assertFpPointEquals(3, 0, r);
r = point2.operator_minus(vector2);
assertFpPointEquals(2, -2, r);
r = point2.operator_minus(vector3);
assertFpPointEquals(2, 5, r);
}
@Test
public final void operator_minusPoint2D_iffp() {
Assume.assumeFalse(isIntCoordinates());
Point2D point = createPoint(0, 0);
Point2D point2 = createPoint(1, 0);
Point2D vector = createPoint(-1.2, -1.2);
Point2D vector2 = createPoint(2.0, 1.5);
Vector2D newVector;
newVector = point.operator_minus(vector);
assertFpVectorEquals(1.2, 1.2, newVector);
newVector = point2.operator_minus(vector2);
assertFpVectorEquals(-1.0, -1.5, newVector);
}
@Test
public final void operator_minusPoint2D_ifi() {
Assume.assumeTrue(isIntCoordinates());
Point2D point = createPoint(0, 0);
Point2D point2 = createPoint(1, 0);
Point2D vector = createPoint(-1.2, -1.2);
Point2D vector2 = createPoint(2.0, 1.5);
Vector2D newVector;
newVector = point.operator_minus(vector);
assertFpVectorEquals(1, 1, newVector);
newVector = point2.operator_minus(vector2);
assertFpVectorEquals(-1, -2, newVector);
}
@Test
public final void operator_minusDouble_ifi() {
Assume.assumeTrue(isIntCoordinates());
Point2D point = createPoint(1, 2);
assertIntPointEquals(-45, -44, point.operator_minus(45.6));
}
@Test
public final void operator_minusDouble_iffp() {
Assume.assumeFalse(isIntCoordinates());
Point2D point = createPoint(1, 2);
assertFpPointEquals(-44.6, -43.6, point.operator_minus(45.6));
}
@Test
public final void operator_equalsTuple2D() {
Point2D point = createPoint(49, -2);
assertFalse(point.operator_equals(null));
assertTrue(point.operator_equals(point));
assertFalse(point.operator_equals(createPoint(49, -3)));
assertFalse(point.operator_equals(createPoint(0, 0)));
assertTrue(point.operator_equals(createPoint(49, -2)));
}
@Test
public final void operator_notEqualsTuple2D() {
Point2D point = createPoint(49, -2);
assertTrue(point.operator_notEquals(null));
assertFalse(point.operator_notEquals(point));
assertTrue(point.operator_notEquals(createPoint(49, -3)));
assertTrue(point.operator_notEquals(createPoint(0, 0)));
assertFalse(point.operator_notEquals(createPoint(49, -2)));
}
@Test
public final void testEqualsObject() {
Point2D point = createPoint(49, -2);
assertFalse(point.equals((Object) null));
assertTrue(point.equals((Object) point));
assertFalse(point.equals((Object) createPoint(49, -3)));
assertFalse(point.equals((Object) createPoint(0, 0)));
assertTrue(point.equals((Object) createPoint(49, -2)));
}
@Test
public final void operator_upToPoint2D() {
Point2D point = createPoint(0, 0);
Point2D point2 = createPoint(0, 0);
Point2D point3 = createPoint(1, 2);
Point2D point4 = createPoint(1, 1);
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_elvisPoint2D() {
Point2D orig1 = createPoint(45, -78);
Point2D orig2 = createPoint(0, 0);
Point2D param = createPoint(-5, -1.4);
Point2D 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_andShape2D();
@Test
public abstract void operator_upToShape2D();
@Test
public void addPoint2DVector2D() {
Point2D point = createPoint(1, 2);
Point2D point2 = createPoint(3, 0);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.add(point, vector1);
assertFpPointEquals(1, 2, point);
point.add(point, vector2);
assertFpPointEquals(2, 4, point);
point.add(point, vector3);
assertFpPointEquals(3, -1, point);
point.add(point2, vector1);
assertFpPointEquals(3, 0, point);
point.add(point2, vector2);
assertFpPointEquals(4, 2, point);
point.add(point2, vector3);
assertFpPointEquals(4, -5, point);
}
@Test
public void addVector2DPoint2D() {
Point2D point = createPoint(1, 2);
Point2D point2 = createPoint(3, 0);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.add(vector1, point);
assertFpPointEquals(1, 2, point);
point.add(vector2, point);
assertFpPointEquals(2, 4, point);
point.add(vector3, point);
assertFpPointEquals(3, -1, point);
point.add(vector1, point2);
assertFpPointEquals(3, 0, point);
point.add(vector2, point2);
assertFpPointEquals(4, 2, point);
point.add(vector3, point2);
assertFpPointEquals(4, -5, point);
}
@Test
public void addVector2D() {
Point2D point = createPoint(1, 2);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.add(vector1);
assertFpPointEquals(1, 2, point);
point.add(vector2);
assertFpPointEquals(2, 4, point);
point.add(vector3);
assertFpPointEquals(3, -1, point);
point.add(vector1);
assertFpPointEquals(3, -1, point);
point.add(vector2);
assertFpPointEquals(4, 1, point);
point.add(vector3);
assertFpPointEquals(5, -4, point);
}
@Test
public void scaleAddDoubleVector2DPoint2D_iffp() {
Assume.assumeFalse(isIntCoordinates());
Point2D point = createPoint(1, 2);
Point2D point2 = createPoint(3, 0);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.scaleAdd(2.5, vector1, point);
assertFpPointEquals(1, 2, point);
point.scaleAdd(-2.5, vector2, point);
assertFpPointEquals(-1.5, -3, point);
point.scaleAdd(2.5, vector3, point);
assertFpPointEquals(1, -15.5, point);
point.scaleAdd(-2.5, vector1, point2);
assertFpPointEquals(3, 0, point);
point.scaleAdd(2.5, vector2, point2);
assertFpPointEquals(5.5, 5, point);
point.scaleAdd(-2.5, vector3, point2);
assertFpPointEquals(0.5, 12.5, point);
}
@Test
public void scaleAddDoubleVector2DPoint2D_ifi() {
Assume.assumeTrue(isIntCoordinates());
Point2D point = createPoint(1, 2);
Point2D point2 = createPoint(3, 0);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.scaleAdd(2.5, vector1, point);
assertIntPointEquals(1, 2, point);
point.scaleAdd(-2.5, vector2, point);
assertIntPointEquals(-1, -3, point);
point.scaleAdd(2.5, vector3, point);
assertIntPointEquals(2, -15, point);
point.scaleAdd(-2.5, vector1, point2);
assertIntPointEquals(3, 0, point);
point.scaleAdd(2.5, vector2, point2);
assertIntPointEquals(6, 5, point);
point.scaleAdd(-2.5, vector3, point2);
assertIntPointEquals(1, 13, point);
}
@Test
public void scaleAddIntVector2DPoint2D() {
Point2D point = createPoint(1, 2);
Point2D point2 = createPoint(3, 0);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.scaleAdd(2, vector1, point);
assertFpPointEquals(1, 2, point);
point.scaleAdd(-2, vector2, point);
assertFpPointEquals(-1, -2, point);
point.scaleAdd(2, vector3, point);
assertFpPointEquals(1, -12, point);
point.scaleAdd(-2, vector1, point2);
assertFpPointEquals(3, 0, point);
point.scaleAdd(2, vector2, point2);
assertFpPointEquals(5, 4, point);
point.scaleAdd(-2, vector3, point2);
assertFpPointEquals(1, 10, point);
}
@Test
public void scaleAddIntPoint2DVector2D() {
Point2D point = createPoint(1, 2);
Point2D point2 = createPoint(3, 0);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.scaleAdd(2, point, vector1);
assertFpPointEquals(2, 4, point);
point.scaleAdd(-2, point, vector2);
assertFpPointEquals(-3, -6, point);
point.scaleAdd(2, point, vector3);
assertFpPointEquals(-5, -17, point);
point.scaleAdd(-2, point2, vector1);
assertFpPointEquals(-6, 0, point);
point.scaleAdd(2, point2, vector2);
assertFpPointEquals(7, 2, point);
point.scaleAdd(-2, point2, vector3);
assertFpPointEquals(-5, -5, point);
}
@Test
public void scaleAddDoublePoint2DVector2D_iffp() {
Assume.assumeFalse(isIntCoordinates());
Point2D point = createPoint(1, 2);
Point2D point2 = createPoint(3, 0);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.scaleAdd(2.5, point, vector1);
assertFpPointEquals(2.5, 5, point);
point.scaleAdd(-2.5, point, vector2);
assertFpPointEquals(-5.25, -10.5, point);
point.scaleAdd(2.5, point, vector3);
assertFpPointEquals(-12.125, -31.25, point);
point.scaleAdd(-2.5, point2, vector1);
assertFpPointEquals(-7.5, 0, point);
point.scaleAdd(2.5, point2, vector2);
assertFpPointEquals(8.5, 2, point);
point.scaleAdd(-2.5, point2, vector3);
assertFpPointEquals(-6.5, -5, point);
}
@Test
public void scaleAddDoublePoint2DVector2D_ifi() {
Assume.assumeTrue(isIntCoordinates());
Point2D point = createPoint(1, 2);
Point2D point2 = createPoint(3, 0);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.scaleAdd(2.5, point, vector1);
assertIntPointEquals(3, 5, point);
point.scaleAdd(-2.5, point, vector2);
assertIntPointEquals(-6, -10, point);
point.scaleAdd(2.5, point, vector3);
assertIntPointEquals(-14, -30, point);
point.scaleAdd(-2.5, point2, vector1);
assertIntPointEquals(-7, 0, point);
point.scaleAdd(2.5, point2, vector2);
assertIntPointEquals(9, 2, point);
point.scaleAdd(-2.5, point2, vector3);
assertIntPointEquals(-6, -5, point);
}
@Test
public void scaleAddIntVector2D() {
Point2D point = createPoint(1, 2);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.scaleAdd(2, vector1);
assertFpPointEquals(2, 4, point);
point.scaleAdd(-2, vector2);
assertFpPointEquals(-3, -6, point);
point.scaleAdd(2, vector3);
assertFpPointEquals(-5, -17, point);
point.scaleAdd(-2, vector1);
assertFpPointEquals(10, 34, point);
point.scaleAdd(2, vector2);
assertFpPointEquals(21, 70, point);
point.scaleAdd(-2, vector3);
assertFpPointEquals(-41, -145, point);
}
@Test
public void scaleAddDoubleVector2D_iffp() {
Assume.assumeFalse(isIntCoordinates());
Point2D point = createPoint(1, 2);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.scaleAdd(2.5, vector1);
assertFpPointEquals(2.5, 5, point);
point.scaleAdd(-2.5, vector2);
assertFpPointEquals(-5.25, -10.5, point);
point.scaleAdd(2.5, vector3);
assertFpPointEquals(-12.125, -31.25, point);
point.scaleAdd(-2.5, vector1);
assertFpPointEquals(30.312, 78.125, point);
point.scaleAdd(2.5, vector2);
assertFpPointEquals(76.781, 197.312, point);
point.scaleAdd(-2.5, vector3);
assertFpPointEquals(-190.95, -498.28, point);
}
@Test
public void scaleAddDoubleVector2D_ifi() {
Assume.assumeTrue(isIntCoordinates());
Point2D point = createPoint(1, 2);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.scaleAdd(2.5, vector1);
assertIntPointEquals(3, 5, point);
point.scaleAdd(-2.5, vector2);
assertIntPointEquals(-6, -10, point);
point.scaleAdd(2.5, vector3);
assertIntPointEquals(-14, -30, point);
point.scaleAdd(-2.5, vector1);
assertIntPointEquals(35, 75, point);
point.scaleAdd(2.5, vector2);
assertIntPointEquals(89, 190, point);
point.scaleAdd(-2.5, vector3);
assertIntPointEquals(-221, -480, point);
}
@Test
public void subPoint2DVector2D() {
Point2D point = createPoint(1, 2);
Point2D point2 = createPoint(3, 0);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.sub(point, vector1);
assertFpPointEquals(1, 2, point);
point.sub(point, vector2);
assertFpPointEquals(0, 0, point);
point.sub(point, vector3);
assertFpPointEquals(-1, 5, point);
point.sub(point2, vector1);
assertFpPointEquals(3, 0, point);
point.sub(point2, vector2);
assertFpPointEquals(2, -2, point);
point.sub(point2, vector3);
assertFpPointEquals(2, 5, point);
}
@Test
public void subVector2D() {
Point2D point = createPoint(1, 2);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.sub(vector1);
assertFpPointEquals(1, 2, point);
point.sub(vector2);
assertFpPointEquals(0, 0, point);
point.sub(vector3);
assertFpPointEquals(-1, 5, point);
point.sub(vector1);
assertFpPointEquals(-1, 5, point);
point.sub(vector2);
assertFpPointEquals(-2, 3, point);
point.sub(vector3);
assertFpPointEquals(-3, 8, point);
}
@Test
public void operator_addVector2D() {
Point2D point = createPoint(1, 2);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.operator_add(vector1);
assertFpPointEquals(1, 2, point);
point.operator_add(vector2);
assertFpPointEquals(2, 4, point);
point.operator_add(vector3);
assertFpPointEquals(3, -1, point);
point.operator_add(vector1);
assertFpPointEquals(3, -1, point);
point.operator_add(vector2);
assertFpPointEquals(4, 1, point);
point.operator_add(vector3);
assertFpPointEquals(5, -4, point);
}
@Test
public void operator_removeVector2D() {
Point2D point = createPoint(1, 2);
Vector2D vector1 = createVector(0, 0);
Vector2D vector2 = createVector(1, 2);
Vector2D vector3 = createVector(1, -5);
point.operator_remove(vector1);
assertFpPointEquals(1, 2, point);
point.operator_remove(vector2);
assertFpPointEquals(0, 0, point);
point.operator_remove(vector3);
assertFpPointEquals(-1, 5, point);
point.operator_remove(vector1);
assertFpPointEquals(-1, 5, point);
point.operator_remove(vector2);
assertFpPointEquals(-2, 3, point);
point.operator_remove(vector3);
assertFpPointEquals(-3, 8, point);
}
@Test
public void turnDouble_iffp() {
Assume.assumeFalse(isIntCoordinates());
Point2D p;
p = createPoint(1, 0);
p.turn(Math.PI/2);
assertFpPointEquals(0, 1, p);
p = createPoint(0, 1);
p.turn(Math.PI/2);
assertFpPointEquals(-1, 0, p);
p = createPoint(-1, 0);
p.turn(Math.PI/2);
assertFpPointEquals(0, -1, p);
p = createPoint(0, -1);
p.turn(Math.PI/2);
assertFpPointEquals(1, 0, p);
p = createPoint(1, 0);
p.turn(-Math.PI/2);
assertFpPointEquals(0, -1, p);
p = createPoint(0, -1);
p.turn(-Math.PI/2);
assertFpPointEquals(-1, 0, p);
p = createPoint(-1, 0);
p.turn(-Math.PI/2);
assertFpPointEquals(0, 1, p);
p = createPoint(0, 1);
p.turn(-Math.PI/2);
assertFpPointEquals(1, 0, p);
p = createPoint(12, 0);
p.turn(Math.PI/6);
assertFpPointEquals(10.392304, 6, p);
p = createPoint(12, 0);
p.turn(-Math.PI/6);
assertFpPointEquals(10.39230, -6, p);
p = createPoint(-4, 18);
p.turn(Math.PI/11);
assertFpPointEquals(-8.90916, 16.14394, p);
p = createPoint(-4, 18);
p.turn(-Math.PI/11);
assertFpPointEquals(1.23321, 18.39780, p);
}
@Test
public void turnDoublePoint2D_iffp() {
Assume.assumeFalse(isIntCoordinates());
Point2D p = createPoint(0, 0);
p.turn(Math.PI/2, createPoint(1, 0));
assertFpPointEquals(0, 1, p);
p.turn(Math.PI/2, createPoint(0, 1));
assertFpPointEquals(-1, 0, p);
p.turn(Math.PI/2, createPoint(-1, 0));
assertFpPointEquals(0, -1, p);
p.turn(Math.PI/2, createPoint(0, -1));
assertFpPointEquals(1, 0, p);
p.turn(-Math.PI/2, createPoint(1, 0));
assertFpPointEquals(0, -1, p);
p.turn(-Math.PI/2, createPoint(0, -1));
assertFpPointEquals(-1, 0, p);
p.turn(-Math.PI/2, createPoint(-1, 0));
assertFpPointEquals(0, 1, p);
p.turn(-Math.PI/2, createPoint(0, 1));
assertFpPointEquals(1, 0, p);
p.turn(Math.PI/6, createPoint(12, 0));
assertFpPointEquals(10.392304, 6, p);
p.turn(-Math.PI/6, createPoint(12, 0));
assertFpPointEquals(10.39230, -6, p);
p.turn(Math.PI/11, createPoint(-4, 18));
assertFpPointEquals(-8.90916, 16.14394, p);
p.turn(-Math.PI/11, createPoint(-4, 18));
assertFpPointEquals(1.23321, 18.39780, p);
}
@Test
public void turnDoublePoint2DPoint2D_origin_iffp() {
Assume.assumeFalse(isIntCoordinates());
Point2D origin = createPoint(0, 0);
Point2D p = createPoint(0, 0);
p.turn(Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(0, 1, p);
p.turn(Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(-1, 0, p);
p.turn(Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(0, -1, p);
p.turn(Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(1, 0, p);
p.turn(-Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(0, -1, p);
p.turn(-Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(-1, 0, p);
p.turn(-Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(0, 1, p);
p.turn(-Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(1, 0, p);
p.turn(Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(10.392304, 6, p);
p.turn(-Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(10.39230, -6, p);
p.turn(Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(-8.90916, 16.14394, p);
p.turn(-Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(1.23321, 18.39780, p);
}
@Test
public void turnDoublePoint2DPoint2D_aroundP_iffp() {
Assume.assumeFalse(isIntCoordinates());
Point2D origin = createPoint(-45, 12);
Point2D p = createPoint(0, 0);
p.turn(Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(-33, 58, p);
p.turn(Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(-34, 57, p);
p.turn(Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(-33, 56, p);
p.turn(Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(-32, 57, p);
p.turn(-Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(-57, -34, p);
p.turn(-Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(-58, -33, p);
p.turn(-Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(-57, -32, p);
p.turn(-Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(-56, -33, p);
p.turn(Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(10.36345, 30.1077, p);
p.turn(-Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(-1.63655, -26.89230, p);
p.turn(Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(-7.35118, 29.30799, p);
p.turn(-Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(-3.97039, 6.20592, p);
}
@Test
public void turnLeftDouble_iffp_leftHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p;
p = createPoint(1, 0);
p.turnLeft(Math.PI/2);
assertFpPointEquals(0, -1, p);
p = createPoint(0, 1);
p.turnLeft(Math.PI/2);
assertFpPointEquals(1, 0, p);
p = createPoint(-1, 0);
p.turnLeft(Math.PI/2);
assertFpPointEquals(0, 1, p);
p = createPoint(0, -1);
p.turnLeft(Math.PI/2);
assertFpPointEquals(-1, 0, p);
p = createPoint(1, 0);
p.turnLeft(-Math.PI/2);
assertFpPointEquals(0, 1, p);
p = createPoint(0, -1);
p.turnLeft(-Math.PI/2);
assertFpPointEquals(1, 0, p);
p = createPoint(-1, 0);
p.turnLeft(-Math.PI/2);
assertFpPointEquals(0, -1, p);
p = createPoint(0, 1);
p.turnLeft(-Math.PI/2);
assertFpPointEquals(-1, 0, p);
p = createPoint(12, 0);
p.turnLeft(Math.PI/6);
assertFpPointEquals(10.392304, -6, p);
p = createPoint(12, 0);
p.turnLeft(-Math.PI/6);
assertFpPointEquals(10.39230, 6, p);
p = createPoint(-4, 18);
p.turnLeft(Math.PI/11);
assertFpPointEquals(1.23321, 18.39780, p);
p = createPoint(-4, 18);
p.turnLeft(-Math.PI/11);
assertFpPointEquals(-8.90916, 16.14394, p);
}
@Test
public void turnLeftDouble_iffp_rightHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p;
p = createPoint(1, 0);
p.turnLeft(Math.PI/2);
assertFpPointEquals(0, 1, p);
p = createPoint(0, 1);
p.turnLeft(Math.PI/2);
assertFpPointEquals(-1, 0, p);
p = createPoint(-1, 0);
p.turnLeft(Math.PI/2);
assertFpPointEquals(0, -1, p);
p = createPoint(0, -1);
p.turnLeft(Math.PI/2);
assertFpPointEquals(1, 0, p);
p = createPoint(1, 0);
p.turnLeft(-Math.PI/2);
assertFpPointEquals(0, -1, p);
p = createPoint(0, -1);
p.turnLeft(-Math.PI/2);
assertFpPointEquals(-1, 0, p);
p = createPoint(-1, 0);
p.turnLeft(-Math.PI/2);
assertFpPointEquals(0, 1, p);
p = createPoint(0, 1);
p.turnLeft(-Math.PI/2);
assertFpPointEquals(1, 0, p);
p = createPoint(12, 0);
p.turnLeft(Math.PI/6);
assertFpPointEquals(10.392304, 6, p);
p = createPoint(12, 0);
p.turnLeft(-Math.PI/6);
assertFpPointEquals(10.39230, -6, p);
p = createPoint(-4, 18);
p.turnLeft(Math.PI/11);
assertFpPointEquals(-8.90916, 16.14394, p);
p = createPoint(-4, 18);
p.turnLeft(-Math.PI/11);
assertFpPointEquals(1.23321, 18.39780, p);
}
@Test
public void turnLeftDoublePoint2D_iffp_leftHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p = createPoint(0, 0);
p.turnLeft(Math.PI/2, createPoint(1, 0));
assertFpPointEquals(0, -1, p);
p.turnLeft(Math.PI/2, createPoint(0, 1));
assertFpPointEquals(1, 0, p);
p.turnLeft(Math.PI/2, createPoint(-1, 0));
assertFpPointEquals(0, 1, p);
p.turnLeft(Math.PI/2, createPoint(0, -1));
assertFpPointEquals(-1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(1, 0));
assertFpPointEquals(0, 1, p);
p.turnLeft(-Math.PI/2, createPoint(0, -1));
assertFpPointEquals(1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(-1, 0));
assertFpPointEquals(0, -1, p);
p.turnLeft(-Math.PI/2, createPoint(0, 1));
assertFpPointEquals(-1, 0, p);
p.turnLeft(Math.PI/6, createPoint(12, 0));
assertFpPointEquals(10.392304, -6, p);
p.turnLeft(-Math.PI/6, createPoint(12, 0));
assertFpPointEquals(10.39230, 6, p);
p.turnLeft(Math.PI/11, createPoint(-4, 18));
assertFpPointEquals(1.23321, 18.39780, p);
p.turnLeft(-Math.PI/11, createPoint(-4, 18));
assertFpPointEquals(-8.90916, 16.14394, p);
}
@Test
public void turnLeftDoublePoint2D_iffp_rightHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p = createPoint(0, 0);
p.turnLeft(Math.PI/2, createPoint(1, 0));
assertFpPointEquals(0, 1, p);
p.turnLeft(Math.PI/2, createPoint(0, 1));
assertFpPointEquals(-1, 0, p);
p.turnLeft(Math.PI/2, createPoint(-1, 0));
assertFpPointEquals(0, -1, p);
p.turnLeft(Math.PI/2, createPoint(0, -1));
assertFpPointEquals(1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(1, 0));
assertFpPointEquals(0, -1, p);
p.turnLeft(-Math.PI/2, createPoint(0, -1));
assertFpPointEquals(-1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(-1, 0));
assertFpPointEquals(0, 1, p);
p.turnLeft(-Math.PI/2, createPoint(0, 1));
assertFpPointEquals(1, 0, p);
p.turnLeft(Math.PI/6, createPoint(12, 0));
assertFpPointEquals(10.392304, 6, p);
p.turnLeft(-Math.PI/6, createPoint(12, 0));
assertFpPointEquals(10.39230, -6, p);
p.turnLeft(Math.PI/11, createPoint(-4, 18));
assertFpPointEquals(-8.90916, 16.14394, p);
p.turnLeft(-Math.PI/11, createPoint(-4, 18));
assertFpPointEquals(1.23321, 18.39780, p);
}
@Test
public void turnLeftDoublePoint2DPoint2D_origin_iffp_leftHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(0, 0);
Point2D p = createPoint(0, 0);
p.turnLeft(Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(0, -1, p);
p.turnLeft(Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(1, 0, p);
p.turnLeft(Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(0, 1, p);
p.turnLeft(Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(-1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(0, 1, p);
p.turnLeft(-Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(0, -1, p);
p.turnLeft(-Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(-1, 0, p);
p.turnLeft(Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(10.392304, -6, p);
p.turnLeft(-Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(10.39230, 6, p);
p.turnLeft(Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(1.23321, 18.39780, p);
p.turnLeft(-Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(-8.90916, 16.14394, p);
}
@Test
public void turnLeftDoublePoint2DPoint2D_origin_iffp_rightHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(0, 0);
Point2D p = createPoint(0, 0);
p.turnLeft(Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(0, 1, p);
p.turnLeft(Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(-1, 0, p);
p.turnLeft(Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(0, -1, p);
p.turnLeft(Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(0, -1, p);
p.turnLeft(-Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(-1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(0, 1, p);
p.turnLeft(-Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(1, 0, p);
p.turnLeft(Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(10.392304, 6, p);
p.turnLeft(-Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(10.39230, -6, p);
p.turnLeft(Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(-8.90916, 16.14394, p);
p.turnLeft(-Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(1.23321, 18.39780, p);
}
@Test
public void turnLeftDoublePoint2DPoint2D_aroundP_iffp_leftHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(-45, 12);
Point2D p = createPoint(0, 0);
p.turnLeft(Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(-57, -34, p);
p.turnLeft(Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(-56, -33, p);
p.turnLeft(Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(-57, -32, p);
p.turnLeft(Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(-58, -33, p);
p.turnLeft(-Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(-33, 58, p);
p.turnLeft(-Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(-32, 57, p);
p.turnLeft(-Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(-33, 56, p);
p.turnLeft(-Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(-34, 57, p);
p.turnLeft(Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(-1.63655, -26.89230, p);
p.turnLeft(-Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(10.36345, 30.1077, p);
p.turnLeft(Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(-3.97039, 6.20592, p);
p.turnLeft(-Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(-7.35118, 29.30799, p);
}
@Test
public void turnLeftDoublePoint2DPoint2D_aroundP_iffp_rightHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(-45, 12);
Point2D p = createPoint(0, 0);
p.turnLeft(Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(-33, 58, p);
p.turnLeft(Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(-34, 57, p);
p.turnLeft(Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(-33, 56, p);
p.turnLeft(Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(-32, 57, p);
p.turnLeft(-Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(-57, -34, p);
p.turnLeft(-Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(-58, -33, p);
p.turnLeft(-Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(-57, -32, p);
p.turnLeft(-Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(-56, -33, p);
p.turnLeft(Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(10.36345, 30.1077, p);
p.turnLeft(-Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(-1.63655, -26.89230, p);
p.turnLeft(Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(-7.35118, 29.30799, p);
p.turnLeft(-Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(-3.97039, 6.20592, p);
}
@Test
public void turnRightDouble_iffp_leftHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p;
p = createPoint(1, 0);
p.turnRight(Math.PI/2);
assertFpPointEquals(0, 1, p);
p = createPoint(0, 1);
p.turnRight(Math.PI/2);
assertFpPointEquals(-1, 0, p);
p = createPoint(-1, 0);
p.turnRight(Math.PI/2);
assertFpPointEquals(0, -1, p);
p = createPoint(0, -1);
p.turnRight(Math.PI/2);
assertFpPointEquals(1, 0, p);
p = createPoint(1, 0);
p.turnRight(-Math.PI/2);
assertFpPointEquals(0, -1, p);
p = createPoint(0, -1);
p.turnRight(-Math.PI/2);
assertFpPointEquals(-1, 0, p);
p = createPoint(-1, 0);
p.turnRight(-Math.PI/2);
assertFpPointEquals(0, 1, p);
p = createPoint(0, 1);
p.turnRight(-Math.PI/2);
assertFpPointEquals(1, 0, p);
p = createPoint(12, 0);
p.turnRight(Math.PI/6);
assertFpPointEquals(10.39230, 6, p);
p = createPoint(12, 0);
p.turnRight(-Math.PI/6);
assertFpPointEquals(10.392304, -6, p);
p = createPoint(-4, 18);
p.turnRight(Math.PI/11);
assertFpPointEquals(-8.90916, 16.14394, p);
p = createPoint(-4, 18);
p.turnRight(-Math.PI/11);
assertFpPointEquals(1.23321, 18.39780, p);
}
@Test
public void turnRightDouble_iffp_rightHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p;
p = createPoint(1, 0);
p.turnRight(Math.PI/2);
assertFpPointEquals(0, -1, p);
p = createPoint(0, 1);
p.turnRight(Math.PI/2);
assertFpPointEquals(1, 0, p);
p = createPoint(-1, 0);
p.turnRight(Math.PI/2);
assertFpPointEquals(0, 1, p);
p = createPoint(0, -1);
p.turnRight(Math.PI/2);
assertFpPointEquals(-1, 0, p);
p = createPoint(1, 0);
p.turnRight(-Math.PI/2);
assertFpPointEquals(0, 1, p);
p = createPoint(0, -1);
p.turnRight(-Math.PI/2);
assertFpPointEquals(1, 0, p);
p = createPoint(-1, 0);
p.turnRight(-Math.PI/2);
assertFpPointEquals(0, -1, p);
p = createPoint(0, 1);
p.turnRight(-Math.PI/2);
assertFpPointEquals(-1, 0, p);
p = createPoint(12, 0);
p.turnRight(Math.PI/6);
assertFpPointEquals(10.39230, -6, p);
p = createPoint(12, 0);
p.turnRight(-Math.PI/6);
assertFpPointEquals(10.392304, 6, p);
p = createPoint(-4, 18);
p.turnRight(Math.PI/11);
assertFpPointEquals(1.23321, 18.39780, p);
p = createPoint(-4, 18);
p.turnRight(-Math.PI/11);
assertFpPointEquals(-8.90916, 16.14394, p);
}
@Test
public void turnRightDoublePoint2D_iffp_leftHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p = createPoint(0, 0);
p.turnRight(Math.PI/2, createPoint(1, 0));
assertFpPointEquals(0, 1, p);
p.turnRight(Math.PI/2, createPoint(0, 1));
assertFpPointEquals(-1, 0, p);
p.turnRight(Math.PI/2, createPoint(-1, 0));
assertFpPointEquals(0, -1, p);
p.turnRight(Math.PI/2, createPoint(0, -1));
assertFpPointEquals(1, 0, p);
p.turnRight(-Math.PI/2, createPoint(1, 0));
assertFpPointEquals(0, -1, p);
p.turnRight(-Math.PI/2, createPoint(0, -1));
assertFpPointEquals(-1, 0, p);
p.turnRight(-Math.PI/2, createPoint(-1, 0));
assertFpPointEquals(0, 1, p);
p.turnRight(-Math.PI/2, createPoint(0, 1));
assertFpPointEquals(1, 0, p);
p.turnRight(Math.PI/6, createPoint(12, 0));
assertFpPointEquals(10.392304, 6, p);
p.turnRight(-Math.PI/6, createPoint(12, 0));
assertFpPointEquals(10.39230, -6, p);
p.turnRight(Math.PI/11, createPoint(-4, 18));
assertFpPointEquals(-8.90916, 16.14394, p);
p.turnRight(-Math.PI/11, createPoint(-4, 18));
assertFpPointEquals(1.23321, 18.39780, p);
}
@Test
public void turnRightDoublePoint2D_iffp_rightHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Assume.assumeFalse(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p = createPoint(0, 0);
p.turnRight(Math.PI/2, createPoint(1, 0));
assertFpPointEquals(0, -1, p);
p.turnRight(Math.PI/2, createPoint(0, 1));
assertFpPointEquals(1, 0, p);
p.turnRight(Math.PI/2, createPoint(-1, 0));
assertFpPointEquals(0, 1, p);
p.turnRight(Math.PI/2, createPoint(0, -1));
assertFpPointEquals(-1, 0, p);
p.turnRight(-Math.PI/2, createPoint(1, 0));
assertFpPointEquals(0, 1, p);
p.turnRight(-Math.PI/2, createPoint(0, -1));
assertFpPointEquals(1, 0, p);
p.turnRight(-Math.PI/2, createPoint(-1, 0));
assertFpPointEquals(0, -1, p);
p.turnRight(-Math.PI/2, createPoint(0, 1));
assertFpPointEquals(-1, 0, p);
p.turnRight(Math.PI/6, createPoint(12, 0));
assertFpPointEquals(10.392304, -6, p);
p.turnRight(-Math.PI/6, createPoint(12, 0));
assertFpPointEquals(10.39230, 6, p);
p.turnRight(Math.PI/11, createPoint(-4, 18));
assertFpPointEquals(1.23321, 18.39780, p);
p.turnRight(-Math.PI/11, createPoint(-4, 18));
assertFpPointEquals(-8.90916, 16.14394, p);
}
@Test
public void turnRightDoublePoint2DPoint2D_origin_iffp_leftHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(0, 0);
Point2D p = createPoint(0, 0);
p.turnRight(Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(0, 1, p);
p.turnRight(Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(-1, 0, p);
p.turnRight(Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(0, -1, p);
p.turnRight(Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(1, 0, p);
p.turnRight(-Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(0, -1, p);
p.turnRight(-Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(-1, 0, p);
p.turnRight(-Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(0, 1, p);
p.turnRight(-Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(1, 0, p);
p.turnRight(Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(10.39230, 6, p);
p.turnRight(-Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(10.392304, -6, p);
p.turnRight(Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(-8.90916, 16.14394, p);
p.turnRight(-Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(1.23321, 18.39780, p);
}
@Test
public void turnRightDoublePoint2DPoint2D_origin_iffp_rightHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(0, 0);
Point2D p = createPoint(0, 0);
p.turnRight(Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(0, -1, p);
p.turnRight(Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(1, 0, p);
p.turnRight(Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(0, 1, p);
p.turnRight(Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(-1, 0, p);
p.turnRight(-Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(0, 1, p);
p.turnRight(-Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(1, 0, p);
p.turnRight(-Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(0, -1, p);
p.turnRight(-Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(-1, 0, p);
p.turnRight(Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(10.39230, -6, p);
p.turnRight(-Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(10.392304, 6, p);
p.turnRight(Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(1.23321, 18.39780, p);
p.turnRight(-Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(-8.90916, 16.14394, p);
}
@Test
public void turnRightDoublePoint2DPoint2D_aroundP_iffp_leftHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(-45, 12);
Point2D p = createPoint(0, 0);
p.turnRight(Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(-33, 58, p);
p.turnRight(Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(-34, 57, p);
p.turnRight(Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(-33, 56, p);
p.turnRight(Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(-32, 57, p);
p.turnRight(-Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(-57, -34, p);
p.turnRight(-Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(-58, -33, p);
p.turnRight(-Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(-57, -32, p);
p.turnRight(-Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(-56, -33, p);
p.turnRight(Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(10.36345, 30.1077, p);
p.turnRight(-Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(-1.63655, -26.89230, p);
p.turnRight(Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(-7.35118, 29.30799, p);
p.turnRight(-Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(-3.97039, 6.20592, p);
}
@Test
public void turnRightDoublePoint2DPoint2D_aroundP_iffp_rightHanded() {
Assume.assumeFalse(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(-45, 12);
Point2D p = createPoint(0, 0);
p.turnRight(Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(-57, -34, p);
p.turnRight(Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(-56, -33, p);
p.turnRight(Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(-57, -32, p);
p.turnRight(Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(-58, -33, p);
p.turnRight(-Math.PI/2, createPoint(1, 0), origin);
assertFpPointEquals(-33, 58, p);
p.turnRight(-Math.PI/2, createPoint(0, -1), origin);
assertFpPointEquals(-32, 57, p);
p.turnRight(-Math.PI/2, createPoint(-1, 0), origin);
assertFpPointEquals(-33, 56, p);
p.turnRight(-Math.PI/2, createPoint(0, 1), origin);
assertFpPointEquals(-34, 57, p);
p.turnRight(Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(-1.63655, -26.89230, p);
p.turnRight(-Math.PI/6, createPoint(12, 0), origin);
assertFpPointEquals(10.36345, 30.1077, p);
p.turnRight(Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(-3.97039, 6.20592, p);
p.turnRight(-Math.PI/11, createPoint(-4, 18), origin);
assertFpPointEquals(-7.35118, 29.30799, p);
}
@Test
public void turnDouble_ifi() {
Assume.assumeTrue(isIntCoordinates());
Point2D p;
p = createPoint(1, 0);
p.turn(Math.PI/2);
assertIntPointEquals(0, 1, p);
p = createPoint(0, 1);
p.turn(Math.PI/2);
assertIntPointEquals(-1, 0, p);
p = createPoint(-1, 0);
p.turn(Math.PI/2);
assertIntPointEquals(0, -1, p);
p = createPoint(0, -1);
p.turn(Math.PI/2);
assertIntPointEquals(1, 0, p);
p = createPoint(1, 0);
p.turn(-Math.PI/2);
assertIntPointEquals(0, -1, p);
p = createPoint(0, -1);
p.turn(-Math.PI/2);
assertIntPointEquals(-1, 0, p);
p = createPoint(-1, 0);
p.turn(-Math.PI/2);
assertIntPointEquals(0, 1, p);
p = createPoint(0, 1);
p.turn(-Math.PI/2);
assertIntPointEquals(1, 0, p);
p = createPoint(12, 0);
p.turn(Math.PI/6);
assertIntPointEquals(10, 6, p);
p = createPoint(12, 0);
p.turn(-Math.PI/6);
assertIntPointEquals(10, -6, p);
p = createPoint(-4, 18);
p.turn(Math.PI/11);
assertIntPointEquals(-9, 16, p);
p = createPoint(-4, 18);
p.turn(-Math.PI/11);
assertIntPointEquals(1, 18, p);
}
@Test
public void turnDoublePoint2D_ifi() {
Assume.assumeTrue(isIntCoordinates());
Point2D p = createPoint(0, 0);
p.turn(Math.PI/2, createPoint(1, 0));
assertIntPointEquals(0, 1, p);
p.turn(Math.PI/2, createPoint(0, 1));
assertIntPointEquals(-1, 0, p);
p.turn(Math.PI/2, createPoint(-1, 0));
assertIntPointEquals(0, -1, p);
p.turn(Math.PI/2, createPoint(0, -1));
assertIntPointEquals(1, 0, p);
p.turn(-Math.PI/2, createPoint(1, 0));
assertIntPointEquals(0, -1, p);
p.turn(-Math.PI/2, createPoint(0, -1));
assertIntPointEquals(-1, 0, p);
p.turn(-Math.PI/2, createPoint(-1, 0));
assertIntPointEquals(0, 1, p);
p.turn(-Math.PI/2, createPoint(0, 1));
assertIntPointEquals(1, 0, p);
p.turn(Math.PI/6, createPoint(12, 0));
assertIntPointEquals(10, 6, p);
p.turn(-Math.PI/6, createPoint(12, 0));
assertIntPointEquals(10, -6, p);
p.turn(Math.PI/11, createPoint(-4, 18));
assertIntPointEquals(-9, 16, p);
p.turn(-Math.PI/11, createPoint(-4, 18));
assertIntPointEquals(1, 18, p);
}
@Test
public void turnDoublePoint2DPoint2D_origin_ifi() {
Assume.assumeTrue(isIntCoordinates());
Point2D origin = createPoint(0, 0);
Point2D p = createPoint(0, 0);
p.turn(Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(0, 1, p);
p.turn(Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(-1, 0, p);
p.turn(Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(0, -1, p);
p.turn(Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(1, 0, p);
p.turn(-Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(0, -1, p);
p.turn(-Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(-1, 0, p);
p.turn(-Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(0, 1, p);
p.turn(-Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(1, 0, p);
p.turn(Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(10, 6, p);
p.turn(-Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(10, -6, p);
p.turn(Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(-9, 16, p);
p.turn(-Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(1, 18, p);
}
@Test
public void turnDoublePoint2DPoint2D_aroundP_ifi() {
Assume.assumeTrue(isIntCoordinates());
Point2D origin = createPoint(-45, 12);
Point2D p = createPoint(0, 0);
p.turn(Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(-33, 58, p);
p.turn(Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(-34, 57, p);
p.turn(Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(-33, 56, p);
p.turn(Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(-32, 57, p);
p.turn(-Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(-57, -34, p);
p.turn(-Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(-58, -33, p);
p.turn(-Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(-57, -32, p);
p.turn(-Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(-56, -33, p);
p.turn(Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(10, 30, p);
p.turn(-Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(-2, -27, p);
p.turn(Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(-7, 29, p);
p.turn(-Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(-4, 6, p);
}
@Test
public void turnLeftDouble_ifi_leftHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p;
p = createPoint(1, 0);
p.turnLeft(Math.PI/2);
assertIntPointEquals(0, -1, p);
p = createPoint(0, 1);
p.turnLeft(Math.PI/2);
assertIntPointEquals(1, 0, p);
p = createPoint(-1, 0);
p.turnLeft(Math.PI/2);
assertIntPointEquals(0, 1, p);
p = createPoint(0, -1);
p.turnLeft(Math.PI/2);
assertIntPointEquals(-1, 0, p);
p = createPoint(1, 0);
p.turnLeft(-Math.PI/2);
assertIntPointEquals(0, 1, p);
p = createPoint(0, -1);
p.turnLeft(-Math.PI/2);
assertIntPointEquals(1, 0, p);
p = createPoint(-1, 0);
p.turnLeft(-Math.PI/2);
assertIntPointEquals(0, -1, p);
p = createPoint(0, 1);
p.turnLeft(-Math.PI/2);
assertIntPointEquals(-1, 0, p);
p = createPoint(12, 0);
p.turnLeft(Math.PI/6);
assertIntPointEquals(10, -6, p);
p = createPoint(12, 0);
p.turnLeft(-Math.PI/6);
assertIntPointEquals(10, 6, p);
p = createPoint(-4, 18);
p.turnLeft(Math.PI/11);
assertIntPointEquals(1, 18, p);
p = createPoint(-4, 18);
p.turnLeft(-Math.PI/11);
assertIntPointEquals(-9, 16, p);
}
@Test
public void turnLeftDouble_ifi_rightHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p;
p = createPoint(1, 0);
p.turnLeft(Math.PI/2);
assertIntPointEquals(0, 1, p);
p = createPoint(0, 1);
p.turnLeft(Math.PI/2);
assertIntPointEquals(-1, 0, p);
p = createPoint(-1, 0);
p.turnLeft(Math.PI/2);
assertIntPointEquals(0, -1, p);
p = createPoint(0, -1);
p.turnLeft(Math.PI/2);
assertIntPointEquals(1, 0, p);
p = createPoint(1, 0);
p.turnLeft(-Math.PI/2);
assertIntPointEquals(0, -1, p);
p = createPoint(0, -1);
p.turnLeft(-Math.PI/2);
assertIntPointEquals(-1, 0, p);
p = createPoint(-1, 0);
p.turnLeft(-Math.PI/2);
assertIntPointEquals(0, 1, p);
p = createPoint(0, 1);
p.turnLeft(-Math.PI/2);
assertIntPointEquals(1, 0, p);
p = createPoint(12, 0);
p.turnLeft(Math.PI/6);
assertIntPointEquals(10, 6, p);
p = createPoint(12, 0);
p.turnLeft(-Math.PI/6);
assertIntPointEquals(10, -6, p);
p = createPoint(-4, 18);
p.turnLeft(Math.PI/11);
assertIntPointEquals(-9, 16, p);
p = createPoint(-4, 18);
p.turnLeft(-Math.PI/11);
assertIntPointEquals(1, 18, p);
}
@Test
public void turnLeftDoublePoint2D_ifi_leftHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p = createPoint(0, 0);
p.turnLeft(Math.PI/2, createPoint(1, 0));
assertIntPointEquals(0, -1, p);
p.turnLeft(Math.PI/2, createPoint(0, 1));
assertIntPointEquals(1, 0, p);
p.turnLeft(Math.PI/2, createPoint(-1, 0));
assertIntPointEquals(0, 1, p);
p.turnLeft(Math.PI/2, createPoint(0, -1));
assertIntPointEquals(-1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(1, 0));
assertIntPointEquals(0, 1, p);
p.turnLeft(-Math.PI/2, createPoint(0, -1));
assertIntPointEquals(1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(-1, 0));
assertIntPointEquals(0, -1, p);
p.turnLeft(-Math.PI/2, createPoint(0, 1));
assertIntPointEquals(-1, 0, p);
p.turnLeft(Math.PI/6, createPoint(12, 0));
assertIntPointEquals(10, -6, p);
p.turnLeft(-Math.PI/6, createPoint(12, 0));
assertIntPointEquals(10, 6, p);
p.turnLeft(Math.PI/11, createPoint(-4, 18));
assertIntPointEquals(1, 18, p);
p.turnLeft(-Math.PI/11, createPoint(-4, 18));
assertIntPointEquals(-9, 16, p);
}
@Test
public void turnLeftDoublePoint2D_ifi_rightHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p = createPoint(0, 0);
p.turnLeft(Math.PI/2, createPoint(1, 0));
assertIntPointEquals(0, 1, p);
p.turnLeft(Math.PI/2, createPoint(0, 1));
assertIntPointEquals(-1, 0, p);
p.turnLeft(Math.PI/2, createPoint(-1, 0));
assertIntPointEquals(0, -1, p);
p.turnLeft(Math.PI/2, createPoint(0, -1));
assertIntPointEquals(1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(1, 0));
assertIntPointEquals(0, -1, p);
p.turnLeft(-Math.PI/2, createPoint(0, -1));
assertIntPointEquals(-1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(-1, 0));
assertIntPointEquals(0, 1, p);
p.turnLeft(-Math.PI/2, createPoint(0, 1));
assertIntPointEquals(1, 0, p);
p.turnLeft(Math.PI/6, createPoint(12, 0));
assertIntPointEquals(10, 6, p);
p.turnLeft(-Math.PI/6, createPoint(12, 0));
assertIntPointEquals(10, -6, p);
p.turnLeft(Math.PI/11, createPoint(-4, 18));
assertIntPointEquals(-9, 16, p);
p.turnLeft(-Math.PI/11, createPoint(-4, 18));
assertIntPointEquals(1, 18, p);
}
@Test
public void turnLeftDoublePoint2DPoint2D_origin_ifi_leftHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(0, 0);
Point2D p = createPoint(0, 0);
p.turnLeft(Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(0, -1, p);
p.turnLeft(Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(1, 0, p);
p.turnLeft(Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(0, 1, p);
p.turnLeft(Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(-1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(0, 1, p);
p.turnLeft(-Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(0, -1, p);
p.turnLeft(-Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(-1, 0, p);
p.turnLeft(Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(10, -6, p);
p.turnLeft(-Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(10, 6, p);
p.turnLeft(Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(1, 18, p);
p.turnLeft(-Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(-9, 16, p);
}
@Test
public void turnLeftDoublePoint2DPoint2D_origin_ifi_rightHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(0, 0);
Point2D p = createPoint(0, 0);
p.turnLeft(Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(0, 1, p);
p.turnLeft(Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(-1, 0, p);
p.turnLeft(Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(0, -1, p);
p.turnLeft(Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(0, -1, p);
p.turnLeft(-Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(-1, 0, p);
p.turnLeft(-Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(0, 1, p);
p.turnLeft(-Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(1, 0, p);
p.turnLeft(Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(10, 6, p);
p.turnLeft(-Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(10, -6, p);
p.turnLeft(Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(-9, 16, p);
p.turnLeft(-Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(1, 18, p);
}
@Test
public void turnLeftDoublePoint2DPoint2D_aroundP_ifi_leftHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(-45, 12);
Point2D p = createPoint(0, 0);
p.turnLeft(Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(-57, -34, p);
p.turnLeft(Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(-56, -33, p);
p.turnLeft(Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(-57, -32, p);
p.turnLeft(Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(-58, -33, p);
p.turnLeft(-Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(-33, 58, p);
p.turnLeft(-Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(-32, 57, p);
p.turnLeft(-Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(-33, 56, p);
p.turnLeft(-Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(-34, 57, p);
p.turnLeft(Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(-2, -27, p);
p.turnLeft(-Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(10, 30, p);
p.turnLeft(Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(-4, 6, p);
p.turnLeft(-Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(-7, 29, p);
}
@Test
public void turnLeftDoublePoint2DPoint2D_aroundP_ifi_rightHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(-45, 12);
Point2D p = createPoint(0, 0);
p.turnLeft(Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(-33, 58, p);
p.turnLeft(Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(-34, 57, p);
p.turnLeft(Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(-33, 56, p);
p.turnLeft(Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(-32, 57, p);
p.turnLeft(-Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(-57, -34, p);
p.turnLeft(-Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(-58, -33, p);
p.turnLeft(-Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(-57, -32, p);
p.turnLeft(-Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(-56, -33, p);
p.turnLeft(Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(10, 30, p);
p.turnLeft(-Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(-2, -27, p);
p.turnLeft(Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(-7, 29, p);
p.turnLeft(-Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(-4, 6, p);
}
@Test
public void turnRightDouble_ifi_leftHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p;
p = createPoint(1, 0);
p.turnRight(Math.PI/2);
assertIntPointEquals(0, 1, p);
p = createPoint(0, 1);
p.turnRight(Math.PI/2);
assertIntPointEquals(-1, 0, p);
p = createPoint(-1, 0);
p.turnRight(Math.PI/2);
assertIntPointEquals(0, -1, p);
p = createPoint(0, -1);
p.turnRight(Math.PI/2);
assertIntPointEquals(1, 0, p);
p = createPoint(1, 0);
p.turnRight(-Math.PI/2);
assertIntPointEquals(0, -1, p);
p = createPoint(0, -1);
p.turnRight(-Math.PI/2);
assertIntPointEquals(-1, 0, p);
p = createPoint(-1, 0);
p.turnRight(-Math.PI/2);
assertIntPointEquals(0, 1, p);
p = createPoint(0, 1);
p.turnRight(-Math.PI/2);
assertIntPointEquals(1, 0, p);
p = createPoint(12, 0);
p.turnRight(Math.PI/6);
assertIntPointEquals(10, 6, p);
p = createPoint(12, 0);
p.turnRight(-Math.PI/6);
assertIntPointEquals(10, -6, p);
p = createPoint(-4, 18);
p.turnRight(Math.PI/11);
assertIntPointEquals(-9, 16, p);
p = createPoint(-4, 18);
p.turnRight(-Math.PI/11);
assertIntPointEquals(1, 18, p);
}
@Test
public void turnRightDouble_ifi_rightHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p;
p = createPoint(1, 0);
p.turnRight(Math.PI/2);
assertIntPointEquals(0, -1, p);
p = createPoint(0, 1);
p.turnRight(Math.PI/2);
assertIntPointEquals(1, 0, p);
p = createPoint(-1, 0);
p.turnRight(Math.PI/2);
assertIntPointEquals(0, 1, p);
p = createPoint(0, -1);
p.turnRight(Math.PI/2);
assertIntPointEquals(-1, 0, p);
p = createPoint(1, 0);
p.turnRight(-Math.PI/2);
assertIntPointEquals(0, 1, p);
p = createPoint(0, -1);
p.turnRight(-Math.PI/2);
assertIntPointEquals(1, 0, p);
p = createPoint(-1, 0);
p.turnRight(-Math.PI/2);
assertIntPointEquals(0, -1, p);
p = createPoint(0, 1);
p.turnRight(-Math.PI/2);
assertIntPointEquals(-1, 0, p);
p = createPoint(12, 0);
p.turnRight(Math.PI/6);
assertIntPointEquals(10, -6, p);
p = createPoint(12, 0);
p.turnRight(-Math.PI/6);
assertIntPointEquals(10, 6, p);
p = createPoint(-4, 18);
p.turnRight(Math.PI/11);
assertIntPointEquals(1, 18, p);
p = createPoint(-4, 18);
p.turnRight(-Math.PI/11);
assertIntPointEquals(-9, 16, p);
}
@Test
public void turnRightDoublePoint2D_ifi_leftHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p = createPoint(0, 0);
p.turnRight(Math.PI/2, createPoint(1, 0));
assertIntPointEquals(0, 1, p);
p.turnRight(Math.PI/2, createPoint(0, 1));
assertIntPointEquals(-1, 0, p);
p.turnRight(Math.PI/2, createPoint(-1, 0));
assertIntPointEquals(0, -1, p);
p.turnRight(Math.PI/2, createPoint(0, -1));
assertIntPointEquals(1, 0, p);
p.turnRight(-Math.PI/2, createPoint(1, 0));
assertIntPointEquals(0, -1, p);
p.turnRight(-Math.PI/2, createPoint(0, -1));
assertIntPointEquals(-1, 0, p);
p.turnRight(-Math.PI/2, createPoint(-1, 0));
assertIntPointEquals(0, 1, p);
p.turnRight(-Math.PI/2, createPoint(0, 1));
assertIntPointEquals(1, 0, p);
p.turnRight(Math.PI/6, createPoint(12, 0));
assertIntPointEquals(10, 6, p);
p.turnRight(-Math.PI/6, createPoint(12, 0));
assertIntPointEquals(10, -6, p);
p.turnRight(Math.PI/11, createPoint(-4, 18));
assertIntPointEquals(-9, 16, p);
p.turnRight(-Math.PI/11, createPoint(-4, 18));
assertIntPointEquals(1, 18, p);
}
@Test
public void turnRightDoublePoint2D_ifi_rightHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Assume.assumeFalse(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D p = createPoint(0, 0);
p.turnRight(Math.PI/2, createPoint(1, 0));
assertIntPointEquals(0, -1, p);
p.turnRight(Math.PI/2, createPoint(0, 1));
assertIntPointEquals(1, 0, p);
p.turnRight(Math.PI/2, createPoint(-1, 0));
assertIntPointEquals(0, 1, p);
p.turnRight(Math.PI/2, createPoint(0, -1));
assertIntPointEquals(-1, 0, p);
p.turnRight(-Math.PI/2, createPoint(1, 0));
assertIntPointEquals(0, 1, p);
p.turnRight(-Math.PI/2, createPoint(0, -1));
assertIntPointEquals(1, 0, p);
p.turnRight(-Math.PI/2, createPoint(-1, 0));
assertIntPointEquals(0, -1, p);
p.turnRight(-Math.PI/2, createPoint(0, 1));
assertIntPointEquals(-1, 0, p);
p.turnRight(Math.PI/6, createPoint(12, 0));
assertIntPointEquals(10, -6, p);
p.turnRight(-Math.PI/6, createPoint(12, 0));
assertIntPointEquals(10, 6, p);
p.turnRight(Math.PI/11, createPoint(-4, 18));
assertIntPointEquals(1, 18, p);
p.turnRight(-Math.PI/11, createPoint(-4, 18));
assertIntPointEquals(-9, 16, p);
}
@Test
public void turnRightDoublePoint2DPoint2D_origin_ifi_leftHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(0, 0);
Point2D p = createPoint(0, 0);
p.turnRight(Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(0, 1, p);
p.turnRight(Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(-1, 0, p);
p.turnRight(Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(0, -1, p);
p.turnRight(Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(1, 0, p);
p.turnRight(-Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(0, -1, p);
p.turnRight(-Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(-1, 0, p);
p.turnRight(-Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(0, 1, p);
p.turnRight(-Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(1, 0, p);
p.turnRight(Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(10, 6, p);
p.turnRight(-Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(10, -6, p);
p.turnRight(Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(-9, 16, p);
p.turnRight(-Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(1, 18, p);
}
@Test
public void turnRightDoublePoint2DPoint2D_origin_ifi_rightHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(0, 0);
Point2D p = createPoint(0, 0);
p.turnRight(Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(0, -1, p);
p.turnRight(Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(1, 0, p);
p.turnRight(Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(0, 1, p);
p.turnRight(Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(-1, 0, p);
p.turnRight(-Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(0, 1, p);
p.turnRight(-Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(1, 0, p);
p.turnRight(-Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(0, -1, p);
p.turnRight(-Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(-1, 0, p);
p.turnRight(Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(10, -6, p);
p.turnRight(-Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(10, 6, p);
p.turnRight(Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(1, 18, p);
p.turnRight(-Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(-9, 16, p);
}
@Test
public void turnRightDoublePoint2DPoint2D_aroundP_ifi_leftHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeTrue(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(-45, 12);
Point2D p = createPoint(0, 0);
p.turnRight(Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(-33, 58, p);
p.turnRight(Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(-34, 57, p);
p.turnRight(Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(-33, 56, p);
p.turnRight(Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(-32, 57, p);
p.turnRight(-Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(-57, -34, p);
p.turnRight(-Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(-58, -33, p);
p.turnRight(-Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(-57, -32, p);
p.turnRight(-Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(-56, -33, p);
p.turnRight(Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(10, 30, p);
p.turnRight(-Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(-2, -27, p);
p.turnRight(Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(-7, 29, p);
p.turnRight(-Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(-4, 6, p);
}
@Test
public void turnRightDoublePoint2DPoint2D_aroundP_ifi_rightHanded() {
Assume.assumeTrue(isIntCoordinates());
Assume.assumeFalse(CoordinateSystem2D.getDefaultCoordinateSystem().isLeftHanded());
Point2D origin = createPoint(-45, 12);
Point2D p = createPoint(0, 0);
p.turnRight(Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(-57, -34, p);
p.turnRight(Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(-56, -33, p);
p.turnRight(Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(-57, -32, p);
p.turnRight(Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(-58, -33, p);
p.turnRight(-Math.PI/2, createPoint(1, 0), origin);
assertIntPointEquals(-33, 58, p);
p.turnRight(-Math.PI/2, createPoint(0, -1), origin);
assertIntPointEquals(-32, 57, p);
p.turnRight(-Math.PI/2, createPoint(-1, 0), origin);
assertIntPointEquals(-33, 56, p);
p.turnRight(-Math.PI/2, createPoint(0, 1), origin);
assertIntPointEquals(-34, 57, p);
p.turnRight(Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(-2, -27, p);
p.turnRight(-Math.PI/6, createPoint(12, 0), origin);
assertIntPointEquals(10, 30, p);
p.turnRight(Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(-4, 6, p);
p.turnRight(-Math.PI/11, createPoint(-4, 18), origin);
assertIntPointEquals(-7, 29, p);
}
}