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")