Как рисовать деревья диджитал

Жемчужины функционального программирования: рисуем деревья

В этой статье я собираюсь поведать читателям о рисовании деревьев. Нет, не тех деревьев, которые растут из почвы и в которых селятся белки. Сегодня мы будем визуализировать деревья как структуры данных. Данная статья написана по мотивам статьи Andrew Kennedy «Functional Pearls: Drawing Trees» из журнала Journal of Functional Programming, 6(3): 527-534, Cambridge University Press, May 1996 (электронная версия статьи тут), и является, в некотором роде, её переводом.

В оригинале статья написана на английском и использует реализацию на Standart ML. Откровенно говоря, я просто украл всё из вышеупомянутой статьи, английский перевёл на русский (что-то своими словами), Standart ML перевёл на Erlang, что-то выкинул (больше), что-то добавил (меньше). Примеры кода будут даваться как на оригинальном Standart ML, так и на Erlang для того, чтобы любопытный читатель мог узреть разницу.

Зачем это надо

Статья меня сразу заинтересовала, и мне захотелось получить готовую программу для подобной визуализации. Нет, не для какого-то полезного пользования, а лишь из-за желания получить такой же вывод, что и в статье. Попутно можно было поиграться с Erlang и познакомиться с синтаксисом незнакомого мне Standart ML.

Проблема и решение

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

Пример для 3 правила:
Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Пример для 4 правила:
Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Проблему представления решаем следующим образом. Во-первых, рисуем все дочерние узлы так, чтобы не нарушить ни одно из перечисленных правил. Подгоняем их вместе без изменения их формы (иначе нарушим правило 4) так, чтобы не нарушить правила 1 и 3. И, наконец, центрируем родительский узел относительно дочерних узлов и завершаем обработку.
Критической операцией является подгонка поддеревьев. У каждого поддерева есть пространство — пустая зона вокруг дерева. Так как форма поддеревьев не должна меняться, их пространства подгоняются так плотно, насколько это возможно. К сожалению, конечная позиция поддеревьев в этом случае будет зависеть от порядка, в котором мы производим подгонку. Пример двух различных подгонок одинаковых пространств:
Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал
Мы можем подгонять поддеревья либо влево, либо вправо, обходя их в соответствующем направлении. Чтобы не нарушать правило 3, мы будем делать оба действия, а результатом будет среднее арифметическое этих двух обходов.

Представление дерева

В оригинале для представления деревьев пользуются полиморфизмом ML и описывают данные так:

Это означает, что узел состоит из значения (тип ’a) и списка дочерних деревьев. В оригинале алгоритм принимает на вход деревья типа ’a Tree и возвращает позиционированные деревья типа (’a*real) Tree. Здесь второй элемент хранит горизонтальную позицию узла относительно родительского узла. Так как о полиморфизме в Erlang мне ничего не известно, то на нём тип данных для узла один, и он уже содержит горизонтальную позицию:

Так как мы решили использовать относительную позицию узла, то операция смещения узла может быть выполнена за константное время:

Представление пространства

Пространство дерева представляется списком пар на ML и просто парой на Erlang:

Компоненты пар, соответственно, содержат левую и правую границу пространства. Первая пара в списке соответствует корню дерева. Важно упомянуть, что в отличие от представления дерева, позиции пространства абсолютные.

Функция для горизонтального перемещения пространства будет выглядеть так:

В версии на Erlang читатель наверняка заметил странное использование кортежей в аргументах функции. Такой стиль будет использоваться во многих последующих функциях для предоставления удобства lists:zip.

Также нам нужно объединять два непересекающихся пространства, заполняя дыру между ними. Это делается путём взятия координаты левой позиции первого пространства и координаты правой позиции второго пространства:

Автор оригинальной статьи обращает наше внимание на то, как обрабатываются списки пространств разной глубины. На Erlang оно выглядит так:

Эта операция может быть расширена на список пространств следующим образом:

От себя прошу обратить особое, пристальное внимание на вариант на Erlang. В первый аргумент свёртки — в лямба-функцию — передаётся два аргумента: Elem, Acc. Однако в merge_extent они передаются в обратном порядке: Acc, Elem. Когда я передирал код на Erlang, то по невнимательности этого не заметил, и сделал порядок таким же. Как следствие, объединение пространств работало местами неправильно, и вывод был кривоват в некоторых участках дерева.

Чтобы лучше понять причину неправильной работы, рассмотрим, что будет, если на вход этой функции (неправильный вариант):

подаются такие значения:

Когда аргументы в merge_extent передавались в таком же порядке, как и на вход лямбы, я наблюдал следующий отладочный вывод:

Как видим, мы получили странное пространство , где левая граница находится справа от правой. Причину легко увидеть, если посмотреть на функцию merge_extent. Впрочем, если не трогать порядок аргументов, то этот «неправильный» вариант можно сделать правильным, заменив левую свёртку на правую: заменив foldl на foldr.

Странно, но автор в своей статье ниже отмечает, что: «We could have used a left-associating version of fold instead because merge is associative» («мы могли бы использовать левоассоциативную свёртку, потому что функция merge ассоциативна»). Может я чего-то не понял, но на мой взгляд это ложь и провокация. Прошу меня поправить, если я что-то упустил.

