Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion src/main/java/com/adventofcode/flashk/common/Vector3.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,16 @@ public static Vector3 transform(Vector3 start, Vector3 end) {

return new Vector3(x,y,z);
}


public static double distance(Vector3 a, Vector3 b) {

int xDiff = b.x - a.x;
int yDiff = b.y - a.y;
int zDiff = b.z - a.z;

return Math.sqrt(Math.pow(xDiff, 2) + Math.pow(yDiff, 2) + Math.pow(zDiff,2));
}

/// Shorthand for `Vector3(-1,0,0)`.
/// @return A unitary vector that points to the left.
public static Vector3 left() {
Expand Down
89 changes: 89 additions & 0 deletions src/test/java/com/adventofcode/flashk/common/Vector3Test.java
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,95 @@ void transformStaticTest() {
assertEquals(-1, direction.getZ());
}

@Test
void testDistanceMainAxis() {

// Arrange - X axis
Vector3 a = new Vector3(0, 0, 0);
Vector3 b = new Vector3(5, 0, 0);
double expectedX = 5.0;

// Act & Assert - X Axis
double actualX = Vector3.distance(a, b);
assertEquals(expectedX, actualX);

// Arrange - Y axis
a = new Vector3(1, 1, 1);
b = new Vector3(1, 11, 1);
double expectedY = 10.0;

// Act & Assert - Y axis
double actualY = Vector3.distance(a, b);
assertEquals(expectedY, actualY);

// Arrange - Z axis
Vector3 v1 = new Vector3(2,5,8);
Vector3 v2 = new Vector3(2,5,5);
double expectedZ = 3;

// Act & Assert - Z axis
double actualZ = Vector3.distance(v1, v2);
assertEquals(expectedZ, actualZ);
}

@Test
void testDistance2D() {
// 1. Arrange
Vector3 a = new Vector3(0, 0, 0);
Vector3 b = new Vector3(3, 4, 0);
double expected = 5.0;

// 2. Act
double actual = Vector3.distance(a, b);

// 3. Assert
assertEquals(expected, actual);
}

@Test
void testDistanceSame() {

// 1. Arrange
Vector3 a = new Vector3(100, 50, -25);
Vector3 b = new Vector3(100, 50, -25);
double expected = 0;

// 2. Act
double actual = Vector3.distance(a, b);

// 3. Assert
assertEquals(expected, actual);
}

@Test
void testDistance() {
// 1. Arrange
Vector3 a = new Vector3(2, 8, 3);
Vector3 b = new Vector3(7, 1, 9);

double expected = Math.sqrt(110);

// 2. Act
double actual = Vector3.distance(a, b);

// 3. Assert
assertEquals(expected, actual);
}

@Test
void testDistanceNegatives() {
// 1. Arrange
Vector3 a = new Vector3(1, 1, 1);
Vector3 b = new Vector3(-3, -2, 7);
double expected = Math.sqrt(61);

// 2. Act
double actual = Vector3.distance(a, b);

// 3. Assert
assertEquals(expected, actual);
}

@Test
void leftTest() {

Expand Down