Векторный метод обводки эскиза в Photoshop. Часть 1

Пролог

 

— Вот он, камень преткновения. Мы нашли его! 😉

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

Насколько помню, там был описан какой-то способ раскраски, но не был освещен вопрос обводки контура. Что ж.. Я не кухонный комбайн, чтобы всё сразу; однако попробую. 🙂

И вот, пока мой скромный чум озаряет муза, а олени всё равно ушли на север,- начнем, однако.
— Вы встречали человека, который никогда не видел бы компьютера, но тем не менее заинтересовался им, увидев двоичную таблицу умножения? Я — нет. А ведь именно так нас и учат, начиная со школы. Сначала заставляют учить (дай бог памяти).. забыл, что именно.. 🙁 Но главное — при этом клятвенно заверяют, что где-то там, в светлом будущем, нам это пригодится.

— Я слышу храп с задних рядов? ..Кто-то спросонья упал в костер?? 8(   Хм.. По крайней мере, теперь он проснулся.. — Да не угаснет бамбук в ваших трубках, братья!
..Интеллигентные отличники в моржовых шкурах, недоуменно поблескивая диоптриями, как бы невзначай интересуются: почто открыл кран, да не в тему (забодай тебя олень), и когда будет про обводку!?
— А почему вы так уверены, что она вам нужна? Хотя сами говорите, что еще не пробовали.. ;))

В общем, так: начнем с конца! Считаем, что векторный контур у нас уже есть!! Ура!!! (изобразите хотя бы видимость просветления на Вашем многомудром челе, явите такое чудо..) — А теперь, как завещал Великий Шаман (да не угаснет бамбук и в его трубке вовеки!),- будем искать крайнего. Обычай такой. Исстари повелось, я не виноват.
— Ну, кто там громче всех просил? Какой-то уж очень настойчивый отличник.. ага, вспомнил,- это был J-in-fog.. Хм.. Кажется, он даже проснулся.. :))

————————————————————

1.1 Раздача слонов

Для начала берем test (15Кб). В архиве имеется файл test.psd, который, в свою очередь, содержит рисунок размером 1300 х 1498. — Не верите? Правильно делаете. Рисунка, как такового, там еще нет; и при открытии документа в Фотошопе на рабочем поле совершенно пусто. Дело в том, что растровая информация в этом файле отсутствует, а патчи по умолчанию невидимы.

Да, договоримся сразу: векторные пути я называю патчами. По той причине, что слово «путь» при прочтении не воспринимаю, как термин; а здесь нужен именно термин, то есть четкое словесное обозначение некоей вещи. Значит, один путь я называю «патч», а несколько патчей — «векторная форма», «векторный контур».
Второе: все дальнейшие объяснения касаются нерусифицированного Photoshop 7.
Третье: о закладке Layers и тому подобных вещах я говорил в прошлой статье, причем для нулевого уровня подготовки. Я готов рассказывать настолько подробно, насколько это возможно; однако не готов повторять одно и то же каждый раз. Поэтому сейчас по умолчанию считаю, что действия с растровыми слоями на закладке Layers не вызывают у вас затруднений.
Четвертое: если я называю цвета для обводки или раскраски, то имею в виду свои собственные, таблица которых была приведена в прошлой статье.
— Вроде бы, всё. 🙂

Однако, мы отвлеклись от нашего файла.. — Чтобы разглядеть контур, идем на закладку Paths. Она находится в той же группе, что и Layers. Аналогия между этими закладками состоит в том, что и та, и другая содержит слои; только на Layers они растровые, а на Paths — векторные.

010

На данной иллюстрации показаны значения кнопок, расположенных в нижней части закладки Paths.
Fill path — залить патч
Stroke path — обвести патч
Load path as a selection — взять выделение по патчу
Make work path from selection — создать патч по выделению
Create new path — создать новый векторный слой
Delete path — стереть текущий векторный слой
Примечание: заливка и обводка осуществляются текущим цветом рабочей палитры.

Одно из отличий векторной закладки от растровой заключается в том, что одновременно можно видеть только один слой. При открытии ни один из слоев не выбран, поэтому патчи не видны. Однако, рука так и тянется выбрать слой под названием «Gadget».. 🙂 Выбираем. ..Я вообще-то предупреждал, что кто-то будет крайним.. ;))

