Polygon Renderers

Last updated 2025 August 25

This page documents library functions that render polygons.

nn-Sided Regular Polygon

dpolygon( n,pcentre,r,d )d_ ext{polygon} left(, n, p_ ext{centre}, r, d , ight)

Generate vertices of an nn-sided regular polygon.

Arguments

ArgumentDescriptionTypeConstraintsNotes
nnnumber of sidesZ+\mathbb{Z}^{+}3≤n3 \leq n (required)
pcentrep_\text{centre}centre(R,R)(\mathbb{R}, \mathbb{R})
rrradius of the polygonR\mathbb{R}r≠0r \neq 0 (required)
0<r0 < r
“Radius” refers to the distance from the centre of the polygon to any vertex.
dddirection (rotation)R\mathbb{R}0≤d<2π0 \leq d < 2\pi

Return

ValueDescriptionTypeConstraintsNotes
ω\omegapolygon vertices[(R,R),...][(\mathbb{R}, \mathbb{R}), ...]Use polygon⁡(ω)\operatorname{polygon}(\omega) to render the polygon.

Usage

f_{nrange}\left(s_{start},\ s_{stop},\ n\right)=\left[\left(s_{start}+i\left(\frac{s_{stop}-s_{start}}{n-1}\right)\right)\operatorname{for}i=\left[0...\left(n-1\right)\right]\right]
d_{polygon}\left(n,\ p_{centre},\ r,\ d\right)=\left[\left(p_{centre}.x+r\cos\theta,\ p_{centre}.y+r\sin\theta\right)\operatorname{for}\theta=f_{nrange}\left(d,\ d+2\pi,\ n+1\right)\right]
\operatorname{polygon}\left(d_{polygon}\left(6,\ \left(0,\ 0\right),\ 4,\ \frac{\pi}{6}\right)\right)

Implementation

dpolygon( n,pcentre,r,d )=[ (pcentre.x+rcos⁡θ, pcentre.y+rsin⁡θ)for⁡θ=fnrange(d, d+2π, n+1) ]d_ ext{polygon} left(, n, p_ ext{centre}, r, d , ight) = left[, left(p_{centre}.x+rcos heta, p_{centre}.y+rsin heta ight)operatorname{for} heta=f_{nrange}left(d, d+2pi, n+1 ight) , ight]

Dependencies

  • fnrange()f_\text{nrange}()

Rectangle

drect( pcentre,x,y )d_ ext{rect} left(, p_ ext{centre}, x, y , ight)

Draw a rectangle at centre pcentrep_\text{centre} with dimensions x×yx \times y.

Arguments

ArgumentDescriptionTypeConstraintsNotes
pcentrep_\text{centre}rectangle centre(R,R)(\mathbb{R}, \mathbb{R})
xxrectangle widthR+\mathbb{R}^{+}
yyrectangle heightR+\mathbb{R}^{+}

Return

None

Usage

d_{rect}\left(p_{centre},\ s_{width},\ s_{height}\right)=\operatorname{polygon}\left(p_{centre}+\left(-\frac{s_{width}}{2},\ -\frac{s_{height}}{2}\right),\ p_{centre}+\left(\frac{s_{width}}{2},\ -\frac{s_{height}}{2}\right),\ p_{centre}+\left(\frac{s_{width}}{2},\ \frac{s_{height}}{2}\right),\ p_{centre}+\left(-\frac{s_{width}}{2},\ \frac{s_{height}}{2}\right)\right)
d_{rect}\left(\left(3,\ 2\right),\ 4,\ 1\right)

Implementation

drect( pcentre,x,y )=polygon⁡(pcentre+(−x2, −y2), pcentre+(x2, −y2), pcentre+(x2, y2), pcentre+(−x2, y2))d_ ext{rect} left(, p_ ext{centre}, x, y , ight) = operatorname{polygon}left(p_{centre}+left(- rac{x}{2}, - rac{y}{2} ight), p_{centre}+left( rac{x}{2}, - rac{y}{2} ight), p_{centre}+left( rac{x}{2}, rac{y}{2} ight), p_{centre}+left(- rac{x}{2}, rac{y}{2} ight) ight)

