Untitled
unknown
plain_text
a year ago
3.5 kB
10
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çinEditor is loading...
Leave a Comment