Як створити прості 2D ілюстрації для супроводу відповідей з геометрії?


14

У своїй відповіді про Affine Transformations я зробив кілька невеликих ілюстрацій, щоб допомогти пояснити.

Як швидко зробити PNG для завантаження, який виражає геометричну чи математичну ідею?

Це питання було розроблено на підтримку моєї відповіді на постскрипт, але призначене для отримання інших рішень, які загалом можуть принести користь мережі SE. Але для правдивості відповідь повинна посилатися на публікацію, де ця методика фактично використовувалася, а також достатню частину "як", якщо вона передбачає більше, ніж щось очевидне, наприклад "Вибрати експорт з меню".

Є два мета питання тут і тут щодо того, як в рамках цього питання в світлі того старшинства він може встановити для нашого сайту.


2
Я особисто бачу це питання більше на PostScript, ніж на комп’ютерній графіці.
cifz

1
@cifz правильно, це краще підійде до GD.SE. Але це не причина, чому тут не може бути.
joojaa

@citz Я думаю, я бачу, що ти маєш на увазі. Що робити, якщо я знімаю це із сумніву і відкриваю його для тикзу та асимптотики та чого іншого.
luser droog

Я відповідаю тут, щоб показати, що це трохи сумнівно як питання, і відповіді, безумовно, будуть. Може бути , весь цей потік повинен жити в нашій Meta, як це робить на GD.SE . Будь-які думки, @cifz
joojaa

Відповіді:


13

Я використовую різноманітні інструменти в залежності від конкретних потреб моменту. У мене є упередженість щодо безкоштовних інструментів, оскільки я не маю доступу до таких речей, як Illustrator або Mathematica.

Для загальних цілей векторного мистецтва я використовую безкоштовний Inkscape . Він працює на .svg файлах, а також може виводити їх як високоякісні .png або інші формати растрових зображень. Наприклад, ось схема, яку я зробив у Inkscape для пояснення УФ-карти :

Для двовимірних функціональних графіків я часто використовую онлайн-калькулятор графіки Desmos , який має зручну можливість дозволяти вам ділитися графіками в Інтернеті, щоб інші могли їх переглядати та змінювати. Ви також можете створити повзунки, які можна змінювати, щоб грати з параметрами кривої в режимі реального часу. Наприклад, ось налаштована функція різкості .

Для більш складних графічних завдань, які передбачають трохи програмування, я використовую Maxima , безкоштовну систему комп'ютерної алгебри, яка також має функції графіки. Я використовував Maxima для створення графіків у цій відповіді про розмиття Гаусса :

Це було дещо надто складно для Десмоса, оскільки воно передбачало програмне створення кусочного наближення гаусса.

Для дійсно незвичайних завдань графіки, які нічим іншим не справляються , я використовував Python із пакетом svgwrite для програмного генерування діаграм у .svg файли. Потім вони можуть бути зачеплені в Inkscape за бажанням та надані в растрові карти за допомогою Inkscape або ImageMagick. Я використовував цей робочий процес для створення зображень у цій публікації блогу з глибинною точністю , як це:

У цьому випадку я хотів не тільки графікувати функцію, але розміщувати галочки програмно та нерівномірно вздовж осей та графіка, щоб проілюструвати окремі значення буфера глибини.

І нарешті, якщо нічого іншого не вистачає, я використаю Python з numpy та подушкою для відтворення зображень піксель за пікселем. Ось так я створив у цій відповіді зображення шуму Перліна (за допомогою пакету шуму , у цьому випадку).


Натане, ти такий, хто писав про точність глибини? Нічого здорово ... я прочитав цю річ, і вона дуже допомогла! маленький світ: P
Алан Вулф

12

Особисто мій вибір отрути - Adobe Illustrator. Інші додатки, такі як inkscape, Corel Draw, Xara Designer. В крайньому випадку навіть PowerPoint буде працювати. Хоча я особисто не рекомендую PowerPoint через серйозні проблеми з його моделлю даних, навіть жорсткий, можливо, найбільш розгорнутий додаток для малювання у світі.

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

Відмова: Оскільки приклади є моїми і безсоромними самопідтвердженнями, беруть із собою дрібку солі.

Ілюстратор

Перше, що ви повинні зробити в будь-якому додатку для векторного малювання - це включити оснащення сітки . Це зменшує втомливість точного розміщення ліній. Однією з найважливіших причин, які мені не подобається використовувати Inkscape, є неповноцінний спосіб здійснення цієї оснастки. PowerPoint насправді постачається за замовчуванням за допомогою сітки.

Я не дуже задоволений Illustrator, оскільки він не задовольняє всіх моїх потреб. Але жодного програмного забезпечення поки що немає (Майя використовувала для заповнення цієї ніші, але тоді сталася автодеск).

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

  • Ресурс, що показує оснастку, постскрипт та доступ до сценарію Java до ілюстратора та посилання вперед.

