Откуда начинается картинка рисоваться?

помогите разобраться откуда начинается картинка


Ответы (1 шт):

Автор решения: Ivan Shatsky

Вам ещё не надоело задалбывать всех форумчан этой черепашкой? :)

Картинка (представляющая из себя сплошную ломанную линию) начинает рисоваться из центра. Алгоритм её рисования такой:

  1. Циклическая мена цвета пера из диапазона цветов (три значения).
  2. Вперёд на заданную длину;
  3. Увеличение длины на некоторое фиксированное значение;
  4. Поворот на угол чуть больше 120 градусов;

Вот вам наглядная анимация того, как это происходит:

const colors = [
  [60, 150, 90],
  [180, 60, 30],
  [180, 150, 210]
];

// параметры ломанной
const start = 50;
const step = 2;
const angle = 121;
const iterations = 200;

// анимация
const startDelay = 1000;
const lastDelay = 10;
const logDelay = Math.log(iterations);
function delay(i) {
  const progress = Math.log(i) / logDelay;
  const delay =  startDelay - progress * (startDelay - lastDelay);
  return Math.floor(delay);
}

function segment() {
  // Следующие три строки - собственно реализация алгоритма для JS turtle
  // Переменная i содержит номер очередной итерации
  color(colors[i % 3]);
  forward(size+=step);
  left(angle);

  i++;
  if (i < iterations) {    
    setTimeout(segment, delay(i));
  }
}

let i = 0;
let size = start;
width(2);
segment();
.as-console-wrapper { display: none !important; }
<link rel="stylesheet" href="https://rawgit.com/hanumanum/js-turtle/master/lib/turtle.css">
<canvas id="turtlecanvas" width="500" height="500"></canvas>
<canvas id="imagecanvas" width="500" height="500" style="display:none"></canvas>
<script type="text/javascript" src="https://rawgit.com/hanumanum/js-turtle/master/lib/library.js"></script>

Поэкспериментировав с параметрами start, step и angle, может быть сможете добиться соответствия 1:1 с вашим исходным примером.

→ Ссылка