За основу векторного контура был взят вот этот эскиз:

gadget_draw3

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

500

А здесь изображена векторная форма, которую можно увидеть в Фотошопе. На мой взгляд, отличается не слишком; я только позволил себе немного изменить кисти рук.

..Кстати, раздел заканчивается, а слонов так и не видно.. Ну их в болото. У нас есть Гаечка, она гораздо лучше! 🙂

1.2 Обводка

Теперь посмотрим, что можно сделать с векторным контуром. Во-первых, его можно автоматически обвести. Если вы собираетесь эту обводку впоследствии заливать по моему способу, то сперва лучше пойти на закладку Layers и создать новый слой — по причине, что при таком способе требуется контур на прозрачном фоне; а сейчас на закладке Layers у нас выбран Background, который прозрачным быть не может. Создаем растровый слой и называем его stroke. В панели инструментов выбираем кисть (Brush) и устанавливаем диаметр 4 пиксела. Через Color Picker задаем цвет #582C1D. Затем идем на закладку Paths, выбираем слой Gadget и щелкаем по второй кнопке слева (Stroke path). — Какой эффект! У меня обвело меньше, чем за секунду. 🙂

015

..Однако, обводка как будто рябит. Не на иллюстрации, а у вас в Фотошопе, если все-таки не поленились открыть предложенный файл. Рябь происходит из-за того, что патч отображается поверх обводки. Для скрытия векторов существует клавиатурная комбинация <Ctrl>+<Shift>+H. Попробуйте. Патч исчез, и первые четыре кнопки внизу закладки Paths стали недоступны. Если набрать указанную комбинацию еще раз, патч снова появится. В дальнейшем об этих действиях я буду говорить «скрыть патч» и «показать патч».

Теперь, если мы отменим предыдущую обводку, то сможем попробовать еще один интересный режим.Устанавливаем кисть диаметром 8 пикселов. Если патч все еще скрыт, надо его показать. На закладке Paths нажимаем вторую кнопку слева (Stroke path) совместно с клавишей <Alt>. Показывается окно настроек для обводки, в котором отмечаем параметр Simulate Pressure.

020

Кстати, для обводки в этом случае должна быть выбрана именно кисть (Brush), поскольку карандаш (Pencil) почему-то игнорирует этот параметр. Кроме того, у последнего инструмента есть еще один неприятный эффект: судя по результату, в отличие от кисти, карандаш обводит с отключенным антиалиасингом (линии получаются явно ступенчатыми). Двух вышеупомянутых причин достаточно, чтобы для обводки я пользовался только кистью.

Нажимаем OK в вызванном ранее окне Stroke Path.. Действительно, интересный эффект: линии стали переменной толщины. Хотя в чистом виде этот метод малоприменим — по причине, что отрисовка имеет множество разрывов.

030

В таком случае я применяю двойную обводку: первый раз более толстой кистью с имитацией давления (включенным параметром Simulate Pressure), второй раз — кистью тоньше, и без давления. Это самый простой способ, рассчитанный на настройки Фотошопа по умолчанию. Однако, можно сделать и умнее.
Для этого выбираем инструмент кисть (Brush) и идем на закладку Brushes.

035

Если на закладке отображается другая картинка, выберите раздел Shape Dynamics (отмечен зеленой стрелкой). В выпадающем меню (подчеркнуто) должен быть выбран пункт Pen Pressure. Далее, нас интересует параметр Minimum Diameter, точнее, его регулятор (отмечен красной стрелкой).
При обводке с имитацией давления, линия в самом толстом месте всегда будет равна диаметру кисти, выбранной для обводки. А параметр Minimum Diameter показывает, какой будет линия в самом тонком месте, в процентах от диаметра той же кисти. Например, при данном параметре, установленном на 50%, будем иметь в самом тонком месте уменьшение толщины линии вдвое. А при установке 1% (как было по умолчанию), в самом тонком месте линия сводилась практически к нулю.
И все-таки метод двойной обводки также имеет право на существование. Параметр Minimum Diameter показывает относительное изменение толщины, а если обводка для разных частей персонажа производилась разными диаметрами кисти, и вас интересует, чтобы линии были не тоньше какого-то абсолютного размера, то в некоторых случаях все-таки придется обводить второй раз — постоянной толщиной, кистью этого самого размера.

