среда, 20 июля 2022 г.

MarkovJunior – a programming language for computer graphics

MarkovJunior is a probabilistic programming language where programs are combinations of rewrite rules and inference is performed via constraint propagation.

In its basic form, a MarkovJunior program is an ordered list of rewrite rules. For example, MazeBacktracker (animation above) is a list of 2 rewrite rules:

  1. RBB=GGR or “replace red-black-black with green-green-red”.
  2. RGG=WWR or “replace red-green-green with white-white-red”.

On each execution step MJ interpreter finds the first rule in the list that has a match on the grid, finds all matches for that rule and applies that rule for a random match. In the maze backtracker example, interpreter first applies a bunch of RBB=GGR rules. But eventually the green self-avoiding walk gets stuck. At this point the first rule has no matches, so interpreter applies the second rule RGG=WWR until the walk gets unstuck. Then it can apply the first rule again, and so on. Interpreter stops when there are no matches for any rule.

Inference in MarkovJunior is done via unidirectional (fast) or bidirectional (slow, but more powerful) constraint propagation. Unidirectional constraint propagation for rewrite rules can be described equivalently in terms of rule propagation fields which generalize Dijkstra fields for arbitrary rewrite rules. Dijkstra fields is a popular technique in grid-based procedural generation. They in turn generalize distance fields used in computer graphics.

Some amazing graphics can be generated based on the rules and this package.

The software is MIT licensed and is available on GitHub.



from Adafruit Industries – Makers, hackers, artists, designers and engineers! https://ift.tt/ijY2Bkg
via IFTTT

Комментариев нет:

Отправить комментарий

Know us

Our Team

Tags

Video of the Day

Contact us

Имя

Электронная почта *

Сообщение *