Архив метки: графика

Картины на полях

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

И все же существует человек, который создает на полях не только круги и орнаменты, а настоящие цветные картины, что особенно сложно, ведь надо сажать разные культуры. Зовут этого человека Стен Херд (Stan Herd). Вот ссылка на его персональный сайт . Сайт на английском языке и не очень хорошо сделан, в очень широкую колонку, которая не умещается на экране. Как я понял, многие картины были созданы в Бразилии (Сан Пауло). И конечно не за одну ночь. Но все это можно сфотографировать с самолета или даже снять видео.

Вот пример двух произведений, которые показаны на другом сайте

Клик на иконке покажет картинку в ее натуральную величину. И это будет почище, чем круги. Тут нужен трактор и специальная система посадок. Сейчас также очень распространилась живопись мелом на асфальте и даже не только мелом. Рисуют прямо 3D картины. Но на полях все таки совсем другие масштабы. Я решил проверить насколько массово такое искусство и сделал запрос в Яндексе на слова «картины на поле». Оказалось что японцы в одной деревне уже много лет рисуют картины на рисовых полях. Вот пример как это выглядит

А вот еще один пример. Это снова Стен Херд. Вот что написано про репродукцию картины Ван Гога на сайте. «64-летний художник Стэн Херд из Миннесоты превратил поле в картину Ван Гога «Оливковые деревья». На это у него ушло полгода и почти пять квадратных километров земли. Работу спонсировал Институт искусств Миннеаполиса, и ее видно из аэропорта Миннеаполиса.» Вот как это выглядит с большой высоты.

Удивительно как люди находят себе разнообразные инструменты для творчества.

Новая версия программы vkACL

Как обычно, сначала про фотку. Это моя фотография, сделанная в прошлом году в Болгарии. Она стоит в альбоме «Болгария-2014» среди других моих фотографий на сайте Яндекс-фотки. Попасть туда можно с моего сайта (раздел Фотографии). Адрес моего сайта указан в левом верхнем углу данного блога. Там квартира в отеле, где мы живем, находится на 5 этаже дома, который стоит на вершине горы на берегу моря. И иногда, прямо из окна открываются интересные композиции, некоторые из которых я фотографирую. В этом году тоже есть похожие фотографии, но пока никак не хватает времени их обработать. Чтобы увидеть реальный размер картинки надо на ней кликнуть.

А теперь по сути вопроса. Сегодня я сделал важное дело. Выставил на сайт новую версию программы vkACL.jar. У программы есть свой сайт и там все написано. А здесь я только сообщаю о том, что надо туда зайти и скачать новую версию. В новой версии ничего кардинально нового нет, я просто постоянно исправлял и дополнял программу по мелочам и вот таких мелочей накопилось много. Поэтому я поменял версию программы и заново ее закачал, добавив все изменения.

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

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

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

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

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

Описание программы Gnuplot

Я все-таки собрался, выбрал время и написал первую версию описания программы Gnuplot под Виндовс. Прежде всего надо было выбрать формат статьи. Я решил, что лучше всего подойдет вэб страница. Более того, что у меня есть программа для ее быстрого написания, а именно, модуль «TXT > HTM» в программе vkUtility . Все свои последние сайты в интернет я пишу с ее помощью. Это реально сокращает время написания страницы для интернета, хотя иногда все же приходится исправлять ошибки форматирования. Все таки правила написания входного текста для программы очень жесткие, и малейшее отклонение приводит к ошибкам. Использование программы позволяет лучше понять чего еще не хватает, и что нужно для этого сделать.

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

Научная графика

В математике и в науке (в физике, например) существует проблема изображения трехмерных объектов, заданных системой точек в трехмерном пространстве. Очень часто надо изобразить трехмерную поверхность, заданную уравнением z(x,y) как решение уравнения f(x,y,z)=const. Если поверхность однозначная, то наиболее распространенный прием — это рисование карты разной степени серого цвета в прямоугольнике. При этом отдельно каждой степени серого ставится в соответствие координата z, либо любая другая функция. И вообще вместо x, y и z могут быть самые разные параметры: температура, плотность и так далее.

