package org.osm2world.core.math.algorithms;
import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
import static org.osm2world.core.math.VectorXYZ.*;
import static org.osm2world.core.test.TestUtil.assertAlmostEquals;
import java.util.List;
import org.junit.Test;
import org.osm2world.core.math.VectorXYZ;
public class NormalCalculationUtilTest {
@Test
public final void testCalculateTriangleStripNormals() {
List<VectorXYZ> vs = asList(
NULL_VECTOR,
new VectorXYZ(1, 0, -1),
new VectorXYZ(1, 0, 0),
new VectorXYZ(1, 1, 0)
);
List<VectorXYZ> normals =
NormalCalculationUtil.calculateTriangleStripNormals(vs, true);
assertEquals(4, normals.size());
assertAlmostEquals(Y_UNIT, normals.get(2));
assertAlmostEquals(X_UNIT.invert(), normals.get(3));
}
@Test
public final void testCalculateTriangleFanNormals() {
List<VectorXYZ> vs = asList(
NULL_VECTOR,
new VectorXYZ(1, 0, -1),
new VectorXYZ(1, 0, 0),
new VectorXYZ(1, 1, 0)
);
List<VectorXYZ> normals =
NormalCalculationUtil.calculateTriangleFanNormals(vs, true);
assertEquals(4, normals.size());
assertAlmostEquals(Y_UNIT, normals.get(2));
assertAlmostEquals(Z_UNIT.invert(), normals.get(3));
}
}