Salut les pythons scientifiques,
Je suis arriver a dessiner une spirale grâce a une formule qu'on trouve dans tous les bouquins de programmation de jeux ou scientifique qui permet de donner une longueur de rayon, et un nombre de points symbolisant le nombre de coin d'un polygone et qui renvoie les coordonnées.
Et j'ai adapter cette méthode afin de dessiner une spirale que j'arrive a faire tourner comme vous le verrai si vous exécuter le code qui suit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
 
# -*- coding: utf-8 -*-
 
import pygame
from pygame.locals import *
from sys import exit
import math
from time import sleep
 
pygame.init()
screen=pygame.display.set_mode((800,600))
 
def get_angle(pos,scale,start_pos) :
  offset=start_pos #décalage
  degrees=360/scale * pos + offset
  return degrees
 
def return_coords(pos,scale,length,x,y,start_pos) :
  degrees=get_angle(pos,scale,start_pos)
  rad_value=degrees/180.0*math.pi #conversion en radians
  x_pos=round(math.cos(rad_value)*length+x)
  y_pos=round(math.sin(rad_value)*length+y)
  return (x_pos,y_pos)
 
 
angle_list_positiv=[6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108, 114, 120, 126, 132, 138, 144, 150, 156, 162, 168, 174, 180, 186, 192, 198, 204, 210, 216, 222, 228, 234, 240, 246, 252, 258, 264, 270, 276, 282, 288, 294, 300, 306, 312, 318, 324, 330, 336, 342, 348, 354, 360]
angle_list_negativ=[-6, -12, -18, -24, -30, -36, -42, -48, -54, -60, -66, -72, -78, -84, -90, -96, -102, -108, -114, -120, -126, -132, -138, -144, -150, -156, -162, -168, -174, -180, -186, -192, -198, -204, -210, -216, -222, -228, -234, -240, -246, -252, -258, -264, -270, -276, -282, -288, -294, -300, -306, -312, -318, -324, -330, -336, -342, -348, -354, -360]
angle_list_negativ.reverse()
 
 
control=0 
ii=0 
while True :
 
 
  if control == 0 :
    from_center=1
    spiral_coords=[]
 
 
    i=0
    while i < 60 :
      spiral_coords.append(return_coords(i,60,from_center,400,300,angle_list_positiv[i]))
      i += 1
 
      from_center +=1
    i=0  
    while i < 60 :
      spiral_coords.append(return_coords(i,60,from_center,400,300,angle_list_positiv[i]))
      i += 1
      from_center +=1 
 
    i=0  
    while i < 60 :
      spiral_coords.append(return_coords(i,60,from_center,400,300,angle_list_positiv[i]))
      i += 1
      from_center +=1  
 
    to_change=angle_list_positiv.pop(0)
    angle_list_positiv.append(to_change)
    ii += 1
    if ii == 60 :
      ii=0
      control=1
 
  elif control == 1 :
    from_center=1
    spiral_coords=[]
 
 
    i=59
    while i >= 0 :
      spiral_coords.append(return_coords(i,60,from_center,400,300,angle_list_negativ[i]))
 
      i -= 1
      from_center +=1
 
    i=59  
    while i >= 0 :
      spiral_coords.append(return_coords(i,60,from_center,400,300,angle_list_negativ[i]))
 
      i -= 1
      from_center +=1 
 
    i=59  
    while i >= 0 :
      spiral_coords.append(return_coords(i,60,from_center,400,300,angle_list_negativ[i]))
 
      i -= 1
      from_center +=1  
 
 
    to_change=angle_list_negativ.pop(0)
 
    angle_list_negativ.append(to_change)
    ii += 1
    if ii == 60 :
      ii=0
      control=0
 
  screen.fill((0))
  pygame.draw.lines(screen,(255,255,255),False,spiral_coords,2)
  sleep(0.1)
 
 
 
  for event in pygame.event.get() :
    if event.type == QUIT :
      exit()
 
  pygame.display.update()
Et j'aimerai quand la valeur de la variable control est a 1 de faire tourner la spirale dans le sens contraire des aiguille d'une montre et donc inversement au tour avec valeur de control=0... Seulement je n'y arrive pas c'est pourquoi je m'adresse a vous qui pouvait m'aider si vous avez de l'adresse en math, j'ai mis plusieurs variable en place dans ce but (angle_list_negativ, itération inverse...) et j'ai essayer de jouer avec ces paramètres afin de faire tourner la spirale dans l'autre sens sans succès.
Je ne suis pas fort en math et je vous serai reconnaissant de bien vouloir m'aider si vous le pouvez ( il faut prendre un peu de temps ).
Merci pour vos réponses éclairées.