Пример использования функции merge_extent_list представлен на рисунке:
Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Подгонка пространств

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

В оригинальной статье минимальным расстоянием является 1.0, а я использовал константу:

Теперь расширим эту функцию до списка пространств. Будем рассчитывать позиции для каждого из них предполагая, что самое левое имеет нулевую позицию. Функция работает за счёт накапливания результирующего пространства, поочерёдно подгоняя его к очередному пространству. Результат работы функции асимметричен, поскольку обход списка происходит слева направо.

Обратный эффект получается в следующей функции, рассчитывающей позиции относительно самого правого пространства, чья позиция равна нулю. Здесь rev — реверсирование списка, а

Однако последнюю функцию можно реализовать и иначе. fitlistr можно определить через fitlistl используя композицию функций.

Наконец, чтобы достигнуть симметричности в отображении дерева, мы рассчитываем позиции обоими способами и берём среднее от их результатов.

Составление дерева

Теперь пора собрать все компоненты воедино и написать функцию, которая принимает на вход дерево с метками в узлах и выдаёт такое же дерево, но с координатами для каждого узла. Корень дерева имеет нулевую позицию.

Вот как оно работает: сначала рекурсивно составляются все деревья. В результате получается список пар (tree, extent), к которому мы применяем unzip и получаем два списка. Корни всех поддеревьев имеют нулевую позицию. Далее мы подгоняем пространства функцией fillist (fit_extent_list), получая список смещений в positions. Затем смещаем каждое поддерево в trees на соответствующее ему смещение из positions и получаем ptrees. Делаем то же самое для пространств и получаем pextents. В завершение мы рассчитываем результирующее пространство и дерево с корнем в нулевой позиции.

Алгоритмическая сложность

Сложность представленного алгоритма составляет O(n²) в худшем случае, где n — число узлов в дереве. К счастью, можно переписать программу для достижения линейной сложности, но с некоторой потерей ясности кода. Неэффективность получается из-за представления пространств. Перемещение дерева требует константного времени в силу относительности координат, а перемещение пространства имеет линейную сложность в силу использования абсолютных координат. Использование относительных координат позволит уменьшить сложность mergelist (merge_extent_list) с квадратичной до линейной. К сожалению, функции fit (fit_extent) и merge (merge_extent) станут менее элегантными.

Отрисовка дерева

В оригинальной статье графическое представление дерева внезапно появляется без какого-либо кода, его генерирующего. Поэтому от себя я добавлю пример такого кода на Erlang.

В этой функции сначала рисуются соединительные линии между узлами, затем текст меток узлов, и, наконец, операция повторяется на каждом из дочерних узлов.

Создание тестового дерева

Для полноты описания приведу код, который создаёт тестовое дерево:

Графический вывод

Вот что получилось у автора статьи:
Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Вот что получилось у меня:
Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Доводка напильником

Очень хотелось в метках узлов писать не один символ, а слово. К счастью, это легко решается. В функции design_tree надо поправить создание пространств с учётом ширины текста метки узла: второй аргумент make_extent(0, 0) заменить на что-то из реального мира. Так как я не нашёл функций для получения ширины текста в gs, было решено сделать по-простому: умножать число букв в метке на некий коэффициент. Для этого введём функцию:

И будем использовать эту функцию при получении результирующего дерева. design_tree примет вид:

Протестируем. Для входного дерева:

Выводы

Лично мне код на ML нравится больше, чем то, что вышло у меня. Код автора статьи более изящный, элегантный и намного более декларативный, но последнее, скорее, относится к возможностям языка.

Полного кода программы автора не имею, поэтому привожу только свой (копия тут):

Источник

Рисуем Дерево

Russian (Pусский) translation by Anna K (you can also view the original English article)

Деревья – это прекрасное воплощение богатства и разнообразия природы. Они могут жить очень долго; возраст самого древнего дерева, когда-либо обнаруженное, составляет приблизительно 5000 лет. Неудивительно, что художников всех уровней квалификации привлекают деревья, в желании передать их обаяние и разнообразие.

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

Давайте окунёмся в мир природы и получим удовольствие!

Возможно, вас также заинтересуют следующие уроки по рисованию деревьев и листьев:

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Что вам понадобится

Чтобы завершить этот урок, вам могут понадобится следующие инструменты:

1. Рисуем Текстуру Коры

Шаг 1

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

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

Давайте нарисуем всего лишь образец коры дерева крупным планом; мы сосредоточимся на её структуре и деталях. С помощью карандаша HB, нарисуйте небольшой прямоугольник, а затем заполните его линиями, которые имитируют узор коры.

Не переусердствуйте с этим узором на ранних стадиях; просто нарисуйте что-то похожее на нестандартные ромбы.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 2

Добавьте больше деталей к рисунку с помощью карандаша HB. Отдельные участки с параллельной штриховкой помогут создать ощущение трёхмерной поверхности.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 3

С помощью карандаша 3B, затемните границы между участками коры. Вы также можете использовать точки, чтобы сделать текстуру более интересной.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 4