Ось кілька прикладів креслень, які я робив по мережі з Illustrator, здебільшого за допомогою потужності оснащення сітки:

Коло марш

Зображення 1 : Одне з багатьох зображень, які я намалював в ілюстраторі на цьому сайті. Примітка: Я досить досвідчений ілюстратор (іноді комерційний), і це надзвичайно просто за моїми стандартами.

Зображення маршів Circle у досить просто зробити. Просто намалюйте випадкову форму, клацнувши навколо. Після цього відключіть оснащення та дозвольте розумним путівникам зробити вашу роботу за вас. Намалюйте лінії до найближчої точки на лінії, зробіть кола до прямої (я видалив напрямні після того, як я був зроблений). Промийте і повторіть. Щоб зайняти свою робочу область, мені знадобилося приблизно 3-5 хвилин, щоб намалювати зображення.

Хвиля продовження

Зображення 2 : GD.SE Продовження хвилі .

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

зображення тетри

Зображення 3 : Іноді легше починати з нуля в постскрипті. Зображення додано до повідомлення на ENG.SE .

Нарешті зображення, яке дійсно простіше зробити, набравши значення в постскрипті. Це досить просто зробити в постскрипті. Я ще робив типографіку в ілюстраторі. Хоча малювати це вручну - це не велика справа, я вважаю за краще не робити, але я зроблю це, якщо мені доведеться робити вирок на очі.

Математика

Математика чудова, якщо ви хочете трохи більше вивчити речі. Єдиним недоліком Mathematica є те, що це НЕ дешево. Але це швидко можна зробити майже все. Я використав Mathematica для деяких своїх фотографій на основі медсестер .

Одна з основних компетенцій Mathematicas полягає в тому, що легко розробляти навіть досить складні зображення без особливих клопотів. Він також може легко анімувати вашу просту картину у вашому редакторі .

Graphics[{
    orig = {
        Table[
            GeometricTransformation[
                Line[{{0, 0}, {50, 0}}],
            RotationTransform[ang]],
            {ang, 0, 3 Pi/2, Pi/2}
        ],
        Line[{{20, 0}, {30, 20}, {40, 0}}]
    },
    Red,
    GeometricTransformation[
        orig,
        RotationTransform[Pi/6]
    ]
}]

Результати такі ж, як і інші. Загортання її всередину таблиці відповідно до результатів:

введіть тут опис зображення

Зображення 4 : Анімацію легко зробити всередині редактора коду за допомогою Mathematica.


4

PostScript + ps2eps + змініть

Для відповіді Affine Transformations я написав дуже невелику програму постскрипту, а потім зберег декілька копій під різними іменами та відредагував кожну, щоб виконати кожне інше завдання: масштабувати, перекладати, обертати. Наприклад, ось основний, ident.psякий нічого не робить для зміни координат між червоним та чорним малюнком. Я зробив червоні лінії трохи більшими і завжди малюю їх першими, тому вони виходять красиво накладеними та видимими (ІМО). Я переглянув ghostscript із командою vi (ex) :!gs %. ( усі вихідні файли )

%!
/axis {
    currentpoint 4 { 
        2 copy moveto
            50 0 lineto
            90 rotate
    } repeat pop pop 
} def 
/shape {
    20 0 moveto
    30 20 lineto
    40 0 lineto
    closepath
} def 

100 100 translate

gsave
% do transform here
currentlinewidth 1.5 mul setlinewidth
1 0 0 setrgbcolor
0 0 moveto axis shape stroke
grestore

0 0 moveto axis shape stroke

showpage

Потім я використовував ps2epsкоманду з psutilsдля обчислення обмежувальних коробок автоматично

$ ps2eps -f *.ps
Input files: ident.ps rotate.ps scale.ps skewx.ps skewy.ps translate.ps
Processing: ident.ps
Calculating Bounding Box...ready. %%BoundingBox: 50 50 150 150
Creating output file ident.eps ... ** Warning **: Weird heading line -- %! -- ready.
Processing: rotate.ps
Calculating Bounding Box...ready. %%BoundingBox: 50 50 150 150
Creating output file rotate.eps ... ** Warning **: Weird heading line -- %! -- ready.
Processing: scale.ps
Calculating Bounding Box...ready. %%BoundingBox: 25 25 175 175
Creating output file scale.eps ... ** Warning **: Weird heading line -- %! -- ready.
Processing: skewx.ps
Calculating Bounding Box...ready. %%BoundingBox: 50 49 150 151
Creating output file skewx.eps ... ** Warning **: Weird heading line -- %! -- ready.
Processing: skewy.ps
Calculating Bounding Box...ready. %%BoundingBox: 49 50 151 150
Creating output file skewy.eps ... ** Warning **: Weird heading line -- %! -- ready.
Processing: translate.ps
Calculating Bounding Box...ready. %%BoundingBox: 50 50 165 165
Creating output file translate.eps ... ** Warning **: Weird heading line -- %! -- ready.

