#javascript #turtle-graphics
#javascript #черепаха-графика
Вопрос:
Мне нужно нарисовать фрактал, используя библиотеку js turtle, поэтому фрактал анимируется до тех пор, пока он не будет полностью нарисован, как в примере python turtle здесь
Я пробовал использовать команду здесь. animate
В документах есть функция, вызываемая, но я не могу ее использовать, она только ждет некоторое время, а затем рисует фрактал без какой-либо анимации.
Я ввожу ввод команды animate(demo, 1000)
Есть ли какие-либо предложения?
если я не могу использовать анимацию в js turtle, есть ли другая быстрая простая библиотека, которая может выполнять работу по рисованию фракталов ?!
Комментарии:
1. Покажите нам код, который вы пробовали. Вероятно, вам придется подождать на каждом шаге процесса рисования. Кажется, вы ждете только один раз (или все одновременно).
2. @JensV, я ввел это в заблуждение, но теперь обновил. Я только что скачал библиотеку с ее исходным кодом и попробовал это. Вы можете попробовать это здесь rawgit.com/wrschneider99/js-turtle/master/turtle.html
3.
animate
В библиотеке просто используетсяsetInterval
. Это означает, что движение действия на самом деле не анимировано . Он просто ждет и выполняет действие. Однако, пока он ожидает, выполнение продолжается. Чтобы получить такое же поведение, как в вашем примере с python, вы, вероятно, можете заглянуть в JS async await, чтобы упростить работу
Ответ №1:
Вы неправильно используете animate()
. Вы не можете просто применить его к готовой программе и ожидать, что ее поведение изменится. Вместо этого вам нужно включить его в программу. Должна быть функция, которая рисует часть анимации при каждом ее вызове. Затем вызывайте его снова и снова animate()
. Переписывание вашего примера:
function square(side) {
repeat(4, function () {
forward(side);
right(90);
});
}
var s = 100
function draw() {
square(s);
right(36)
s -= 10
if (s < 0) {
s = 100
clear()
}
}
function demo() {
hideTurtle();
colour(0, 0, 255, 1);
animate(draw, 500);
}
Вызывайте его через demo()
, не вызывайте animate()
его. Основной единицей анимации является квадрат. Если вы хотите видеть, как рисуются квадраты, вам нужно изменить дизайн кода, чтобы сделать базовую единицу анимации стороной квадрата (т. Е. Линией).)