public void WindingOrderClockwiseTriangle() { IList <Vector2D> positions = new List <Vector2D>(); positions.Add(new Vector2D(0, 0)); positions.Add(new Vector2D(1, 1)); positions.Add(new Vector2D(1, 0)); Assert.AreEqual(PolygonWindingOrder.Clockwise, SimplePolygonAlgorithms.ComputeWindingOrder(positions)); Assert.AreEqual(-0.5, SimplePolygonAlgorithms.ComputeArea(positions)); }
public void WindingOrderCounterclockwiseDiamond() { IList <Vector2D> positions = new List <Vector2D>(); positions.Add(new Vector2D(0, -0.5)); positions.Add(new Vector2D(0.5, 0)); positions.Add(new Vector2D(0, 0.5)); positions.Add(new Vector2D(-0.5, 0)); Assert.AreEqual(PolygonWindingOrder.Counterclockwise, SimplePolygonAlgorithms.ComputeWindingOrder(positions)); Assert.AreEqual(0.5, SimplePolygonAlgorithms.ComputeArea(positions)); }
public void WindingOrderOnEllipsoid() { IList <Vector3D> positions = new List <Vector3D>(); positions.Add(Ellipsoid.UnitSphere.ToVector3D(Trig.ToRadians(new Geodetic3D(0, 0)))); positions.Add(Ellipsoid.UnitSphere.ToVector3D(Trig.ToRadians(new Geodetic3D(1, 0)))); positions.Add(Ellipsoid.UnitSphere.ToVector3D(Trig.ToRadians(new Geodetic3D(1, 1)))); EllipsoidTangentPlane plane = new EllipsoidTangentPlane(Ellipsoid.UnitSphere, positions); ICollection <Vector2D> positionsOnPlane = plane.ComputePositionsOnPlane(positions); Assert.AreEqual(PolygonWindingOrder.Counterclockwise, SimplePolygonAlgorithms.ComputeWindingOrder(positionsOnPlane)); }
public void WindingOrderEmpty() { SimplePolygonAlgorithms.ComputeWindingOrder(new List <Vector2D>()); }
public void WindingOrderNull() { SimplePolygonAlgorithms.ComputeWindingOrder(null); }