Dependencies

None

Aligned Rectangle

drectaligned( ppivot,pxy,palign )d_ ext{rectaligned} left(, p_ ext{pivot}, p_{xy}, p_ ext{align} , ight)

Draw a rectangle at pivot ppivotp_\text{pivot} with dimensions pxyp_{xy}.

Arguments

ArgumentDescriptionDomainConstraintsNotes
ppivotp_\text{pivot}pivot point(R,R)(\mathbb{R}, \mathbb{R})
pxyp_\text{xy}rectangle dimensions(R,R)(\mathbb{R}, \mathbb{R})
palignp_\text{align}alignment(R,R)(\mathbb{R}, \mathbb{R})(−1,−1)≤palign≤(1,1)(-1, -1) \leq p_\text{align} \leq (1, 1)(−1,−1)(-1, -1) means the upper-right corner is used as the pivot (the rectangle is drawn in the negative quadrant).

Return

None

Usage

d_{rectaligned}\left(p_{pivot},\ p_{xy},\ p_{align}\right)=\operatorname{polygon}\left(p_{pivot}+\left(\left(p_{align}.x-1\right)\frac{p_{xy}.x}{2},\ \left(p_{align}.y-1\right)\frac{p_{xy}.y}{2}\right),\ p_{pivot}+\left(\left(p_{align}.x+1\right)\frac{p_{xy}.x}{2},\ \left(p_{align}.y-1\right)\frac{p_{xy}.y}{2}\right),\ p_{pivot}+\left(\left(p_{align}.x+1\right)\cdot\frac{p_{xy}.x}{2},\ \left(p_{align}.y+1\right)\frac{p_{xy}.y}{2}\right),\ p_{pivot}+\left(\left(p_{align}.x-1\right)\cdot\frac{p_{xy}.x}{2},\ \left(p_{align}.y+1\right)\frac{p_{xy}.y}{2}\right)\right)
d_{rectaligned}\left(\left(0,\ 0\right),\ \left(3,\ 4\right),\ \left(-1,\ -1\right)\right)
d_{rectaligned}\left(\left(2,\ 2\right),\ \left(5,\ 5\right),\ \left(1,\ -1\right)\right)

Implementation

drectaligned( ppivot,pxy,palign )=polygon⁡(ppivot+((palign.x−1)pxy.x2, (palign.y−1)pxy.y2), ppivot+((palign.x+1)pxy.x2, (palign.y−1)pxy.y2), ppivot+((palign.x+1)⋅pxy.x2, (palign.y+1)pxy.y2), ppivot+((palign.x−1)⋅pxy.x2, (palign.y+1)pxy.y2))d_ ext{rectaligned} left(, p_ ext{pivot}, p_{xy}, p_ ext{align} , ight) = operatorname{polygon}left( p_{pivot}+left(left(p_{align}.x-1 ight) rac{p_{xy}.x}{2}, left(p_{align}.y-1 ight) rac{p_{xy}.y}{2} ight), p_{pivot}+left(left(p_{align}.x+1 ight) rac{p_{xy}.x}{2}, left(p_{align}.y-1 ight) rac{p_{xy}.y}{2} ight), p_{pivot}+left(left(p_{align}.x+1 ight)cdot rac{p_{xy}.x}{2}, left(p_{align}.y+1 ight) rac{p_{xy}.y}{2} ight), p_{pivot}+left(left(p_{align}.x-1 ight)cdot rac{p_{xy}.x}{2}, left(p_{align}.y+1 ight) rac{p_{xy}.y}{2} ight) ight)

Dependencies

None

See an oversight or error? Drop an issue on GitHub↗.