Geocrack

golden spiral

Jul 7th, 2022 (edited)
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.33 KB | None | 0 0
  1. import pygame
  2. from pygame.locals import *
  3. import numpy as np
  4.  
  5. def Fibonacci():
  6.     array = [0,10]
  7.     for i in range(2,20):
  8.         array.append( array[i-1]+array[i-2])
  9.     return array
  10.  
  11. def compute_bezier_points():
  12.     global boolean
  13.     result = []
  14.  
  15.     b0x = koordinaten[0][0]
  16.     b0y = koordinaten[0][1]
  17.     if boolean:
  18.         b1x = koordinaten[3][0]
  19.         b1y = koordinaten[3][1]
  20.         boolean = False
  21.     else:
  22.         b1x = koordinaten[1][0]
  23.         b1y = koordinaten[1][1]
  24.         boolean = True  
  25.     b2x = koordinaten[2][0]
  26.     b2y = koordinaten[2][1]
  27.  
  28.     for t in np.arange(0, 1, 0.01):
  29.         point = ((1-t)**2 *b0x + 2*(1-t)*t*b1x + t**2 *b2x, (1-t)**2 *b0y+ 2*(1-t)*t*b1y + t**2 *b2y)
  30.         result.append((point))
  31.     return result
  32.  
  33.  
  34.  
  35. def Quadrat():
  36.     global orientierung, array, zaehler, koordinaten
  37.    
  38.     zaehler += 1
  39.     koordinaten[0], koordinaten[2] = koordinaten[2], koordinaten[0]
  40.     if orientierung == 1:
  41.         orientierung = 2
  42.         koordinaten[1] = [koordinaten[0] [0], koordinaten[0] [1]- array[zaehler]]
  43.         koordinaten[2] = [koordinaten[1] [0] + array[zaehler], koordinaten[1] [1]]
  44.         koordinaten[3] = [koordinaten[2] [0], koordinaten[0] [1]]
  45.     elif orientierung == 2:
  46.         orientierung = 3
  47.         koordinaten[1] = [koordinaten[0] [0], koordinaten[0] [1]- array[zaehler]]
  48.         koordinaten[2] = [koordinaten[1] [0] - array[zaehler], koordinaten[1] [1]]
  49.         koordinaten[3] = [koordinaten[2] [0], koordinaten[0] [1]]
  50.     elif orientierung == 3:
  51.         orientierung = 4
  52.         koordinaten[1] = [koordinaten[0] [0], koordinaten[0] [1]+ array[zaehler]]
  53.         koordinaten[2] = [koordinaten[1] [0] - array[zaehler], koordinaten[1] [1]]
  54.         koordinaten[3] = [koordinaten[2] [0], koordinaten[0] [1]]
  55.     else:
  56.         orientierung = 1
  57.         koordinaten[1] = [koordinaten[0] [0], koordinaten[0] [1]+ array[zaehler]]
  58.         koordinaten[2] = [koordinaten[1] [0] + array[zaehler], koordinaten[1] [1]]
  59.         koordinaten[3] = [koordinaten[2] [0], koordinaten[0] [1]]
  60.  
  61.    
  62.    
  63.  
  64. #Schritte zum zeichnen der Koordinaten
  65. zaehler = 0
  66. orientierung = 1
  67. array = Fibonacci()
  68. running = True
  69. boolean = True
  70. aufloesung = (800,800)
  71. #Koordinaten der Quadrate
  72. koordinaten = [[400,400],[400,400],[400,400],[400,400]]
  73. white = (255,255,255)
  74. GUI = pygame.display.set_mode(aufloesung)
  75. GUI.fill(white)
  76. while (running):
  77.     for event in pygame.event.get():
  78.             if event.type in (QUIT,KEYDOWN):
  79.                 running = False
  80.    
  81.     clock = pygame.time.Clock()
  82.     clock.tick(60)    
  83.     Quadrat()
  84.     pygame.draw.circle(GUI,(0,255,0),(400,400),3)
  85.     pygame.draw.line(GUI,(255,0,0),(koordinaten[0] [0], koordinaten[0] [1]),(koordinaten[1] [0], koordinaten[1] [1]))
  86.     pygame.draw.line(GUI,(255,0,0),(koordinaten[1] [0], koordinaten[1] [1]),(koordinaten[2] [0], koordinaten[2] [1]))
  87.     pygame.draw.line(GUI,(255,0,0),(koordinaten[2] [0], koordinaten[2] [1]),(koordinaten[3] [0], koordinaten[3] [1]))
  88.     pygame.draw.line(GUI,(255,0,0),(koordinaten[3] [0], koordinaten[3] [1]),(koordinaten[0] [0], koordinaten[0] [1]))
  89.     b_points = compute_bezier_points()
  90.     for i in range(len(b_points)-1):
  91.         pygame.draw.line(GUI, pygame.Color("blue"), b_points[i],b_points[i+1], 2)
  92.         pygame.display.update()
  93.         pygame.time.wait(5)
  94.     pygame.display.update()
Add Comment
Please, Sign In to add comment