С помощью карандаша 3B, уменьшите контраст, покрывая образец слоем мягкой, гладкой штриховки. Далее, ещё раз акцентируйте тени. Наш образец завершён!

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 5

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

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 6

С помощью карандаша HB, добавьте отдельные тени на мох и кору.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 7

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

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 8

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

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

2. Рисуем Ветвь

Шаг 1

Ветви и веточки могут быть различной формы и размеров; поскольку ветви могут быть почти горизонтальными, вертикальными или диагональными, у большинства деревьев ветви диагональные и направлены вверх.

Давайте нарисуем стандартную ветвь; выделите базовую линию карандашом HB. Также полезно отметить место, где ветка соединяется со стволом.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 2

Нарисуйте форму ветви. Помните, что она должна иметь трёхмерную форму с круглым основанием.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 3

Удалите вспомогательные линии, а затем доработайте контур ветви.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 4

Добавьте небольшие веточки. Не бойтесь добавить столько веточек, сколько вы захотите, они должны быть разнообразными.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 5

Добавьте мелкие веточки.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 6

Нарисуйте листья; они ловят световую энергию и превращают её в сахара путем фотосинтеза, обеспечивая пищу для роста и развития дерева.

Убедитесь, чтобы листья на рисунке были разных размеров и имели разное направление. Обычно мы не видим каждый листик как отдельный элемент, но ради нашего исследования, давайте добавим штрих стилизованности.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 7

Добавьте длинные линии и группы штриховки, имитируя текстуру коры. Это так здорово, что мы уже знаем, как нарисовать кору, не так ли?

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 8

С помощью карандаша 3B, затемните боковые стороны ветви, чтобы сделать её трёхмерной. Также заполните пространство вокруг листьев группами штриховки, чтобы создать ощущение глубины.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

3. Рисуем Дерево

Шаг 1

Итак, мы готовы нарисовать полностью дерево. Отметьте основание дерева, а затем добавьте базовую линию.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 2

Дерево обычно имеет широкое основание и тонкую верхушку. Воссоздайте фигуру дерева, выделяя сегменты фигуры и соединяя их вместе с помощью карандашного контура.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 3

Добавьте фигуры ветвей, они отличаются по размеру и по направлению.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 4

Удалите вспомогательные линии, а затем усовершенствуйте контур. Когда дело доходит до природных объектов, то незначительные дефекты становятся чарующими!

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 5

Добавьте небольшие ветки и веточки, основываясь на принципах, которые мы наблюдали в предыдущей части урока.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 6

Поскольку мы рисуем полностью дерево, то нет смысла выделять каждый его отдельный листочек. Добавьте примерные формы листьев только на нижние ветви, а также на обрамление кроны дерева.

Важно сохранить поверхностность форм; слишком много деталей заставят ваш рисунок выглядеть странно и неестественно.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 7

С помощью карандаша HB, заполните область кроны дерева с помощью каракулей, оставляя некоторые участки светлее, при этом затемняя нижнюю часть кроны.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 8

Пришло время поработать над стволом; он обычно темнее, чем листва, поэтому наличие правильного контраста жизненно важно.

С помощью карандаша HB, нарисуйте примерный узор коры, а также выделите основные тени. Обратите внимание, что мы видим эту картину на расстоянии, поэтому добавление множества деталей здесь не поможет.

Я также решила внести милое дополнение: дупло, из которого выглядывает сова.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 9

С помощью карандаша 3B, усильте контрастность рисунка. Не стесняйтесь, сделать боковые стороны дерева, а также видимые участки ветвей действительно тёмными.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 10

С помощью карандаша 3B, затемните листву, акцентируя нижнюю часть кроны. Целью здесь является достижение контрастного, но гармоничного вида.

Завершите рисунок, добавьте немного травы рядом с основанием дерева.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

4. Рисуем Пень

Шаг 1

С помощью карандаша HB, нарисуйте базовую линию и основание пня.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 2

Добавьте верхнюю часть пня. Базовая линия может быть полезным инструментом для ориентира, но вам не нужно делать эту форму безупречной.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 3

Выделите текстуру коры, используя карандаш HB.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 4

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

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 5

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

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 6

Затемните боковые стороны пня, используя карандаш 3B. Пришло время добавить детали к коре, например, маленькие островки мха, а также разнообразить структуру колец роста.

Верхняя поверхность пня может продемонстрировать интересные переходы от более тёмных тонов к светлым тонам от центра к внешнему контуру (при этом, создаётся слегка более тёмная область рядом с корой).

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Шаг 7

Рисунок пня завершён, но он не выглядит правдоподобным. Поэтому, я добавила листья травы и папоротника, чтобы создать приятную природную атмосферу.

Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджиталКак рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал Как рисовать деревья диджитал. Смотреть фото Как рисовать деревья диджитал. Смотреть картинку Как рисовать деревья диджитал. Картинка про Как рисовать деревья диджитал. Фото Как рисовать деревья диджитал

Наш Рисунок Завершён

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

Пусть ваше творческое путешествие будет плодотворным и наполнено весельем!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *