A sinistra Ŕ raffigurato il cosiddetto triangolo di Reuleaux, triangolo curvilineo ideato nel 1876 dall'ingegnere tedesco Reuleaux, da cui, rimuovendono tre pezzi, l'inglese Watts nel 1914 ricav˛ una punta da trapano (vedi il disegno successivo), tuttora usata, in grado di fare buchi quasi quadrati.  Spiega a parole le caratteristiche di questa curva che ne hanno consentito tale applicazione e cerca di ricostruirla come suggerito dalla figura qui a destra.    

Come si vede dalla animazione, la curva ha ampiezza costante: man mano che ruota tocca sempre i lati di un quadrato.  Come si vede nella figura a destra, è ottenuta tracciando gli archi che congiungono i vertici di un triangolo equilatero e che sono parte dei cerchi che hanno centro in uno dei suoi vertici e passano per gli altri due.  Sotto, volendo, come costruirla con R (vedi).
Il pallino che si muove nelle figura a sinistra è il centroide: al ruotare della figura esso cambia posizione. Nella figura sottostante la sua traiettoria Ŕ stata tracciata in modo approssimato mediante la curva H.

A=c(0,1)
B=c(cos(-30*degrees),sin(-30*degrees))
C=c(cos((180+30)*degrees),sin((180+30)*degrees))
L = point_point(A[1],A[2], B[1],B[2])
BF=3;  HF=3
PLANE(-3,3, -3,3)
polylineR(0,0, 1,3, 90, "grey")
polyline(c(-L/2,-L/2,L/2,L/2,-L/2),c(1,1-L,1-L,1,1),"grey")
circle(C[1],C[2],L, "grey"); circle(B[1],B[2],L, "grey"); circle(A[1],A[2],L, "grey")
ARC(A[1],A[2],L, 240,300, "blue"); ARC(B[1],B[2],L, 120,180, "blue"); ARC(C[1],C[2],L, 0,60, "blue")
#
PLANE(-1,1, -1,1)
polylineR(0,0, 1,3, 90, "grey")
polyline(c(-L/2,-L/2,L/2,L/2,-L/2),c(1,1-L,1-L,1,1),"grey")
circle(C[1],C[2],L, "grey"); circle(B[1],B[2],L, "grey"); circle(A[1],A[2],L, "grey")
ARC(A[1],A[2],L, 240,300, "blue"); ARC(B[1],B[2],L, 120,180, "blue"); ARC(C[1],C[2],L, 0,60, "blue")
a = 2*sqrt(3)/3-1; r = 2.36185 H = function(x,y) abs(x/a)^r+abs(y/a)^r-1; CUR(H, "black") # Q = function(x,y) (x-A[1])^2+(y-A[2])^2 < L^2 & (x-B[1])^2+(y-B[2])^2 < L^2 & (x-C[1])^2+(y-C[2])^2 < L^2 for(i in 1:60) FIGURE(Q, -1,1, -1,1, "grey") ARC(A[1],A[2],L, 240,300, "blue"); ARC(B[1],B[2],L, 120,180, "blue"); ARC(C[1],C[2],L, 0,60, "blue")