41 lines
1.5 KiB
C#
41 lines
1.5 KiB
C#
using System.Numerics;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using NavisworksTransport.Utils.CoordinateSystem;
|
|
|
|
namespace NavisworksTransport.UnitTests.CoordinateSystem
|
|
{
|
|
[TestClass]
|
|
public class ObjectSpaceOrientationHelperTests
|
|
{
|
|
[TestMethod]
|
|
public void CalculateAxes_ShouldHonorProvidedUpReference()
|
|
{
|
|
var segmentDirection = new Vector3(10f, 0f, 0f);
|
|
var upReference = new Vector3(0f, 1f, 0f);
|
|
|
|
var (_, up) = ObjectSpaceOrientationHelper.CalculateAxes(segmentDirection, upReference);
|
|
|
|
Assert.AreEqual(0.0, up.X, 1e-6);
|
|
Assert.AreEqual(1.0, System.Math.Abs(up.Y), 1e-6);
|
|
Assert.AreEqual(0.0, up.Z, 1e-6);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void CalculateAxes_ForVerticalSegment_ShouldUseHorizontalDirectionWithProvidedUpReference()
|
|
{
|
|
var segmentDirection = new Vector3(0f, 10f, 0f);
|
|
var upReference = new Vector3(0f, 1f, 0f);
|
|
var horizontalDirection = new Vector3(1f, 0f, 0f);
|
|
|
|
var (right, up) = ObjectSpaceOrientationHelper.CalculateAxes(segmentDirection, upReference, horizontalDirection);
|
|
|
|
Assert.AreEqual(0.0, right.X, 1e-6);
|
|
Assert.AreEqual(0.0, right.Y, 1e-6);
|
|
Assert.AreEqual(1.0, right.Z, 1e-6);
|
|
Assert.AreEqual(1.0, up.X, 1e-6);
|
|
Assert.AreEqual(0.0, up.Y, 1e-6);
|
|
Assert.AreEqual(0.0, up.Z, 1e-6);
|
|
}
|
|
}
|
|
}
|