# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""
import numpy as np
def direcao(pi,pj,pk): #listas [x,y]
  #pipk x pipj < 0, pjpk indo para a esquerda senao pjpk indo para a direita
    if np.linalg.det(np.array([[pk[0]-pi[0],pj[0]-pi[0]],[pk[1]-pi[1],pj[1]-pi[1]]]))<0:
        return 0
    return 1

def onSegment(pi,pj,pk):
    if (min(pi[0],pj[0]) <= pk[0] <= max(pi[0],pj[0])) and (min(pi[1],pj[1]) <= pk[1] <= max(pi[1],pj[1])):
        return True
    return False

def intersect(p1,p2,p3,p4):
    d1=direcao(p3,p4,p1)
    d2=direcao(p3,p4,p2)
    d3=direcao(p1,p2,p3)
    d4=direcao(p1,p2,p4)
    
    if (d1!=d2) and (d3!= d4):
        return True
    elif d1==0 and onSegment(p3,p4,p1):
        return True
    elif d2==0 and onSegment(p3,p4,p2): 
        return True
    elif d3==0 and onSegment(p1,p2,p3):
        return True
    elif d4==0 and onSegment(p1,p2,p4):
        return True

    return False
        
#import sys
if __name__=='__main__':   #chamado por $python detCrossSeg.py, como módulo principal 
    p1,p2=[1,1],[10,1]
    p3,p4=[1,2],[10,2]
    print('Ocorre cruzamento de segmentos') if intersect(p1,p2,p3,p4) else print('Nao ocorre cruzamento')
    # mesmo que:
    # if intersect(p1,p2,p3,p4):
    #    print('Ocorre cruzamento de segmentos')
    # else:
    #    print('Nao ocorre cruzamento')   
    
    p1,p2=[10,0],[0,10]
    p3,p4=[0,0],[10,10]   
    print('Ocorre cruzamento de segmentos') if intersect(p1,p2,p3,p4) else print('Nao ocorre cruzamento')
        
    p1,p2=[-5,-5],[0,0]
    p3,p4=[1,1],[10,10]   
    print('Ocorre cruzamento de segmentos') if intersect(p1,p2,p3,p4) else print('Nao ocorre cruzamento')   
