Points sur cercle tkinter

Résolu
pcsijsuispasforteninfo -  
 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

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, cherches-tu les coordonnées cartésiennes de ces 10 points, ou cherches-tu autre chose?
    0
    1. pcsijsuispasforteninfo
       
      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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > 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?
        0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
  3. pcsijsuispasforteninfo
     
    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
  4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. pcsijsuispasforteninfo
       
      !!!
      Votre code est super, ça me donne exactement ce que je cherchais à faire, merci beaucoup !
      Je vais pouvoir étudier ça correctement.
      0