..До настоящего момента, на закладке Paths мы экспериментировали со слоем Gadget, который содержит векторную форму целиком. Тем не менее, на этой закладке присутствуют и другие слои. Это части той же самой векторной формы, предназначенные для обводки разным цветом и разной толщиной кисти. Те, которые начинаются с «brown_», предполагают цвет #582C1D; а слои с «blue_» — #5E3652. Цифры в названии слоев означают толщину кисти, используемой для обводки. Как цвета, так и толщины кистей не являются истиной в последней инстанции и представляют собой всего лишь план обводки на мой вкус. На самом деле, сначала этот контур был сделан для личного пользования. И только потом вдруг осенило пыльным мешком, и я сел за статью. 🙂

1.3 Раскраска

1.3.1 Заливка контура

Как ни печально, однако с раскраской собственно по патчам ничего у нас не выйдет. Почему это так, позволят понять несколько простейших опытов. Итак, вот я рисую абстрактный замкнутый контур. Затем выбираю какой-нибудь цвет и на закладке Paths нажимаю первую кнопку слева (Fill path).

040

Ясно.. Заливается без проблем, несмотря на довольно сложную форму.
Теперь пытаюсь проделать то же самое с незамкнутой фигурой.

050

Фотошоп соединяет первую и последнюю точки патча прямой линией, и заливает получившийся контур.
И последний опыт. Что будет, если воображаемая прямая линия между концом и началом патча будет пересекать сам патч?

060

..Как и следовало ожидать, получается абстракция.
И учитывая, что имеющийся у нас векторный контур Гаечки состоит на самом деле из множества патчей, большинство из которых являются незамкнутыми,- предвидится еще более неприглядный результат.
Да что я вам рассказываю.. Попробуйте сами! Выберите на закладке Paths слой Gadget и нажмите кнопку Fill path.
— Странная интерпретация образа, не правда ли? 😉

Однако, не всё так плохо. — В предыдущем разделе мы уже сделали растровую отрисовку на прозрачном фоне! А ведь именно её отсутствие и было тем камнем преткновения, который (по вашим же словам), никак не давал вам начать.. 😉
Другими словами, можно брать эту отрисовку и на ее основе делать залитые рисунки при помощи способа, который я описал в предыдущей статье. Пускай упомянутая метода и отдает самодеятельностью, зато позволяет получить результат любому, кто способен хотя бы добросовестно выполнять работу по пунктам!

При этом лично я придерживаюсь такого порядка действий: сначала на закладке Layers выбираю пустой прозрачный слой. Или создаю его, если такого нет.
Затем перехожу на закладку Paths и по полному векторному контуру (в нашем случае — слой Gadget) делаю вспомогательную отрисовку всех линий кистью диаметром 3 пиксела, постоянной толщиной (параметр Simulate Pressure отключен). Цвет значения не имеет, лишь бы темный.
Затем перехожу обратно на закладку Layers и для всех частей персонажа повторяю следующие действия: по вспомогательной отрисовке беру выделение какой-нибудь части и увеличиваю на 2 пиксела по окружности, после чего получается, что мое выделение проходит практически по линиям патча (точнее, область получается шире на 0.5 пиксела). Затем создаю слой для этой части и по выделению делаю заливку. То же самое для всех частей.
Результатом является то, что на границах между разными цветами имеем их перекрытие в 1 пиксел, что вполне достаточно, чтобы переходы не были заметны. Практически, это технология из предыдущей статьи, немного усовершенствованная для более точного схождения частей на границах между разными цветами.
Перед выделением, параметр Tolerance инструмента Magic Wand устанавливаю 0. Параметр Feather инструмента Lasso tool (на случай, если какие-то области придется добавлять к выделению вручную), тоже ставлю 0.
После всей работы получается практически слитная заливка; если и попадаются небольшие просветы между разными частями, то только в углах. При необходимости, это можно исправить вручную. У меня на ретуширование ушло всего несколько минут, и вот результат (уменьшен в два раза; отрисовка скрыта).

