Advertisement
jee7

TIA Sujuv Müra

Nov 23rd, 2014
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.02 KB | None | 0 0
  1. import pygame, random, math
  2.  
  3. pygame.init()
  4. #Vastava suurusega aken (globaalsed muutujad)
  5. aknaMõõtmed = [300, 100]
  6. ekraan = pygame.display.set_mode(aknaMõõtmed)
  7.  
  8. #Loome juhuslike väärtuste listi
  9. def looMüra(amplituud, sagedus):
  10.     punktid = random.sample(range(100000 * amplituud), sagedus)
  11.     punktid = [x / 100000 for x in punktid]
  12.  
  13.     return punktid
  14.  
  15. def sujuvdaMüra(punktid):
  16.     uuedPunktid = [punktid[0]]
  17.     for i in range(1, len(punktid) - 1):
  18.         uuedPunktid.append(0.25 * punktid[i - 1] + 0.5 * punktid[i] + 0.25 * punktid[i+1])
  19.  
  20.     uuedPunktid.append(punktid[len(punktid) - 1])
  21.  
  22.     return uuedPunktid
  23.  
  24.  
  25. #Interpoleerime juhuslikke väärtusi koosinuse kaalu abil
  26. def interpoleeri(eelmine, järgmine, x):
  27.     x = x * math.pi
  28.     kaal = 0.5 * (1 - math.cos(x))
  29.  
  30.     return eelmine * (1 - kaal) + järgmine * kaal
  31.  
  32. def sämpli(müra, x, laius):
  33.     müraXtäpne = x * len(müra) / laius
  34.     müraX = int(müraXtäpne)
  35.  
  36.     müraY = int(interpoleeri(müra[müraX - 1], müra[müraX], müraX - müraXtäpne))
  37.  
  38.     return müraY
  39.  
  40.                  
  41.  
  42. amplituud = 100
  43. sagedus = 30
  44. müra = looMüra(amplituud, sagedus)
  45. sujuvMüra = sujuvdaMüra(müra)
  46. print(müra)
  47. print(len(müra))
  48.  
  49. while True:
  50.     ekraan.fill((0,0,0))
  51.    
  52.     eelminePunkt = False
  53.     for x in range(0, 300):
  54.        
  55.         müraY = sämpli(müra, x, 300)
  56.        
  57.         punkt = [x, müraY]
  58.         if eelminePunkt:
  59.             pygame.draw.line(ekraan, (255, 255, 255), eelminePunkt, punkt)
  60.            
  61.         eelminePunkt = punkt
  62.  
  63.     eelminePunkt = False
  64.     for x in range(0, 300):
  65.        
  66.         müraY = sämpli(sujuvMüra, x, 300)
  67.        
  68.         punkt = [x, müraY]
  69.         if eelminePunkt:
  70.             pygame.draw.line(ekraan, (255, 0, 0), eelminePunkt, punkt)
  71.            
  72.         eelminePunkt = punkt
  73.  
  74.     pygame.display.flip()
  75.     pygame.time.delay(10)
  76.  
  77.     events = pygame.event.get()
  78.     for event in events:
  79.         if event.type == pygame.QUIT:
  80.             exit()
  81.             break;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement