Wolfram Function Repository
Instant-use add-on functions for the Wolfram Language
Function Repository Resource:
Create fractals with random partial jumps toward reference points
ResourceFunction["GeneralizedChaosGame"][reg,n] plots a fractal by iteratively jumping n times toward a random point inside the reference geometry reg by jumping halfway. | |
ResourceFunction["GeneralizedChaosGame"][reg,n,jspec] uses the jumping specification jspec. | |
ResourceFunction["GeneralizedChaosGame"][reg,n,jspec,format] formats the result according to the output specification format. |
n | n points equally spaced around the unit circle |
{p1,p2,…} | uses the points pi as the reference geometry |
reg | uses the region reg as the reference geometry |
n | performs n iterations |
Automatic | performs 104 iterations |
α | jumps a distance α toward the next reference point |
Scaled[α] | jumps a fraction α toward the next reference point |
Automatic | jumps halfway toward the next reference point |
{s1,s2,…} | cycle through the jumping specifications si |
{"OriginIndexed", {s1,s2,…sn}} | jump using jump specification si, where i is the index of the last visited reference point |
{“DestinationIndexed”, {s1,s2,…sn}} | jump using jump specification si, where i is the index of the next reference point |
func | uses the function func to calculate the next position |
"Graphics" | outputs a graphical representation of the results |
"List" | outputs the list of coordinates visited |
"DensityPlot" | outputs a graphical representation of the density of points |
"PointStyle" | Automatic | style to use for the points |
"ReferenceGeometryStyle" | Automatic | style to use for the reference geometry |
"Probabilities" | Automatic | list of probabilities representing the chance to jump to each reference point |
"ExclusionRegionFunction" | None | jumps that land on positions for which the function yields True are not allowed |
"Choices" | All | restrict the possible points to jump to based on the current position or history |
"ColorFunction" | Automatic | will use the color function ColorFunction as defined in ArrayPlot |
"BinningSpecification" | Automatic | a list of binning specifications to use for the output format |
"Absolute"→{b1,b2,…,bn} | restrict the jump to the reference points pi for which bi are True |
"Relative"→{b1,b2,…,bn} | restrict the jump to the reference points pi (counted relative to the last position) for which bi are True |
{{xmin,xmin,dx}, {ymin,ymax,dy}} | bins using the x specification and y specification |
{dx,dy} | bins the data in bins of size dx by dy |
Create the classic Sierpiński triangle using 30,000 iterations:
In[1]:= | ![]() |
Out[1]= | ![]() |
Jump only 40% of the way toward the reference points:
In[2]:= | ![]() |
Out[2]= | ![]() |
Jump between 4 corners of a trapezoid:
In[3]:= | ![]() |
Out[3]= | ![]() |
Jump between random points on a circle:
In[4]:= | ![]() |
Out[4]= | ![]() |
Give the geometry as a list of points:
In[5]:= | ![]() |
Out[5]= | ![]() |
The reference geometry can be any region, e.g. a Line:
In[6]:= | ![]() |
Out[6]= | ![]() |
Perform the chaos game in higher dimensions:
In[7]:= | ![]() |
Out[8]= | ![]() |
Combine different regions using RegionUnion:
In[9]:= | ![]() |
Out[9]= | ![]() |
The default jump specification is Scaled[0.5]:
In[10]:= | ![]() |
Out[10]= | ![]() |
In[11]:= | ![]() |
Out[11]= | ![]() |
Perform the chaos game using a 40% jump:
In[12]:= | ![]() |
Out[12]= | ![]() |
Perform the chaos game using a jump with a distance of 0.7:
In[13]:= | ![]() |
Out[13]= | ![]() |
Alternate between a fractional and a distance jump to create a blurry Sierpiński triangle:
In[14]:= | ![]() |
Out[14]= | ![]() |
Alternating between a fractional and a distance jump creates a different result compared to the individual specifications:
In[15]:= | ![]() |
Out[15]= | ![]() |
Jump 50%, 60% or 40% if the last reference point was point 1, 2 or 3, respectively:
In[16]:= | ![]() |
Out[16]= | ![]() |
Jump 50%, 60% or 40% if the next reference point is point 1, 2 or 3, respectively:
In[17]:= | ![]() |
Out[17]= | ![]() |
Jump a distance of 1.75 toward the top point, and 0.5 toward all other points:
In[18]:= | ![]() |
Out[18]= | ![]() |
Use a pure function to get a combination of fractional and distance jumping:
In[19]:= | ![]() |
Out[19]= | ![]() |
Use more complicated functions:
In[20]:= | ![]() |
Out[20]= | ![]() |
In[21]:= | ![]() |
Out[21]= | ![]() |
The default is a graphical output:
In[22]:= | ![]() |
Out[22]= | ![]() |
Obtain the results as a list and perform an operation on it:
In[23]:= | ![]() |
Out[24]= | ![]() |
Output a density plot instead:
In[25]:= | ![]() |
Out[25]= | ![]() |
Change the style of the points:
In[26]:= | ![]() |
Out[26]= | ![]() |
Change the style of the reference geometry:
In[27]:= | ![]() |
Out[27]= | ![]() |
In[28]:= | ![]() |
Out[28]= | ![]() |
Change the probability to jump to each reference point:
In[29]:= | ![]() |
Out[29]= | ![]() |
Restrict certain landing locations:
In[30]:= | ![]() |
Out[30]= | ![]() |
Restrict the point to fall in a circle at the top:
In[31]:= | ![]() |
Out[31]= | ![]() |
Allow a jump of only 1, 3 or 4 reference points ahead as compared to the last reference point:
In[32]:= | ![]() |
Out[32]= | ![]() |
Allow a jump only to points 2, 3 or 4:
In[33]:= | ![]() |
Out[33]= | ![]() |
Jump possibilities can be made to depend on history. Do not allow to jump 1 ahead from the last reference point and 3 ahead from the penultimate reference point:
In[34]:= | ![]() |
Out[34]= | ![]() |
Have the jump choices depend on the previously visited point:
In[35]:= | ![]() |
Out[35]= | ![]() |
For a density plot, specify the color function used:
In[36]:= | ![]() |
Out[36]= | ![]() |
The default is the rainbow color function:
In[37]:= | ![]() |
Out[37]= | ![]() |
For a density plot, specify the binning specification:
In[38]:= | ![]() |
Out[38]= | ![]() |
Or specify just the size of the bins:
In[39]:= | ![]() |
Out[39]= | ![]() |
Explore jumping in different dimensions. Calculate the jumping in (hyper)spheres in 2D–8D, and then plot the histogram of the distance from the center:
In[40]:= | ![]() |
Out[40]= | ![]() |
In[41]:= | ![]() |
Out[44]= | ![]() |
Produce the Sierpiński triangle as in a rule 90 cellular automaton:
In[45]:= | ![]() |
Out[45]= | ![]() |
In[46]:= | ![]() |
Out[46]= | ![]() |
The reference geometry might occlude all the points:
In[47]:= | ![]() |
Out[47]= | ![]() |
Use the option "ReferenceGeometryStyle" to make the points visible:
In[48]:= | ![]() |
Out[48]= | ![]() |
For a one-dimensional chaos game, explicit braces are needed:
In[49]:= | ![]() |
Out[49]= | ![]() |
In[50]:= | ![]() |
Out[50]= | ![]() |
For each possible choice, there should be at least one True element:
In[51]:= | ![]() |
Out[51]= | ![]() |
The "Choices" option can only be used when the region is a discrete set of points:
In[52]:= | ![]() |
Out[52]= | ![]() |
The "Probabilities" option can only be used when the region is a discrete set of points:
In[53]:= | ![]() |
Out[53]= | ![]() |
Recreate the Barnsley fern:
In[54]:= | ![]() |
Out[61]= | ![]() |
Jump halfway and then jump a distance of 0.2 in the perpendicular direction:
In[62]:= | ![]() |
Out[62]= | ![]() |
Excluding a wolf-shaped portion of the domain results in a fractal of wolves:
In[63]:= | ![]() |
Out[65]= | ![]() |
Perform a halfway step and a perpendicular step of 0.1:
In[66]:= | ![]() |
Out[66]= | ![]() |
Perform a halfway step and a scaled perpendicular step:
In[67]:= | ![]() |
Out[67]= | ![]() |
Wolfram Language 11.3 (March 2018) or above
This work is licensed under a Creative Commons Attribution 4.0 International License