Untitled

 avatar
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