Методы Монте-Карло в графике - PullRequest
3 голосов
/ 07 февраля 2012

Я читал этот интересный пост об использовании JavaScript для создания изображения розы.Однако я немного запутался, поскольку эта статья утверждает, что автор использовал методы Монте-Карло для уменьшения размера кода.

Насколько я понимаю, автор использовал методы Монте-Карло длясделать что-то вроде чередования GIF, чтобы изображение загружалось быстрее.Я что-то пропустил?

Ответы [ 2 ]

4 голосов
/ 07 февраля 2012

Используемый автором метод Монте-Карло (MC) не имеет ничего общего с результирующим типом файла изображения, он имеет непосредственное отношение к тому, как изображение было сгенерировано в первую очередь. Поскольку целью JS1K является написание компактного кода, автор определяет розу с помощью математических форм, которые должны быть заполнены крошечными точками (чтобы они выглядели как сплошное изображение) с помощью базового рендера.

Как вы заполняете эти формы? Одним из методов является выборка поверхности равномерно , то есть за заданный интервал, поместите точку. Как цитирует @Jordan, он будет работать тогда и только тогда, когда интервал установлен правильно. Сделайте это маленьким, это займет много времени; сделайте это большим, изображение лоскутное. Однако вы можете обойти всю проблему путем выборки по поверхности случайным образом . Вот где приходит метод MC.

Я видел эту путаницу с MC раньше, так как ее часто считают инструментом для численного моделирования. Несмотря на широкое использование как таковое, основная идея состоит в том, чтобы случайным образом выбирать интервал со смещением, которое соответственно взвешивает каждый шаг (в зависимости от проблемы). Например, физическое моделирование может иметь вес e ^ (- E / kT), тогда как числовой интегратор может использовать вес, пропорциональный производной в точке выборки. Запись wikipeida (и ссылки в ней) является хорошей отправной точкой для более подробной информации.

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

1 голос
/ 07 февраля 2012

Автор пишет в статье, что он использует выборку по методу Монте-Карло, чтобы преодолеть ограничения выборки на основе интервалов, поскольку последняя "требует установки правильного интервала для каждой поверхности. Если интервал большой, он рендерится быстро, но может заканчиваются отверстиями на поверхности, которая не была заполнена. С другой стороны, если интервал слишком мал, время рендеринга увеличивается до недопустимых величин ». Я считаю, что вывод статьи WebMonkey о неправильном размере кода.

...