Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Processing:Примеры/Синусоида

Материал из Онлайн справочника
Перейти к: навигация, поиск


Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Описание[1]

Этот скетч-пример рендерит простую синусоиду.

Пример

  1. int xspacing = 16;   // как далеко объекты должны находиться
  2.                      // друг от друга горизонтально
  3. int w;               // ширина всей волны
  4.  
  5. float theta = 0.0;  // вначале скорость будет «0»
  6. float amplitude = 75.0;  // высота волны
  7. float period = 500.0;    // сколько пикселей будет находиться
  8.                          // между повторениями волны
  9. float dx;  // для увеличения X (при помощи «period» и «xspacing»)
  10. float[] yvalues;  // массив для хранения данных о высоте волны
  11.  
  12. void setup() {
  13.   size(640, 360);
  14.   w = width+16;
  15.   dx = (TWO_PI / period) * xspacing;
  16.   yvalues = new float[w/xspacing];
  17. }
  18.  
  19. void draw() {
  20.   background(0);
  21.   calcWave();
  22.   renderWave();
  23. }
  24.  
  25. void calcWave() {
  26.   // увеличиваем «theta»;
  27.   // попробуйте разные значения
  28.   // (это изменит скорость, с которой будет изгибаться волна):
  29.   theta += 0.02;
  30.  
  31.   // при помощи функции sin()
  32.   // рассчитываем значение «x» для каждого значения «y»:
  33.   float x = theta;
  34.   for (int i = 0; i < yvalues.length; i++) {
  35.     yvalues[i] = sin(x)*amplitude;
  36.     x+=dx;
  37.   }
  38. }
  39.  
  40. void renderWave() {
  41.   noStroke();
  42.   fill(255);
  43.   // простой способ нарисовать волну при помощи двигающихся эллипсов:
  44.   for (int x = 0; x < yvalues.length; x++) {
  45.     ellipse(x*xspacing, height/2+yvalues[x], 16, 16);
  46.   }
  47. }

См.также

Внешние ссылки

  1. processing.org - Sine Wave by Daniel Shiffman