Показано с 1 по 10 из 10
  1. #1
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    50
    Сообщений
    13,336
    Вес репутации
    10

    По умолчанию Уроки программирования на Processing

    Что же это такое?
    Итак, 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:
    Нажмите на изображение для увеличения. 

Название:	500x719.png 
Просмотров:	2012 
Размер:	22.5 Кб 
ID:	7318

    Результат выполнения программы:
    Нажмите на изображение для увеличения. 

Название:	646x392.png 
Просмотров:	837 
Размер:	18.5 Кб 
ID:	7319

    Пишем хелловорлд
    Наконец мы подобрались к самому главному — первому примеру кода. Аналогом классического «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/2HEIGHT/25050); 
    Вот пример маленькой программки, написанной с использованием соглашений:
    PHP код:
    void setup() {
        
    size(400400);
        
    stroke(255);
        
    background(192640);
       } 
     
    void draw() {
        
    line(15025mouseXmouseY);
       } 
    Функции mouseX и mouseY возвращают текущие координаты курсора мыши. Таким образом, при каждом движении мыши будут рисоваться новые линии. Выглядит это вот так:
    Нажмите на изображение для увеличения. 

Название:	406x432.png 
Просмотров:	493 
Размер:	27.2 Кб 
ID:	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 очень хорошо подходит для обучения — в нем нет ничего лишнего, а результат доступен быстро и очень нагляден. Я считаю этот язык не средством серьезной разработки, а просто интересным хобби, которое позволяет расслабиться и отвлечься от основной работы. Оригинал статьи.
    Последний раз редактировалось Chip; 27.01.2010 в 18:42.

  2. #2
    Продвинутый Аватар для Pinin
    Регистрация
    04.01.2009
    Возраст
    55
    Сообщений
    213
    Вес репутации
    186

    По умолчанию Re: Урок программирования на Processing

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

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

    Такие вот КМБ: "не хочешь - научим, не можешь - заставим"

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

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

  3. #3
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    50
    Сообщений
    13,336
    Вес репутации
    10

    По умолчанию Re: Урок программирования на Processing

    Начну примеры с коментариями выкладывать
    Пример работы c 3d

    PHP код:
    float a//переменная с плавающей запятой

    void setup() {
      
    size(800600P3D); //размер окна
      
    fill1536060); //цвет графических обьектов
      
    noStroke(); //убрать контур 
    }

    void draw() {
      
    background(120,90,150); //цвет фона окна
      
    translate(width/2height/2); //Размещение граффического обьекта в окне
      
    rotateX(a);//вращение вокруг оси Х (значения от 0 до PI * 2) 
      
    rotateY(a*2);//вращение вокруг оси Y (значения от 0 до PI * 2)
      
    rect(-200, -200400400); //нарисовать прямоугольник
      
    += 0.01//изменить угол наклона прямоугольника

    Последний раз редактировалось Chip; 29.01.2010 в 03:29.

  4. #4
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    50
    Сообщений
    13,336
    Вес репутации
    10

    По умолчанию Re: Уроки программирования на Processing

    Теперь привожу пример 3D куба с подгружаемой текстурой
    В качестве текстуры можно взять любую картинку размером 200х200 пикселей.
    PHP код:
    PImage tex;
    float rotx PI/1.16;
    float roty rotx;
    float rotz rotx;
    float rate 0.01;


    void setup() 
    {
      
    size(640430P3D);  //размер окна и 3D режим
      
    tex loadImage("txtr.png");  //текстура
      
    textureMode(NORMALIZED);  //режим текстурирования
    }

    void draw() 
    {
      
    background(100,150,204);  //цвет фона
      
    lights();         //светить на обьект
      
    noStroke();       //убрать контур
      
    translate(width/2.0height/2.0);  //местоположение, ось 
      
    rotx += rate;    //изменяем угол
      
    roty += rate 1.8//изменяем угол
      
    rotz += rate 1.5//изменяем угол
      
    rotateX(rotx);   //повернуть на угол
      
    rotateY(roty);   //повернуть на угол
      
    rotateZ(rotz);   //повернуть на угол
      
    scale(100,30,70);  //маштабирование в процентах
      
    TexturedCube(tex); //вызов процедуры рисования куба
    }
    //********************************************
    void TexturedCube(PImage tex
    {
      
    beginShape(QUADS); //нарисовать квадрат
      
    texture(tex);      //прилепить текстуру
      
      // +Z "front" face
      
    vertex(-1, -1,  100);
      
    vertex1, -1,  110);
      
    vertex1,  1,  111);
      
    vertex(-1,  1,  101);

      
    // -Z "back" face
      
    vertex1, -1, -100);
      
    vertex(-1, -1, -110);
      
    vertex(-1,  1, -111);
      
    vertex1,  1, -101);

      
    // +Y "bottom" face
      
    vertex(-1,  1,  100);
      
    vertex1,  1,  110);
      
    vertex1,  1, -111);
      
    vertex(-1,  1, -101);

      
    // -Y "top" face
      
    vertex(-1, -1, -100);
      
    vertex1, -1, -110);
      
    vertex1, -1,  111);
      
    vertex(-1, -1,  101);

      
    // +X "right" face
      
    vertex1, -1,  100);
      
    vertex1, -1, -110);
      
    vertex1,  1, -111);
      
    vertex1,  1,  101);

      
    // -X "left" face
      
    vertex(-1, -1, -100);
      
    vertex(-1, -1,  110);
      
    vertex(-1,  1,  111);
      
    vertex(-1,  1, -101);

      
    endShape();

    Нажмите на изображение для увеличения. 

Название:	txtr.jpg 
Просмотров:	589 
Размер:	32.2 Кб 
ID:	7372
    Вложения Вложения
    Последний раз редактировалось Chip; 30.01.2010 в 03:29.

  5. #5
    Пользователь
    Регистрация
    24.03.2008
    Сообщений
    39
    Вес репутации
    178

    По умолчанию Re: Уроки программирования на Processing

    Есть строки из скетча для рулевых кнопок от Hamster`a

    Serial.print(dt1,DEC);
    Serial.print(" ");
    Serial.println(dt2,DEC);

    должны по задумке выводить значения нажатой кнопки в десятичном виде.
    На деле выдают символы абракадабры.
    В чем проблема?

  6. #6
    Новичок
    Регистрация
    02.07.2010
    Возраст
    50
    Сообщений
    2
    Вес репутации
    0

    По умолчанию Re: Уроки программирования на Processing

    Покажите пример как можно управлять положением 3D кубика из первого поста данными принимаеимыми на COM порт с выбраным номером со скоростью 9600 например в формате 8N1 поступающими от гироскопов ?

    Если кто знает где найти такой пример - буду благодарен.

  7. #7
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    50
    Сообщений
    13,336
    Вес репутации
    10

    По умолчанию Re: Уроки программирования на Processing

    Принимаешь данные с 3d акселерометра, пересчитываешь и подставляешь сюда
    rotx = NN; //изменяем угол оси х
    roty = NN; //изменяем угол оси y
    rotz = NN; //изменяем угол оси z

  8. #8
    Новичок
    Регистрация
    11.09.2010
    Сообщений
    1
    Вес репутации
    0

    По умолчанию Re: Уроки программирования на Processing

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

  9. #9
    Новичок
    Регистрация
    16.12.2008
    Возраст
    32
    Сообщений
    1
    Вес репутации
    0

    По умолчанию Re: Уроки программирования на Processing

    Цитата Сообщение от Chip Посмотреть сообщение
    Принимаешь данные с 3d акселерометра, пересчитываешь и подставляешь сюда
    А можно пример, если не сложно для акселя?

  10. #10
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    50
    Сообщений
    13,336
    Вес репутации
    10

    По умолчанию Re: Уроки программирования на Processing

    Пока еще нет готового примера

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •