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

Processing:Примеры/Объект, тянущийся к курсору 1

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


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

Контакты:

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


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


Описание[1]

Этот скетч-пример основан на коде Кита Питерса. «Рука» пытается дотянуться до позиции курсора. Углы рассчитываются при помощи функции atan2().

Пример

  1. float segLength = 80;
  2. float x, y, x2, y2;
  3.  
  4. void setup() {
  5.   size(640, 360);
  6.   strokeWeight(20.0);
  7.   stroke(255, 100);
  8.  
  9.   x = width/2;
  10.   y = height/2;
  11.   x2 = x;
  12.   y2 = y;
  13. }
  14.  
  15. void draw() {
  16.   background(0);
  17.  
  18.   float dx = mouseX - x;
  19.   float dy = mouseY - y;
  20.   float angle1 = atan2(dy, dx);  
  21.  
  22.   float tx = mouseX - cos(angle1) * segLength;
  23.   float ty = mouseY - sin(angle1) * segLength;
  24.   dx = tx - x2;
  25.   dy = ty - y2;
  26.   float angle2 = atan2(dy, dx);  
  27.   x = x2 + cos(angle2) * segLength;
  28.   y = y2 + sin(angle2) * segLength;
  29.  
  30.   segment(x, y, angle1);
  31.   segment(x2, y2, angle2);
  32. }
  33.  
  34. void segment(float x, float y, float a) {
  35.   pushMatrix();
  36.   translate(x, y);
  37.   rotate(a);
  38.   line(0, 0, segLength, 0);
  39.   popMatrix();
  40. }

См.также

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

  1. processing.org - Reach 1 based on code from Keith Peters.