Processing:Примеры/Следование за курсором 2: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Строка 4: Строка 4:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


{{Черновик}}
 


=Описание<ref>[https://processing.org/examples/follow2.html processing.org - Follow 2 based on code from Keith Peters.]</ref>=
=Описание<ref>[https://processing.org/examples/follow2.html processing.org - Follow 2 based on code from Keith Peters.]</ref>=
Строка 60: Строка 60:
}}
}}


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
float[] x = new float[2];
float[] x = new float[2];
float[] y = new float[2];
float[] y = new float[2];
Строка 117: Строка 117:
|Высота логотипа издателя для schemaNewsArticle=45
|Высота логотипа издателя для schemaNewsArticle=45
}}
}}
{{Навигационная таблица/Справочник языка Processing}}
{{Навигационная таблица/Портал/Processing}}
{{Навигационная таблица/Processing/Примеры}}
{{Навигационная таблица/Телепорт}}

Версия от 12:01, 20 мая 2023


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



Описание[1]

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

Пример

float[] x = new float[2];
float[] y = new float[2];
float segLength = 50;

void setup() {
  size(640, 360);
  strokeWeight(20.0);
  stroke(255, 100);
}

void draw() {
  background(0);
  dragSegment(0, mouseX, mouseY);
  dragSegment(1, x[0], y[0]);
}

void dragSegment(int i, float xin, float yin) {
  float dx = xin - x[i];
  float dy = yin - y[i];
  float angle = atan2(dy, dx);  
  x[i] = xin - cos(angle) * segLength;
  y[i] = yin - sin(angle) * segLength;
  segment(x[i], y[i], angle);
}

void segment(float x, float y, float a) {
  pushMatrix();
  translate(x, y);
  rotate(a);
  line(0, 0, segLength, 0);
  popMatrix();
}

См.также

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