Спасибо за улучшение вашего вопроса. На это гораздо легче ответить, чем раньше!
Первым шагом, на который вы должны привыкнуть, является точное описание вашей цели. Вы разместили картинку, и это здорово, но что именно происходит в этой картине? Можете ли вы точно описать, что отличается от этой картины от того, что происходит в вашем коде? Попробуйте написать несколько шагов на английском языке, чтобы создать такую картину. Когда у вас будут эти шаги, гораздо легче начать думать о коде.
Я бы сказал, что линия выглядит так, что каждая точка имеет случайную флуктуацию, добавленную к ней. Таким образом, шаги могут быть следующими:
- Нарисуйте одну строку, начиная с одного конца и немного перемещая перо по линии, чтобы нарисовать точку.
- Прежде чем рисовать каждую точку, передвиньте ручку в случайном порядке немного: если вы рисуете вертикальную линию, переместите перо влево или вправо; если вы рисуете горизонтальную линию, переместите перо вверх или вниз.
- Повторите этот процесс, чтобы нарисовать линии с интервалом на картинке.
Теперь, когда у вас есть эти шаги, вы можете начать думать о коде.
Итак, у вас есть две вложенные петли for
. Первый рисует вертикальные линии, а второй рисует горизонтальные линии. Давайте сосредоточимся на одном за раз. Я собираюсь изменить имена переменных, так что это немного яснее.
for (int x=0; x<width; x+=width/verticalNumberLines)
{
for (int y=0; y<height; y+=space) // j=j+numero variabile
{
point(x, y);
}
}
Этот рисунок рисует вертикальные линии. Сначала вы создаете цикл, который выполняет итерацию над значениями x
строк, а затем для каждого значения x
вы создаете цикл, который выполняет итерацию над значениями y
строки. Но заметьте, что это только создаст ровно разнесенные линии, так как нет никакой логики для изменения пространства между точками!
Есть три способа, вы можете подойти к решению проблемы:
- Вы можете добавить случайное значение в каждой точке. Это легко, но непредсказуемо.
- Вы можете использовать
sin()
или cos()
, чтобы добавить флуктуацию к своей строке. Это также довольно легко, но это приводит к предсказуемым шаблонам.
- Вы также можете настроить свою переменную, которую вы изменяете.Это дает вам максимальный контроль, но включает создание другой переменной.
Пойдемте со случайным подходом, и просто добавить случайное значение в каждой точке:
for (int x=0; x<width; x+=width/verticalNumberLines)
{
for (int y=0; y<height; y+=space) // j=j+numero variabile
{
point(x + random(-2, 2), y);
}
}
Единственное, что меняется эта строка:
point(x + random(-2, 2), y);
Теперь мы добавляя случайное значение между -2
и 2
в значение x
значения координаты. Это приведет к случайным левым и правым колебаниям к вашим вертикальным линиям.
Вы могли бы сделать то же самое с вашими горизонтальными линиями:
point(x, y + random(-2, 2));
Это приводит к изображению, которое выглядит следующим образом:
Вы, возможно, придется играть с расстоянием ваши точки, чтобы они выглядели точно так, как вы хотите, но это должно вас начать. И описанный выше процесс описания проблемы более подробно, а затем разбивая ее на более мелкие шаги, должен помочь вам в решении будущих проблем.
Это не так, как работает переполнение стека. Мы не можем реально помочь с вопросами типа «как это сделать», и сложно просто предоставить общие комментарии к вашему коду. Stack Overflow предназначен для более конкретных «Я попробовал X, ожидал Y, но получил Z вместо» типа вопросов. Поэтому постарайтесь сузить свой вопрос до нескольких строк кода, которые не ведут себя так, как вы ожидаете. Вы также переполняли несколько вопросов в один пост. Разделите их на несколько вопросов, чтобы мы могли дать конкретные ответы на каждый конкретный вопрос. –
Рекомендуемое чтение: [Контрольный список вопросов переполнения стека] (http://meta.stackoverflow.com/questions/260648/stack-overflow-question-checklist) и [mcve]. –
ОК, теперь это более понятно, большое спасибо за ваши предложения и рекомендуемое чтение. – MirielLInd