Processing:Примеры/Синусоида
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Описание[1]
Этот скетч-пример рендерит простую синусоиду.
Пример
int xspacing = 16; // как далеко объекты должны находиться
// друг от друга горизонтально
int w; // ширина всей волны
float theta = 0.0; // вначале скорость будет «0»
float amplitude = 75.0; // высота волны
float period = 500.0; // сколько пикселей будет находиться
// между повторениями волны
float dx; // для увеличения X (при помощи «period» и «xspacing»)
float[] yvalues; // массив для хранения данных о высоте волны
void setup() {
size(640, 360);
w = width+16;
dx = (TWO_PI / period) * xspacing;
yvalues = new float[w/xspacing];
}
void draw() {
background(0);
calcWave();
renderWave();
}
void calcWave() {
// увеличиваем «theta»;
// попробуйте разные значения
// (это изменит скорость, с которой будет изгибаться волна):
theta += 0.02;
// при помощи функции sin()
// рассчитываем значение «x» для каждого значения «y»:
float x = theta;
for (int i = 0; i < yvalues.length; i++) {
yvalues[i] = sin(x)*amplitude;
x+=dx;
}
}
void renderWave() {
noStroke();
fill(255);
// простой способ нарисовать волну при помощи двигающихся эллипсов:
for (int x = 0; x < yvalues.length; x++) {
ellipse(x*xspacing, height/2+yvalues[x], 16, 16);
}
}
См.также
Внешние ссылки
Примеры на Processing | |
---|---|
Основы |
|
Продвинутые графические эффекты |
|
Примеры из сторонних библиотек |