070

Теперь, при скрытой вспомогательной отрисовке, мы можем делать другую,- надлежащими цветами, толщинами кисти, в том числе и с имитацией давления (включенным параметром Simulate Pressure).

Рассмотрим варианты. На первой иллюстрации мы видим отрисовку однородной толщины.

080

А в этом случае — с имитацией давления кисти.

090

Про данный вариант расскажу подробнее. Сначала обвел все векторные слои соответствующими цветами с имитацией давления, кистью рекомендованной толщины (допустим, слои brown_3, brown_4, brown_6 обвел толщиной 3, 4, 6). Параметр Minimum Diameter из раздела Shape Dynamics был по умолчанию (1%). Затем сделал повторную обводку соответствующими цветами, без имитации давления, толщиной 1.
— Пожалуй, получилось тонковато.. Можно попробовать обвести второй раз постоянной толщиной 2, или при первой обводке брать диаметры кистей больше на 1 пиксел.. Либо экспериментировать с параметром Minimum Diameter. В общем, здесь оставляю вам простор для личного исследования.

1.3.2 Работа с палитрами

Напоследок рассмотрим вопрос, связанный с палитрами.
Некоторые могут возразить, что этот вопрос не связан с обводкой.. А по-моему, обводка делается именно в целях раскраски; значит, все-таки связаны. Если же этот довод вам не кажется убедительным, тогда рассматривайте материал вплоть до конца этой части, как дополнение к предыдущей статье. 😉

..Во время первых попыток раскрашивать свои эскизы я подбирал цвета на глаз, и каждый раз они были разными. Потом осенило записывать самые удачные сочетания в текстовый файл в виде троек RGB. Вскоре я перешел на шестнадцатиричные значения цветов, потому что из текстового файла их можно копировать и вставлять в Color Picker за один прием.
Разумеется, я видел закладку Swatches и пользовался ей по минимуму, но до меня все как-то не доходило, что там могут быть другие палитры, кроме стандартной. И тем более, свои собственные. Рискну предположить, что многие из начинающих ведут себя так же.. 🙂

100

Посмотрим на закладку Swatches. У нее всего три кнопки. В нижней части — Create New Swatch и Delete Swatch. Сверху справа есть круглая кнопка с изображением треугольника, которая вызывает меню закладки.
Кнопка Create New Swatch создает новую ячейку с текущим цветом; при нажатии совместно с клавишей <Alt> будет предложено ввести имя для этого цвета. Создать ячейку еще проще, если поместить курсор на рабочее поле закладки в месте, свободном от ячеек (курсор при этом принимает вид ведра), и сделать левый клик. Кнопка Delete Swatch на самом деле не нажимается. На нее можно только перетаскивать ячейки; в таком случае они стираются. То же самое можно сделать и обычным кликом по ячейке совместно с клавишей <Alt> (курсор при этом принимает вид ножниц).
Центральную часть закладки занимает поле, где располагаются квадратики разных цветов. Я называю их «ячейки», а всю группу ячеек — «палитра». При клике на какой-либо ячейке, текущий цвет заменяется на цвет указанной ячейки, а если кликнуть совместно с клавишей <Ctrl>, то в рабочей палитре соответственно изменяется цвет фона.
Названия цветов можно узнать по всплывающим подсказкам, либо перейти в режим закладки Small List (включается из меню закладки). Если всплывающие подсказки не отображаются, их можно включить через главное меню программы: Edit/Preferences/General, где отметить параметр Show Tool Tips.
Если же, кроме всплывающих подсказок, вы не видите даже закладку Swatches.. 8) ..вероятно, вы случайно закрыли соответствующую группу закладок. Чтобы показать их снова, можно из главного меню программы выбрать пункт Window/Workspace/Reset Palette Locations. Этой командой полностью восстановится рабочее пространство Фотошопа по умолчанию. Либо выбрать Window/Swatches. Восстановится только группа закладок, содержащая закладку Swatches.

