Büyüyen Kare-Dikdörtgen
unknown
plain_text
a year ago
4.2 kB
11
Indexable
import cv2
import numpy as np
import time # Zamanı ölçmek için gerekli
def buyuyen_sekil(sekil_turu, genisleme_hizi, sure):
# genişleme hızı ve süre min max ile gösterimi
# def buyuyen_sekil(sekil_turu, genisleme_hizi=500, sure=45):
# genisleme_hizi değerini 100 ile 1000 arasında sınırla
#genisleme_hizi = max(100, min(genisleme_hizi, 1000))
# sure değerini 60 ile 300 saniye arasında sınırla
#sure = max(1*60, min(sure, 5 * 60))
if not 100 <= genisleme_hizi <= 1000:
genisleme_hizi = 500
#TEST ICIN 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
#TEST ICIN 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 = canvas_y // 2
# 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. Program çalışmaya başladıktan itibaren ne kadar süre geçti?
while time.time() - baslangic_zamani < sure: # Yeniden çağrıldı time ve tekrar süre alındı.Süre dolmamışsa döngü devam etti
size = 50 #kenar ölçüsü
max_size = min(canvas_x, canvas_y)-50 # Şeklin büyüyebileceği max uzunluk(Sınıra dayanmasın şık dursun diye -50)
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)
# Kare/dikdörtgen çiz
current_size = size
while current_size >= 50:
if sekil_turu == 'kare':
top_left = (center_x - current_size // 2, center_y - current_size // 2) #üst sol koordinat(225,225) x=50,y=50
bottom_right = (center_x + current_size // 2, center_y + current_size // 2) # alt sağ koordinat(275,275)
elif sekil_turu == 'dikdortgen':
top_left = (center_x - current_size // 2, center_y - int(current_size * 0.3)) #(225,235) x=50,y=30
bottom_right = (top_left[0] + current_size, top_left[1] + int(current_size * 0.6)) #(275,265)
cv2.rectangle(canvas, top_left, bottom_right, shape_color, 3)#2 sefer yazmamak için döngü dışına alındı
current_size -= 50
# En son karenin/dikdörtgenin köşelerini işaretle
if sekil_turu == 'kare':
top_left = (center_x - size // 2, center_y - size // 2)
bottom_right = (center_x + size // 2, center_y + size // 2)
elif sekil_turu == 'dikdortgen':
top_left = (center_x - size // 2, center_y - int(size * 0.3))
bottom_right = (top_left[0] + size, top_left[1] + int(size * 0.6))
corners = [top_left, (top_left[0], bottom_right[1]), (bottom_right[0], top_left[1]), bottom_right]
for corner in corners:
cv2.circle(canvas, corner, corner_radius, corner_color, -1) #4 sefer yazmamak için for a alındı
cv2.imshow("Buyuyen Sekil", 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_sekil(sekil_turu='kare', genisleme_hizi=1000, sure=60) # Kare çizimi için
buyuyen_sekil(sekil_turu='dikdortgen', genisleme_hizi=100, sure=300) # Dikdörtgen çizimi içinEditor is loading...
Leave a Comment