The following are the FPIC primitives used in this paper. This represents about one third of the total number of FPIC primitives. We have also included those user-defined operations that are defined in one part of the paper and used in a different part.
For each operation, we give a generic call, with the arguments in italics. The form of the call shows whether or not the operation is infix. The names of the arguments indicate their types: pic for pictures, pt for points, i for integers, r for reals, f for functions, and str for quoted strings.
pt1 ++ pt2 | Addition of points |
pt1 -- pt2 | Subtraction of points |
pt1 ** pt2 | Multiplication of points |
addNamedPics pic [(str1, pic1), . . .] | Add the list of named pictures to pic's environment |
(pic1, pt1) align (pic2, pt2) | Place pic1 and pic2, moving pic2 so that its point pt2 coincides with pt1 on pic1 |
arrow pt1 pt2 | Arrow from pt1 to pt2 |
pic at pt | pic translated so that its reference (southwest) point is at pt |
bezier pt1 pt2 pt3 pt4 | Bezier curve from pt1 to pt4 with control points pt2 and pt3 |
box r1 r2 | Box of width r1 and height r2 |
center pic | The center of pic, calculated from its bounding box |
pic centeredAt pt | pic translated so that its center is at pt |
circle r | Circle of radius r |
pic1 cseq pic2 | pic1 on top of pic2, their centers aligned |
curvedharrow pt1 pt2 | Arrow from pt1 to pt2, starting and ending with horizontal segments |
dbox | Box of default size (1.618034 x 1.0) |
dcircle | Circle of default radius (1.0) |
dcos r | Cosine of r (in degrees) |
doval | Oval inscribed in dbox |
dsin r | Sine of r (in degrees) |
dtriangle | An equilateral triangle |
frame pic | pic with a box drawn around it (user-defined) |
group pic | Same as pic, but considered as a single picture without subpictures, for purposes of calculating the subpictures of a containing picture. For example, dbox hseq dbox hseq dbox has three subpictures, but group (dbox hseq dbox) hseq dbox has two (the first of which also has two). |
height pic | The height of pic |
pic1 hseq pic2 | pic1 next to pic2 |
hseqlist [pic, . . .] | A list of pictures sequenced horizontally |
hseqsplist gap [pic, . . .] | A list of pictures sequenced horizontally, with space between them |
hseqtopsp gap pic1 pic2 | pic1 and pic2 are drawn next to each other, their tops aligned, with a gap between them (user-defined) |
hseqtopsplist gap [pic, . . .] | A list of pictures sequenced horizontally, their tops aligned, with space between them (user-defined) |
hspace r | Empty space of length r |
label str pic | Place str in the middle of pic |
line pt1 pt2 | Line from pt1 to pt2 |
midpoint pt1 pt2 | The mid-point of pt1 and pt2 |
mkseqlist f | Given sequencing function f, return the function that applies f to a list of pictures |
namePic pic str | Give pic the name str |
namePts pic [(str1, pt1), . . .] | Add the named points to pic's environment |
north pic | North point of pic, calculated from its bounding box |
northeast pic | similarly |
northwest pic | similarly |
pic nthpic i | The ith subpicture of pic |
pic offsetBy pt | pic translated by pt |
oval r1 r2 | Oval inscribed in box r1 r2 |
pic pic str | The subpicture named str contained in pic |
pics pic | All the (top-level) subpictures of pic |
place pic f pt | Move pic so that the point f pic is at pt |
placePt pic str pt | Move pic so that the point named str is at pt |
pic pt str | The point named pt in pic |
pic right r | pic moved right by r |
pic rotate r | pic rotated counter-clockwise by r (in degrees) |
pic scale r | pic scaled by r in both dimensions |
pic scaleTo pt | pic scaled to fit within pt |
scaleVec s pt | pt multiplied component-wise by s |
pic scaleWithPoint (pt1, pt2) | pic scaled by pt1 (see scaleXY), but without moving its point pt2 |
pic scaleXY pt | pic scaled by x in the x direction and y in the y direction, where pt = (x, y) |
pic1 seq pic2 | pic1 superimposed on pic2 |
seqlist [pic, . . .] | The pictures pic, . . ., superimposed on one another |
text str | A picture consisting of the text str |
triangle pt1 pt2 pt3 | Triangle connecting pt1, pt2, and pt3 |
pic1 vseq pic2 | pic1 on top of pic2 |
wedge r1 r2 r3 | Create a wedge of a circle with radius r1 extending counter-clockwise from angle r2 to angle r3 |
width pic | The width of pic |
pic withArrowStyle str | pic drawn with a given arrow style, if it is a line; the arrow styles are as in PSTricks [9] |
pic withFillColor (r1, r2, r3) | pic drawn in the color given by RGB values (r1, r2, r3) (all in the range 0-1) |