main/src/georegression/geometry/UtilPolygons2D_I32.java
public static boolean isCCW( List<Point2D_I32> polygon ) {
		final int N = polygon.size();
		int sign = 0;
		for (int i = 0; i < N; i++) {
			int j = (i+1)%N;
			int k = (i+2)%N;

			if( isPositiveZ(polygon.get(i),polygon.get(j),polygon.get(k))) {
				sign++;
			} else {
				sign--;
			}
		}

		return sign < 0;
	}
public static boolean isCCW( List<Point2D_I32> polygon ) {
		final int N = polygon.size();
		int sign = 0;
		for (int i = 0; i < N; i++) {
			int j = (i+1)%N;
			int k = (i+2)%N;

			if( isPositiveZ(polygon.get(i),polygon.get(j),polygon.get(k))) {
				sign++;
			} else {
				sign--;
			}
		}

		return sign < 0;
	}
public static boolean isCCW ( List < Point2D_I32 > polygon ) { final int N = polygon . size ( ) ; int sign = 0 ; for ( int i = 0 ; i < N ; i ++ ) { int j = ( i + 1 ) % N ; int k = ( i + 2 ) % N ; if ( isPositiveZ ( polygon . get ( i ) , polygon . get ( j ) , polygon . get ( k ) ) ) { sign ++ ; } else { sign -- ; } } return sign < 0 ; }
Returns true if the polygon is ordered in a counter-clockwise order.  This is done by summing up the interior
angles.

@param polygon List of ordered points which define a polygon
@return true if CCW and false if CW
Returns true if the polygon is ordered in a counter - clockwise order . This is done by summing up the interior angles .