Table 128 – Predefined spot functions

Name

Appearance

Definition

SimpleDot

1 − (x 2 + y 2 )

{ dup mul exch dup mul add 1 exch sub }

InvertedSimpleDot

x 2 + y 2 − 1

{ dup mul exch dup mul add 1 sub }

DoubleDot

360x×()sin2------------------------------360y×()sin2------------------------------+

{ 360 mul sin 2 div exch 360 mul sin 2 div add }

InvertedDoubleDot

360x×()sin2------------------------------360y×()sin2------------------------------+⎝⎛–⎠⎞

{ 360 mul sin 2 div exch 360 mul sin 2 div add neg }

CosineDot

180x×()cos2-------------------------------180y×()cos2-------------------------------+

{ 180 mul cos exch 180 mul cos add 2 div }

Double

360x2---×⎝⎠⎛⎞sin2-------------------------------360y×()sin2------------------------------+

{ 360 mul sin 2 div exch 2 div 360 mul sin 2 div add }

InvertedDouble

360x2---×⎝⎠⎛⎞sin2-------------------------------360y×()sin2------------------------------+⎠⎟⎟⎟⎞⎝⎜⎜⎜⎛–

{ 360 mul sin 2 div exch 2 div 360 mul sin 2 div add neg }

Line

− | y |

{ exch pop abs neg }

LineX

x

{ pop }

LineY

y

{ exch pop }

Round

if | x | + | y | ≤ 1 then 1 − (x 2 + y 2 ) else ( | x | − 1) 2 + ( | y | − 1) 2 − 1

{ abs exch abs 2 copy add 1 le { dup mul exch dup mul add 1 exch sub } { 1 sub dup mul exch 1 sub dup mul add 1 sub }

ifelse }

Ellipse

let w = (3 × | x | ) + (4 × | y |) − 3

if w < 0 then

1x2y0.75----------⎝⎠⎛⎞2+4------------------------------–

else if w > 1 then

1x–()21y–0.75---------------⎝⎠⎛⎞2+4------------------------------------------------------1–

else 0.5 − w

{ abs exch abs 2 copy 3 mul exch 4 mul add 3 sub dup 0 lt

{ pop dup mul exch 0.75 div dup mul add 4 div 1 exch sub } { dup 1 gt

{ pop 1 exch sub dup mul exch 1 exch sub 0.75 div dup mul add 4 div 1 sub } { 0.5 exch sub exch pop exch pop }

ifelse }

ifelse }

EllipseA

1 − (x 2 + 0.9 × y 2 )

{ dup mul 0.9 mul exch dup mul add 1 exch sub }

InvertedEllipseA

x 2 + 0.9 × y 2 − 1

{ dup mul 0.9 mul exch dup mul add 1 sub }

EllipseB

1x258---y2×+–

{ dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub }

EllipseC

1 − (0.9 × x 2 + y 2 )

{ dup mul exch dup mul 0.9 mul add 1 exch sub }

InvertedEllipseC

0.9 × x 2 + y 2 − 1

{ dup mul exch dup mul 0.9 mul add 1 sub }

Square

−max ( | x | , | y | )

{ abs exch abs 2 copy lt { exch } if pop neg }

Cross

−min ( | x | , | y | )

{ abs exch abs 2 copy gt { exch } if pop neg }

Rhomboid

0.9x×y+2---------------------------------

{ abs exch abs 0.9 mul add 2 div }

Diamond

if | x | + | y | ≤ 0.75 then 1 − (x 2 + y 2 ) else if | x | + | y | ≤ 1.23 then 1 − (0.85 × | x | + | y | ) else ( | x | − 1) 2 + ( | y | − 1) 2 − 1

{ abs exch abs 2 copy add 0.75 le

{ dup mul exch dup mul add 1 exch sub } { 2 copy add 1.23 le

{ 0.85 mul add 1 exch sub } { 1 sub dup mul exch 1 sub du mul add 1 sub }

ifelse }

ifelse }