Черно-белые карты наиболее точно показывают область аргументов. Но в старые времена существовал и другой способ, а именно, контурные карты. Такие карты часто рисовали в учебниках географии, изображая высоты гор и глубины океанов. Контур соответствовал решению уравнения z(x,y)=const. При этом на разных линиях ставились значения константы. Все эти методы и сейчас существуют.

А есть и другие методы, когда рисовалась аксонометрическая проекция объекта в виде сетки линий z(x) при постоянном y и z(y) при постоянном x. При этом для наглядности оставлялись только видимые части линий, а невидимые, то есть за горизонтом, убирались. Хотя такой метод более наглядный, он скрывает часть информации. Поэтому приходилось показывать несколько таких картинок, а то и вообще вращать объект относительно вертикальной оси.

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

Пришлось мне срочно, буквально за один день, переписать свою программу рисования и ввести цветовую палитру. Я решил сделать палитру типа (синее, красное, белое), что имело аналог в природе, а именно синий океан с его глубинами, красная глина на земле и белые шапки высоких гор. Рисунок поставили на обложку, а у меня в программе появился цвет, хотя я, по-прежнему, не любил его использовать. И вчера я понял, что был не прав. Я вычислил новый результат в очередной задаче и вдруг увидел, что черно-белая карта дает мало информации, и что цветные карты более наглядны, так как позволяют более наглядно показать области разной высоты.

Более того, я понял, что палитра должна содержать больше цветов, тогда получается более высокая детализация. И я ввел еще одну палитру типа (черное, синее, зеленое, красное, белое). На рисунке слева показана картинка, которая получилась. Картинка рассчитана на весь экран, поэтому при уменьшении числа и текст стали маленькие. Но если кликнуть на картинке, то можно увидеть оригинал в полный размер в отдельном окне.

Затем я сделал следующий шаг, который давно собирался сделать. Я попробовал нарисовать аксонометрическую цветную проекцию с помощью программы Gnuplot. Я уже писал вот тут, что недавно узнал о существовании этой программы под Виндовс, причем очень свежей версии. Я решил нарисовать этот же массив данных, но с помощью своей программы на языке ACL. Начать с того, что у меня была матрица в бинарном виде размером 911*702 точек. Для аксонометрической проекции это много. Я выделил из нее более рыхлую матрицу размером 228*233 точек.

Далее, для Gnuplot необходимо в эту матрицу также записать значения аргументов по обеим осям, что увеличивает ее размер до 229*234 точки. И самое сложное — это то, что моя программа записывает бинарные файлы так как в Юникс и Линукс, то есть старшие байты вперед, а Gnuplot для Виндовс читает бинарные файлы как в Виндовс, то есть младшие байты вперед. То есть мне в бинарном файле было необходимо поменять порядок каждых четырех байтов. Первоначально мне эта задача казалась сложной, но потом я обнаружил, что на ACL она решается в три команды, которые записываются на одной строке.

После того, как массив был готов, осталось записать программу рисунка на языке Gnuplot в файл, записать командный файл и запустить его. В конце концов, программа Gnuplot сделал рисунок как бы в процессе выполнения моей ACL программы. В этом отличие программ, создаваемых в системе Юникс от программ для Виндовс. Система Юникс (Линукс) рассчитана на программистов, а система Виндовс — на неграмотных людей, которые покупают компьютер только для того, чтобы играть в игры, или общаться по скайпу.

Я читал, что некоторые считают систему команд Gnuplot языком программирования. Это, на мой взгляд, не совсем так, потому что в этой системе не все можно сделать. Это просто система описания рисунка. Но эта система достаточно развита, хотя позволяет делать рисунок и одной командой, когда все устанавливается по умолчанию. Вместе с тем, мне показалось, что не всем можно управлять и это тоже минус. Но в любом случае задание форматирования рисунка текстом — это намного лучше, чем тыкать в многочисленные окна и кнопки, как это любят пользователи Виндовс. К сожалению на такую систему соблазняются даже вполне умные люди, даже академики, которые по каким то причинам не желают изучать программирование.

