TLDR: Я сделал симуляцию вспышки эпидемии, в которую можно поиграть здесь.

Последние мысли

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

  • Я определенно должен попытаться реорганизовать свой код. В настоящее время существует слишком много частей кода, которые добавляются по мере того, как мне приходят в голову идеи. Должен быть более чистый способ организовать и структурировать все.
  • Если бы мне пришлось делать это снова, я обязательно использовал бы Vue или Svelte для создания этой симуляции. Когда я начал добавлять больше функциональности в проект, я понял, что есть много HTML-кода, который я хотел бы сделать более реактивным, вместо того, чтобы мне приходилось брать его и обновлять вручную в моем коде. Сначала я этого не делал, потому что думал, что это будет в лучшем случае этап моделирования с 4 ползунками для управления, боже, как же я ошибался?
  • Я создал небольшую вспомогательную функцию, чтобы управлять вероятностью того, что произойдет. Я думаю, что это было бы очень полезно в других моих проектах. Я провел несколько тестов, чтобы убедиться, что все получилось правильно, надеюсь, в моей логике нет изъяна, если кто-нибудь знает, сообщите мне, пожалуйста.
    function chance( percent ) { return Math.random() >= 1 — percent }
  • Сначала мой холст оказался довольно размытым, и я не мог понять, почему это происходит, пока не понял, что это мой проклятый дисплей сетчатки. Мне нужно увеличить размер холста вдвое, а затем еще раз вдвое, чтобы он отображался с разрешением сетчатки.
    myCanvas.width = myStage.offsetWidth * 2;
    myCanvas.style.width = myStage.offsetWidth + 'px'
  • На самом деле у меня есть скрытый режим бога, где вы можете максимально использовать все меры. Как я уже сказал, этот проект оказался намного сложнее, чем я думал. Посмотрим, сможешь ли ты узнать, как активировать этот режим!
  • Кривые и результаты оказались намного лучше, чем я думал. Судя по скриншотам, которые присылают мне друзья, я вижу действительно интересные результаты. Например, как крайнее социальное дистанцирование сглаживает кривую, но имеет риск второй вспышки как раз тогда, когда вирус почти вымер. Удивительно видеть, как это происходит визуально, когда я пытался воссоздать это. Или о том, что сокращение инфекций и смертей почти всегда означает гораздо более длительное время, прежде чем вирус полностью исчезнет. Все различные результаты и эксперименты, которые люди проделали с симуляцией, оказались намного более похожими на то, что я читал о вспышках, которые, как я когда-либо представлял, могли привести к нескольким точкам, движущимся по квадрату. Я поражен. Действительно.

Я надеюсь, что вы тоже получили удовольствие от моделирования. Если не пробовали, попробуйте здесь. Сообщите мне результаты! Или, если вы обнаружите какие-либо ошибки, которые необходимо исправить, дайте мне знать.

Этот проект действительно оказался лучше, чем я ожидал. Я многому научился и надеюсь создать больше симуляций и интересных побочных проектов в ближайшем будущем. Дайте мне знать, если вам будет интересно следовать или просто попробовать их.

Оставайтесь в безопасности! Носите маску, мойте руки и по возможности оставайтесь дома.