Урок інформатики 11 клас.
Тема: Створення простих 3D зображень в Processing.
Мета: Навчити створювати прості 3D зображення в Processing; розвивати творчі здібності учнів, комунікативну та інформаційну компетентності;
виховувати політехнічне мислення, інтерес до предмету.
Обладнання: ПК, програма для демонстрації екрану NSS, мова програмування Processing .
План уроку
I. Повідомлення теми і мети уроку.
II. Мотивація вивчення теми.
Ми вже розглянули як малювати лінії і фігури в 2D, ми навчилися це робити в двомірному просторі. Зараз ми вивчимо основи малювання в 3D. Почнемо з вивчення інструментів тривимірного малювання і простих тривимірних фігур.
III. Вивчення нового матеріалу.
Для роботи в тривимірному просторі Processing потрібно додати до функції size() третій параметр, встановивши рендерер. В цьому випадку цим параметром буде OPENGL. Ви могли помітити, що функції типу rect() або ellipse() мають тільки координати x і y. Для малювання цих фігур в тривимірному просторі координата z не використовується. Якщо ви хочете намалювати ці двовимірні фігури в трьох вимірному просторі, змістите систему координат за допомогою функції translate().
Використовуючи функцію translate() між функціями pushMatrix() і popMatrix() робимо обертання графічних блоків. Функція pushMatrix() зберігає поточний стан системи координат. Вона використовується в парі з функцією popMatrix(), що відновлює положення системи координат, збережене за допомогою функції pushMatrix(). Функція translate(), коли ви з нею працюєте в 3D, має три параметри. Це координати x, y і z нової опорної точки, яку будемо використовувати. Для анімації кольорових квадратів використовували змінну depth для вказівки z-координати в функції translate().
Функція box() використовується як з одним, так і з трьома параметрами. Якщо ми застосуємо її з одним параметром, у нас вийде куб. Використання цієї функції з трьома параметрами дозволяє встановлювати різні значення ширини, глибини і висоти отриманого паралелепіпеда.
У функції sphere() є тільки один параметр: радіус сфери. Можна регулювати відображення сфери, використовуючи функцію sphereDetail() перед функцією sphere(). Роздільна здатність сфери встановлена за замовчуванням і дорівнює 30. При зменшенні цього значення наша сфера буде менш деталізована; при збільшенні - навпаки. Використовуючи цю функцію з двома параметрами, ми можемо встановити розмір сфери по горизонталі і по вертикалі. Підставляючи невелике значення в перший параметр і велике в другій, ми будемо отримувати абсолютно різні сфери.
floatdepth; floatzSpeed;
voidsetup()
{
size( 640, 480, OPENGL );
depth = 0;
zSpeed = -1;
}
voiddraw()
{
depth += zSpeed;
if ( depth<= -1000 || depth>= 0 ) { zSpeed *= -1;}
}
background( 255 );
lights();
floatangleY = radians( frameCount );
pushMatrix();
translate( width * 0.3, height* 0.3 ); rotateY( angleY );
fill( 0, 255, 255 );
box( 100 ); popMatrix();
pushMatrix();
translate( width * 0.5, height* 0.5 ); rotateY( angleY );
fill( 0, 255, 0 );
box( 100, 40, 50 );
popMatrix();
pushMatrix();
translate( width * 0.7, height * 0.3 ); rotateY( angleY );
fill( 255, 0, 0 );
sphereDetail( 30 );
sphere( 75 ); popMatrix();
pushMatrix();
translate( width * 0.3, height * 0.7 ); rotateY( angleY );
fill( 255, 255, 0 );
sphereDetail( 6 );
sphere( 75 ); popMatrix();
pushMatrix();
IV. Виконання завдання з застосуванням нового матеріалу.
Створити 3D зображення заданої вчителем фігури.
V. Підведення підсумків уроку.
Перегляд та оцінювання створених програм.
VI. Домашнє завдання: Опрацювати конспект.