added contents
This commit is contained in:
109
Projekte/common/src/test/java/pp/util/AngleTest.java
Normal file
109
Projekte/common/src/test/java/pp/util/AngleTest.java
Normal file
@@ -0,0 +1,109 @@
|
||||
////////////////////////////////////////
|
||||
// Programming project code
|
||||
// UniBw M, 2022, 2023, 2024
|
||||
// www.unibw.de/inf2
|
||||
// (c) Mark Minas (mark.minas@unibw.de)
|
||||
////////////////////////////////////////
|
||||
|
||||
package pp.util;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static java.lang.Math.min;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static pp.util.FloatMath.DEG_TO_RAD;
|
||||
import static pp.util.FloatMath.ZERO_TOLERANCE;
|
||||
import static pp.util.FloatMath.cos;
|
||||
import static pp.util.FloatMath.sin;
|
||||
|
||||
public class AngleTest {
|
||||
@Test
|
||||
public void compareAngles() {
|
||||
for (int i = 0; i < 360; i++) {
|
||||
final Angle u = Angle.fromDegrees(i);
|
||||
for (int j = 0; j < 360; j++) {
|
||||
final Angle v = Angle.fromDegrees(j);
|
||||
assertEquals("compare " + i + "° and " + j + "°", Integer.compare(i, j), (Object) u.compareTo(v));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addAngles() {
|
||||
for (int i = 0; i < 360; i++) {
|
||||
final Angle u = Angle.fromDegrees(i);
|
||||
for (int j = 0; j < 360; j++) {
|
||||
final Angle v = Angle.fromDegrees(j);
|
||||
final Angle sum = u.plus(v);
|
||||
assertEquals(i + "° + " + j + "°, x coordinate", cos((i + j) * DEG_TO_RAD), sum.x, ZERO_TOLERANCE);
|
||||
assertEquals(i + "° + " + j + "°, y coordinate", sin((i + j) * DEG_TO_RAD), sum.y, ZERO_TOLERANCE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void subtractAngles() {
|
||||
for (int i = 0; i < 360; i++) {
|
||||
final Angle u = Angle.fromDegrees(i);
|
||||
for (int j = 0; j < 360; j++) {
|
||||
final Angle v = Angle.fromDegrees(j);
|
||||
final Angle diff = u.minus(v);
|
||||
assertEquals(i + "° - " + j + "°, x coordinate", cos((i - j) * DEG_TO_RAD), diff.x, ZERO_TOLERANCE);
|
||||
assertEquals(i + "° - " + j + "°, y coordinate", sin((i - j) * DEG_TO_RAD), diff.y, ZERO_TOLERANCE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void minAngle() {
|
||||
for (int i = 0; i < 360; i++) {
|
||||
final Angle u = Angle.fromDegrees(i);
|
||||
for (int j = 0; j < 360; j++) {
|
||||
final Angle v = Angle.fromDegrees(j);
|
||||
final Angle diff = Angle.min(u, v);
|
||||
assertEquals(i + "° - " + j + "°, x coordinate", cos(min(i, j) * DEG_TO_RAD), diff.x, ZERO_TOLERANCE);
|
||||
assertEquals(i + "° - " + j + "°, y coordinate", sin(min(i, j) * DEG_TO_RAD), diff.y, ZERO_TOLERANCE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void bisector() {
|
||||
for (int right = 0; right < 360; right++) {
|
||||
final Angle rightAngle = Angle.fromDegrees(right);
|
||||
for (int add = 0; add < 360; add++) {
|
||||
final int left = right + add;
|
||||
final Angle bisector = Angle.fromDegrees(left).bisector(rightAngle);
|
||||
final float exp = (right + 0.5f * add) * DEG_TO_RAD;
|
||||
assertEquals("left=" + left + "° / right=" + right + "°, x coordinate", cos(exp), bisector.x, ZERO_TOLERANCE);
|
||||
assertEquals("left=" + left + "° / right=" + right + "°, y coordinate", sin(exp), bisector.y, ZERO_TOLERANCE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void leftOf() {
|
||||
for (int right = 0; right < 360; right++) {
|
||||
final Angle rightAngle = Angle.fromDegrees(right);
|
||||
for (int add = 1; add < 360; add++)
|
||||
if (add != 180) {
|
||||
final int left = right + add;
|
||||
final Angle leftAngle = Angle.fromDegrees(left);
|
||||
assertEquals(left + "° left of " + right + "°", add < 180, leftAngle.leftOf(rightAngle));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void rightOf() {
|
||||
for (int right = 0; right < 360; right++) {
|
||||
final Angle rightAngle = Angle.fromDegrees(right);
|
||||
for (int add = 1; add < 360; add++)
|
||||
if (add != 180) {
|
||||
final int left = right + add;
|
||||
final Angle leftAngle = Angle.fromDegrees(left);
|
||||
assertEquals(left + "° right of " + right + "°", add > 180, leftAngle.rightOf(rightAngle));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user