Untitled
unknown
plain_text
a year ago
3.5 kB
4
Indexable
import cv2 import numpy as np import time import math def buyuyen_yildiz(genisleme_hizi, sure): # Parametre sınırlarını kontrol et if not 100 <= genisleme_hizi <= 1000: genisleme_hizi = 500 print("genisleme_hizi, 100 ile 1000 arasında olmalıdır. Varsayılan 500 ms kullanılıyor.") if not 60 <= sure <= 5 * 60: 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.") # Canvas boyutları ve merkez noktası canvas_x = 500 canvas_y = 500 center_x = canvas_x // 2 center_y = 13*canvas_y // 25 # Merkez noktası görsel açıdan aşağı kaydırıldı # Renkler ve yarıçaplar center_color = (169, 169, 169) center_radius = 7 shape_color = (104, 104, 104) corner_color = (0, 36, 255) corner_radius = 10 # Beyaz tuval canvas = np.ones((canvas_y, canvas_x, 3), dtype="uint8") * 255 baslangic_zamani = time.time() # Başlangıç zamanı kaydedilir while time.time() - baslangic_zamani < sure: # Belirtilen süre boyunca döngü devam eder size = 50 # İlk kenar ölçüsü max_size = min(canvas_x, canvas_y) // 2 # Şeklin büyüyebileceği max uzunluk while size <= max_size: canvas.fill(255) # Tuvali temizle (beyaza boya) # Ortada daire çiz cv2.circle(canvas, (center_x, center_y), center_radius, center_color, -1) # Yıldız çiz current_size = size while current_size >= 50: # Yıldızın köşe koordinatlarını hesapla star_points = [] for i in range(5): outer_angle = i * 2 * math.pi / 5 - math.pi / 2 inner_angle = outer_angle + math.pi / 5 outer_point = (int(center_x + current_size * math.cos(outer_angle)), int(center_y + current_size * math.sin(outer_angle))) inner_point = (int(center_x + current_size * 0.5 * math.cos(inner_angle)), int(center_y + current_size * 0.5 * math.sin(inner_angle))) star_points.append(outer_point) star_points.append(inner_point) star_points = np.array(star_points, np.int32).reshape((-1, 1, 2)) cv2.polylines(canvas, [star_points], isClosed=True, color=shape_color, thickness=3) current_size -= 50 # En son yıldızın köşelerini işaretle star_points = [] for i in range(5): outer_angle = i * 2 * math.pi / 5 - math.pi / 2 outer_point = (int(center_x + size * math.cos(outer_angle)), int(center_y + size * math.sin(outer_angle))) star_points.append(outer_point) # Köşe işaretleme for corner in star_points: cv2.circle(canvas, corner, corner_radius, corner_color, -1) cv2.imshow("Buyuyen Yildiz", canvas) if cv2.waitKey(genisleme_hizi) & 0xFF == 27: # ESC tuşuna basılarak çıkılabilir cv2.destroyAllWindows() return size += 50 cv2.destroyAllWindows() # Fonksiyonu çağırma buyuyen_yildiz(genisleme_hizi=500, sure=45) # Yıldız çizimi için
Editor is loading...
Leave a Comment