Python programme

Signaler
-
Messages postés
16087
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 juin 2021
-
Bonjour,

Bonjour,
J'ai écrit un programme en langage python qui me permet de créer une boucle, qui passe par 4 points, maintenant j'aimerai écrire un programme qui me permeterai de placer sur les lignes de la boucle n points rouges se déplacant ( j'essaye de modéliser un réseau de transports). Ce deuxième programme me pose problème auriez vous des pistes, ou un programme similaire a me conseiller .

Merci

Configuration: Macintosh / Safari 14.0.3

4 réponses

Messages postés
16087
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 juin 2021
868
bonjour,
nous pourrons mieux comprendre ton contexte si tu nous montres ton code.
tiens compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Messages postés
20375
Date d'inscription
samedi 17 mars 2007
Statut
Contributeur
Dernière intervention
20 juin 2021
5 640
Bonjour,

Quand tu dis "...de créer une boucle, qui passe par 4 points..;", c'est au niveau graphique et non au niveau code (style boucle for, boucle while, ...).
Et donc quand tu dis "...placer sur les lignes de la boucle n points rouges...", c'est toujours au niveau graphique, un peu comme les applications qui utilisent le GPS de ton smartphone pour te dire ensuite où tu est passé.
Si oui, alors nous donner ton code ne servira pas à grand chose car tu es plutôt à la recherche de lib graphique permettant cela.

Ritchi
Oui c'est cela que je veux réaliser essayer comme a la façon d'un gps de placer des points se déplaçant le long des lignes que j'ai dessiné avec mon programme, il existe des programmes le permettant?
Messages postés
16087
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 juin 2021
868 > Mplll
ne suffit-il pas avec tkinter de dessiner ces points?
bonjour,
voici mon programme:

def Simulation() :

   F = Tk() ; F.title("Métropolitain miniature")
   C = Canvas(F, width = DIM, height = DIM, background = "#aaa")
   C.pack()

   Stations = [(2484.2051465742793, 4036.0330629760906), (-2520.221328393551, -501.45504151300406), (-1915.9534272380367, -3147.810933949548), (1534.818374770701, -4468.517925592077)]
   for k in range(n) :
       (px1, py1) = CoordonnéesVersPixel(*Stations[ k-1])
       (px2, py2) = CoordonnéesVersPixel(*Stations[3])
       C.create_line(px1, py1, px2, py2, fill = "#000")
   for k in range(n) :
       (px, py) = CoordonnéesVersPixel(*Stations[k])
       C.create_oval(px - 5, py - 5, px + 5, py + 5, fill = "#fff")

 
   F.mainloop() 
Messages postés
16087
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 juin 2021
868
bonjour,
ne manque-t-il pas une partie du code (import, appel à la fonction, ...)?

comment penses-tu pouvoir continuer, quelles idées as-tu afin de placer ces points rouges?
oui en effet il manque la premiere partie du code qui est celle ci:

 
from tkinter import Tk, Canvas


## Création d'une ligne (en boucle pour simplifier) à n stations

# Le domaine de coordonnées est [-5000, 5000] (en mètres)
x_min = -5000
x_max =  5000
y_min = -5000
y_max =  5000

# Loi uniforme sur [a, b[
from random import random
def Aléa(a = 0, b = 1) :
   return a + (b - a) * random()

from numpy import cos, sin, pi as π
def CréerLigne(n) :
   # On choisit les positions des stations en coordonnées polaires
   Θ = sorted([Aléa(0, 2 * π) for _ in range(n)])
   Stations = []
   for k in range(n) :
       θ = Θ[k] % (π / 2)
       if θ > π / 4 :
           θ = π / 2 - θ
       r_max = x_max / cos(θ)
       r = Aléa(0.3 * r_max, 0.9 * r_max)
       Stations.append( (r * cos(Θ[k]), r * sin(Θ[k])) )
   return Stations



## Interface graphique pour la simulation

# Nombre de stations
n = 4

# Largeur et hauteur (en pixels) du dessin
DIM = 600

# Conversions pixels/coordonnées
def PixelVersCoordonnées(px, py) :
   x = x_min + (x_max - x_min) * px / (DIM - 1)
   y = y_max - (y_max - y_min) * py / (DIM - 1)
   return (x, y)
def CoordonnéesVersPixel(x, y) :
   px = int((x - x_min) / (x_max - x_min) * (DIM - 1))
   py = int((y_max - y) / (y_max - y_min) * (DIM - 1))
   return (px, py) 



c'est bien le problème, je ne vois pas comment je pourrais arriver a implanter des point en mouvement sur ma simulation
Messages postés
16087
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 juin 2021
868
commence pas ajouter des points fixes.
il suffira ensuite de les effacer et de les placer ailleurs.