示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
0
        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));
        }
示例#4
0
 public void WindingOrderEmpty()
 {
     SimplePolygonAlgorithms.ComputeWindingOrder(new List <Vector2D>());
 }
示例#5
0
 public void WindingOrderNull()
 {
     SimplePolygonAlgorithms.ComputeWindingOrder(null);
 }