61 lines
2.6 KiB
C#
61 lines
2.6 KiB
C#
using System;
|
|
using Godot;
|
|
using GodotComponentTest.utils;
|
|
using GoDotTest;
|
|
using Xunit;
|
|
|
|
namespace GodotComponentTest.tests;
|
|
|
|
public class Plane2DTests : TestClass {
|
|
public Plane2DTests(Node testScene) : base(testScene) { }
|
|
|
|
[Test]
|
|
public void Plane2DDistSimple() {
|
|
Plane2D plane2D = new(new Vector2(0, 1), new Vector2(0, -1));
|
|
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToPoint(new Vector2(0, 0)) - 1) < float.Epsilon);
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToPoint(new Vector2(0, 1))) < float.Epsilon);
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToPoint(new Vector2(0, 2)) + 1) < float.Epsilon);
|
|
}
|
|
|
|
[Test]
|
|
public void Plane2DDistAngled() {
|
|
Plane2D plane2D = new(new Vector2(0, 1), new Vector2(1, -1).Normalized());
|
|
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToPoint(new Vector2(0, 1))) < float.Epsilon);
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToPoint(new Vector2(0, 0)) - MathF.Sqrt(2) / 2) < float.Epsilon);
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToPoint(new Vector2(-1, 0))) < float.Epsilon);
|
|
}
|
|
|
|
[Test]
|
|
public void Plane2DDistLineSegment() {
|
|
Plane2D plane2D = new(new Vector2(0, 1), new Vector2(1, -1).Normalized());
|
|
|
|
Assert.True(
|
|
Mathf.Abs(plane2D.DistanceToLineSegment(new Vector2(0, 0), new Vector2(-1, 0)) - 1) < float.Epsilon);
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToLineSegment(new Vector2(0, 0), new Vector2(0, 1)) - 1) <
|
|
float.Epsilon);
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToLineSegment(new Vector2(0, 0), new Vector2(1, -1).Normalized()) +
|
|
MathF.Sqrt(2) / 2) < Plane2D.DistancePrecision);
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToLineSegment(new Vector2(0, 0), new Vector2(-1, 1).Normalized()) -
|
|
MathF.Sqrt(2) / 2) < Plane2D.DistancePrecision);
|
|
}
|
|
|
|
[Test]
|
|
public void Plane2DTestIsParallel() {
|
|
Plane2D plane2D = new(new Vector2(0, 1), new Vector2(1, -1).Normalized());
|
|
|
|
Assert.True(plane2D.IsParallelToDir(new Vector2(1, 1.00001f).Normalized()));
|
|
Assert.True(plane2D.IsParallelToDir(new Vector2(1, 0.99999f).Normalized()));
|
|
}
|
|
|
|
[Test]
|
|
public void Plane2DDistLineSegmentParallel() {
|
|
Plane2D plane2D = new(new Vector2(0, 1), new Vector2(1, -1).Normalized());
|
|
|
|
Assert.Equal(float.PositiveInfinity,
|
|
plane2D.DistanceToLineSegment(new Vector2(0, 0), new Vector2(1, 1.00001f).Normalized()));
|
|
Assert.Equal(float.NegativeInfinity,
|
|
plane2D.DistanceToLineSegment(new Vector2(0, 0), new Vector2(1, 0.99999f).Normalized()));
|
|
}
|
|
} |