ic ice buyuyen yildiz
anlamadigim yerleri belirttimunknown
python
a year ago
6.2 kB
6
Indexable
import cv2 import numpy as np import time def ic_ice_yildizlar_ciz(genisleme_suresi, sure): dis_yaricap_baslangic = 30 #ilk yildizin dis yaricapi ic_yaricap_baslangic = 12 #ilk yildizin ic yaricapı dis_yaricap_adimlar = 40 # her adimda buyuyecek dis yaricap ic_yaricap_adimlar = 22 # her adimda buyuyecek ic yaricap max_dis_yaricap = 240 # en sonki yildizin dis yaricapi max_ic_yaricap = 300 # en sonki yildizin ic yaricapi canvas_h = 500 # yükseklik canvas_w = 500 # genişlik if not 100 <= genisleme_suresi <= 1000: # her adimda yildizlar buyurken ki suresi 100 ms ve 1000 ms arası olabilir genisleme_suresi = 500 ## TEST print("genisleme_hizi, 100 ile 1000 arasında olmalıdır. Varsayılan 500 ms kullanılıyor.") if not 60 <= sure <= 5 * 60: # bu egzersizin ne kadar devam edecegini hesaplar bu sure 1 dk ve 5 dk arasındadır. sure = 45 print("sure, 1 dakika (60 saniye) ile 5 dakika (300 saniye) arasında olmalıdır. Varsayılan 45 saniye kullanılıyor.") merkez_x = canvas_w // 2 #yuvarlagin yaricapi x koordinatinin ortasinda olacak merkez_y = canvas_h // 2 #yuvarlagin yaricapi y koordinatinin ortasinda olacak image = np.zeros((canvas_h, canvas_w, 3), dtype=np.uint8) + 255 # beyaz boş canvas radius = 7 # yuvarlağın yarıçapı color_circle = (170, 170, 170) # yuvarlağın rengi thickness_circle = -1 # İçi dolu yuvarlak cv2.circle(image, (merkez_x, merkez_y), radius, color_circle, thickness_circle) # yuvarlak oluşturuldu. color_star = (125, 81, 74) # yıldız rengi thickness_star = 3 # yıldız kalınlığı start_time = time.time() # programı başlat ve kaydet elapsed_time = 0 # gecen zamani hesaplama, zaman 0 ile basliyor while elapsed_time < sure: # toplam sure dolana kadar dis_yaricap = dis_yaricap_baslangic # her döngü basında dic yaricapi tekrar baslat ic_yaricap = ic_yaricap_baslangic #her döngü basinda ic yarişcapi tekrar baslat last_points = None #döngüyü sıfırla while dis_yaricap <= max_dis_yaricap and ic_yaricap <= max_ic_yaricap and elapsed_time < sure: #yildizlar max yaricapa ulasana kadar ve sure dolana kadar devam et image2 = image.copy() # Her döngüde yeni bir image2 oluştur # döngü her baslandiginda sabit olarak yildizlarin baslangic noktalari ayarlanir. mevcut_dis_yaricap = dis_yaricap_baslangic mevcut_ic_yaricap = ic_yaricap_baslangic # mevcut ic yaricap ve mevcut dis yaricap; ic yaricap ve dis yaricapa esit veya kucuk olana kadar: #BU WHİLE DONGUSUNU TAMAMEN ANLAMADIM while mevcut_dis_yaricap <= dis_yaricap and mevcut_ic_yaricap <= ic_yaricap: #yildizin kose noktalari icin bos liste points = [] for i in range(10): #yildizin 10 kose noktasini (5 ic,5 dis) hesaplar. #i * np.pi / 5, her köşe için açıyı 36 derece artırır (360 derece / 10 köşe). - np.pi / 2 ifadesi yıldızı dikey olarak hizalar. angle = i * np.pi / 5 - np.pi / 2 if i % 2 == 0: #i cift sayi ise #köşe noktasının x ve y koordinatlarını hesapla. x = int(merkez_x + mevcut_dis_yaricap * np.cos(angle)) # trigonometri kullanarak köşenin merkezden uzaklığını belirle. y = int(merkez_y + mevcut_dis_yaricap * np.sin(angle)) else: #eğer tek sayi ise #kullanarak köşe noktasının x ve y koordinatlarını hesapla x = int(merkez_x + mevcut_ic_yaricap * np.cos(angle)) #trigonometri kullanarak köşenin merkezden uzaklığını belirle y = int(merkez_y + mevcut_ic_yaricap * np.sin(angle)) points.append((x, y)) #hesaplanan köseleri points listesisine ekle #BURADAN points = np.array(points, np.int32) #points listesini Numpy dizisine dönüştürmek daha hızlı ve verimli hespalamalar yapmamizi saglar points = points.reshape((-1, 1, 2)) #point listesindeki noktalari kullanarak yildiz cizer cv2.polylines(image2, [points], isClosed=True, color=color_star, thickness=thickness_star) #son yildizin köse noktalarina cizmesi icin last_points = points #buraya kadar anlamadim #her adimda ic ve dis yari capi arttir mevcut_dis_yaricap += dis_yaricap_adimlar mevcut_ic_yaricap += ic_yaricap_adimlar if last_points is not None: #last_points'in boş olup olup olmadigini kontrol ediyoruz. for point in last_points: # köse noktalarini tek tek isler #belirtilen koordinatlarda yuvarlaklar cizer cv2.circle(image2, (point[0][0], point[0][1]), 3, color_circle, thickness_circle) cv2.imshow("Buyuyen_Yildizlar", image2) #resmi goster if cv2.waitKey(genisleme_suresi) & 0xFF == 27: #ESC tusuna basinca kapat cv1.destroyAllWindows() #ESC tusuna basinca butun pencereleri kapat return dis_yaricap += dis_yaricap_adimlar #dis yaricapi, dis yaricap adimlar kadar büyüt ic_yaricap += ic_yaricap_adimlar #ic yaricapi, ic yaricap adimlar kadar büyüt elapsed_time = time.time() - start_time #dakika bitinceye kadar calistir elapsed_time = time.time() - start_time #toplam gecen sureyi gunceller ve tekrar donguyu baslatir. cv2.waitKey(0) # penecereleri tusla kapatir cv2.destroyAllWindows() # tum pencereleri kapatir # Fonksiyonu çağır ic_ice_yildizlar_ciz(genisleme_suresi=500, sure=60)
Editor is loading...
Leave a Comment