Создание текстуры из фотографий

При создании фона для своих работ, приходится перелопачивать половину Интернета в поисках нужной текстуры. Если же вам необходимо выставить ее на всеобщее обозрение, встает вопрос об авторском праве. И хотя на многих сайтах в сети пишут «Скачать бесплатно», использовать такую продукцию можно только лишь в личных целях, да и то не всегда.

Как же быть? Все очень и очень просто. У многих из пользователей ПК есть цифровые фотокамеры, в крайнем случае подойдет и мобильный телефон. Достаточно сфотографировать нужный фон и обработать в GIMP‘е для получения бесшовной текстуры.

К примеру, есть такое фото:

GIMP - Создание текстуры

Естественно, разрешение оригинала больше, чем на данном изображении. Но это не принципиально.

(далее…)

Двухколоночный дизайн для WordPress. ч.3

Давно я уже не возвращался к теме дизайна для WordPress’а. Сегодня будет заключительная часть по созданию макета. Блог практически готов, еще пара взмахов кистью и можно «запускать в тираж».

Располагаем элементы

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

(далее…)

Часы для Conky. Доводим до ума

Это уже пятая статья про часы для Conky, а результат еще далек от совершенства. Понятие законченности чего-либо у всех разная. Для меня часы уже готовы – ведь идея была осуществлена, а для кого-то – это сырой материал. Что ж, попробую довести его «до ума». Не обещаю, что будет красиво, но что-то будет обязательно (:

Часы для Conky

С первого взгляда можно сказать, что стрелкам не хватает объема. Это очень легко поправить. Что такое тень на таком, относительно плоском изображении? Те же самые стрелки с небольшой прозрачностью и сдвинутые по осям X и Y. От этого и будем отталкиваться.

(далее…)

Вписываем стрелки в часы

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

Часы Conky

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

(далее…)

Часы на обоях. Продолжаем рисовать

А продолжим мы рисовать стрелки. Без часовой и минутной это не часы, а какой-то таймер получился. За основу возьмем код секундной стрелки. Расстояние от центра до определенной точки на стрелке измеряется параметром «nRadius». Ширину же можно увеличить, изменяя угол (по умолчанию – 270).

--минутная стрелка

nRadius = 250

nTheta = math.rad(270+tonumber(os.date('%M'))*6)

nX = nXCenter+(nRadius-10)*math.cos(nTheta)

nY = nYCenter+(nRadius-10)*math.sin(nTheta)

Так как рисуем симметричные стрелки, то менять угол (270) для пары координат (например, nXa, nYa; nXb, nYb) нужно на одинаковое число. Если для точки «a» уменьшаем угол на пять градусов, то для точки «b» – увеличиваем.

(далее…)

Часы на обоях с помощью Conky. Рисуем стрелку

Напомню, на чем мы остановились в прошлой статье о часах для Conky: подобрали подходящие обои для часов, убрали все ненужное, создали файлы «.conkyrc» и «ConkyClock.lua» и даже заставили двигаться секундную стрелку. Правда, выглядит она довольно таки убого (:

Часы с помощью Conky

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

(далее…)

Искажая пространство. Матрица

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

В связке Cairo+Lua матрица создается следующим образом:

local matrix = cairo_matrix_t:create()

Это означает, что оперировать матрицей мы будем с помощью переменной «matrix» (любое название). Задаем параметры матрицы:

cairo_matrix_init (matrix, xx, yx, xy, yy, x0, y0)

(далее…)