Тривимірний простір в Processing

У Главі 1, Починаємо програмувати в Processing 2, Ми розповідали про систему координат в Processing У цьому прикладі ми розглянемо третій вимір і нару обєкти в тривимірному просторі

Як це робиться

Перше, що потрібно зробити – імпортувати бібліотеку OpenGL Це дозволить вам використовувати третій вимір Ви вже робили це в прикладі Малюємо криві в Главі 2, Малюємо текст, криві і фігури в 2D Для імпорту бібліотеки за допомогою коду виберіть Sketch | Import Library | OpenGL:

import processingopengl*

Следущее, що ми зробимо – оголосимо дві змінні перед функцією setup () і присвоїмо їм значення Зверніть увагу, що функція size () дещо відрізняється від тієї, що була в Главі 2

float depth float zSpeed

void setup()

{

size( 640, 480, OPENGL )

depth = 0

zSpeed = -1

}

Перша дія в блоці draw () це оновлення значення змінної depth для реалізації анімації Наступний фрагмент коду змінює цю величину від 0 до 1000 і скидає знову в 0

void draw()

{

depth += zSpeed

if ( depth &lt= -1000 || depth &gt= 0 ) { zSpeed *= -1

}

}

Далі ми очистимо фон і намалюємо кілька тривимірних прямокутників Вони не бут зафарбовані, ми будемо бачити тільки їх грані Додайте цей фрагмент коду далі в функцію draw ()

background( 255 )

noFill() stroke( 0 )

for ( int i = 0 i &lt 10 i++ ) { pushMatrix()

translate( 0, 0, -i * 100 )

rect( 0, 0, width, height ) popMatrix()

}

Наступний фрагмент коду у функції draw () наведено нижче Ми просто намалюємо чотири прямокутники, по одному в кожному кутку вікна Кожен буде з різним кольором

pushMatrix()

translate( 0, 0, depth )

fill( 255, 0, 0 )

rect( 0, 0, 80, 80 )

fill( 0, 255, 0 )

rect( width-80, 0, 80, 80 )

fill( 255, 255, 0 )

rect( width-80, height-80, 80, 80 )

fill( 0, 255, 255 )

rect( 0, height-80, 80, 80 ) popMatrix()

Коли ви запустите скетч, ви побачите наближаються і віддаляються прямокутники

Як це працює

Для роботи в тривимірному просторі Processing потрібно додати до функції size () третій параметр, встановивши рендерер У цьому випадку цим параметром буде OPENGL Не забудьте імпортувати бібліотеку OpenGL, імаче скетч не працюватиме

Ви могли помітити, що функції типу rect () або ellipse () в попередньому розділі мають тільки координати x і y Для малювання цих фігур в тривимірному просторі координата z не використовується Якщо ви хочете намалювати ці двовимірні фігури в треерном просторі, змістите систему координат за допомогою функції translate () Використовуючи функцію translate () між функціями pushMatrix () і popMatrix (), я обертав графічні блоки

Функція pushMatrix () зберігає поточне положення системи координат Вона використовується в парі з функцією popMatrix (), відновлювальної положення системи координат, збережене за допомогою функції pushMatrix ()

Функція translate (), коли ви з нею працюєте в 3D, має три параметри Це координати x, y і z нової опорної точки, яку ви будете використовувати Для анімації кольорових квадратів я використовував змінну depth для вказівки z-Координати у функції translate () Подивіться на червоний квадрат в процесі роботи скетчу: він завжди нісован в точці (0, 0), але це непомітно, тому що ми зміщуємо опорну точку по осі z

Джерело: Ян Вантомм, Processing 2: креативне програмування, переклад з англійської Олександри Мішутіної, Published by Packt Publishing Ltd, 2012, BIRMINGHAM – MUMBAI

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*