Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 4, 2016 08:38:15

Feelgood
Зарегистрирован: 2016-08-04
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

График sin(x) с помощью tkinter

Я новичок, стаж гавно кода на Питоне 3 недели. Код написан мной на 70%, только мне не понятна та часть кода где вычисляется и строится синус, собственно её и скопировал. Я понимаю и знаю как строить синус и как выглядит функция но её реализация не питоне не понятна…

xy = []
for x in range(980):
xy.append((x+10) * x_increment)
xy.append(int(math.sin(x * x_factor) * y_amplitude) + center)

sin_line = canv.create_line(xy, fill='blue')]

Вот код целиком…
 from tkinter import *
import math
 
root = Tk()
root.title("Simple plot using canvas and line")
root.geometry('1000x600')
 
canv = Canvas(root, width = 1000, height = 600, bg = "#002")
 
for x in range(25):
    k = 44.5 * x
    canv.create_line(10+k, 590, 10+k, 10, width=0.3, fill='#191938')
    canv.create_line(10, 10+k, 990, 10+k, width=0.3, fill='#191938')
 
canv.create_line(10,10,10,600, width=1, arrow=FIRST, fill='white')
canv.create_line(0,590,990,590, width=1,arrow=LAST, fill='white')
canv.create_line(10,590,990,10, width=1, fill='red')
 
height = 600
center = height / 2
x_increment = 1
x_factor = 0.02
y_amplitude = 200
 
xy = []
for x in range(980):
    xy.append((x+10) * x_increment)
    xy.append(int(math.sin(x * x_factor) * y_amplitude) + center)
 
sin_line = canv.create_line(xy, fill='blue')
 
canv.pack()
root.mainloop()

Отредактировано Feelgood (Авг. 4, 2016 08:39:15)

Офлайн

#2 Авг. 4, 2016 09:27:52

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

График sin(x) с помощью tkinter

Feelgood
Я новичок, стаж гавно кода на Питоне 3 недели
Это вы в качестве публичного самобичевания публикуете? Вопрос в чем?
Feelgood
синус и как выглядит функция но её реализация не питоне не понятна
Реализация заключается в вызове инструкции процессора FSIN
http://www.agner.org/optimize/instruction_tables.pdf



Офлайн

#3 Авг. 4, 2016 09:59:54

Feelgood
Зарегистрирован: 2016-08-04
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

График sin(x) с помощью tkinter

Вопрос в том, что я хочу подробно понять логику участка кода расчета и построения графика синуса…
Что за чем происходит, как рассчитывается каждая точка и как она строится.
Меня мучают особенно две эти строки…

 xy.append((x+10) * x_increment)
    xy.append(int(math.sin(x * x_factor) * y_amplitude) + center)

Если я правильно понимаю в первой строке рассчитывается координата х, а вторая строка рассчитывает координату y и потом всё прибавляется в конец списка ху. Всё это происходит в цикле. Далее строится линия из значений списка ху. Т.е. первый элемент списка есть координата х0, второе значение у0, третий элемент координата х1, а четвертая координата у1 и т.д. В итоге у нас получается две точки с координатами и между которыми строится отрезок.

Офлайн

#4 Авг. 4, 2016 12:30:02

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

График sin(x) с помощью tkinter

Почитайте про Canvas.create_line и количество вопросов убавится.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version