Nano Hash - криптовалюты, майнинг, программирование

Запуск цикла вперед и назад в Processing

В настоящее время я пытаюсь запустить цикл вперед и назад в эскизе обработки. Я могу сделать это, например, с mouseY, но я хочу, чтобы это было автоматически: rect(); должно появляться горизонтально, строка за строкой… например, 1, 1+следующая, 1+следующая+следующая и после 15 строк в обратном порядке! 15, 14, 13, 12, 11, 10, 9… С frameCount; я могу позволить им течь сколько хочу… но пока не обратно. Итак, я прочитал о логических операторах… и попытался получить их в синтаксисе… синтаксис кажется нормальным… но я не могу найти правильную логику, чтобы заставить его работать. Есть ли у кого-нибудь идея, как действительно написать это правильно? Это мой код до сих пор:

int a;
int i;
int step = 60;
void setup() {
  size(1080, 1080);
}
void draw() {
  background(0);
for (a = 0; a < 15; a++) {
for (i = 0; i < 5; i++) {
  fill(255, 255, 255);
  rect(216*i,60*a,216,60);
}
 
  }
}

Это создает шаблон — все сразу — я знаю, что for (a = 0; a < mouseY; a++) или for (a = 0; a < frameCount; a++) заставят его работать, но я подумал, что это должно где-то появиться — но как?

a+=step;
if ( a > 15 || a < 0 ){
step = -step;
}

Спасибо за любую помощь


Ответы:


1

Вероятно, будет проще, если вы не пытаетесь изменить способ увеличения шагов, а скорее количество прямоугольников, которые вы создаете для каждого шага. Чтобы было понятнее, рассмотрим этот код:

MAX_RECTANGLES = 15;
let frameCount = 0;

while (frameCount < 100) {
  frameCount++;

  step = frameCount % (MAX_RECTANGLES * 2);
  nbRect = MAX_RECTANGLES - Math.abs(MAX_RECTANGLES - step);

  console.log(step, nbRect);
}

Переменная frameCount и цикл while только воссоздают цикл p5js, здесь интересны переменные step и nbRect:

  • MAX_RECTANGLES — это количество прямоугольников, которые вы хотите показать, когда вы показываете их все. В нашем примере мы хотим показать 15 прямоугольников.
  • step будет варьироваться от 0 до MAX_RECTANGLES * 2, в нашем примере это будет варьироваться от 0 до 30.
  • And we will vary nbRect between 0 and 15 with the following rules:
    • If 0 <= step <= 15 then 0 <= nbRect <= 15
    • Если 16 <= step <= 30, то 15 >= nbRect >= 0

Запуск кода может облегчить понимание. С помощью этого механизма вы преобразуете постоянно увеличивающееся значение (frameCount) в значение, варьирующееся от 0 до 15.

Вы можете взглянуть на этот код p5js, который делает то, что вы хотите, с помощью метода, который я только что описал. .

20.11.2020

2

Статокс спасибо! Поэтому я написал это в Processing следующим образом:

int MAX_RECT = 18;
int step = 60;

void setup() {
  size(1080, 1080);
  frameRate(30);
}
void draw() {
  background(0);
  int step = (frameCount/2 % MAX_RECT) *2;
  int nbRectangles = MAX_RECT - Math.abs(MAX_RECT - step);

  for (int a = 0; a < nbRectangles; a++) {
    for (int i = 0; i < 5; i++) {
      fill(255, 255, 255);
      rect(216 * i, 60 * a, 216, 60);
    }
  }
}

Есть ли способ не перерисовывать первую строку прямоугольников? Я должен проверить Math.abs(); функция – я еще не знаком с этим… :-(

20.11.2020
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..