@Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        } else if (!(obj instanceof Rotation)) {
            return false;
        }
        Rotation other = (Rotation) obj;
        if (noRotation(this)) {
            return noRotation(other);
        }
        if (noRotation(other)) {
            return noRotation(this);
        }
        if (Float.floatToIntBits(this.px) != Float.floatToIntBits(other.px)) {
            return false;
        }
        if (Float.floatToIntBits(this.py) != Float.floatToIntBits(other.py)) {
            return false;
        }
        if (Double.doubleToLongBits(this.radians) != Double.doubleToLongBits(other.radians)) {
            return false;
        }
        return true;
    }
@Test
    public void equalsTest() {
        Rotation Rotation1 = new Rotation(1, 2, 1);
        Rotation Rotation2 = new Rotation(1, 2, 1);
        Rotation Rotation3 = new Rotation(1, 1, 1);
        Rotation Rotation4 = new Rotation(2, 2, 4);

        TestUtils.equalsTest(Rotation1, Rotation2);

        TestUtils.notEqualsTest(Rotation1, Rotation3);
        TestUtils.notEqualsTest(Rotation1, Rotation4);
        TestUtils.notEqualsTest(Rotation1, new Object());
        TestUtils.notEqualsTest(Rotation1, null);
    }