304 lines
12 KiB
C#
304 lines
12 KiB
C#
#region Using Statements
|
|
using System;
|
|
using NUnit.Framework;
|
|
|
|
#endregion // Using Statements
|
|
|
|
// This file is part of the ANX.Framework created by the
|
|
// "ANX.Framework developer group" and released under the Ms-PL license.
|
|
// For details see: http://anxframework.codeplex.com/license
|
|
|
|
using XNAVector3 = Microsoft.Xna.Framework.Vector3;
|
|
using ANXVector3 = ANX.Framework.Vector3;
|
|
|
|
using XNAVector4 = Microsoft.Xna.Framework.Vector4;
|
|
using ANXVector4 = ANX.Framework.Vector4;
|
|
|
|
using XNAMatrix = Microsoft.Xna.Framework.Matrix;
|
|
using ANXMatrix = ANX.Framework.Matrix;
|
|
|
|
using XNAQuaternion = Microsoft.Xna.Framework.Quaternion;
|
|
using ANXQuaternion = ANX.Framework.Quaternion;
|
|
|
|
using XNABoundingBox = Microsoft.Xna.Framework.BoundingBox;
|
|
using ANXBoundingBox = ANX.Framework.BoundingBox;
|
|
|
|
using XNABoundingSphere = Microsoft.Xna.Framework.BoundingSphere;
|
|
using ANXBoundingSphere = ANX.Framework.BoundingSphere;
|
|
|
|
using XNABoundingFrustum = Microsoft.Xna.Framework.BoundingFrustum;
|
|
using ANXBoundingFrustum = ANX.Framework.BoundingFrustum;
|
|
|
|
using XNAPlane = Microsoft.Xna.Framework.Plane;
|
|
using ANXPlane = ANX.Framework.Plane;
|
|
|
|
namespace ANX.Framework.TestCenter.Strukturen
|
|
{
|
|
[TestFixture]
|
|
class PlaneTest
|
|
{
|
|
static object[] eightfloats =
|
|
{
|
|
new object[] { 1, 2, 3, 4, 5, 6, 7, 8 },
|
|
new object[] { 8, 7, 6, 5, 4, 3, 2, 1 }
|
|
};
|
|
|
|
[Test]
|
|
public void IntersectsSphere()
|
|
{
|
|
XNAPlane xna = new XNAPlane(new XNAVector3(-10, -10, -10), new XNAVector3(0, -10, -10), new XNAVector3(-10, 0, -10));
|
|
ANXPlane anx = new ANXPlane(new ANXVector3(-10, -10, -10), new ANXVector3(0, -10, -10), new ANXVector3(-10, 0, -10));
|
|
XNABoundingSphere xSphere = new XNABoundingSphere(new XNAVector3(-20, -20, -20), 5);
|
|
ANXBoundingSphere aSphere = new ANXBoundingSphere(new ANXVector3(-20, -20, -20), 5);
|
|
|
|
Assert.AreEqual(xna.Intersects(xSphere).ToString(), anx.Intersects(aSphere).ToString());
|
|
}
|
|
|
|
#region Dot
|
|
[Test, TestCaseSource("eightfloats")]
|
|
public static void DotVector4(
|
|
float x1, float y1, float z1, float w1,
|
|
float x2, float y2, float z2, float w2)
|
|
{
|
|
XNAPlane xnaPlane = new XNAPlane(x1, y1, z1, w1);
|
|
XNAVector4 xnaVector = new XNAVector4(x1, y1, z1, w1);
|
|
float xnaResult = xnaPlane.Dot(xnaVector);
|
|
|
|
ANXPlane anxPlane = new ANXPlane(x1, y1, z1, w1);
|
|
ANXVector4 anxVector = new ANXVector4(x1, y1, z1, w1);
|
|
float anxResult = anxPlane.Dot(anxVector);
|
|
|
|
AssertHelper.ConvertEquals(xnaResult, anxResult, "DotVector4");
|
|
}
|
|
|
|
[Test, TestCaseSource("eightfloats")]
|
|
public static void DotVector4Ref(
|
|
float x1, float y1, float z1, float w1,
|
|
float x2, float y2, float z2, float w2)
|
|
{
|
|
XNAPlane xnaPlane = new XNAPlane(x1, y1, z1, w1);
|
|
XNAVector4 xnaVector = new XNAVector4(x1, y1, z1, w1);
|
|
float xnaResult;
|
|
xnaPlane.Dot(ref xnaVector, out xnaResult);
|
|
|
|
ANXPlane anxPlane = new ANXPlane(x1, y1, z1, w1);
|
|
ANXVector4 anxVector = new ANXVector4(x1, y1, z1, w1);
|
|
float anxResult;
|
|
anxPlane.Dot(ref anxVector, out anxResult);
|
|
|
|
AssertHelper.ConvertEquals(xnaResult, anxResult, "DotVector4Ref");
|
|
}
|
|
|
|
[Test, TestCaseSource("eightfloats")]
|
|
public static void DotCoordinateVector3(
|
|
float x1, float y1, float z1, float w1,
|
|
float x2, float y2, float z2, float w2)
|
|
{
|
|
XNAPlane xnaPlane = new XNAPlane(x1, y1, z1, w1);
|
|
XNAVector3 xnaVector = new XNAVector3(x1, y1, z1);
|
|
float xnaResult = xnaPlane.DotCoordinate(xnaVector);
|
|
|
|
ANXPlane anxPlane = new ANXPlane(x1, y1, z1, w1);
|
|
ANXVector3 anxVector = new ANXVector3(x1, y1, z1);
|
|
float anxResult = anxPlane.DotCoordinate(anxVector);
|
|
|
|
AssertHelper.ConvertEquals(xnaResult, anxResult, "DotCoordinateVector3");
|
|
}
|
|
|
|
[Test, TestCaseSource("eightfloats")]
|
|
public static void DotCoordinateVector3Ref(
|
|
float x1, float y1, float z1, float w1,
|
|
float x2, float y2, float z2, float w2)
|
|
{
|
|
XNAPlane xnaPlane = new XNAPlane(x1, y1, z1, w1);
|
|
XNAVector3 xnaVector = new XNAVector3(x1, y1, z1);
|
|
float xnaResult;
|
|
xnaPlane.DotCoordinate(ref xnaVector, out xnaResult);
|
|
|
|
ANXPlane anxPlane = new ANXPlane(x1, y1, z1, w1);
|
|
ANXVector3 anxVector = new ANXVector3(x1, y1, z1);
|
|
float anxResult;
|
|
anxPlane.DotCoordinate(ref anxVector, out anxResult);
|
|
|
|
AssertHelper.ConvertEquals(xnaResult, anxResult, "DotCoordinateVector3Ref");
|
|
}
|
|
|
|
|
|
[Test, TestCaseSource("eightfloats")]
|
|
public static void DotNormalVector3(
|
|
float x1, float y1, float z1, float w1,
|
|
float x2, float y2, float z2, float w2)
|
|
{
|
|
XNAPlane xnaPlane = new XNAPlane(x1, y1, z1, w1);
|
|
XNAVector3 xnaVector = new XNAVector3(x1, y1, z1);
|
|
float xnaResult = xnaPlane.DotNormal(xnaVector);
|
|
|
|
ANXPlane anxPlane = new ANXPlane(x1, y1, z1, w1);
|
|
ANXVector3 anxVector = new ANXVector3(x1, y1, z1);
|
|
float anxResult = anxPlane.DotNormal(anxVector);
|
|
|
|
AssertHelper.ConvertEquals(xnaResult, anxResult, "DotNormalVector3");
|
|
}
|
|
|
|
[Test, TestCaseSource("eightfloats")]
|
|
public static void DotNormalVector3Ref(
|
|
float x1, float y1, float z1, float w1,
|
|
float x2, float y2, float z2, float w2)
|
|
{
|
|
XNAPlane xnaPlane = new XNAPlane(x1, y1, z1, w1);
|
|
XNAVector3 xnaVector = new XNAVector3(x1, y1, z1);
|
|
float xnaResult;
|
|
xnaPlane.DotNormal(ref xnaVector, out xnaResult);
|
|
|
|
ANXPlane anxPlane = new ANXPlane(x1, y1, z1, w1);
|
|
ANXVector3 anxVector = new ANXVector3(x1, y1, z1);
|
|
float anxResult;
|
|
anxPlane.DotNormal(ref anxVector, out anxResult);
|
|
|
|
AssertHelper.ConvertEquals(xnaResult, anxResult, "DotNormalVector3Ref");
|
|
}
|
|
#endregion
|
|
|
|
[Test, TestCaseSource("eightfloats")]
|
|
public static void GetHashCode(
|
|
float x1, float y1, float z1, float w1,
|
|
float x2, float y2, float z2, float w2)
|
|
{
|
|
XNAPlane xnaPlane = new XNAPlane(x1, y1, z1, w1);
|
|
int xnaResult = xnaPlane.GetHashCode();
|
|
|
|
ANXPlane anxPlane = new ANXPlane(x1, y1, z1, w1);
|
|
int anxResult = anxPlane.GetHashCode();
|
|
|
|
AssertHelper.ConvertEquals(xnaResult, anxResult, "GetHashCode");
|
|
}
|
|
|
|
[Test, TestCaseSource("eightfloats")]
|
|
public static void ToString(
|
|
float x1, float y1, float z1, float w1,
|
|
float x2, float y2, float z2, float w2)
|
|
{
|
|
XNAPlane xnaPlane = new XNAPlane(x1, y1, z1, w1);
|
|
ANXPlane anxPlane = new ANXPlane(x1, y1, z1, w1);
|
|
|
|
AssertHelper.ConvertEquals(xnaPlane.ToString(), anxPlane.ToString(), "ToString");
|
|
}
|
|
|
|
#region Normalize
|
|
[Test, TestCaseSource("eightfloats")]
|
|
public static void Normalize(
|
|
float x1, float y1, float z1, float w1,
|
|
float x2, float y2, float z2, float w2)
|
|
{
|
|
XNAPlane xnaPlane = new XNAPlane(x1, y1, z1, w1);
|
|
xnaPlane.Normalize();
|
|
|
|
ANXPlane anxPlane = new ANXPlane(x1, y1, z1, w1);
|
|
anxPlane.Normalize();
|
|
|
|
AssertHelper.ConvertEquals(xnaPlane, anxPlane, "Normalize");
|
|
}
|
|
|
|
[Test, TestCaseSource("eightfloats")]
|
|
public static void NormalizePlane(
|
|
float x1, float y1, float z1, float w1,
|
|
float x2, float y2, float z2, float w2)
|
|
{
|
|
XNAPlane xnaPlane = new XNAPlane(x1, y1, z1, w1);
|
|
xnaPlane = XNAPlane.Normalize(xnaPlane);
|
|
|
|
ANXPlane anxPlane = new ANXPlane(x1, y1, z1, w1);
|
|
anxPlane = ANXPlane.Normalize(anxPlane);
|
|
|
|
AssertHelper.ConvertEquals(xnaPlane, anxPlane, "NormalizePlane");
|
|
}
|
|
|
|
[Test, TestCaseSource("eightfloats")]
|
|
public static void NormalizePlaneRef(
|
|
float x1, float y1, float z1, float w1,
|
|
float x2, float y2, float z2, float w2)
|
|
{
|
|
XNAPlane xna = new XNAPlane(x1, y1, z1, w1);
|
|
XNAPlane xnaPlane;
|
|
XNAPlane.Normalize(ref xna, out xnaPlane);
|
|
|
|
ANXPlane anx = new ANXPlane(x1, y1, z1, w1);
|
|
ANXPlane anxPlane;
|
|
ANXPlane.Normalize(ref anx, out anxPlane);
|
|
|
|
AssertHelper.ConvertEquals(xnaPlane, anxPlane, "NormalizePlaneRef");
|
|
}
|
|
#endregion
|
|
|
|
#region Transform
|
|
[Test, TestCaseSource("eightfloats")]
|
|
public static void TransformMatrix(
|
|
float x1, float y1, float z1, float w1,
|
|
float x2, float y2, float z2, float w2)
|
|
{
|
|
XNAPlane xnaPlane = new XNAPlane(x1, y1, z1, w1);
|
|
XNAMatrix xnaMatrix = new XNAMatrix(x1, y1, z1, w1, x2, y2, z2, w2, x1, y1, z1, w1, x2, y2, z2, w2);
|
|
XNAPlane xnaResult = XNAPlane.Transform(xnaPlane, xnaMatrix);
|
|
|
|
ANXPlane anxPlane = new ANXPlane(x1, y1, z1, w1);
|
|
ANXMatrix anxMatrix = new ANXMatrix(x1, y1, z1, w1, x2, y2, z2, w2, x1, y1, z1, w1, x2, y2, z2, w2);
|
|
ANXPlane anxResult = ANXPlane.Transform(anxPlane, anxMatrix);
|
|
|
|
AssertHelper.ConvertEquals(xnaResult, anxResult, "TransformMatrix");
|
|
}
|
|
|
|
[Test, TestCaseSource("eightfloats")]
|
|
public static void TransformMatrixRef(
|
|
float x1, float y1, float z1, float w1,
|
|
float x2, float y2, float z2, float w2)
|
|
{
|
|
XNAPlane xnaPlane = new XNAPlane(x1, y1, z1, w1);
|
|
XNAMatrix xnaMatrix = new XNAMatrix(x1, y1, z1, w1, x2, y2, z2, w2, x1, y1, z1, w1, x2, y2, z2, w2);
|
|
XNAPlane xnaResult;
|
|
XNAPlane.Transform(ref xnaPlane, ref xnaMatrix, out xnaResult);
|
|
|
|
ANXPlane anxPlane = new ANXPlane(x1, y1, z1, w1);
|
|
ANXMatrix anxMatrix = new ANXMatrix(x1, y1, z1, w1, x2, y2, z2, w2, x1, y1, z1, w1, x2, y2, z2, w2);
|
|
ANXPlane anxResult;
|
|
ANXPlane.Transform(ref anxPlane, ref anxMatrix, out anxResult);
|
|
|
|
AssertHelper.ConvertEquals(xnaResult, anxResult, "TransformMatrixRef");
|
|
}
|
|
|
|
[Test, TestCaseSource("eightfloats")]
|
|
public static void TransformQuaternion(
|
|
float x1, float y1, float z1, float w1,
|
|
float x2, float y2, float z2, float w2)
|
|
{
|
|
XNAPlane xnaPlane = new XNAPlane(x1, y1, z1, w1);
|
|
XNAQuaternion xnaQuat = new XNAQuaternion(x2, y2, z2, w2);
|
|
XNAPlane xnaResult = XNAPlane.Transform(xnaPlane, xnaQuat);
|
|
|
|
ANXPlane anxPlane = new ANXPlane(x1, y1, z1, w1);
|
|
ANXQuaternion anxQuat = new ANXQuaternion(x2, y2, z2, w2);
|
|
ANXPlane anxResult = ANXPlane.Transform(anxPlane, anxQuat);
|
|
|
|
AssertHelper.ConvertEquals(xnaResult, anxResult, "TransformQuaternion");
|
|
}
|
|
|
|
[Test, TestCaseSource("eightfloats")]
|
|
public static void TransformQuaternionRef(
|
|
float x1, float y1, float z1, float w1,
|
|
float x2, float y2, float z2, float w2)
|
|
{
|
|
XNAPlane xnaPlane = new XNAPlane(x1, y1, z1, w1);
|
|
XNAQuaternion xnaQuat = new XNAQuaternion(x2, y2, z2, w2);
|
|
XNAPlane xnaResult;
|
|
XNAPlane.Transform(ref xnaPlane, ref xnaQuat, out xnaResult);
|
|
|
|
ANXPlane anxPlane = new ANXPlane(x1, y1, z1, w1);
|
|
ANXQuaternion anxQuat = new ANXQuaternion(x2, y2, z2, w2);
|
|
ANXPlane anxResult;
|
|
ANXPlane.Transform(ref anxPlane, ref anxQuat, out anxResult);
|
|
|
|
AssertHelper.ConvertEquals(xnaResult, anxResult, "TransformQuaternionRef");
|
|
}
|
|
#endregion
|
|
}
|
|
}
|