І нарешті використала convertкоманду imagemagick для створення обрізаних PNG-зображень. (Я не думав про швидкий спосіб автоматизації цієї частини. Редагувати: як коментується, це можна зробити mogrify -format png *.eps. Дякую, joojaa!)

$ convert ident.eps ident.png

josh@cadabra ~/affine
$ convert scale.eps scale.png

josh@cadabra ~/affine
$ convert rotate.eps rotate.png

josh@cadabra ~/affine
$ convert skewx.eps skewx.png

josh@cadabra ~/affine
$ convert translate.eps translate.png

josh@cadabra ~/affine
$ convert skewy.eps skewy.png

Який виробляє PNG, готові до завантаження.

$ ls -l *.png
-rw-r--r-- 1 josh None  587 Sep  1 21:16 ident.png
-rw-r--r-- 1 josh None 1431 Sep  1 21:21 rotate.png
-rw-r--r-- 1 josh None  798 Sep  1 21:19 scale.png
-rw-r--r-- 1 josh None 1133 Sep  1 21:22 skewx.png
-rw-r--r-- 1 josh None 1197 Sep  1 21:23 skewy.png
-rw-r--r-- 1 josh None  756 Sep  1 21:23 translate.png


Я дійсно не бачу сенсу генерувати інкапсуляцію з ps2eps, не можете просто ввести заголовок eps у вашому шаблоні. Це робить інструкцію чистішою (і користувачеві потрібно менше залежних). Замість того, щоб конвертувати кожен файл окремо, робітьmogrify -format png *.eps
joojaa

Класно. Я про це не знав mogrify. Що стосується ps2epsчастини, вона автоматично обчислює (і додає) інформацію про поле з обмеженнями. Опустивши цю частину, convert
витворите

4

Я просто використовую Powerpoint для виготовлення таких діаграм, і це чудово працює, як тільки вам комфортно з його основними примітивами. Він підтримує всі прості операції, такі як обертання, переклад тощо, а останні перегляди також мають зрушення та перетворення 3D. Приклади:

введіть тут опис зображення

введіть тут опис зображення

Ось приклад діаграми Powerpoint, яку я зробив для відповіді.

Для більш складних діаграм, особливо в 3D, я іноді використовую Blender з безтіньовими матеріалами. Я можу розробити та показати приклади, якщо це стосується вашого питання.

Схоже, jsfiddle також популярний тут.


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

Готово! Моя відповідь має бути дійсною зараз.
квітня

Відмінно. Видалення моїх попередніх коментарів.
luser droog

4

Не остаточний набір інструментів, який ви можете шукати, а лише додатковий інструмент, який я використовую сам: для 3D-графіки Blender може стати в нагоді. Особливо, якщо ви використовуєте плагін Export_SVG (доступний на веб- сайті http://dl.dropbox.com/u/16486113/Blender/archivos/temp/SVG/export_svg.py та http://blenderartists.org/forum/showthread.php? 282824-SVG-вихід-скрипт )

Це дозволяє отримувати об'єкти Blenders 3d у вигляді векторної графіки в Illustrator або Inkscape. Я вважаю, що це дає мені швидкий початок для створення простих 3d ілюстрацій.

Дозвольте мені вставити приклад. (У цьому прикладі я використовую багато кольорів, але, звичайно, все це може бути зроблено чорно-червоно-білим)

введіть тут опис зображення


напевно, ви маєте на увазі ілюстратора та
чорнильного пейзажу

Я впевнена! Tnx!
Ідеограма

1

Я використовую Powerpoint та різні (дорогі) пакети CAD. Я написав макроси Powerpoint (код VBA), щоб зробити якісь особливі речі, як намалювати керуючі полігони кривих Безьє. Тоді я використовую стандартний інструмент для знімання екрана для зйомки екрана. Ось кілька прикладів:

введіть тут опис зображення

введіть тут опис зображення

введіть тут опис зображення

введіть тут опис зображення

І ще кілька прикладів від Math.SE

Один
два
три
чотири
п'ять


Powerpoint насправді досить дорогий з урахуванням речей. Все добре, адже майстерність малювання походить від вас. Але принаймні tikz, Inkscape, Blrnder та Postcript набагато дешевші, ніж Powerpoint.
joojaa

Я стара, тому час для мене важливіший, ніж гроші. Inkscape - це добре, але немає можливості витрачати час на написання tikz або Postscript коду для створення зображень.
бульба
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.