Важно знать, что программа Gnuplot официально бесплатная, имеет хорошее описание (правда на английском языке) и даже большой набор демонстрационных примеров. Здесь я покажу только два из них. Так на рисунке слева показаны трехмерные поверхности, заданные параметрически, в виде двух торов, взаимно проникающих один в другой. Сами поверхности задаются формулами. Рисование объектов по формулам имеет только учебные и демонстрационные цели, потому что реальные результаты получаются в результате решения много более сложных уравнений.

С другой стороны, программа позволяет рисовать цветные карты, контуры, аксономертические проекции как отдельно, так и вместе. Более того, контуры можно рисовать даже на поверхности. На рисунке слева это как раз и демонстрируется. Я для себя таких сложных программ не делал, потому что не видел в этом пользы. Если честно, то такие сложные рисунки хороши в презентациях, а не в публикациях. Но как говорится, была бы возможность, а применение найдется. Вообще-то в Gnuplot есть возможность записывать рисунки в файл, но я сам просто копирую в файл часть экрана по своей программе vkSM.jar. Так иногда проще и быстрее.

GNUPLOT для Виндовс

  Мой Сайт     Моя Проза     Мои Фотки  
  Фото-шоу     Сделай Сайт  

Я начинал свою работу на персональных компьютерах очень давно, под чутким руководством системы DOS от фирмы Майкрософт. А потом эта система как-то плавно перешла в Виндовс, так я в Виндовс и остался. Но иногда мне приходилось работать на Западе, где в моде были рабочие станции в системе Юникс. И я давно знаю, что юниксоиды, а потом и линуксоиды все научные графики рисуют с помощью программы Gnuplot. Эта программа в полном соответствии с принципами системы Юникс имеет свой язык программирования, а также возможность исполнять команды, задаваемые с командной строки.

Но мне ничего этого уже давно не надо, потому что у меня есть свой собственный язык программирования ACL, и своя программа, которая его выполняет и тоже много чего умеет, а точнее все умеет, что мне надо. Я показал выше кнопки, по которым можно выйти на мои наиболее интересные сайты, в том числе и на мой основной сайт, где есть раздел Программы. А большинство русских пользователей Виндовс использует разные пакеты, среди которых наиболее массовым стала программа Origin. Есть еще большой пакет Matlab, который очень популярен среди молодежи. Программы эти не бесплатные, но в России мало кто покупает программы, есть черные сайты, где все можно получить бесплатно.

Однако, лихие 90-е годы кончились, пора все же пользоваться бесплатными программами. И вот неожиданно я узнал, что программа Gnuplot существует также и для Виндовс. Я сделал поиск и действительно нашел программу вот тут. Я ее скачал и установил. Интересно, что последняя версия программы появилась в июне 2015 года. Программа замечательно работает. Есть не только простой терминал, но и красивый оконный интерфейс с меню, через которое можно вводить самые массовые команды. Описание языка программирования, правда, написано только на английском языке, но в интернете можно найти кое-какие описания и на русском языке. Например, статью Нечаева. Есть и другие тексты.

Пожалуй, наиболее удобным вариантом является использование командных файлов. Если им дать расширение .gp , то программа запускается автоматически при клике на таком файле и сразу показывает график. Важно, что такой файл можно поставить в одну папку с файлами данных и тогда даже не надо определять рабочую папку. Она сама устанавливается автоматически на папку командного файла. Язык программирования у программы относительно простой и его легко выучить, а возможностей вполне хватит для многих целей. Интересно, что программа не только может показать график и спасти его в файл. Она также способна записать график в виде постскрипт файла и даже файла в формате Латеха. Размер последнего файла будет очень большим, но после компиляции все образуется. Однако это уже перебор. Вполне достаточно записи в постскрипт, который потом можно конвертировать в pdf. А сам постскрипт часто нужен для оформления статей в научные журналы.

