Tuple2D extends Point2D.Double implements ILocated2D { public Tuple2D rotate(double radians) { return new Tuple2D((x * Math.cos(radians)) - (y * Math.sin(radians)), (x * Math.sin(radians)) + (y * Math.cos(radians))); } Tuple2D(double x, double y); boolean isZero(); double length(); Tuple2D normalize(); double angle(); Tuple2D midpoint(Tuple2D position); Tuple2D add(Tuple2D position); Tuple2D sub(ILocated2D rhs); Tuple2D mult(double i); Tuple2D div(double i); Tuple2D getPosition(); Tuple2D rotate(double radians); double distance(ILocated2D other); @Override String toString(); double angleBetweenTargets(ILocated2D a, ILocated2D b);  }
@Test public void testRotate() { Tuple2D test = new Tuple2D(1, 0); Tuple2D otherTest = new Tuple2D(1, 0); test.rotate(Math.PI / 2); assertEquals(test, otherTest); }