Polygon Renderers

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}^{+}3n3 \leq n (required)
pcentrep_\text{centre}centre(R,R)(\mathbb{R}, \mathbb{R})
rrradius of the polygonR\mathbb{R}r0r \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}0d<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}+ileft(rac{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+rcos\theta, p_{centre}.y+rsin\theta\right)operatorname{for}\theta=f_{nrange}left(d, d+2pi, n+1\right)\right]
operatorname{polygon}left(d_{polygon}left(6, left(0, 0\right), 4, rac{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(-rac{s_{width}}{2}, -rac{s_{height}}{2}\right), p_{centre}+left(rac{s_{width}}{2}, -rac{s_{height}}{2}\right), p_{centre}+left(rac{s_{width}}{2}, rac{s_{height}}{2}\right), p_{centre}+left(-rac{s_{width}}{2}, rac{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)rac{p_{xy}.x}{2}, left(p_{align}.y-1\right)rac{p_{xy}.y}{2}\right), p_{pivot}+left(left(p_{align}.x+1\right)rac{p_{xy}.x}{2}, left(p_{align}.y-1\right)rac{p_{xy}.y}{2}\right), p_{pivot}+left(left(p_{align}.x+1\right)cdotrac{p_{xy}.x}{2}, left(p_{align}.y+1\right)rac{p_{xy}.y}{2}\right), p_{pivot}+left(left(p_{align}.x-1\right)cdotrac{p_{xy}.x}{2}, left(p_{align}.y+1\right)rac{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.x1)pxy.x2, (palign.y1)pxy.y2), ppivot+((palign.x+1)pxy.x2, (palign.y1)pxy.y2), ppivot+((palign.x+1)pxy.x2, (palign.y+1)pxy.y2), ppivot+((palign.x1)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