В этом месте я считаю необходимым прокомментировать ситуацию с русской терминологией. Разными источниками придаются разные значения слову «палитра» применительно к Фотошопу, и единого мнения не наблюдается. Где-то называют этим словом группу закладок (например — Layers, Channels, Paths). Кое-где «палитрами» называют каждую из этих закладок по отдельности, или даже обозначают тем же словом способ кодирования цвета — RGB, CMYK и так далее. В то же время, «палитрой» называют и набор цветов, который мы видим на закладке Swatches.. Неразбериха поистине удручающая.
В общем, я решил рассказывать в той терминологии, которой пользуюсь сам. Layers, Swatches, взятые по отдельности, для меня — «закладки». Их набор, расположенный в одном месте, вроде Layers, Channels, Paths — «группа закладок». Под «палитрой» я понимаю набор образцов цвета на закладке Swatches. Также иногда употребляю словосочетание «цветовой набор», чтобы избежать повторения слов. Под «рабочей палитрой» подразумеваю пару квадратиков на панели инструментов, которые отображают текущий (рабочий) цвет и цвет фона. По щелчку на этой рабочей палитре, кстати, можно вызвать окно Color Picker, которое нам скоро пригодится (на иллюстрации обведена рабочая палитра).

110

..Не утверждаю, что моя терминология — самая правильная, но внести ясность никогда не помешает. 😉

Однако, мы отвлеклись от закладки Swatches. В ее меню, которое вызывается круглой кнопкой с черным треугольником сверху справа закладки, мы видим достаточное количество пунктов, разделенных на группы горизонтальными линиями. В последней группе располагаются имеющиеся в вашем Фотошопе палитры — например, ANPA Colors, DIC Color Guide, FOCOLTONE Colors и так далее. Если нажать на название любой из них, появится окно подтверждения: OK — заменить текущую палитру на указанную, Cancel — отменить действие, Append — добавить цвета из указанной палитры в конец текущей. Если хотите восстановить цветовой набор по умолчанию, достаточно выбрать из меню закладки пункт Reset Swatches. Большим недостатком этой части меню считаю то, что никаким значком не отмечено, какая из палитр является текущей.
Пункт Load Swatches добавит цвета из указанного файла в конец текущей палитры (файлы цветовых наборов Фотошопа имеют расширение .ACO). Save Swatches вызовет окно, где будет предложено сохранить текущее состояние палитры в виде файла под каким-либо именем. Пункт Replace Swatches полностью заменит текущий цветовой набор на палитру из указанного файла.
Имеется еще пара полезных пунктов: Small Thumbnail означает отображение цветового набора в виде ячеек, что мы привыкли видеть по умолчанию. Small List расположит цвета в вертикальной полосе прокрутки вместе с их названиями, в виде списка.

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

lineup

, на котором даны цвета раскраски основных персонажей сериала Chip & Dale Resque Rangers, в виде номеров из палитры PANTONE solid coated.
Использовать этот цветовой набор в исходном виде для раскраски персонажей я не пожелал бы никому: в нем несколько сотен цветов, когда как для одного персонажа нужны обычно меньше десятка из них.
Значит, надо сделать короткую палитру, в которой будут только нужные цвета. Для начала надо убрать все ячейки на рабочем поле закладки Swatches. Групповой операции по стиранию я не нашел, поэтому делаю так: ставлю курсор на левую верхнюю ячейку, нажимаю клавишу <Alt> (курсор принимает вид ножниц), затем кликаю мышкой, пока все ячейки не будут стерты. Автоповтор нажатия здесь не поддерживается.
Таким способом получаем пустое поле. Кстати, собственно файл палитры, которую мы вроде бы стерли, этим действием не портится. Изменения сохранятся только по команде меню закладки SwatchesSave Swatches; да и то, только в том случае, если для сохранения вы выберете имя, совпадающее с именем файла, содержащего текущую палитру. После этого появится стандартный запрос Windows на замену существующего файла. И только после того, как вы подтвердите замену, текущее состояние палитры будет занесено в указанный файл. — Категорически не советую сохранять измененный цветовой набор под именем какой-нибудь стандартной палитры; этим самым вы ее испортите.

