Processing:Примеры/2D-анимация на основе уравнения
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Среда разработки Processing | Справочник языка Processing | Библиотеки | Примеры | Режимы программирования |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Описание[1]
Этот скетч-пример выполняет интерактивную 2D-визуализацию уравнения sin(n*cos(r) + 5*theta), где n – это значение, отвечающее за горизонтальное расположение мыши.
Пример
void setup() {
size(640, 360);
}
void draw() {
loadPixels();
float n = (mouseX * 10.0) / width;
float w = 16.0; // ширина в 2D-пространстве
float h = 16.0; // высота в 2D-пространстве
float dx = w / width; // с каждым пикселем увеличиваем «x»
// на это значение
float dy = h / height; // с каждым пикселем увеличиваем «y»
// на это значение
float x = -w/2; // начинаем с «x» на «-1 * width / 2»
for (int i = 0; i < width; i++) {
float y = -h/2; // начинаем с «y» на «-1 * height / 2»
for (int j = 0; j < height; j++) {
float r = sqrt((x*x) + (y*y)); // конвертируем декартовы
// координаты в полярные
float theta = atan2(y,x); // конвертируем декартовы
// координаты в полярные
// рассчитываем функцию для двумерных полярных координат:
float val = sin(n*cos(r) + 5 * theta); // в результате должно
// получиться значение
// от «-1» до «1»
//float val = cos(r); // еще одна простая функция
//float val = sin(theta); // еще одна простая функция
// подгоняем диапазон значений «val»
// к диапазону монохромных значений (0-255):
pixels[i+j*width] = color((val + 1.0) * 255.0/2.0);
y += dy; // увеличиваем «y»
}
x += dx; // увеличиваем «x»
}
updatePixels();
}
См.также
Внешние ссылки
Примеры на Processing | |
---|---|
Основы |
|
Продвинутые графические эффекты |
|
Примеры из сторонних библиотек |