Processing:Примеры/2D-анимация на основе уравнения: различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показана 1 промежуточная версия 1 участника) | |||
Строка 1: | Строка 1: | ||
{{Processing панель перехода}} | {{Processing панель перехода}} | ||
{{Перевод от Сubewriter}} | {{Перевод от Сubewriter}} | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=Описание<ref>[https://processing.org/examples/graphing2dequation.html processing.org - Graphing 2D Equations by Daniel Shiffman]</ref>= | =Описание<ref>[https://processing.org/examples/graphing2dequation.html processing.org - Graphing 2D Equations by Daniel Shiffman]</ref>= | ||
Строка 65: | Строка 62: | ||
}} | }} | ||
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
void setup() { | void setup() { | ||
size(640, 360); | size(640, 360); | ||
Строка 110: | Строка 107: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Портал/Processing}} | |||
{{Навигационная таблица/ | |||
Текущая версия от 07:43, 27 августа 2023
Содержание | Среда разработки 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 | |
---|---|
Основы |
|
Продвинутые графические эффекты |
|
Примеры из сторонних библиотек |