Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 4, 2020 17:57:22

Konstantin1984+
Зарегистрирован: 2020-02-04
Сообщения: 87
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с кодом вращения фигуры в Canvas

Я написал код для вращения фигуры состоящей из 37 сегментов (условный круг). Но почему-то вращения нет.

 from tkinter import *
import math
from time import sleep
root=Tk()
root.title('Барабан')
width=460
height=460
c = Canvas(width=width,height=height,bg='grey80')
c.pack()
radius=200
def x_coordinate(dlina,gradus):
    return width/2+dlina*math.cos(gradus*math.pi/180)
def y_coordinate(dlina,gradus):
    return height/2-dlina*math.sin(gradus*math.pi/180)
gradus=90-360/37 #фигура (условный круг) состоит из 37 сегментов
#построение первоначальной фигуры
x1=width/2
y1=height/2-radius
for n in range(37):
    if n==0:zvet='green'
    elif n%2==0:zvet='black'
    elif n%2!=0:zvet='red'
    x2=x_coordinate(radius,gradus)
    y2=y_coordinate(radius,gradus)
    segment=c.create_polygon(width/2,height/2,x1,y1,x2,y2,
    fill=zvet, outline="")
    x1,y1=x2,y2
    gradus=gradus-360/37
#смещение сегментов на угол "360/37/10"
gradus=90-360/37/10
while True:
    for n in range(37):
        x1=x_coordinate(radius,gradus)
        y1=y_coordinate(radius,gradus)
        x2=x_coordinate(radius,gradus-360/37)
        y2=y_coordinate(radius,gradus-360/37)
        c.coords(n+1,width/2,height/2,x1,y1,x2,y2) 
        gradus=gradus-360/37
    c.update()
    sleep(0.2)
  
    
root.mainloop()

Отредактировано Konstantin1984+ (Сен. 4, 2020 18:01:39)

Офлайн

#2 Сен. 5, 2020 20:47:55

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Проблема с кодом вращения фигуры в Canvas

Ну, почему нет вращения? Есть вращение на целых ноль градусов, ваши сегменты уверенным шагом топчутся на месте .


Добавьте одну строчку кода (сдвиг угла между циклами):

 ........
while True:
    gradus -= 360/37        #добавить смещение между циклами
    for n in range(37):
        .........

Остальное как у вас. Желательно сделать вращение более плавным (уменьшить угол смещения и sleep)

Офлайн

#3 Сен. 6, 2020 18:24:25

Konstantin1984+
Зарегистрирован: 2020-02-04
Сообщения: 87
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с кодом вращения фигуры в Canvas

Спасибо! Что-то я затупил, поспешно обратился к форуму.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version