Altıgen Oluşturma

mail@pastecode.io avatar
unknown
python
19 days ago
2.4 kB
7
Indexable
Never
import cv2
import numpy as np
import time

width, height = 1300, 700  # Ana pencerenin genişlik ve yüksekliği
image = np.ones((height, width, 3), dtype=np.uint8) * 255

# Sabit değerler
line_color = (100, 100, 100)
line_thickness = 2
circle_color = (0, 0, 255)
radius_of_circle = 10

# Altıgen oluşturan fonksiyon
def create_hexagon(image, page_center, radius_of_hexagon):
    # Altıgenin köşe noktaları
    vertices_of_hexagon = []
    for i in range(6):
        angle = np.pi / 3 * i
        x = int(page_center[0] + radius_of_hexagon * np.cos(angle))
        y = int(page_center[1] + radius_of_hexagon * np.sin(angle))
        vertices_of_hexagon.append((x, y))

    # Köşe noktalarını line ile birleştir
    for i in range(len(vertices_of_hexagon)):
        start_point = vertices_of_hexagon[i]
        end_point = vertices_of_hexagon[(i + 1) % len(vertices_of_hexagon)]  # Son noktadan ilk noktaya dönmek için mod kullanıldı
        cv2.line(image, start_point, end_point, line_color, line_thickness)

    # Köşelere circle koy
    for vertex in vertices_of_hexagon:
        cv2.circle(image, vertex, radius_of_circle, circle_color, thickness=-1)

# Altıgenleri büyülterek çoğaltan fonksiyon
def period(image, start_time, program_time, waiting_time, radius_of_hexagon):
    # pencereden taşmaması için
    if height < width:
        number_of_hexagon = height // (radius_of_hexagon * 2) + 1
    else:
        number_of_hexagon = width // (radius_of_hexagon * 2) + 1

    for i in range(number_of_hexagon):
        create_hexagon(image, (width // 2, height // 2), i * radius_of_hexagon)
        cv2.imshow('Hexagon', image)
        cv2.waitKey(waiting_time)

        if time.time() - start_time > program_time:
            return True

    # pencere dolunca temizliyoruz
    image[:] = 255
    cv2.imshow('Hexagon', image)
    return False

# program_time programın ne kadar çalışacağı süresidir
# waiting_time yeni şeklin oluşma süresidir
# program time saniye türünden, waiting time ise ms türünden olmalı
def program(program_time=10, waiting_time=500):
    start_time = time.time()
    finish = False
    while not finish:
        finish = period(image, start_time, program_time, waiting_time, 50)

if __name__ == "__main__":
    cv2.imshow('Hexagon', image)
    program(10, 500)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
Leave a Comment