Добавил:
          
          
        
        
    
            mtuciboy
            
            
            
            
            
            Опубликованный материал нарушает ваши авторские права? Сообщите нам.
          
          Вуз:
          Предмет:
          Файл:Лабораторные 1-5 для Вариант 19 / lab5
.pyimport matplotlib.pyplot as plt
import time
class KochSnowflake:
    def __init__(self, ax, order, size, x0, y0, x1, y1):
        self.ax = ax
        self.order = order
        self.size = size
        self.x0, self.y0 = x0, y0
        self.x1, self.y1 = x1, y1
    def koch_snowflake(self):
        self._koch_snowflake(self.order, self.size, self.x0, self.y0, self.x1, self.y1)
    def _koch_snowflake(self, order, size, x0, y0, x1, y1):
        if order == 0:
            self.ax.plot([x0, x1], [y0, y1], color='b')
        else:
            x2 = (2 * x0 + x1) / 3
            y2 = (2 * y0 + y1) / 3
            x3 = (x0 + 2 * x1) / 3
            y3 = (y0 + 2 * y1) / 3
            x4 = (x2 + x3) / 2 - (y3 - y2) * 3**0.5 / 2
            y4 = (y2 + y3) / 2 + (x3 - x2) * 3**0.5 / 2
            self._koch_snowflake(order - 1, size, x0, y0, x2, y2)
            self._koch_snowflake(order - 1, size, x2, y2, x4, y4)
            self._koch_snowflake(order - 1, size, x4, y4, x3, y3)
            self._koch_snowflake(order - 1, size, x3, y3, x1, y1)
def get_user_depth():
    while True:
        try:
            depth = int(input("Введите глубину фрактала (целое число): "))
            if depth > 0:
                return depth
            else:
                print("Глубина должна быть положительным целым числом.")
        except ValueError:
            print("Пожалуйста, введите целое число.")
def main():
    depth = get_user_depth()
    execution_times = []
    print("\nТаблица зависимости времени построения от глубины фрактала:")
    print("| Глубина | Время (сек) |")
    print("|---------|-------------|")
    fig, ax = plt.subplots()
    x0, y0 = 0, 0
    x1, y1 = 1, 0
    for current_depth in range(1, depth + 1):
        start_time = time.time()
        snowflake = KochSnowflake(ax, current_depth, 1, x0, y0, x1, y1)
        snowflake.koch_snowflake()
        ax.set_aspect('equal')
        ax.axis('off')
        plt.title(f'Глубина {current_depth}')
        plt.show(block=False)
        plt.pause(0.1)  # Добавляем паузу для корректного отображения
        end_time = time.time()
        execution_time = end_time - start_time
        execution_times.append(execution_time)
        print(f"|    {current_depth}    |    {execution_time:.6f}    |")
    plt.show()
if __name__ == "__main__":
    main()
 
          Соседние файлы в папке Лабораторные 1-5 для Вариант 19
          
      
    
    
    
          