Comment faire tourner une spirale avec python ? - Python - Programmation
Marsh Posté le 07-07-2014 à 23:59:52
ptit_stagiaire a écrit : Bonjour, |
Une façon pourrait être d'afficher un gif avec tkinter :
Code :
|
Python est un langage facile à appréhender, cela peut valoir le coût de lire un tutoriel sur ce langage.
Marsh Posté le 09-07-2014 à 15:29:47
Merci beaucoup !
J'ai trouvé plus simple mais qui ne marcherait jamais pour des formes non symétriques, donc je garde précieusement votre réponse pour plus tard.
Si d'autres en ont besoin, voici ce que j'ai fait (et j'ai progressé, j'ai appris à faire une boucle depuis... oui je partais de loin...) :
def spiral():
spi_0 = pygame.image.load('spirale.png')
for i in range(200) :
spi_i = pygame.transform.rotozoom(spi_0, i*(-3), float(0.4))
ws, hs = spi_i.get_size()
window.fill(bg_col)
window.blit(spi_i, [200 - ws/2, 450 -hs/2])
pygame.display.flip()
pygame.time.wait(10)
Le problème, c'était que ma spirale était définie par un carré, donc elle tournait au sein de ce carré, mais une fois pivoté, un carré n'occupe plus la même hauteur ni la même largeur, du coup ma spirale était déformée un peu à chaque tour. La solution, c'était de définir "ws, hs = spi_i.get_size()" pour inclure hs et ws dans les dimensions d'affichage (window.blit(spi_i, [200 - ws/2, 450 -hs/2]) au lieu de window.blit(spirale2, [200, 450])).
Marsh Posté le 07-07-2014 à 21:09:02
Bonjour,
je travaille sur un projet de psychologie sur l'attention visuelle, et pour cela j'aurais besoin de faire s'afficher une spirale sur un des côtes de mon ecran.
Je n'ai jamais code auparavant, avec ce que j'ai trouve sur internet j'ai bricole le code ci-dessous. Il est tres lourd, je pense aue je pourrais remplacer les affichages successifs par des boucles au lieu de les ecrire mais je ne sais pas comment m'y prendre.
Le plus gros probleme, c'est que je voudrais que ma spirale tourne autour de son axe, alors que la, elle se decale a chaque rotation, et je ne comprends pas pourquoi.
Pourriez-vous m'aider s'il vous plaît ?
Merci par avance de votre aide et de votre indulgence...
import pygame
from pygame.locals import *
# Definition des dimensions de la fenetre :
W, H = 1280, 700
# Definition de la couleur du fond, proche de celle du fond des photo pour limiter le contraste :
bg_col = [130, 120, 100]
window = pygame.display.set_mode([W,H])
# Definition de plusieurs images de spirales, tournees de 5° :
spirale0 = pygame.image.load('spirale.jpeg')
spirale1 = pygame.transform.rotozoom(spirale0, 5, float(0.3))
spirale2 = pygame.transform.rotozoom(spirale1, 5, float(1))
spirale3 = pygame.transform.rotozoom(spirale2, 5, float(1))
spirale4 = pygame.transform.rotozoom(spirale3, 5, float(1))
spirale5 = pygame.transform.rotozoom(spirale4, 5, float(1))
spirale6 = pygame.transform.rotozoom(spirale5, 5, float(1))
spirale7 = pygame.transform.rotozoom(spirale6, 5, float(1))
spirale8 = pygame.transform.rotozoom(spirale7, 5, float(1))
spirale9 = pygame.transform.rotozoom(spirale8, 5, float(1))
spirale10 = pygame.transform.rotozoom(spirale9, 5, float(1))
spirale11 = pygame.transform.rotozoom(spirale10, 5, float(1))
spirale12 = pygame.transform.rotozoom(spirale11, 5, float(1))
# Affichage
window.fill(bg_col)
window.blit(spirale1, [200, 454])
pygame.display.flip()
pygame.time.wait(30)
window.fill(bg_col)
window.blit(spirale2, [200, 454])
pygame.display.flip()
pygame.time.wait(30)
window.fill(bg_col)
window.blit(spirale3, [200, 454])
pygame.display.flip()
pygame.time.wait(30)
window.fill(bg_col)
window.blit(spirale4, [200, 454])
pygame.display.flip()
pygame.time.wait(30)
window.fill(bg_col)
window.blit(spirale5, [200, 454])
pygame.display.flip()
pygame.time.wait(30)
window.fill(bg_col)
window.blit(spirale6, [200, 454])
pygame.display.flip()
pygame.time.wait(300)
window.fill(bg_col)
window.blit(spirale7, [200, 454])
pygame.display.flip()
pygame.time.wait(30)
window.fill(bg_col)
window.blit(spirale8, [200, 454])
pygame.display.flip()
pygame.time.wait(30)
window.fill(bg_col)
window.blit(spirale9, [200, 454])
pygame.display.flip()
pygame.time.wait(30)
window.fill(bg_col)
window.blit(spirale10, [200, 454])
pygame.display.flip()
pygame.time.wait(30)
window.fill(bg_col)
window.blit(spirale11, [200, 454])
pygame.display.flip()
pygame.time.wait(30)
window.fill(bg_col)
window.blit(spirale12, [200, 454])
pygame.display.flip()
pygame.time.wait(30)
PS : j'utilise une image de spirale au lieu de la dessiner dans python car le but est de travailler sur l'attraction du regard en fonction des differents types de spirales.