случайное движение множества точек

 # случайное движение множества точек

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

# Функция для обновления позиций точек
def update_positions(points, num_points, step_size=0.1):
    # Добавляем случайное смещение к каждой точке
    for i in range(num_points):
        dx = np.random.uniform(-step_size, step_size)  # Случайное смещение по x
        dy = np.random.uniform(-step_size, step_size)  # Случайное смещение по y
        points[i][0] += dx
        points[i][1] += dy
    return points

# Основная функция
def animate_points():
    try:
        num_points = int(input("Введите количество точек: "))
        if num_points <= 0:
            print("Количество точек должно быть положительным числом.")
            return
    except ValueError:
        print("Введите корректное число.")
        return
   
    # Инициализация позиций точек (случайные координаты от 0 до 1)
    points = [[np.random.random(), np.random.random()] for _ in range(num_points)]
   
    # Создание фигуры и осей
    fig, ax = plt.subplots()
    scatter = ax.scatter([p[0] for p in points], [p[1] for p in points])
    ax.set_xlim(0, 1)
    ax.set_ylim(0, 1)
    ax.set_title(f"Случайное движение {num_points} точек")
   
    # Функция для обновления анимации
    def animate(frame):
        nonlocal points
        points = update_positions(points, num_points)
        x_data = [p[0] for p in points]
        y_data = [p[1] for p in points]
        scatter.set_offsets(np.c_[x_data, y_data])
        return scatter,
   
    # Создание анимации
    ani = FuncAnimation(fig, animate, frames=100, interval=50, blit=True)
   
    # Показ анимации
    plt.show()

# Запуск программы
if __name__ == "__main__":
    animate_points()


Рецензии