115 lines
4.3 KiB
C#
115 lines
4.3 KiB
C#
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using NavisworksTransport.Utils.CoordinateSystem;
|
|
using System.Numerics;
|
|
|
|
namespace NavisworksTransport.UnitTests.CoordinateSystem
|
|
{
|
|
[TestClass]
|
|
public class AutoPathPlanningCoordinateSemanticsTests
|
|
{
|
|
[TestMethod]
|
|
public void YUp_HostPlanarGridHelper_CreateHostPoint_ShouldApplyElevationOnHostY()
|
|
{
|
|
var adapter = new HostCoordinateAdapter(CoordinateSystemType.YUp);
|
|
|
|
Vector3 point = HostPlanarGridHelper.CreateHostPoint3(2.0, 3.0, 14.83, adapter);
|
|
|
|
AssertPoint(point, 2.0, 14.83, 3.0);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ZUp_HostPlanarGridHelper_CreateHostPoint_ShouldApplyElevationOnHostZ()
|
|
{
|
|
var adapter = new HostCoordinateAdapter(CoordinateSystemType.ZUp);
|
|
|
|
Vector3 point = HostPlanarGridHelper.CreateHostPoint3(2.0, 3.0, 6.25, adapter);
|
|
|
|
AssertPoint(point, 2.0, 3.0, 6.25);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void YUp_HostPlanarGridHelper_GetAndSetElevation_ShouldUseHostY()
|
|
{
|
|
var adapter = new HostCoordinateAdapter(CoordinateSystemType.YUp);
|
|
var hostPoint = new Vector3(4.0f, 15.0f, 6.0f);
|
|
|
|
double elevation = HostPlanarGridHelper.GetElevation3(hostPoint, adapter);
|
|
Vector3 adjusted = HostPlanarGridHelper.SetElevation3(hostPoint, 20.0, adapter);
|
|
|
|
Assert.AreEqual(15.0, elevation, 1e-6);
|
|
AssertPoint(adjusted, 4.0, 20.0, 6.0);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void YUp_HostPlanarGridHelper_GetHorizontalCoords_ShouldProjectToHostXZPlane()
|
|
{
|
|
var adapter = new HostCoordinateAdapter(CoordinateSystemType.YUp);
|
|
var hostPoint = new Vector3(8.0f, 14.83f, -5.35f);
|
|
|
|
(double h1, double h2) = HostPlanarGridHelper.GetHorizontalCoords3(hostPoint, adapter);
|
|
|
|
Assert.AreEqual(8.0, h1, 1e-6);
|
|
Assert.AreEqual(-5.35, h2, 1e-6);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void YUp_HostPlanarGridHelper_HorizontalRange_ShouldMatchHostXZPlane()
|
|
{
|
|
var adapter = new HostCoordinateAdapter(CoordinateSystemType.YUp);
|
|
var hostMin = new Vector3(-10.0f, 2.0f, -30.0f);
|
|
var hostMax = new Vector3(40.0f, 12.0f, 5.0f);
|
|
|
|
(double min1, double max1, double min2, double max2) =
|
|
HostPlanarGridHelper.GetHorizontalRange3(hostMin, hostMax, adapter);
|
|
|
|
Assert.AreEqual(-10.0, min1, 1e-6);
|
|
Assert.AreEqual(40.0, max1, 1e-6);
|
|
Assert.AreEqual(-30.0, min2, 1e-6);
|
|
Assert.AreEqual(5.0, max2, 1e-6);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void YUp_GridLikeWorldPointConstruction_ShouldWriteElevationToHostY()
|
|
{
|
|
var adapter = new HostCoordinateAdapter(CoordinateSystemType.YUp);
|
|
double originH1 = -210.0;
|
|
double originH2 = -10.0;
|
|
double cellSize = 1.0;
|
|
|
|
Vector3 worldPoint = HostPlanarGridHelper.CreateHostPoint3(
|
|
originH1 + 4 * cellSize,
|
|
originH2 + 6 * cellSize,
|
|
14.83,
|
|
adapter);
|
|
|
|
Assert.AreEqual(-206.0, worldPoint.X, 1e-6);
|
|
Assert.AreEqual(14.83, worldPoint.Y, 1e-6);
|
|
Assert.AreEqual(-4.0, worldPoint.Z, 1e-6);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void YUp_GridLikeWorldToGrid_ShouldReadHostXZAsPlanarAxes()
|
|
{
|
|
var adapter = new HostCoordinateAdapter(CoordinateSystemType.YUp);
|
|
var origin = new Vector3(-210.0f, 14.83f, -10.0f);
|
|
var endPoint = new Vector3(-169.20f, 14.83f, -5.35f);
|
|
const double cellSize = 1.0;
|
|
|
|
(double pointH1, double pointH2) = HostPlanarGridHelper.GetHorizontalCoords3(endPoint, adapter);
|
|
(double originH1, double originH2) = HostPlanarGridHelper.GetHorizontalCoords3(origin, adapter);
|
|
int gridX = (int)System.Math.Round((pointH1 - originH1) / cellSize);
|
|
int gridY = (int)System.Math.Round((pointH2 - originH2) / cellSize);
|
|
|
|
Assert.AreEqual(41, gridX);
|
|
Assert.AreEqual(5, gridY);
|
|
}
|
|
|
|
private static void AssertPoint(Vector3 actual, double x, double y, double z)
|
|
{
|
|
Assert.AreEqual(x, actual.X, 1e-6);
|
|
Assert.AreEqual(y, actual.Y, 1e-6);
|
|
Assert.AreEqual(z, actual.Z, 1e-6);
|
|
}
|
|
}
|
|
}
|