Points sur cercle tkinter

Résolu/Fermé
pcsijsuispasforteninfo - 25 déc. 2019 à 00:19
 pcsijsuispasforteninfo - 26 déc. 2019 à 10:25
Bonjour,
Je viens ici pour vous demander de l'aide.
J'ai un projet d'info à faire sur la multiplication modulaire (figure à l'intérieur d'un cercle, bref ce n'est pas le plus important), et je bloque sur une partie où je dois répartir équitablement des points sur un cercle (même distance entre n-1 / n qu'entre n / n+1).
Je m'explique, j'ai déjà réussi à créer mon cercle avec tkinter et quelques lignes de codes mais maintenant, je ne sais pas comment faire pour, par exemple si je choisis la valeur 10, avoir 10 points équitablement répartis tout autour du cercle.

4 réponses

yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
25 déc. 2019 à 09:56
bonjour, cherches-tu les coordonnées cartésiennes de ces 10 points, ou cherches-tu autre chose?
0
pcsijsuispasforteninfo
25 déc. 2019 à 10:54
Salut,
En fait je cherche à placer sur le périmètre du cercle des points, peu importe leurs coordonnées, j'ai laissé l'origine du répère en haut à gauche de la fenêtre tkinter.
Mon but est de placer sur le cercle un certain nombre de points que je choisis préalablement.
Voici un exemple pour 10 points (modulo 10) pour la table de 2.
https://www.google.com/search?q=multiplication+modulaire&client=ms-android-huawei-rev1&prmd=isvn&source=lnms&tbm=isch&sa=X&ved=2ahUKEwip2OCLw9DmAhXRkFwKHdimClIQ_AUoAXoECA8QAQ#imgrc=rrSDG5VGuTUA3M
J'aimerais pouvoir faire ça avec python, mais je n'ai aucune idée de comment faire.
Cordialement
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > pcsijsuispasforteninfo
25 déc. 2019 à 11:14
veux-tu placer un petit cercle sur chacun des points, ou veux-tu placer les lignes à l'intérieur du cercle, pour relier les points?
qu'est-ce qui te bloque? tracer une ligne entre deux points, ou trouver les coordonnées des points?
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
Modifié le 25 déc. 2019 à 16:52
un exemple:
import math
import tkinter
import numpy
rayon=300
npoints=10
taillepoint=rayon/npoints/5
xcentre=rayon+taillepoint
ycentre=xcentre
x=[ycentre+rayon*math.sin(math.pi*2*i/npoints) for i in range(npoints)]
y=[ycentre+rayon*math.cos(math.pi*2*i/npoints) for i in range(npoints)]
desk=tkinter.Tk()
w = tkinter.Canvas(desk, width=2*(rayon+taillepoint), height=2*(rayon+taillepoint),bd=0,highlightthickness=0)
w.pack()
w.create_oval(xcentre-rayon,ycentre-rayon,xcentre+rayon,ycentre+rayon)
for i in range(npoints):
    w.create_line(x[i],y[i],x[(i+1)%npoints],y[(i+1)%npoints],fill="red")
    w.create_oval(x[i]-taillepoint,y[i]-taillepoint,x[i]+taillepoint,y[i]+taillepoint,fill="blue")
0
pcsijsuispasforteninfo
25 déc. 2019 à 19:43
En gros, mon but est, pour un cercle tracé, de placer sur ce cercle des points (nombre de points défini au préalable), et d'ensuite tracer des segments entre les points dont le modulo est le même.
Micmaths a fait une vidéo sur le sujet : https://youtu.be/-X49VQgi86E
Merci pour le code je vais voir ce que ça donne.
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
26 déc. 2019 à 09:39
il ne s'agit pas de tracer des segments entre les points dont le module est le même, ces segments seraient invisibles.
suggestion:
import math
import tkinter
rayon=300
npoints=10
multiplicateur=3
xcentre=rayon+5
ycentre=xcentre
def angle(nombre,npoints):
    return math.pi*(-1/2-2*(nombre%npoints)/npoints)
desk=tkinter.Tk()
w = tkinter.Canvas(desk, width=2*xcentre, height=2*ycentre,bd=0,highlightthickness=0)
w.pack()
w.create_oval(xcentre-rayon,ycentre-rayon,xcentre+rayon,ycentre+rayon)
for i in range(npoints):
    w.create_line(xcentre+rayon*math.cos(angle(i,npoints)),
                  ycentre-rayon*math.sin(angle(i,npoints)),
                  xcentre+rayon*math.cos(angle(i*multiplicateur,npoints)),
                  ycentre-rayon*math.sin(angle(i*multiplicateur,npoints))
                  ,fill="red")
0
pcsijsuispasforteninfo
26 déc. 2019 à 10:25
!!!
Votre code est super, ça me donne exactement ce que je cherchais à faire, merci beaucoup !
Je vais pouvoir étudier ça correctement.
0