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

Processing:Примеры/Цепочка

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


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

Контакты:

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


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


Описание[1]

Одно тело присоединено к позиции курсора, а другое тело – к позиции первого тела. Кроме того, в скетче рассчитывается гравитация, которая тянет оба тела вниз.

Пример

  1. Spring2D s1, s2;
  2.  
  3. float gravity = 9.0;
  4. float mass = 2.0;
  5.  
  6. void setup() {
  7.   size(640, 360);
  8.   fill(255, 126);
  9.   // входные данные – x, y, масса, гравитация:
  10.   s1 = new Spring2D(0.0, width/2, mass, gravity);
  11.   s2 = new Spring2D(0.0, width/2, mass, gravity);
  12. }
  13.  
  14. void draw() {
  15.   background(0);
  16.   s1.update(mouseX, mouseY);
  17.   s1.display(mouseX, mouseY);
  18.   s2.update(s1.x, s1.y);
  19.   s2.display(s1.x, s1.y);
  20. }
  21.  
  22. class Spring2D {
  23.   float vx, vy; // скорости по осям X и Y
  24.   float x, y; // координаты X и Y
  25.   float gravity;
  26.   float mass;
  27.   float radius = 30;
  28.   float stiffness = 0.2;
  29.   float damping = 0.7;
  30.  
  31.   Spring2D(float xpos, float ypos, float m, float g) {
  32.     x = xpos;
  33.     y = ypos;
  34.     mass = m;
  35.     gravity = g;
  36.   }
  37.  
  38.   void update(float targetX, float targetY) {
  39.     float forceX = (targetX - x) * stiffness;
  40.     float ax = forceX / mass;
  41.     vx = damping * (vx + ax);
  42.     x += vx;
  43.     float forceY = (targetY - y) * stiffness;
  44.     forceY += gravity;
  45.     float ay = forceY / mass;
  46.     vy = damping * (vy + ay);
  47.     y += vy;
  48.   }
  49.  
  50.   void display(float nx, float ny) {
  51.     noStroke();
  52.     ellipse(x, y, radius*2, radius*2);
  53.     stroke(255);
  54.     line(x, y, nx, ny);
  55.   }
  56. }

См.также

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

  1. processing.org - Chain