示例#1
0
        /// <summary>
        /// Check if a polygon has a specified winding.
        /// </summary>
        public static bool HasWinding(
            this Polygon2d polygon, Winding winding)
        {
            var winFun      = winding == Winding.CCW ? c_ccwFun : c_cwFun;
            var ef          = polygon.Edge(0);
            var e0          = polygon.Edge(1);
            var orientation = winFun(ef, e0);

            for (int i = 2; i < polygon.PointCount; i++)
            {
                var e1 = polygon.Edge(i);
                if (winFun(e0, e1) != orientation)
                {
                    return(false);
                }
                e0 = e1;
            }
            return(winFun(e0, ef) == orientation);
        }