public void RecreateTest() { int rows = 8; int cols = 10; TerrainInfo info = new TerrainInfo() { SouthWestLatLong = new Vector2(-37, 174), NorthEastLatLong = new Vector2(-36.999f, 174.001f), DegreesLatitudePerPixel = 0.001 / (double)rows, DegreesLongitudePerPixel = 0.001 / (double)cols }; float[,] altInMetres = info.CreateFlatAltitudes(rows, cols); Terrain terrain = new Terrain(); terrain.Recreate(info, altInMetres); SquareGrid grid = new SquareGrid(rows, cols, 1, 1); Assert.AreEqual(rows, terrain.LatRows); Assert.AreEqual(cols, terrain.LongColumns); Vector3 centreVertex = terrain.Vertices[terrain.Vertices.Length / 2]; VectorAssertions.AreEqual(new Vector3(), centreVertex, 0.1, "Centre vertex does not match"); }
public void LatToECEFAtNZTest() { Vector3 p1 = new Vector3(-37, 174, 0); Vector3 p2 = new Vector3(-36, 173, 0); Vector3 e1 = EarthConverter.LatLongAltToECEF(p1); Vector3 e2 = EarthConverter.LatLongAltToECEF(p2); Vector3 d = e2 - e1; VectorAssertions.AreEqual(new Vector3(-55518, 96492, 89143), d, 100); }
public void LatToECEFAt0Test() { Vector3 p1 = new Vector3(0, 0, 0); Vector3 p2 = new Vector3(1, 0, 0); Vector3 e1 = EarthConverter.LatLongAltToECEF(p1); Vector3 e2 = EarthConverter.LatLongAltToECEF(p2); Vector3 d = e2 - e1; VectorAssertions.AreEqual(new Vector3(0, 0, 111000), d, 1000); }
public void RotateECEFRightAt0Test() { Vector3 p1 = new Vector3(0, 0, 0); Vector3 p2 = new Vector3(0, 1, 0); Vector3 e1 = EarthConverter.LatLongAltToECEF(p1); Vector3 e2 = EarthConverter.LatLongAltToECEF(p2); Vector3 de = e2 - e1; Vector3 dr = EarthConverter.RotateECEF(de, 0, 0); VectorAssertions.AreEqual(new Vector3(0, 0, 110000), dr, 1400); }
public void RotateECEFUpAtNZTest() { Vector3 p1 = new Vector3(-37, 174, 0); Vector3 p2 = new Vector3(-36, 173, 100); Vector3 e1 = EarthConverter.LatLongAltToECEF(p1); Vector3 e2 = EarthConverter.LatLongAltToECEF(p2); Vector3 de = e2 - e1; Vector3 dr = EarthConverter.RotateECEF(de, p1.X, p1.Y); VectorAssertions.AreEqual(new Vector3(110490, -1496, -90160), dr, 100); }
public void IncreaseAzimuth() { AzElCamera cam = new AzElCamera(); Vector3 eye = new Vector3(-1, 0, 0); cam.LookAt(eye, new Vector3(0, 0, 0)); Assert.AreEqual(0, cam.Azimuth, 0.01); cam.Azimuth += Math.PI / 2; VectorAssertions.AreEqual(new Vector3(-1, 0, 1), cam.Target, 0.01); Assert.AreEqual(Math.PI / 2, cam.Azimuth, 0.01); }
public void MoveEast() { // start facing north, then move east. AzElCamera cam = new AzElCamera(); Vector3 eye = new Vector3(0, 0, -4); cam.LookAt(eye, new Vector3(4, 0, -4)); Assert.AreEqual(0, cam.Azimuth); cam.MoveSideways(4); VectorAssertions.AreEqual(new Vector3(0, 0, 0), cam.Eye, 0.01); Assert.AreEqual(0, cam.Azimuth, 0.01); }
public void MoveNorth() { // start facing north, then move forwards. AzElCamera cam = new AzElCamera(); Vector3 eye = new Vector3(-4, 0, 0); cam.LookAt(eye, new Vector3()); Assert.AreEqual(0, cam.Azimuth); cam.MoveForwards(4); VectorAssertions.AreEqual(new Vector3(0, 0, 0), cam.Eye, 0.01); Assert.AreEqual(0, cam.Azimuth, 0.01); }
public void LookDiagonal() { AzElCamera cam = new AzElCamera(); float d = (float)(1 / Math.Sqrt(3)); Vector3 eye = new Vector3(-d, d, -d); cam.LookAt(eye, new Vector3()); double v = cam.Azimuth; double t = Math.PI / 4; Assert.AreEqual(t, v, 0.01, "Looking diagonally: " + v + " != " + t); VectorAssertions.AreEqual(new Vector3(0, 0, 0), cam.Target, 0.01); }
public void CalculateNormalsCubeTest() { Model cube = new ColouredCube(); Vector3[] normals = NormalModel.CalculateNormals(cube); Vector3 sum = new Vector3(); foreach (Vector3 v in normals) { sum += v; } VectorAssertions.AreEqual(new Vector3(), sum, 0.0001); }
public void LookEastTest() { AzElCamera cam = new AzElCamera(); Vector3 eye = new Vector3(0, 0, -1); cam.LookAt(eye, new Vector3()); double v = cam.Azimuth; double t = Math.PI / 2; Assert.AreEqual(t, v, 0.01, "Azimuth wrong"); v = cam.Elevation; t = 0; Assert.AreEqual(t, v, 0.01, "Elevation wrong"); VectorAssertions.AreEqual(new Vector3(0, 0, 0), cam.Target, 0.01); }
public void MoveDiagonal() { // start facing northeast. AzElCamera cam = new AzElCamera(); Vector3 eye = new Vector3(-4, 0, -4); cam.LookAt(eye, new Vector3(0, 0, 0)); Assert.AreEqual(Math.PI / 4, cam.Azimuth, 0.01); // Move forwards cam.MoveForwards(Math.Sqrt(32)); VectorAssertions.AreEqual(new Vector3(0, 0, 0), cam.Eye, 0.01, "Move Forwards failed"); Assert.AreEqual(Math.PI / 4, cam.Azimuth, 0.01); // Move sidways, left cam.MoveSideways(-Math.Sqrt(32)); VectorAssertions.AreEqual(new Vector3(4, 0, -4), cam.Eye, 0.01, "Move Sideways failed"); Assert.AreEqual(Math.PI / 4, cam.Azimuth, 0.01); }
public void CalculateNormalsGridTest() { Model grid = new SquareGrid(2, 2, 1, 1); Vector3[] normals = NormalModel.CalculateNormals(grid); foreach (Vector3 v in normals) { if (float.IsNaN(v.X)) { Assert.IsTrue(float.IsNaN(v.Y)); Assert.IsTrue(float.IsNaN(v.Z)); } else { VectorAssertions.AreEqual(Vector3.UnitY, v, 0.0001); } } }
public void LookSouthTest() { AzElCamera cam = new AzElCamera(); Vector3 eye = new Vector3(1, 0, 0); cam.LookAt(eye, new Vector3()); double v = cam.Azimuth; if (v < 0) { v = v + 2 * Math.PI; } double t = Math.PI; Assert.AreEqual(t, v, 0.01, "Azimuth wrong"); v = cam.Elevation; t = 0; Assert.AreEqual(t, v, 0.01, "Elevation wrong"); VectorAssertions.AreEqual(new Vector3(0, 0, 0), cam.Target, 0.01); }