Теперь для каждого цвета, заносимого в нашу палитру, повторяем следующее:
1) Вызываем окно Color Picker, выбираем нужный цвет. Можно выбрать его на глаз в окне, где изображен спектр. Можно вводить числовые значения RGB или шестнадцатиричный код, если они вам известны. В случае с палитрой PANTONE solid coated надо в окне Color Picker перейти в режим Custom Colors (кнопка Custom), из выпадающего меню выбрать указанную палитру, после чего ее цвета появятся в вертикальной полосе прокрутки. Оттуда выбрать нужный цвет. Нажимаем OK, после чего выбранный цвет становится текущим.
2) На закладке Swatches нажимаем кнопку Create New Swatch совместно с клавишей <Alt>, вводим имя для нашего цвета (не длиннее 64 символов) и нажимаем OK. Прибавляется одна ячейка в палитре.

120

После заполнения всех необходимых ячеек, палитру надо сохранить командой меню закладки SwatchesSave Swatches. Как я предупреждал, выбирать для файла имя уже существующей палитры следует только в том случае, если это имя вашей собственной палитры, которую вы вызвали, отредактировали и теперь хотите сохранить внесенные в нее изменения (для этого надо сохранить файл под тем же именем). Но никогда не выбирайте для сохранения имена, совпадающие с названиями стандартных палитр Фотошопа, поскольку таким способом вы их лишитесь.
Сохраненную палитру можно вызывать командой меню закладки SwatchesReplace Swatches, либо из списка палитр внизу этого меню (не ищите ее в этом списке сразу: там она появится только после перезапуска Фотошопа).

Теперь, когда вы знаете, как можно сделать свою палитру, вы можете завести их сколько угодно для всех необходимых случаев. И вместо того, чтобы разыскивать цвета в объемистых списках вроде PANTONE solid coated, будете за один клик выбирать их из собственных коротких палитр, сделанных отдельно для каждого персонажа.
Хотя, кое-какая часть работы здесь уже сделана. 😉 В архиве test.rar, который был вам предложен в начале статьи, имеется папка CDRR, во вложенных папках которой есть палитры для всех персонажей, сделанные на основе уже упоминавшегося рисунка Line Up; в том числе и русифицированные. По две палитры на каждого персонажа, кроме Гаечки; в ее папке четыре файла. Кроме палитр Gadget(lineup).aco и Гаечка(lineup).aco там имеется Gadget(Tetarga).aco. Эта палитра сделана со схемы

tetarga_gad_colors

, в которой, как считается, даны цвета из того же lineup, только в виде RGB. Я проверял: соответствие неполное. Хотя бы в единицах параметров R, G, B, но они отличаются. Возможно, в этом есть какой-то сакральный смысл, который я пока не в состоянии постичь.. ;)) ..поэтому даю и эту палитру тоже. Кроме того, в папке есть файл Gadget(Bonev).aco — ну, это понятно, чей. 😉
Чтобы занести эти палитры в Фотошоп, проще всего бросить папку CDRR из архива test.rar в папку вашего Фотошопа Presets\Color Swatches. Например, у меня полный путь к этому месту выглядит так:
C:\Program Files\Adobe\Photoshop 7.0\Presets\Color Swatches
При следующем запуске Фотошопа, все цветовые схемы для персонажей будут доступны в списке палитр из меню закладки Swatches. К слову, еще одним недостатком этого списка (кроме отсутствия информации о текущей палитре) считаю то, что там никак не отображается реальная структурированность палитр по папкам. Будь они вложены хоть в десять папок подряд, однако в меню будут отображаться одномерным списком, в алфавитном порядке. По мне, гораздо удобнее было бы в списке палитр иметь раздел CDRR с раскрывающимися подразделами, однако увы..
Впрочем, пока цветовых наборов немного, этот плоский список не очень напрягает. И надеюсь, что у некоторых в нем появятся и собственные наработки.

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

————————————————————

— Итак, наш скромный сабантуй начался с векторного файла, невзначай предложенного вашему насупленному взору. И если результатом моего безудержного бреда стала хотя бы на 2.5% меньшая насупленность, то я считаю, что выполнил свою задачу ровно настолько же.. 8)
Что можно делать с векторными формами, мы разобрали, изящно обойдясь при этом безо всяких двоичных таблиц умножения. Впрочем, любителей себя потерзать и помучить я успокою: трудности будут! Во второй части статьи.
Еще есть время не открывать ее.. ;)))

 

Bonev — 02.01.2006