(curve, tol)
Detects the sense, i.e. clockwise or counter-clockwise, of the curve.

    :param curve: 2-dimensional trim curve
    :type curve: abstract.Curve
    :param tol: tolerance value
    :type tol: float
    :return: True if detection is successful, False otherwise
    :rtype: bool
Detects the sense, i.e. clockwise or counter-clockwise, of the curve.
Detects the sense i . e . clockwise or counter - clockwise of the curve .
def detect_sense(curve, tol):
    """ Detects the sense, i.e. clockwise or counter-clockwise, of the curve.

    :param curve: 2-dimensional trim curve
    :type curve: abstract.Curve
    :param tol: tolerance value
    :type tol: float
    :return: True if detection is successful, False otherwise
    :rtype: bool
    """
    if curve.opt_get('reversed') is None:
        # Detect sense since it is unset
        pts = curve.evalpts
        num_pts = len(pts)
        for idx in range(1, num_pts - 1):
            sense = detect_ccw(pts[idx - 1], pts[idx], pts[idx + 1], tol)
            if sense < 0:  # cw
                curve.opt = ['reversed', 0]
                return True
            elif sense > 0:  # ccw
                curve.opt = ['reversed', 1]
                return True
            else:
                continue
        # One final test with random points to determine the orientation
        sense = detect_ccw(pts[int(num_pts/3)], pts[int(2*num_pts/3)], pts[-int(num_pts/3)], tol)
        if sense < 0:  # cw
            curve.opt = ['reversed', 0]
            return True
        elif sense > 0:  # ccw
            curve.opt = ['reversed', 1]
            return True
        else:
            # Cannot determine the sense
            return False
    else:
        # Don't touch the sense value as it has been already set
        return True
def detect_sense ( curve , tol ) : if curve . opt_get ( 'reversed' ) is None : # Detect sense since it is unset pts = curve . evalpts num_pts = len ( pts ) for idx in range ( 1 , num_pts - 1 ) : sense = detect_ccw ( pts [ idx - 1 ] , pts [ idx ] , pts [ idx + 1 ] , tol ) if sense < 0 : # cw curve . opt = [ 'reversed' , 0 ] return True elif sense > 0 : # ccw curve . opt = [ 'reversed' , 1 ] return True else : continue # One final test with random points to determine the orientation sense = detect_ccw ( pts [ int ( num_pts / 3 ) ] , pts [ int ( 2 * num_pts / 3 ) ] , pts [ - int ( num_pts / 3 ) ] , tol ) if sense < 0 : # cw curve . opt = [ 'reversed' , 0 ] return True elif sense > 0 : # ccw curve . opt = [ 'reversed' , 1 ] return True else : # Cannot determine the sense return False else : # Don't touch the sense value as it has been already set return True