Check if given polygon is a convex polygon or not | Utility function to find cross product of two vectors ; Stores coefficient of X direction of vector A [ 1 ] A [ 0 ] ; Stores coefficient of Y direction of vector A [ 1 ] A [ 0 ] ; Stores coefficient of X direction of vector A [ 2 ] A [ 0 ] ; Stores coefficient of Y direction of vector A [ 2 ] A [ 0 ] ; Return cross product ; Function to check if the polygon is convex polygon or not ; Stores count of edges in polygon ; Stores direction of cross product of previous traversed edges ; Stores direction of cross product of current traversed edges ; Traverse the array ; Stores three adjacent edges of the polygon ; Update curr ; If curr is not equal to 0 ; If direction of cross product of all adjacent edges are not same ; Update curr ; Driver code
function CrossProduct ( A ) { var X1 = ( A [ 1 ] [ 0 ] - A [ 0 ] [ 0 ] ) ; var Y1 = ( A [ 1 ] [ 1 ] - A [ 0 ] [ 1 ] ) ; var X2 = ( A [ 2 ] [ 0 ] - A [ 0 ] [ 0 ] ) ; var Y2 = ( A [ 2 ] [ 1 ] - A [ 0 ] [ 1 ] ) ; return ( X1 * Y2 - Y1 * X2 ) ; } function isConvex ( points ) { var N = points . length ; var prev = 0 ; var curr = 0 ; for ( i = 0 ; i < N ; i ++ ) { var temp = [ points [ i ] , points [ ( i + 1 ) % N ] , points [ ( i + 2 ) % N ] ] ; curr = CrossProduct ( temp ) ; if ( curr != 0 ) { if ( curr * prev < 0 ) { return false ; } else { prev = curr ; } } } return true ; } var points = [ [ 0 , 0 ] , [ 0 , 1 ] , [ 1 , 1 ] , [ 1 , 0 ] ] ; if ( isConvex ( points ) ) { document . write ( " " ) ; } else { document . write ( " " ) ; }