protected bool Equals(Toople other) { return(FloatClose(W, other.W) && FloatClose(X, other.X) && FloatClose(Y, other.Y) && FloatClose(Z, other.Z)); }
public void W_EqualsZero_IsAVector() { var vector = new Toople(1.1f, 1.2f, 1.3f, 0f); vector.IsPoint.Should().BeFalse(); vector.IsVector.Should().BeTrue(); }
public float Dot(Toople t) { return(X * t.X + Y * t.Y + Z * t.Z + W * t.W); }
public void W_aboveOne_NeitherPointNorVector() { var a = new Toople(1f, 1f, 1f, 5f); a.IsPoint.Should().BeFalse(); a.IsVector.Should().BeFalse(); }
public void Division_scalar() { var t = new Toople(1f, -2f, 3f, -4f); var result = t / 2; result.Should().BeEquivalentTo(new Toople(0.5f, -1f, 1.5f, -2f)); }
public void Multiplication_fraction() { var t = new Toople(1f, -2f, 3f, -4f); var result = t * 0.5f; result.Should().BeEquivalentTo(new Toople(0.5f, -1f, 1.5f, -2f)); }
public void Multiplication_scalar() { var t = new Toople(1f, -2f, 3f, -4f); var result = t * 3.5f; result.Should().BeEquivalentTo(new Toople(3.5f, -7f, 10.5f, -14f)); }
public void Normalization_values() { var v = Toople.Vector(1f, 2f, 3f); var sqrt = MathF.Sqrt(14f); v.Normalize().Should().BeEquivalentTo( Toople.Vector(1f / sqrt, 2f / sqrt, 3f / sqrt)); }
public void CrossProduct() { var a = Toople.Vector(1f, 2f, 3f); var b = Toople.Vector(2f, 3f, 4f); a.Cross(b).Should().BeEquivalentTo(Toople.Vector(-1f, 2f, -1f)); b.Cross(a).Should().BeEquivalentTo(Toople.Vector(1f, -2f, 1f)); }
public void DetailedEquals(float x, float y, float z, float w, bool expected) { var p = new Toople(1f, 2f, 3f, 0f); var a = new Toople(x, y, z, w); p.Equals(a).Should().Be(expected); }
public void Subtracting_fromZeroVector() { var zero = Toople.Vector(0, 0, 0); var v = Toople.Vector(1f, -2f, 3f); var result = zero - v; result.Should().BeEquivalentTo(Toople.Vector(-1f, 2f, -3f)); }
public void Subtracting_twoVectors() { var vectorA = Toople.Vector(3f, 2f, 1f); var vectorB = Toople.Vector(5f, 6f, 7f); var result = vectorA - vectorB; result.Should().BeEquivalentTo(Toople.Vector(-2f, -4f, -6f)); }
public void Subtracting_vectorFromPoint() { var point = Toople.Point(3f, 2f, 1f); var vector = Toople.Vector(5f, 6f, 7f); var result = point - vector; result.Should().BeEquivalentTo(Toople.Point(-2f, -4f, -6f)); }
public void Subtracting_twoPoints() { var pointA = Toople.Point(3f, 2f, 1f); var pointB = Toople.Point(5f, 6f, 7f); var result = pointA - pointB; result.Should().BeEquivalentTo(Toople.Vector(-2f, -4f, -6f)); }
public void AddingTuples() { var point = Toople.Point(3f, -2f, 5f); var vector = Toople.Vector(-2f, 3f, 1f); var result = point + vector; result.Should().BeEquivalentTo(new Toople(1f, 1f, 6f, 1f)); }
public void DotProduct() { var a = Toople.Vector(1f, 2f, 3f); var b = Toople.Vector(2f, 3f, 4f); var result = a.Dot(b); result.Should().BeApproximately(20, float.Epsilon); }
public void W_EqualsOne_IsAPoint() { var point = new Toople(2.1f, 2.2f, 2.3f, 1.0f); point.X.Should().Be(2.1f); point.Y.Should().Be(2.2f); point.Z.Should().Be(2.3f); point.W.Should().Be(1.0f); point.IsPoint.Should().BeTrue(); point.IsVector.Should().BeFalse(); }
public void EqualsWorks() { var point = Toople.Point(1f, 2f, 3f); point.Should().BeEquivalentTo(new Toople(1f, 2f, 3f, 1f)); var p2 = Toople.Point(1f, 2f, 3f); point.Equals(p2).Should().BeTrue(); var vector = Toople.Vector(1f, 2f, 3f); point.Equals(vector).Should().BeFalse(); }
static void Main(string[] args) { var projectile = new Projectile( Toople.Point(0, 1f, 0), Toople.Vector(1f, 1f, 1f).Normalize() * 4 ); var environment = new Environment( Toople.Vector(0, -0.1f, 0), Toople.Vector(-0.01f, 0, 0)); var simulation = new Simulation(environment, projectile); var ticks = simulation.Run(); Console.WriteLine($"IMPACT! in {ticks} ticks"); }
public void Vector_CreatesVector() { var vector = Toople.Vector(1f, 2f, 3f); vector.IsVector.Should().BeTrue(); }
public void Point_CreatesPoint() { var point = Toople.Point(1f, 2f, 3f); point.IsPoint.Should().BeTrue(); }
public Environment(Toople gravity, Toople wind) { Gravity = gravity; Wind = wind; }
public Toople Cross(Toople t) { return(Vector(Y * t.Z - Z * t.Y, Z * t.X - X * t.Z, X * t.Y - Y * t.X)); }
public void NormalizedMagnitude_isOne(float x, float y, float z) { var normalize = Toople.Vector(x, y, z).Normalize(); normalize.Magnitude.Should().BeApproximately(1f, (float)1e-5); }
public void Negation() { var t = new Toople(1f, -2f, 3f, -4f); (-t).Should().BeEquivalentTo(new Toople(-1f, 2f, -3f, 4f)); }
public void Normalization_simpleCase() { var v = Toople.Vector(4f, 0, 0); v.Normalize().Should().BeEquivalentTo(Toople.Vector(1f, 0, 0)); }
public void Magnitude_negatives() { var v = Toople.Vector(1f, -2f, -3f); v.Magnitude.Should().BeApproximately(MathF.Sqrt(14f), float.Epsilon); }
public void Magnitude_simpleCase() { var v = Toople.Vector(1f, 2f, 3f); v.Magnitude.Should().BeApproximately(MathF.Sqrt(14f), float.Epsilon); }
public void Magnitude_identities(float x, float y, float z, float magnitude) { var v = Toople.Vector(x, y, z); v.Magnitude.Should().BeApproximately(magnitude, float.Epsilon); }
public Projectile(Toople position, Toople velocity) { Position = position; Velocity = velocity; }