Я сам умею писать постскрипт файлы руками в текстовом редакторе и даже книгу написал о том, как это делать. Все есть на моем сайте. Но не все такие умные. К сожалению, в России практически никто не знает ни постскрипта, ни программы Gnuplot, точнее, никто из тех, кто не работал за границей. А напрасно. Программа очень интересная и удобная в работе.

Как всегда, открытия ходят парами. Бегло посмотрев статью про Gnuplot на этом сайте, я начал читать комментарии, и вдруг нашел указание на программу GLE (Graphics Layout Engine). Этой программой я немного попользовался 20 лет назад, а потом ее сайт пропал. Но оказалось, что программа не пропала. Она вот тут. Но она, как и положено на сайте sourceforge.net выставлена в виде кода на языке программирования С, который надо прокомпилировать в разных системах, в том числе и в Виндовс. И ее уже точно мало кто знает в России. Программа была написана группой энтузиастов на Западе. У нее тоже есть свой язык программирования, и у меня даже сохранилось ее описание. Она может рисовать все, что угодно, и тоже конвертировать результат в постскрипт.

Постскрипт

Сегодня я добавил еще один пример в свою книгу о программировании графики на языке постскрипт. Ссылка на мою книгу есть на моем сайте в разделе «Информация», для удобства я даю ее здесь [1]. В этом примере показан код рисования горизонтальной логарифмической оси и строки линейного контраста.

Формат графики eps (encapsulated postscript) был разработан фирмой Адобе для принтеров, соединенных в локальную сеть. Это, так называемый, векторный формат, в котором изменение размеров картинки (масштабирование) никак не меняет ее точность. Достигается это тем, что картинка изображается не матрицей точек (пикселей), а программой для компьютера, по которой он сам создает матрицу точек исходя из его способностей. Программа пишется только печатными символами и ее можно использовать в любой операционной системе и на компьютере любого типа.

Более того, такую программу можно писать в простом текстовом редакторе и иногда это самый эффективный способ создания точного и сложного рисунка. А для научной графики возможности постскрипта трудно переоценить. Но, к сожалению, это все же язык программирования, а пользователи компьютеров в своей основной массе неграмотны и неспособны чего либо учить, включая и ученых. Поэтому людей, которые пишут постскрипт программы в текстовом редакторе очень мало, все пользуются какими-то костылями. Наиболее известный из них — это программа Corel Draw.

В моей книге как раз и показано как писать программы рисунков на языке постскрипт прямо в текстовом редакторе. Более того, там приводятся готовые процедуры для рисования разных объектов, которые можно непосредственно использовать. Это самый легкий и простой способ, если знать язык программирования. Но я все же и свою программу написал, которая по конкретным параметрам создает постскрипт рисунок автоматически. С помощью параметров можно задать конкретные объекты рисунка. Это очень удобно снова для научной графики. Я ее назвал vkPSGen.

Если вместо принтера используется экран, то в этом случае надо запускать программы, которые способны показывать такой формат на экране. Таким программ много, ссылку для скачивания одной из них я даю прямо в книге [1].

После того, как я написал программу vkPSGen, я открыл для нее сайт [2] и даже вписал его адрес в статью Википедии о постскрипте. Это помогло и сайт посещают. Но после того, как сайт на сервере Народ передали Юкозу, на нем появилась реклама, которая мешает его смотреть. Хотя все материалы там доступны посетителям, но книгу я перенес на свой основной сайт, а программу vkPSGen включил в более общую программу vkUtility, которая делает так много всего, что в двух словах не скажешь. Программу можно скачать на ее сайте [3]. Программу vkUtility я развиваю постоянно и постоянно ей пользуюсь, хотя и не всеми ее возможностями.

[1] http://kohnvict.ucoz.ru/ps/tut/content.htm
[2] http://postscript-vk.narod.ru
[3] http://kohnvict.ucoz.ru/vkacl/vkUtility.htm