След из линий концы которых перемещаются по окружности

Рейтинг: 0Ответов: 0Опубликовано: 22.01.2023

Я нарисовал линии концы которых перемещаются по окружностям. Входные данные берутся из файла, сначала координаты окружности, радиус, начальный угол и изменение угла. Нужно чтобы на экране было определенное кол-во следов, например 3. То есть когда рисуется 4 линия, удаляется 1, но я не знаю как это сделать. В моем коде линии рисуются до бесконечности.

import tkinter
import time
import math

SCREEN_SIZE = (600, 600)
f = open('info.txt', 'rt', encoding='utf-8')
list_str = [list(map(int, x.strip().split())) for x in f.readlines()]
f.close()
data = []
line_coords = []
line = []
trace_list = []
for i in range(1, len(list_str)):
    data.append(list_str[i])
main = tkinter.Tk()
canvas = tkinter.Canvas(main, bg='white', height=SCREEN_SIZE[0], width=SCREEN_SIZE[1])
main.title('does not matter')


def xys(x, y):
    return SCREEN_SIZE[0] // 2 + x, SCREEN_SIZE[1] // 2 - y


for j in range(len(data)):
    try:
        line_coords.append([*xys(data[j][0] + data[j][2] * math.cos(data[j][3] * math.pi / 180),
                             data[j][0] + data[j][2] * math.sin(data[j][3] * math.pi / 180)),
                                                        *xys(data[j + 1][0] + data[j + 1][2] * math.cos(data[j + 1][3] * math.pi / 180),
                             data[j + 1][0] + data[j + 1][2] * math.sin(data[j + 1][3] * math.pi / 180))])
    except IndexError:
                      line_coords.append([*xys(data[j][0] + data[j][2] * math.cos(data[j][3] * math.pi / 180), data[j][0] + data[j][2] * math.sin(data[j][3] * math.pi / 180)),
                                          *xys(data[0][0] + data[0][2] * math.cos(data[0][3] * math.pi / 180), data[0][0] + data[0][2] * math.sin(data[0][3] * math.pi / 180))])
line.append(canvas.create_line(*line_coords[j], width=2))

def rotate():
for j in range(len(data)):
    data[j][3] += data[j][4]
    try:
        line_coords.append([*xys(data[j][0] + data[j][2] * math.cos(data[j][3] * math.pi / 180),
                                 data[j][0] + data[j][2] * math.sin(data[j][3] * math.pi / 180)),
                            *xys(data[j + 1][0] + data[j + 1][2] * math.cos(data[j + 1][3] * math.pi / 180),
                                 data[j + 1][0] + data[j + 1][2] * math.sin(data[j + 1][3] * math.pi / 180))])
    except IndexError:
        line_coords.append([*xys(data[j][0] + data[j][2] * math.cos(data[j][3] * math.pi / 180),
                                 data[j][0] + data[j][2] * math.sin(data[j][3] * math.pi / 180)),
                            *xys(data[0][0] + data[0][2] * math.cos(data[0][3] * math.pi / 180),
                               data[0][0] + data[0][2] * math.sin(data[0][3] * math.pi / 180))])
    for i2 in range(len(line_coords)):
        canvas.create_line(*line_coords[i2])
main.after(1000, rotate)


rotate()
canvas.pack()
main.mainloop()

Мои входные данные: 3, 100 100 50 45 2, -200 -200 100 0 5, -200 200 50 -45 10, 100 -100 200 0 -7

Ответы

Ответов пока нет.