Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Posts Tagged ‘графіка

Побудова “скриньок з вусами” львівських квартир що здаються на сьогодні

with 3 comments

Я ще минулого року помітив що в питаннях про Python на StackOverflow обговорюють якісь панди. Це, як виявилось обгортка навколо matplotlib, numpy і подібних гарних речей. А ще, лазячи по своїх документах в Google знайшов скачану вже позаминулого року стіну групи пошуку нерухомості вконтакті. І так співпало що я і мій колега-аналітик зараз шукаємо квартиру у Львові. Я йому показав цей файл, і він загорівся бажанням проаналізувати ще якийсь сайт оголошень.

При всій повазі до lun.ua, але тут я прорекламую dom.ria.com. Передовсім, там є українська версія. А ще, можливість скачати результати пошуку як електронну таблицю, хоч і в xls форматі, і лише одну сторінку.

В python читати xls вміє бібліотека xlrd, тому треба доставити ще й її. Pandas взагалі має багато необов’язкових залежностей:

sudo pip3.5 install jupyter pandas xlrd matplotlib
jupyter notebook # дуже модний графічний інтерпретатор

Якщо все поставити як вище і запустити “jupyter”, то можна робити обчислення в отакому документі: https://github.com/bunyk/mypandas/blob/master/dom.ria/dom.ria.ipynb
Прочитати решту цього запису »

Written by bunyk

Січень 4, 2017 at 01:30

Як намалювати стрілочку в SVG

leave a comment »

Креслення стрілочки, з позначенням деяких змінних

Креслення стрілочки, з позначенням деяких змінних

Поточна ситуація така, що на запит “як намалювати стрілочку”, Google видає купу порад дівчатам про те як зашпаклювати лице. Але проблема трапляється часто, і не тільки в SVG, ось наприклад старий пост про те як малювати вектори в OpenGL, для програмки що проводить структурний аналіз кінематики машин і механізмів. Тому треба виправити цю ситуацію, і написати ще пару публікацій про малювання стрілочок. 🙂

Тут буде код який було весело писати, і яким варто поділитись. Присутній також JsFiddle. Код дозволяє малювати стрілочки наступного вигляду:

arrows


Написано з використанням D3.js, але код можна причепити де завгодно, так як головне тут – функція arrow_path, яка генерує значення атрибуту d для тега path. Приймає вона координати початку і кінця стрілки, ширину лінії стрілки, радіус (задає розмір трикутника на кінці стрілки, і радіус gizmo (пімпочки на середині)). directed – булевий аргумент, що вказує чи малювати стрілочку на кінці лінії взагалі. gizmo – якщо false – пімпочки не буде, 'circle' – буде коло, 'diamond' – буде ромбик.
Прочитати решту цього запису »

Written by bunyk

Грудень 1, 2015 at 19:50

Оприлюднено в Графіка, Кодерство

Tagged with , ,

Грандіозніше ніж всесвіт і фантастичніше за уяву

with 9 comments

Фрактали всі вже бачили, всі вже знають, та все ж… Тут мова піде про світові рекорди. 🙂

Всесвіт настільки великий, що його розміри важко уявити. Всесвіт, досліджуваний астрономами, — частина матеріального світу, що доступна дослідженню астрономічними засобами, які відповідають досягнутому рівневі розвитку науки (часто цю частину всесвіту називають метагалактикою), простягається на 1,6\cdot 10^{27} метрів і нікому не відомо, наскільки він великий за межами видимої частини.

Атомне ядро має розмір 10^{-15} метрів.

Тепер, якщо ми маємо зображення всесвіту (в PNG наприклад :)), то для того щоб побачити на ньому ядро атома потрібно збільшити його в 10^{42} рази. Уявляєте собі цей зум?

А тепер я вам покажу картинку, на якій роблять зум 8 \cdot 10^{606}. Це не в мільйони разів більше ніж оцей маштаб всесвіту. Це в мільйони мільонів мільйонів… і так повторити ще сто раз. Одним словом дивіться:

Для такого відео потрібна ефективна реалізація високоточної арифметики (це вам не double), написаної спеціалістом з оптимізації чисел з плаваючою комою компанії Valve, і дні і ночі обчислень на швидких багатоядерних комп’ютерах.

Те відео – здається світовий рекорд. Але думаю це не довго, бо зроблене воно більш ніж рік тому. Може з того часу хтось рік рендерив нове відео, і щоб побити рекорд залишилось ще кілька місяців обчислень?

Written by bunyk

Жовтень 28, 2012 at 14:42

Оприлюднено в Всяке, Графіка

Tagged with ,

Перетин променя й трикутника

leave a comment »

Для тривимірного випадку.

Це досить часта задача в комп’ютерній графіці. Зокрема, визначити чи знаходиться точка всередині меша (якщо він замкнений), можна обчисливши кількість перетинів довільного променя що виходить з цієї точки з мешем. Якщо ця кількість непарна – точка всередині меша. Про обчислення зіткнень, та трасування променів взагалі мовчу.

Нам дано вектори \vec O – початок променя, \vec D – його напрям, \vec A,\ \vec B,\ \vec C – вершини трикутника. \vec X – перетин променя й трикутника.

Прочитати решту цього запису »

Written by bunyk

Квітень 25, 2011 at 23:44

Графіки та інша векторна графіка в будь-якій мові програмування

with 6 comments

Результат - графік параболоїда


Спеціально для тих, кому терміново треба графік функції, і вони не хочуть встановлювати всякі важкі графічні бібліотеки, а тим більше їх вивчати. Зображення буде створюватись в файлі, тому якщо ваша мова вміє записувати в файли текст – то ви зможете створити в ній зображення. Хто вже знає що таке SVG – може далі не читати. Кому це справді треба – прошу критикувати. Я можу написати більше і зрозуміліше, якщо сильно попросите. Основне – задавайте питання.

На прикладі Python, але принцип такий же і в інших мовах (недавно я написав функцію на C, яка малювала гістограми. Теж влізла в один екран). Двовимірні графіки нудні, тому перейдемо одразу до трьох вимірів, і спробуємо намалювати параболоїд. Все одно вийде занадто просто.

Загалом, нам навіть не потрібна мова програмування. Для того, щоб намалювати зображення подібне до того що справа, нам досить створити текстовий файл picture.svg (чи з іншою_назвою.svg), і написати в ньому наступний текст:
Прочитати решту цього запису »

Written by bunyk

Квітень 18, 2011 at 23:45

Оприлюднено в Графіка, Кодерство, Розмітка

Tagged with

Маштабована векторна наочність

with 6 comments

Будуємо кола що проходять через дві точки


Єху! Я прорвався в анімації з SVG. Жаль тільки що wordpress, і вікіпедія не дозволяє тут їх викладати, бо вони такі інтерактивні, що й можуть містити шкідливий код. Тому клацніть на картинку.

Картинка пояснює як побудувати коло що проходить через дві точки, знаючи радіус. (Взагалі то пояснює слабо, але перспективу має). Крім того основною метою було – розібратись як створюють анімації в SVG за допомогою JavaScript. Поки що вмію малювати лише відрізки, еліпси та прямокутники.

А ще для SVG є офігенний редактор. svg-edit, який можна вбудувати прямо в веб-сторінку.

Хтось обов’язково мусить зверстати підручник з планіметрії на HTML5. Якби я був міністром освіти, то виділив б на це десь так 20000грн.

Written by bunyk

Квітень 14, 2011 at 11:44

Ойлтибр викликаний гарячкою, не інакше

with 6 comments

Позавчорашній 5-годинний спринт таки дав свої результати. Було дуже весело. Я написав щось на зразок двовимірного Minecraft:


Прочитати решту цього запису »

Written by bunyk

Квітень 14, 2011 at 00:09

Оприлюднено в Нещоденник

Tagged with , , ,