Points sur cercle tkinter [Résolu]

Signaler
-
 pcsijsuispasforteninfo -
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

Messages postés
9401
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 janvier 2020
499
bonjour, cherches-tu les coordonnées cartésiennes de ces 10 points, ou cherches-tu autre chose?

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
yg_be
Messages postés
9401
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 janvier 2020
499 > pcsijsuispasforteninfo
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?
Messages postés
9401
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 janvier 2020
499
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")

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.
Messages postés
9401
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 janvier 2020
499
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")

!!!
Votre code est super, ça me donne exactement ce que je cherchais à faire, merci beaucoup !
Je vais pouvoir étudier ça correctement.