Рекомендуемое программное обеспечение для рисования фигур?

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

Примечание. Раньше я использовал MS Paint, затем LaTeX.

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

Какая операционная система?
линукс или винда
Под LaTeX вы подразумеваете, что использовали пакет TikZ? И если вы использовали LaTeX, смотрели ли вы также на Asymptote ?
Фигуры, подобные той, что в примере, можно нарисовать в TikZ относительно легко — стоит один раз разобраться. Если вам нужно нарисовать много очень похожих фигур (то есть в одном стиле), я бы порекомендовал заглянуть в TikZ, особенно если вы уже используете LaTeX. Редактировать, примеры: texample.net/tikz/examples/area/computer-science

Ответы (4)

Взгляните на язык DOT и программное обеспечение Graphviz. С его помощью вы сможете создавать такие графики, как ваши и многое другое:

http://www.tonyballantyne.com/graphs.html — начните читать с раздела 5

https://en.wikipedia.org/wiki/DOT_%28graph_description_language%29

http://www.graphviz.org/Documentation/dotguide.pdf

Пример структуры:

digraph structs {
    node[shape=record]
    struct1 [label="<f0> left|<f1> mid\ dle|<f2> right"];
    struct2 [label="{<f0> one|<f1> two\n\n\n}" shape=Mrecord];
    struct3 [label="hello\nworld |{ b |{c|<here> d|e}| f}| g | h"];
    struct1:f1 -> struct2:f0;
    struct1:f0 -> struct3:f1;
}

Вынесено:

Приведенная выше структура орграфа

После того, как вы создадите какой-либо объект на языке DOT, вы можете преобразовать его в изображение:

dot -Tpng input.dot > output.png
Я поддерживаю это. Дополнительные детали (Томаш, вы можете включить их в свой ответ, см. здесь по какой-то причине ; вы можете, например, включить один из примеров из вашей второй ссылки) включают простое обслуживание ваших «графов» и даже возможности сценариев: эти «точечные файлы " представляют собой обычный текст.

В качестве альтернативы текстовым инструментам, таким как graphvizупомянутые asymptoteвыше, вы можете использовать программу векторного рисования Inkscape .

С его помощью вы можете рисовать практически все, а поскольку он основан на векторах, рисунки масштабируются и редактируются, в отличие от рисунков, сделанных в paint.

Некоторые из приведенных выше ответов сосредоточены на описании фигур текстом, а затем на их визуализации. Это работает для некоторых людей, однако существует множество других опций, которые могут сделать это визуально, например, в специальных программах для рисования. Поэтому я просто подумал, что упомяну два из них, которые я использовал для разных рисунков в последнее время:

  • draw.io — онлайн-программа для рисования, но также доступна через приложение Chrome как отдельная программа. Он бесплатный и имеет множество библиотек, позволяющих легко рисовать различные фигуры, связанные с программным обеспечением. Разрешает хранение на Google Диске, One Drive, DropBox, локальном устройстве или в браузере. Также есть хорошие возможности импорта/экспорта.
  • yEd — Редактор графиков. Возможно, это скорее автономный редактор диаграмм/графиков, а не общий редактор рисунков, но я думаю, что его следует упомянуть, так как он имеет некоторые изящные функции, связанные с перестановкой узлов и соединений, и делает довольно много. несколько типов диаграмм, необходимых при построении связанных с программным обеспечением рисунков/диаграмм/... . Он позволяет импортировать/экспортировать различные типы файлов, включая файлы graphml (которые могут обновляться автоматически или вручную).

Я использую Processing , когда хочу нарисовать специальную фигуру. Он полностью ориентирован на создание визуального контента, я думаю, что это самый простой язык программирования и API, которые я когда-либо использовал, и работать с ним одно удовольствие. В то же время я понимаю, что большинство людей не захотят писать компьютерную программу для рисования!

Есть важное отличие от DOT: DOT — это декларативный язык — вы описываете то , что хотите, а компьютер выясняет, как это нарисовать для вас. Обработка — это императивный язык — вы описываете , как вы хотите, чтобы ваша фигура была нарисована. Я не говорю, что один лучше другого, просто между ними есть существенная разница в стиле.

Я заметил общий знаменатель во многих технологиях, упомянутых на этой странице, а именно SVG : DOT, Inkscape и LaTeX могут выводить как SVG. Inkscape и Processing могут читать SVG. Поэтому может быть полезно подумать о том, с помощью каких инструментов вы создаете свой SVG, а не с помощью каких инструментов вы рисуете свою фигуру?