Что же это такое?
Итак, processing — это подязык программирования, основанный на java с простым и понятным си-подобным синтаксисом.
Processing дает возможность быстро и легко создавать мультимедиа приложения (в терминологии processing — скетчи). Под словом мультимедиа я подразумеваю средства языка, которые позволяют разрабатывать графику, анимацию, разнообразную визуализацию, интерактивные приложения…
В принципе, ничего не мешает создавать даже 3D-аппликации (в том числе и игры), ведь processing имеет средства поддержки OpenGL. Все эти возможности, вкупе с большим количеством функций и очень логичным синтаксисом, делают этот язык идеальным для обучения и прививания интереса к программированию.
Прекрасно понимая, что одна картинка стоит тысячи слов, хочу представить пару примеров визуализации, созданной в processing:
Как начать
Procesing 1.0 — это бесплатное, открытое, кроссплатформенное ПО.
Исходный архив включает в себя java-машину, сам интерпретатор, мини-IDE, и несколько десятков примеров. Версии для разных платформ доступны на странице загрузки (все ссылки в конце топика).
После загрузки и распаковки архива, необходимо найти в корневом каталоге исполняемый файл, запускающий IDE, в котором можно и нужно писать код.
Все готово к работе!
Быстрый старт
Я не ставил себе задачи научить кого-либо основам этого языка. В этом нет необходимости, ведь на оффсайте помимо подробнейшего мануала, есть несколько статей, в которых очень доступно, на простом английском языке обьясняются все азы и особенности работы с processing. Все описано очень подробно, есть даже иллюстрации. Также к вашим услугам и обширное коммюнити, представленное форумом с десятками тысяч постов.
Поэтому я остановлюсь лишь на нескольких моментах, о которых стоит знать новичкам. Сказать по правде, я сам еще полный новичок, но кое-что уже усвоил и спешу этим поделиться.
Итак начнем с главного — с синтаксиса языка.
По моему мнению, он очень поход на классический си. Так что если у вас есть опыт работы с такими языками, как C, PHP, Javascript, etc, то можно считать, что processing вы практически знаете — очень многие языковые конструкции, операторы, циклы выглядят точно так же.
Разберемся с терминологией.
Скетч — исходный файл вашей программы.
Скетчбук — каталог, содержащий исходные файлы, файлы ресурсов и т.д. Короче все, что относится к одному проекту.
PDE — Processing Development Environment. Родная среда разработки языка.
Еще раз о возможностях
Прежде чем я начну рассматривать примеры кода, хочу еще раз упомянуть те возможности, которые нам предлагает processing.
Итак, в нашем распоряжении инструменты для построения графических примитивов, 3D-объектов, работа со светом, текстом, инструментами трансформации. Мы можем импортировать и эскпортировать файлы аудио/видео/звуковых форматов, обрабатывать события мыши/клавиатуры, работать со сторонними библиотеками (openGL, PDF, DXF), работать с сетью.
Вот так выглядит PDE в среде Windows XP: Вложение 7318
Пишем хелловорлд
Наконец мы подобрались к самому главному — первому примеру кода. Аналогом классического «hello, world» у нас будет вот такой код:
line(25, 100, 125, 100);
Что делает эта функция, я думаю, в пояснении не нуждается. Но на всякий случай расскажу :)
Функция line принимает четыре аргумента и рисует в двухмерной плоскости линию с координатами, заданными в аргументах, с цветом и толщиной по умолчанию. Аргументы в порядке использования: x1, y1, x2, y2 — координаты начальной и конечной точек.
Собственно, практически все задачи решаются в этом языке такими же простыми способами. Для 3D-объектов, естественно, добавляется ось Z.
Начальная инициализация
Хоть processing и очень простой язык, который допускает много вольностей, но если мы хотим написать хорошую программу, то необходимо следовать некоторым соглашениям.
Так, например, все функции инициализации: size() — размер окна, stroke() — цвет линий, background() — цвет фона, и некоторые другие, необходимо помещать внутрь специальной служебной функции void setup(). Рекомендуется писать ее первой.
Следующая служебная функция — void draw(). Её аналогом можно назвать int main() в C++.
Эта функция является основой для построения любой анимации. Её особенностью является то, что она автоматически вызывается при каждом обновлении фреймбуфера.
Последнее соглашение связано с позиционированием объектов в координатной плоскости.
После инициализации размера окна функцией setup(), внутри программы становятся доступны две глобальных константы — WIDTH и HEIGHT, в которых хранится соответственно ширина и высота окна. Каждый раз, когда вы хотите спозиционировать, скажем, круг по центру экрана, польэуйтесь такой записью:
PHP код:
ellipse(WIDTH/2, HEIGHT/2, 50, 50);
Вот пример маленькой программки, написанной с использованием соглашений:
Функции mouseX и mouseY возвращают текущие координаты курсора мыши. Таким образом, при каждом движении мыши будут рисоваться новые линии. Выглядит это вот так: Вложение 7320
Напоследок
Предвидя возможные возгласы, вроде «Да чем этот процессинг лучше того же Adobe Flash/Microsoft Silverlight etc...».
Во-первых: это отличная бесплатная и открытая альтернатива. Тем более, что результат ваших трудов можно сконвертировать в джава-апплет и вставить на веб-страницу.
Во-вторых: сами разработчики уже ответили на этот вопрос в своем FAQ. Не могу не процитировать один абзац оттуда:
There are things that are always going to be better in Flash, and other types of work that will always be better in Processing. But fundamentally (and this cannot be emphasized enough), this is not an all-or-nothing game… We're talking about tools. Do people refuse to use pencils because pens exist? No, you just use them for different things, and for specific reasons. If Processing works for you, then use it. If not, don't. It's easy! It's free! You're not being forced to do anything.
И действительно: это разные вещи, разные инструменты, каждый из которых подходит для своих целей. Так что никаких холиваров, пожалуйста.
Еще раз повторюсь: processing очень хорошо подходит для обучения — в нем нет ничего лишнего, а результат доступен быстро и очень нагляден. Я считаю этот язык не средством серьезной разработки, а просто интересным хобби, которое позволяет расслабиться и отвлечься от основной работы. Оригинал статьи.
28.01.2010, 02:58
Pinin
Re: Урок программирования на Processing
Хороший почин, но есть одно соображение:
Можно, конечно, накидать сюда цитат и ссылок, но большинство форумчан способны все-таки их найти самостоятельно.
Уроки же, наподобие школьных, предполагают наличие преподавателя (причем желательно - одаренного), а где ж их найти, одаренных и готовых поделиться? Под одаренностью в данном случае понимается именно талант преподавать: зашибатых программеров до фига, но многие из них на языке рождения-то говорят с трудом...
С другой стороны, на конкретных примерах обучение идет куда шустрее: когда перед человеком есть задача, и он в ее решении заинтересован, плюс есть возможность выслушать совет/критику, посмотреть, как это делают другие - дело движется в разы быстрее и продуктивнее.
Такие вот КМБ: "не хочешь - научим, не можешь - заставим" ;)
Надо просто вываливать сюда побольше своих проектов, и обсуждать их активно - тогда польза будет всем: и сегодняшним участникам обсуждения, и последующим поколениям...
Но вообще, конечно удивительно, что при таком интересе к Arduino, о процессинге до сих пор речь не заходила.
28.01.2010, 03:56
Chip
Re: Урок программирования на Processing
Начну примеры с коментариями выкладывать
Пример работы c 3d
void draw() {
background(120,90,150); //цвет фона окна
translate(width/2, height/2); //Размещение граффического обьекта в окне
rotateX(a);//вращение вокруг оси Х (значения от 0 до PI * 2)
rotateY(a*2);//вращение вокруг оси Y (значения от 0 до PI * 2)
rect(-200, -200, 400, 400); //нарисовать прямоугольник
a += 0.01; //изменить угол наклона прямоугольника
}
30.01.2010, 02:24
Chip
Вложений: 2
Re: Уроки программирования на Processing
Теперь привожу пример 3D куба с подгружаемой текстурой
В качестве текстуры можно взять любую картинку размером 200х200 пикселей.
должны по задумке выводить значения нажатой кнопки в десятичном виде.
На деле выдают символы абракадабры.
В чем проблема?
02.07.2010, 00:29
atmega328
Re: Уроки программирования на Processing
Покажите пример как можно управлять положением 3D кубика из первого поста данными принимаеимыми на COM порт с выбраным номером со скоростью 9600 например в формате 8N1 поступающими от гироскопов ?
Если кто знает где найти такой пример - буду благодарен.
15.07.2010, 12:24
Chip
Re: Уроки программирования на Processing
Принимаешь данные с 3d акселерометра, пересчитываешь и подставляешь сюда
Цитата:
rotx = NN; //изменяем угол оси х
roty = NN; //изменяем угол оси y
rotz = NN; //изменяем угол оси z
11.09.2010, 17:48
asgard
Re: Уроки программирования на Processing
я скачал с офицального саита ПО распокавал и запустил, вылезло окно закруски потом ушло ивсё больше ничего небыло.если укогото было такое напешите что делать??
30.07.2011, 17:17
_Vel_
Re: Уроки программирования на Processing
Цитата:
Сообщение от Chip
Принимаешь данные с 3d акселерометра, пересчитываешь и подставляешь сюда
А можно пример, если не сложно для акселя? :confused: