Главная » Processing » Объекты из простых деталей в Processing

0

Трехмерные объекты можно составлять из треугольников. Их вершины объединяются и это один из самых простых способов создать трехмерный объект. Также можно составлять объекты из четырехугольников. Из треугольников и четырехугольников удобно составлять скругленные полосы в трехмерном пространстве.

Как это делается

Начните с импорта библиотеки OpenGL и установки окна разрешением 640 x 480 пикселей. Первое, что мы сделаем – напишем код для треугольника. Наберите этот фраент кода в функцию draw(). Обратите внимание, что в функцию beginShape() введен новый параметр, а в каждой итерации цикла for добавляются две новые вершины.

background( 255 ); lights();

pushMatrix();

translate( width/2, height/2, 0 ); rotateY( radians( frameCount ) );

pushMatrix();

rotateZ( radians( frameCount ) ); fill( 255, 0, 0 );

beginShape( TRIANGLE_STRIP ); for ( int i = 0; i < 20; i++ ) {

float x1 = cos( radians( i * 10 ) ) * 100; float y1 = sin( radians( i * 10 ) ) * 100;

float x2 = cos( radians( i * 10 + 5 ) ) * ( 180 – i * 4 ); float y2 = sin( radians( i * 10 + 5 ) ) * ( 180 – i * 4 );

vertex( x1, y1, 0 ); vertex( x2, y2, 50 + i );

}

endShape(); popMatrix();

Следующий фрагмент кода выводит на экран объект, составленный из четырехугольнов. Код практически тот же, за исключением параметра QUAD_STRIP в функции beginShape() и координат x, y и z вершин.

pushMatrix();

translate( 0, 0, -100 );

rotateZ( radians( -frameCount ) ); fill( 255, 255, 0 );

beginShape( QUAD_STRIP );

for ( int i = 0; i < 20; i++ ) {

float x1 = cos( radians( i * 10 ) ) * ( 100 + i * 5 ); float y1 = sin( radians( i * 10 ) ) * ( 100 + i * 5 ); float x2 = cos( radians( i * 10 + 5 ) ) * 180;

float y2 = sin( radians( i * 10 + 5 ) ) * 180;

vertex( x1, y1, 0 );

vertex( x2, y2, 80 + i * 2 );

}

endShape(); popMatrix();

popMatrix();

Если вы запустите этот пример, вы увидите две полосы вокруг центра экрана. Желтая полоса составлена из четырехугольников, красная – из треугольников.

В предыдущих главах мы применяли функцию beginShape() для рисования произвольных фигур. Если вы не используете специальный параметр в фтой функции, вершины будут соединены линиями в том порядке, в котором вы их укажете в функции beginShape(). Если вы введете параметр TRIANGLE_STRIP или QUAD_STRIP, они будут соединены треугольниками или четырехугольниками. В цикле for обычно добавляются по две вершины на каждую итерацию.

Источник: Ян Вантомм, Processing 2: креативное программирование, перевод с английского Александры Мишутиной, Published by Packt Publishing Ltd., 2012, BIRMINGHAM – MUMBAI.

По теме:

  • Комментарии