Size: a a a

Хирьянов Т.Ф., Практика программирования на Python 3 (2019)

2020 April 19

O

Oleksii in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
а в общем задача сглаживания ломаной называется сплайн.
Не понимаю как это применить. Больше про сплайны ничего в tkinter нету.
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleksii
Не понимаю как это применить. Больше про сплайны ничего в tkinter нету.
вау, в tkinter нативно есть сплайны) а я их на ванильке реализовывал
источник

O

Oleksii in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
вау, в tkinter нативно есть сплайны) а я их на ванильке реализовывал
Согласен, это круто, что они есть!:)) Но я не понимаю как их применить... подскажи пожалуйста)
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
ну в нативном tk там есть
id = C.create_polygon(x0, y0, x1, y1, ..., option, ...)
smooth =1 - линия сглаживается. и степень сглаживания можно задать опцией splinesteps
источник

O

Oleksii in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
вау, в tkinter нативно есть сплайны) а я их на ванильке реализовывал
Я понимаю, що я должен нарисовать несколько точек, которые составят какую-то кривую. А потом применив к ней сплайны, кривая выгнется что ли...
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
да
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
когда-то кто то задался этим вопросом, https://t.me/tkhirianov_python_2019/12300
и порылся в интернете, адаптировал bspline под graph  https://gist.github.com/blzzua/7640cd420960c01e0b252ef5584cd621
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
или лучше вариант будет сделать из полигона там 5-6-7 линий
источник

😍

😍 in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
кидаешь на какой-то paste.org.ru код и текст ошибки.
или трейсбек и кусок кода на который он ссылается.
А я сейчас лег и понял почему не сработало
Спс
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
😍
А я сейчас лег и понял почему не сработало
Спс
вот тебе алгоритм в два шага:
если стена слева - то идешь до упора вправо иначе (стена справо) идешь до упора влево

если стена снизу - то идешь до упора вверх иначе (стена сверху) идешь до упора вниз.
источник

😍

😍 in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
вот тебе алгоритм в два шага:
если стена слева - то идешь до упора вправо иначе (стена справо) идешь до упора влево

если стена снизу - то идешь до упора вверх иначе (стена сверху) идешь до упора вниз.
Гений!
Давно практикуешь программрование?
источник

O

Oleksii in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
или лучше вариант будет сделать из полигона там 5-6-7 линий
Прочитал его способ bspline с помощью numpy и scipy.interpolate, хочу попробовать использовать его для сплайнов. Скажи пожалуйста, мне этих два модуля скачать нужно или они есть родные в Питоне?
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleksii
Прочитал его способ bspline с помощью numpy и scipy.interpolate, хочу попробовать использовать его для сплайнов. Скажи пожалуйста, мне этих два модуля скачать нужно или они есть родные в Питоне?
нет, понадобится скачать
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
но лучше не заморачиваться с этим и сделать полигоном.
а потом если захочется - сделать сглаживание
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
numpy, а особенно scipy требуют сил на ознакомление
источник

O

Oleksii in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
но лучше не заморачиваться с этим и сделать полигоном.
а потом если захочется - сделать сглаживание
Как потом сглаживание делать?
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleksii
Как потом сглаживание делать?
в любом случае делаешь полигон. в результате сплайна получаешь полигон из большего кол-ва вершин
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
или на большем уровне абстракции - вызывая какую-то фунцию rectangle(), circle(), polygon() - получаешь айди объекта (в ткинтере). и всё. напишешь свою функцию которая вернет тоже айди объекта в ткинтере
источник

O

Oleksii in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleg Makarikhin
в любом случае делаешь полигон. в результате сплайна получаешь полигон из большего кол-ва вершин
Про больший уровень абстракции вообще не понял, но наверное так далеко не стоит углубляться. Что значит "в результате сплайна получаешь полигон из большего кол-ва вершин"? Как мне потом мой полигон (или кривую) засплайнить, чтобы получить полигон с большим количеством вершин?
источник

OM

Oleg Makarikhin in Хирьянов Т.Ф., Практика программирования на Python 3 (2019)
Oleksii
Про больший уровень абстракции вообще не понял, но наверное так далеко не стоит углубляться. Что значит "в результате сплайна получаешь полигон из большего кол-ва вершин"? Как мне потом мой полигон (или кривую) засплайнить, чтобы получить полигон с большим количеством вершин?
передать в качестве аргумента функции-сплайна список из координат. получить в ответе большее кол-во координат
источник