Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Débutant, Creation de méthodes

2 réponses
Avatar
jean-barnard.jacquet
Bonjour,
Extrêmement débutant en python, je cherche à calculer l'enveloppe convexe
d'un nuage de points.
Dans un premier temps je cherche à stocker en mémoire le nuage de point sous
la forme d'une liste d'objets, liste_y(x,liste[y]).
Pour remplir cette liste j'ai besoin de 3 méthodes :
- sort, résolu en définissant une méthode __cmp__
- index
- in

Ma question est, que définir pour pouvoir utiliser index et in ?
Cordialement.

2 réponses

Avatar
Gerard Flanagan
wrote:
Bonjour,
Extrêmement débutant en python, je cherche à calculer l'enveloppe c onvexe
d'un nuage de points.
Dans un premier temps je cherche à stocker en mémoire le nuage de poi nt sous
la forme d'une liste d'objets, liste_y(x,liste[y]).
Pour remplir cette liste j'ai besoin de 3 méthodes :
- sort, résolu en définissant une méthode __cmp__
- index
- in

Ma question est, que définir pour pouvoir utiliser index et in ?
Cordialement.



http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66527

-----------------------------------------------------------

class Vector(object):

def __init__(self, x=0, y=0 ):
self.x = x
self.y = y

def __getitem__(self, index):
if index == 0:
return self.x
elif index == 1:
return self.y
else:
raise IndexError

def __repr__(self):
return '(%s, %s)' % (self.x, self.y)

def __eq__(self, other):
return self[0] == other[0] and self[1] == other[1]

class Hull(object):

def __init__(self):
self.points = []

def append(self, item):
self.points.append(item)

def sort(self):
d = dict( [ [(P[0],P[1]), P] for P in self.points ] )
self.points = [ d[x,y] for x,y in sorted(d.keys()) ]

def __contains__(self, item ):
for P in self.points:
if P == item:
return True

def index(self, item):
for i,P in enumerate(self.points):
if P == item:
return i
raise ValueError, '%s not in Hull' % str(item)

def __repr__(self):
return str(self.points)

h = Hull()
h.points.append( Vector(1,2) )
assert (0,0) not in h
assert (1,2) in h
print h
print h.index((1,2))


v1 = Vector(1,1)
v2 = Vector(1,2)
h.append(v1)
h.append(v2)
print h
assert v1 in h
assert (1,1) in h
h.append( Vector(0,0) )
print h
h.sort()
print h

----------------------------------------------

Gerard

Avatar
jean-barnard.jacquet
Gerard Flanagan wrote:


wrote:
Bonjour,
Extrêmement débutant en python, je cherche à calculer l'enveloppe convexe
d'un nuage de points.
Dans un premier temps je cherche à stocker en mémoire le nuage de point
sous la forme d'une liste d'objets, liste_y(x,liste[y]).
Pour remplir cette liste j'ai besoin de 3 méthodes :
- sort, résolu en définissant une méthode __cmp__
- index
- in

Ma question est, que définir pour pouvoir utiliser index et in ?
Cordialement.



http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66527

-----------------------------------------------------------

class Vector(object):

def __init__(self, x=0, y=0 ):
self.x = x
self.y = y

def __getitem__(self, index):
if index == 0:
return self.x
elif index == 1:
return self.y
else:
raise IndexError

def __repr__(self):
return '(%s, %s)' % (self.x, self.y)

def __eq__(self, other):
return self[0] == other[0] and self[1] == other[1]

class Hull(object):

def __init__(self):
self.points = []

def append(self, item):
self.points.append(item)

def sort(self):
d = dict( [ [(P[0],P[1]), P] for P in self.points ] )
self.points = [ d[x,y] for x,y in sorted(d.keys()) ]

def __contains__(self, item ):
for P in self.points:
if P == item:
return True

def index(self, item):
for i,P in enumerate(self.points):
if P == item:
return i
raise ValueError, '%s not in Hull' % str(item)

def __repr__(self):
return str(self.points)

h = Hull()
h.points.append( Vector(1,2) )
assert (0,0) not in h
assert (1,2) in h
print h
print h.index((1,2))


v1 = Vector(1,1)
v2 = Vector(1,2)
h.append(v1)
h.append(v2)
print h
assert v1 in h
assert (1,1) in h
h.append( Vector(0,0) )
print h
h.sort()
print h

----------------------------------------------

Gerard
Bonjour,

Merci, il y a même une solution.
Je me suis fixé un cahier des charges avec tkinter, il n'y a plus qu'a ...
Cordialement.