Standard Utility Functions


Ranges

Step-Wise Range

fsrange(sstart,sstop,sstep)=[() for i=[0...floor(sstopsstep)]]f_\text{srange} \left( s_\text{start}, s_\text{stop}, s_\text{step} \right) = \left[ \left(\right) \space \text{for} \space i = \left[ 0 \text{...} \text{floor}\left( \frac{s_\text{stop}}{s_\text{step}} \right) \right] \right]

Generate a list of numbers from sstarts_\text{start} up to (and including) sstops_\text{stop} with difference ssteps_\text{step}.

Step-Wise Exclusive Range

fsxrange()f_\text{sxrange} \left( \right)

Generate a list of numbers from sstarts_\text{start} up to (but excluding) sstops_\text{stop} with difference ssteps_\text{step}.

Linearly Spaced Ranged

fnrange(sstart,sstop,n)=[(sstart+i(sstop−sstartn)) for i=[0...n]]f_\text{nrange} \left( s_\text{start}, s_\text{stop}, n \right) = \left[ \left( s_\text{start} + i \left( \frac {s_\text{stop} - s_\text{start}} {n} \right) \right) \space \text{for} \space i = \left[ 0 \text{...} n \right] \right]

Linearly Spaced Exclusive Range

fnxrange(sstart,sstop,n)=[(sstart+i(sstop−sstartn)) for i=[0...n−1]]f_\text{nxrange} \left( s_\text{start}, s_\text{stop}, n \right) = \left[ \left( s_\text{start} + i \left( \frac {s_\text{stop} - s_\text{start}} {n} \right) \right) \space \text{for} \space i = \left[ 0 \text{...} n-1 \right] \right]

Generate a list of nn numbers evenly spaced apart between sstarts_start and sstops_stop (inclusive).

fnrange(1,10,10)=[1,2,3,4,5,6,7,8,9,10](10 element list)f_\text{nrange}(1, 10, 10) = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] \quad \text{(10 element list)}

List Range

flrange(l)=[1...length(l)]f_\text{lrange} \left( l \right) = \left[ 1 \text{...} \text{length}(l) \right]

Generate a list of integers corresponding to the indices of a list.

Step-Wise List Range

flsrange(l,speriod,soffset)=[(soffset+(i−1)⋅speriod) for i=[1...length(l)speriod]]f_\text{lsrange} \left( l, s_\text{period}, s_\text{offset} \right) = \left[ \left( s_\text{offset} + (i-1) \cdot s_\text{period} \right) \space \text{for} \space i = \left[ 1 \text{...} \frac {\text{length}(l)} {s_\text{period}} \right] \right]

Generate a list of integers corresponding to chunks of a list.

For instance, to iterate over every 3 items:

L=[1...9](9 element list)L = [1 \text{...} 9] \quad \text{(9 element list)}
I=flsrange(L,3,1)=[1,4,7](3 element list)I = f_\text{lsrange}(L, 3, 1) = [1, 4, 7] \quad \text{(3 element list)}
[L[i] for i=I]=[1,4,7](3 element list)[L[i] \space \text{for} \space i = I] = [1, 4, 7] \quad \text{(3 element list)}

Rendering

Line

dlined_\text{line}

Circle

dcircled_\text{circle}

Rectangle

drectd_\text{rect}

Regular Polygon

dpolygon(n,pc,r,d)=[(pc.x+rcos⁡θ,pc.y+rsin⁡θ) for θ=fnrange(d,d+2π,n)]d_\text{polygon} \left( n, p_c, r, d \right) = \left[ \left( p_c\text{.}x + r \cos{\theta}, p_c\text{.}y + r \sin{\theta} \right) \space \text{for} \space \theta = f_\text{nrange}\left( d, d + 2\pi, n \right) \right]

Grid

dgridd_\text{grid}

Spike

dspiked_\text{spike}