Points sur cercle tkinter

Résolu
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. Contributeur
    bonjour, cherches-tu les coordonnées cartésiennes de ces 10 points, ou cherches-tu autre chose?
    0
    1. 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
    2. Contributeur
      @pcsijsuispasforteninfoveux-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. Contributeur
    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
    1. 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
      1. Contributeur
        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. !!!
          Votre code est super, ça me donne exactement ce que je cherchais à faire, merci beaucoup !
          Je vais pouvoir étudier ça correctement.
          0