import math n = 11 # ou n=12 # construction de la liste des abscisses (x) et de celle des ordonnées (y) x = [0]*(n+1) y = [0]*(n+1) angle = 0 for k in range(1,n+1) : x[k] = x[k-1] + 50 * math.cos(angle/180.0*math.pi) y[k] = y[k-1] + 50 * math.sin(angle/180.0*math.pi) angle = angle + 10*k # on cherche les segments susceptibles de se couper for k in range(0,n) : for i in range(k+2,n) : # M(i) et M(i+1) sont dans le même demi-plan par rapport à la droite M(k)M(k+1) ? if f(x[k],y[k],x[k+1],y[k+1],x[i],y[i]) * f(x[k],y[k],x[k+1],y[k+1],x[i+1],y[i+1]) > 0 : possible = False # M(k) et M(k+1) sont dans le même demi-plan par rapport à la droite M(i)M(i+1) ? elif f(x[i],y[i],x[i+1],y[i+1],x[k],y[k]) * f(x[i],y[i],x[i+1],y[i+1],x[k+1],y[k+1]) > 0 : possible = False else : possible = True print (k,k+1,i,i+1)