Files
hytale-chain-lightning/src/test/java/com/mythlane/chainlightning/chain/Vec3Test.java
T
kayjaydee 8d868a28ca feat(04-01): add Vec3.lerp and ParticleTrail sampler with JUnit suite
- Vec3.lerp(other, t) for linear interpolation between two points
- ParticleTrail.sample(from, to, density) emits density-based interpolated
  points strictly between endpoints (endpoints excluded by construction)
- TRAIL_DENSITY = 4.0 particles per block
- 6 ParticleTrail tests + 3 Vec3.lerp tests, all green
- Zero Hytale imports — chain/ frontier preserved
2026-04-27 13:00:47 +02:00

75 lines
2.1 KiB
Java

package com.mythlane.chainlightning.chain;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
final class Vec3Test {
@Test
void distanceSquared_zeroToZero_isZero() {
Vec3 a = new Vec3(0, 0, 0);
assertEquals(0.0, a.distanceSquared(a), 1e-9);
}
@Test
void distanceSquared_pythagorean345_is25() {
Vec3 a = new Vec3(0, 0, 0);
Vec3 b = new Vec3(3, 4, 0);
assertEquals(25.0, a.distanceSquared(b), 1e-9);
}
@Test
void distanceSquared_isCommutative() {
Vec3 a = new Vec3(1, 2, 3);
Vec3 b = new Vec3(-4, 5, 6);
assertEquals(a.distanceSquared(b), b.distanceSquared(a), 1e-9);
}
@Test
void distance_pythagorean345_is5() {
Vec3 a = new Vec3(0, 0, 0);
Vec3 b = new Vec3(3, 4, 0);
assertEquals(5.0, a.distance(b), 1e-9);
}
@Test
void distanceSquared_negativeCoordinates_works() {
Vec3 a = new Vec3(-1, -1, -1);
Vec3 b = new Vec3(1, 1, 1);
assertEquals(12.0, a.distanceSquared(b), 1e-9);
assertTrue(a.distance(b) > 3.4 && a.distance(b) < 3.5);
}
@Test
void lerpAtZeroReturnsFrom() {
Vec3 from = Vec3.ZERO;
Vec3 to = new Vec3(10, 10, 10);
Vec3 result = from.lerp(to, 0.0);
assertEquals(from.x(), result.x(), 1e-9);
assertEquals(from.y(), result.y(), 1e-9);
assertEquals(from.z(), result.z(), 1e-9);
}
@Test
void lerpAtOneReturnsTo() {
Vec3 from = Vec3.ZERO;
Vec3 to = new Vec3(10, 10, 10);
Vec3 result = from.lerp(to, 1.0);
assertEquals(to.x(), result.x(), 1e-9);
assertEquals(to.y(), result.y(), 1e-9);
assertEquals(to.z(), result.z(), 1e-9);
}
@Test
void lerpAtHalfReturnsMidpoint() {
Vec3 from = new Vec3(0, 0, 0);
Vec3 to = new Vec3(10, 0, 0);
Vec3 result = from.lerp(to, 0.5);
assertEquals(5.0, result.x(), 1e-9);
assertEquals(0.0, result.y(), 1e-9);
assertEquals(0.0, result.z(), 1e-9);
}
}