69 lines
2.7 KiB
C#
69 lines
2.7 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 Plane2D(new Vector2(0, 1), new Vector2(0, -1));
|
|
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToPoint(new Vector2(0, 0)) - 1) < Single.Epsilon);
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToPoint(new Vector2(0, 1))) < Single.Epsilon);
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToPoint(new Vector2(0, 2)) + 1) < Single.Epsilon);
|
|
}
|
|
|
|
[Test]
|
|
public void Plane2DDistAngled()
|
|
{
|
|
Plane2D plane2D = new Plane2D(new Vector2(0, 1), new Vector2(1, -1).Normalized());
|
|
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToPoint(new Vector2(0, 1))) < Single.Epsilon);
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToPoint(new Vector2(0, 0)) - MathF.Sqrt(2) / 2) < Single.Epsilon);
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToPoint(new Vector2(-1, 0))) < Single.Epsilon);
|
|
}
|
|
|
|
[Test]
|
|
public void Plane2DDistLineSegment()
|
|
{
|
|
Plane2D plane2D = new Plane2D(new Vector2(0, 1), new Vector2(1, -1).Normalized());
|
|
|
|
Assert.True(
|
|
Mathf.Abs(plane2D.DistanceToLineSegment(new Vector2(0, 0), new Vector2(-1, 0)) - 1) < Single.Epsilon);
|
|
Assert.True(Mathf.Abs(plane2D.DistanceToLineSegment(new Vector2(0, 0), new Vector2(0, 1)) - 1) <
|
|
Single.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 Plane2D(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 Plane2D(new Vector2(0, 1), new Vector2(1, -1).Normalized());
|
|
|
|
Assert.Equal(Single.PositiveInfinity,
|
|
plane2D.DistanceToLineSegment(new Vector2(0, 0), new Vector2(1, 1.00001f).Normalized()));
|
|
Assert.Equal(Single.NegativeInfinity,
|
|
plane2D.DistanceToLineSegment(new Vector2(0, 0), new Vector2(1, 0.99999f).Normalized()));
|
|
}
|
|
} |