Найти - Пользователи
Полная версия: График sin(x) с помощью tkinter
Начало » GUI » График sin(x) с помощью tkinter
1
Feelgood
Я новичок, стаж гавно кода на Питоне 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()
doza_and
Feelgood
Я новичок, стаж гавно кода на Питоне 3 недели
Это вы в качестве публичного самобичевания публикуете? Вопрос в чем?
Feelgood
синус и как выглядит функция но её реализация не питоне не понятна
Реализация заключается в вызове инструкции процессора FSIN
http://www.agner.org/optimize/instruction_tables.pdf
Feelgood
Вопрос в том, что я хочу подробно понять логику участка кода расчета и построения графика синуса…
Что за чем происходит, как рассчитывается каждая точка и как она строится.
Меня мучают особенно две эти строки…
 xy.append((x+10) * x_increment)
    xy.append(int(math.sin(x * x_factor) * y_amplitude) + center)

Если я правильно понимаю в первой строке рассчитывается координата х, а вторая строка рассчитывает координату y и потом всё прибавляется в конец списка ху. Всё это происходит в цикле. Далее строится линия из значений списка ху. Т.е. первый элемент списка есть координата х0, второе значение у0, третий элемент координата х1, а четвертая координата у1 и т.д. В итоге у нас получается две точки с координатами и между которыми строится отрезок.
Shaman
Почитайте про Canvas.create_line и количество вопросов убавится.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB