Pikchr

Demo of Hügelschäffer Egg Curve
Login

Demo of Hügelschäffer Egg Curve

(1) By pskechr on 2025-06-04 21:41:34 [source]

This was primarily just to see if this could be done and with what effort. After some basic realizations on my part, the pikchr turns out to be not too difficult altogether.

This is a construction of a Hügelschäffer egg curve. This was done primarily by cherry-picking from mathcurve.com, arxiv.org, and mathematische-basteleien.de. The original credit to Hügelschäffer can be seen at digizeitschriften.de, page 67 (I think; no spreke German).

x C₁ C₂ Fₑ O₁ O₂ P₁ P₂ Q O₁  = Center of 1ˢᵗ circle C₁  = Circumference of 1ˢᵗ circle P₁  = Point on C₁ O₂  = Center of 2ⁿᵈ circle C₂  = Circumference of 2ⁿᵈ circle P₂  = Point at intersection of line O₂P₁ and C₂  = Point at (P₁.x, P₂.y) Fₑ  = All Q for all P₁, P₂ Hügelschäffer egg curve
[
[
layer = 2
X: line from (-1.875in+arrowwid,0) to (1.875in-arrowwid,0) thin thin color darkgrey
line from arrowwid left of X.start then right arrowwid color darkgrey <-
line from X.end then right arrowwid color darkgrey ->
text "x" italic with n at X.end color darkgrey
Y: line from (0,-1.875in+arrowwid) to (0,1.875in-arrowwid) thin thin color darkgrey
line from arrowwid below Y.start then up arrowwid color darkgrey <-
line from Y.end then up arrowwid color darkgrey ->
text "y " italic with e at Y.end color darkgrey

layer = 5
O1: circle with c at (0,0) width 0.05in thin color red fill pink
text "O₁" italic with c at 0.16in heading 47 from O1.c color red
O2: circle with c at O1.c+(-0.2in,0) width 0.05in thin color blue fill lightblue
text "O₂" italic with c at 0.14in heading 160 from O2.c color blue

layer = 3
C1: circle with c at O1.c radius 1.625in thin dashed 0.025in color red
text "C₁" italic with c at 0.12in heading 60 from C1.radius heading 60 from C1.c color red
C2: circle with c at O2.c radius 1.25in thin dashed 0.025in color blue
text "C₂" italic with c at 0.1in heading 240 from C2.radius heading 60 from C2.c color blue

define drawNewtonTransform {
   layer = 5
   P1: circle same as O1 with c at C1.radius heading $1 from C1.c
   P2: circle same as O2 with c at C2.radius/dist(C2.c,P1) between C2.c and P1
   Q: circle with c at (P1,P2) width 0.05in thin color black fill lightgrey
   
   layer = 3
   line from C2.c then to P1 then to Q then to P2 thin dashed 0.025in
}

drawNewtonTransform(23.881)
drawNewtonTransform(123.528)
layer = 5
text "P₁" italic with c at 0.13in heading 120 from P1.c color red 
text "P₂" italic with c at 0.17in heading 263 from P2.c color blue
text "Q" italic with c at 0.14in heading -30 from Q.c color black
drawNewtonTransform(216.119)
drawNewtonTransform(296.472)

layer = 4
FE: line \
from    (C1.radius heading 5*0  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*0  from C1.c) between C2.c and C1.radius heading 5*0  from C1.c) \
then to (C1.radius heading 5*1  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*1  from C1.c) between C2.c and C1.radius heading 5*1  from C1.c) \
then to (C1.radius heading 5*2  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*2  from C1.c) between C2.c and C1.radius heading 5*2  from C1.c) \
then to (C1.radius heading 5*3  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*3  from C1.c) between C2.c and C1.radius heading 5*3  from C1.c) \
then to (C1.radius heading 5*4  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*4  from C1.c) between C2.c and C1.radius heading 5*4  from C1.c) \
then to (C1.radius heading 5*5  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*5  from C1.c) between C2.c and C1.radius heading 5*5  from C1.c) \
then to (C1.radius heading 5*6  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*6  from C1.c) between C2.c and C1.radius heading 5*6  from C1.c) \
then to (C1.radius heading 5*7  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*7  from C1.c) between C2.c and C1.radius heading 5*7  from C1.c) \
then to (C1.radius heading 5*8  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*8  from C1.c) between C2.c and C1.radius heading 5*8  from C1.c) \
then to (C1.radius heading 5*9  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*9  from C1.c) between C2.c and C1.radius heading 5*9  from C1.c) \
then to (C1.radius heading 5*10 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*10 from C1.c) between C2.c and C1.radius heading 5*10 from C1.c) \
then to (C1.radius heading 5*11 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*11 from C1.c) between C2.c and C1.radius heading 5*11 from C1.c) \
then to (C1.radius heading 5*12 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*12 from C1.c) between C2.c and C1.radius heading 5*12 from C1.c) \
then to (C1.radius heading 5*13 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*13 from C1.c) between C2.c and C1.radius heading 5*13 from C1.c) \
then to (C1.radius heading 5*14 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*14 from C1.c) between C2.c and C1.radius heading 5*14 from C1.c) \
then to (C1.radius heading 5*15 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*15 from C1.c) between C2.c and C1.radius heading 5*15 from C1.c) \
then to (C1.radius heading 5*16 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*16 from C1.c) between C2.c and C1.radius heading 5*16 from C1.c) \
then to (C1.radius heading 5*17 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*17 from C1.c) between C2.c and C1.radius heading 5*17 from C1.c) \
then to (C1.radius heading 5*18 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*18 from C1.c) between C2.c and C1.radius heading 5*18 from C1.c) \
then to (C1.radius heading 5*19 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*19 from C1.c) between C2.c and C1.radius heading 5*19 from C1.c) \
then to (C1.radius heading 5*20 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*20 from C1.c) between C2.c and C1.radius heading 5*20 from C1.c) \
then to (C1.radius heading 5*21 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*21 from C1.c) between C2.c and C1.radius heading 5*21 from C1.c) \
then to (C1.radius heading 5*22 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*22 from C1.c) between C2.c and C1.radius heading 5*22 from C1.c) \
then to (C1.radius heading 5*23 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*23 from C1.c) between C2.c and C1.radius heading 5*23 from C1.c) \
then to (C1.radius heading 5*24 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*24 from C1.c) between C2.c and C1.radius heading 5*24 from C1.c) \
then to (C1.radius heading 5*25 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*25 from C1.c) between C2.c and C1.radius heading 5*25 from C1.c) \
then to (C1.radius heading 5*26 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*26 from C1.c) between C2.c and C1.radius heading 5*26 from C1.c) \
then to (C1.radius heading 5*27 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*27 from C1.c) between C2.c and C1.radius heading 5*27 from C1.c) \
then to (C1.radius heading 5*28 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*28 from C1.c) between C2.c and C1.radius heading 5*28 from C1.c) \
then to (C1.radius heading 5*29 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*29 from C1.c) between C2.c and C1.radius heading 5*29 from C1.c) \
then to (C1.radius heading 5*30 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*30 from C1.c) between C2.c and C1.radius heading 5*30 from C1.c) \
then to (C1.radius heading 5*31 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*31 from C1.c) between C2.c and C1.radius heading 5*31 from C1.c) \
then to (C1.radius heading 5*32 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*32 from C1.c) between C2.c and C1.radius heading 5*32 from C1.c) \
then to (C1.radius heading 5*33 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*33 from C1.c) between C2.c and C1.radius heading 5*33 from C1.c) \
then to (C1.radius heading 5*34 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*34 from C1.c) between C2.c and C1.radius heading 5*34 from C1.c) \
then to (C1.radius heading 5*35 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*35 from C1.c) between C2.c and C1.radius heading 5*35 from C1.c) \
then to (C1.radius heading 5*36 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*36 from C1.c) between C2.c and C1.radius heading 5*36 from C1.c) \
then to (C1.radius heading 5*37 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*37 from C1.c) between C2.c and C1.radius heading 5*37 from C1.c) \
then to (C1.radius heading 5*38 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*38 from C1.c) between C2.c and C1.radius heading 5*38 from C1.c) \
then to (C1.radius heading 5*39 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*39 from C1.c) between C2.c and C1.radius heading 5*39 from C1.c) \
then to (C1.radius heading 5*40 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*40 from C1.c) between C2.c and C1.radius heading 5*40 from C1.c) \
then to (C1.radius heading 5*41 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*41 from C1.c) between C2.c and C1.radius heading 5*41 from C1.c) \
then to (C1.radius heading 5*42 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*42 from C1.c) between C2.c and C1.radius heading 5*42 from C1.c) \
then to (C1.radius heading 5*43 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*43 from C1.c) between C2.c and C1.radius heading 5*43 from C1.c) \
then to (C1.radius heading 5*44 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*44 from C1.c) between C2.c and C1.radius heading 5*44 from C1.c) \
then to (C1.radius heading 5*45 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*45 from C1.c) between C2.c and C1.radius heading 5*45 from C1.c) \
then to (C1.radius heading 5*46 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*46 from C1.c) between C2.c and C1.radius heading 5*46 from C1.c) \
then to (C1.radius heading 5*47 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*47 from C1.c) between C2.c and C1.radius heading 5*47 from C1.c) \
then to (C1.radius heading 5*48 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*48 from C1.c) between C2.c and C1.radius heading 5*48 from C1.c) \
then to (C1.radius heading 5*49 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*49 from C1.c) between C2.c and C1.radius heading 5*49 from C1.c) \
then to (C1.radius heading 5*50 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*50 from C1.c) between C2.c and C1.radius heading 5*50 from C1.c) \
then to (C1.radius heading 5*51 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*51 from C1.c) between C2.c and C1.radius heading 5*51 from C1.c) \
then to (C1.radius heading 5*52 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*52 from C1.c) between C2.c and C1.radius heading 5*52 from C1.c) \
then to (C1.radius heading 5*53 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*53 from C1.c) between C2.c and C1.radius heading 5*53 from C1.c) \
then to (C1.radius heading 5*54 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*54 from C1.c) between C2.c and C1.radius heading 5*54 from C1.c) \
then to (C1.radius heading 5*55 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*55 from C1.c) between C2.c and C1.radius heading 5*55 from C1.c) \
then to (C1.radius heading 5*56 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*56 from C1.c) between C2.c and C1.radius heading 5*56 from C1.c) \
then to (C1.radius heading 5*57 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*57 from C1.c) between C2.c and C1.radius heading 5*57 from C1.c) \
then to (C1.radius heading 5*58 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*58 from C1.c) between C2.c and C1.radius heading 5*58 from C1.c) \
then to (C1.radius heading 5*59 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*59 from C1.c) between C2.c and C1.radius heading 5*59 from C1.c) \
then to (C1.radius heading 5*60 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*60 from C1.c) between C2.c and C1.radius heading 5*60 from C1.c) \
then to (C1.radius heading 5*61 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*61 from C1.c) between C2.c and C1.radius heading 5*61 from C1.c) \
then to (C1.radius heading 5*62 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*62 from C1.c) between C2.c and C1.radius heading 5*62 from C1.c) \
then to (C1.radius heading 5*63 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*63 from C1.c) between C2.c and C1.radius heading 5*63 from C1.c) \
then to (C1.radius heading 5*64 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*64 from C1.c) between C2.c and C1.radius heading 5*64 from C1.c) \
then to (C1.radius heading 5*65 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*65 from C1.c) between C2.c and C1.radius heading 5*65 from C1.c) \
then to (C1.radius heading 5*66 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*66 from C1.c) between C2.c and C1.radius heading 5*66 from C1.c) \
then to (C1.radius heading 5*67 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*67 from C1.c) between C2.c and C1.radius heading 5*67 from C1.c) \
then to (C1.radius heading 5*68 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*68 from C1.c) between C2.c and C1.radius heading 5*68 from C1.c) \
then to (C1.radius heading 5*69 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*69 from C1.c) between C2.c and C1.radius heading 5*69 from C1.c) \
then to (C1.radius heading 5*70 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*70 from C1.c) between C2.c and C1.radius heading 5*70 from C1.c) \
then to (C1.radius heading 5*71 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*71 from C1.c) between C2.c and C1.radius heading 5*71 from C1.c) \
then to (C1.radius heading 5*72 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*72 from C1.c) between C2.c and C1.radius heading 5*72 from C1.c) \
close color black fill none
line from FE.start same as FE color none fill whitesmoke behind X
text "Fₑ" italic with c at 0.11 heading 190 from (C1.radius heading 45 from C1.c, C2.radius/dist(C2.c,C1.radius heading 45 from C1.c) between C2.c and C1.radius heading 45 from C1.c)
]

[
A: box width 0.1875in height 0.2in "O₁" italic rjust thin thin invisible color red
B: box width 2.14in height 0.2in " = Center of 1ˢᵗ circle" ljust with w at 0.04in left of previous.e thin thin invisible color red
box same as A "C₁" italic rjust with ne at 0.04in above 2nd previous box .se color red 
box same as B " = Circumference of 1ˢᵗ circle" ljust with w at 0.04in left of previous.e color red
box same as A "P₁" italic rjust with ne at 0.04in above 2nd previous box .se color red
box same as B " = Point on C₁" ljust with w at 0.04in left of previous.e color red
box same as A "O₂" italic rjust with ne at 0.04in above 2nd previous box .se color blue
box same as B " = Center of 2ⁿᵈ circle" ljust with w at 0.04in left of previous.e color blue
box same as A "C₂" italic rjust with ne at 0.04in above 2nd previous box .se color blue
box same as B " = Circumference of 2ⁿᵈ circle" ljust with w at 0.04in left of previous.e color blue
box same as A "P₂" italic rjust with ne at 0.04in above 2nd previous box .se color blue
box same as B " = Point at intersection of line O₂P₁ and C₂" ljust with w at 0.04in left of previous.e color blue
box same as A "Q " italic rjust with ne at 0.04in above 2nd previous box .se color black
box same as B " = Point at (P₁.x, P₂.y)" ljust with w at 0.04in left of previous.e color black
box same as A "Fₑ" italic rjust with ne at 0.04in above 2nd previous box .se color black
box same as B " = All Q for all P₁, P₂" ljust with w at 0.04in left of previous.e color black
] with nw at previous.ne+(0.375in,-0.125in)
box with c at previous.c width previous.width+0.0625in height previous.height+0.0625in thin thin color darkgrey
]
text "Hügelschäffer egg curve" with n at 0.0625in below previous.s

The below is the same as the above, just without most of the extras, which may be more easily manipulated in pikchrshow.

O1: circle with c at (0,0) width 0.05in thin color red fill pink
O2: circle with c at O1.c+(-0.2in,0) width 0.05in thin color blue fill lightblue

C1: circle with c at O1.c radius 1.625in thin dashed 0.025in color red
C2: circle with c at O2.c radius 1.25in thin dashed 0.025in color blue

FE: line \
from    (C1.radius heading 5*0  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*0  from C1.c) between C2.c and C1.radius heading 5*0  from C1.c) \
then to (C1.radius heading 5*1  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*1  from C1.c) between C2.c and C1.radius heading 5*1  from C1.c) \
then to (C1.radius heading 5*2  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*2  from C1.c) between C2.c and C1.radius heading 5*2  from C1.c) \
then to (C1.radius heading 5*3  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*3  from C1.c) between C2.c and C1.radius heading 5*3  from C1.c) \
then to (C1.radius heading 5*4  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*4  from C1.c) between C2.c and C1.radius heading 5*4  from C1.c) \
then to (C1.radius heading 5*5  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*5  from C1.c) between C2.c and C1.radius heading 5*5  from C1.c) \
then to (C1.radius heading 5*6  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*6  from C1.c) between C2.c and C1.radius heading 5*6  from C1.c) \
then to (C1.radius heading 5*7  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*7  from C1.c) between C2.c and C1.radius heading 5*7  from C1.c) \
then to (C1.radius heading 5*8  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*8  from C1.c) between C2.c and C1.radius heading 5*8  from C1.c) \
then to (C1.radius heading 5*9  from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*9  from C1.c) between C2.c and C1.radius heading 5*9  from C1.c) \
then to (C1.radius heading 5*10 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*10 from C1.c) between C2.c and C1.radius heading 5*10 from C1.c) \
then to (C1.radius heading 5*11 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*11 from C1.c) between C2.c and C1.radius heading 5*11 from C1.c) \
then to (C1.radius heading 5*12 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*12 from C1.c) between C2.c and C1.radius heading 5*12 from C1.c) \
then to (C1.radius heading 5*13 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*13 from C1.c) between C2.c and C1.radius heading 5*13 from C1.c) \
then to (C1.radius heading 5*14 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*14 from C1.c) between C2.c and C1.radius heading 5*14 from C1.c) \
then to (C1.radius heading 5*15 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*15 from C1.c) between C2.c and C1.radius heading 5*15 from C1.c) \
then to (C1.radius heading 5*16 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*16 from C1.c) between C2.c and C1.radius heading 5*16 from C1.c) \
then to (C1.radius heading 5*17 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*17 from C1.c) between C2.c and C1.radius heading 5*17 from C1.c) \
then to (C1.radius heading 5*18 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*18 from C1.c) between C2.c and C1.radius heading 5*18 from C1.c) \
then to (C1.radius heading 5*19 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*19 from C1.c) between C2.c and C1.radius heading 5*19 from C1.c) \
then to (C1.radius heading 5*20 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*20 from C1.c) between C2.c and C1.radius heading 5*20 from C1.c) \
then to (C1.radius heading 5*21 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*21 from C1.c) between C2.c and C1.radius heading 5*21 from C1.c) \
then to (C1.radius heading 5*22 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*22 from C1.c) between C2.c and C1.radius heading 5*22 from C1.c) \
then to (C1.radius heading 5*23 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*23 from C1.c) between C2.c and C1.radius heading 5*23 from C1.c) \
then to (C1.radius heading 5*24 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*24 from C1.c) between C2.c and C1.radius heading 5*24 from C1.c) \
then to (C1.radius heading 5*25 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*25 from C1.c) between C2.c and C1.radius heading 5*25 from C1.c) \
then to (C1.radius heading 5*26 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*26 from C1.c) between C2.c and C1.radius heading 5*26 from C1.c) \
then to (C1.radius heading 5*27 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*27 from C1.c) between C2.c and C1.radius heading 5*27 from C1.c) \
then to (C1.radius heading 5*28 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*28 from C1.c) between C2.c and C1.radius heading 5*28 from C1.c) \
then to (C1.radius heading 5*29 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*29 from C1.c) between C2.c and C1.radius heading 5*29 from C1.c) \
then to (C1.radius heading 5*30 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*30 from C1.c) between C2.c and C1.radius heading 5*30 from C1.c) \
then to (C1.radius heading 5*31 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*31 from C1.c) between C2.c and C1.radius heading 5*31 from C1.c) \
then to (C1.radius heading 5*32 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*32 from C1.c) between C2.c and C1.radius heading 5*32 from C1.c) \
then to (C1.radius heading 5*33 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*33 from C1.c) between C2.c and C1.radius heading 5*33 from C1.c) \
then to (C1.radius heading 5*34 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*34 from C1.c) between C2.c and C1.radius heading 5*34 from C1.c) \
then to (C1.radius heading 5*35 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*35 from C1.c) between C2.c and C1.radius heading 5*35 from C1.c) \
then to (C1.radius heading 5*36 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*36 from C1.c) between C2.c and C1.radius heading 5*36 from C1.c) \
then to (C1.radius heading 5*37 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*37 from C1.c) between C2.c and C1.radius heading 5*37 from C1.c) \
then to (C1.radius heading 5*38 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*38 from C1.c) between C2.c and C1.radius heading 5*38 from C1.c) \
then to (C1.radius heading 5*39 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*39 from C1.c) between C2.c and C1.radius heading 5*39 from C1.c) \
then to (C1.radius heading 5*40 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*40 from C1.c) between C2.c and C1.radius heading 5*40 from C1.c) \
then to (C1.radius heading 5*41 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*41 from C1.c) between C2.c and C1.radius heading 5*41 from C1.c) \
then to (C1.radius heading 5*42 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*42 from C1.c) between C2.c and C1.radius heading 5*42 from C1.c) \
then to (C1.radius heading 5*43 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*43 from C1.c) between C2.c and C1.radius heading 5*43 from C1.c) \
then to (C1.radius heading 5*44 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*44 from C1.c) between C2.c and C1.radius heading 5*44 from C1.c) \
then to (C1.radius heading 5*45 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*45 from C1.c) between C2.c and C1.radius heading 5*45 from C1.c) \
then to (C1.radius heading 5*46 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*46 from C1.c) between C2.c and C1.radius heading 5*46 from C1.c) \
then to (C1.radius heading 5*47 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*47 from C1.c) between C2.c and C1.radius heading 5*47 from C1.c) \
then to (C1.radius heading 5*48 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*48 from C1.c) between C2.c and C1.radius heading 5*48 from C1.c) \
then to (C1.radius heading 5*49 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*49 from C1.c) between C2.c and C1.radius heading 5*49 from C1.c) \
then to (C1.radius heading 5*50 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*50 from C1.c) between C2.c and C1.radius heading 5*50 from C1.c) \
then to (C1.radius heading 5*51 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*51 from C1.c) between C2.c and C1.radius heading 5*51 from C1.c) \
then to (C1.radius heading 5*52 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*52 from C1.c) between C2.c and C1.radius heading 5*52 from C1.c) \
then to (C1.radius heading 5*53 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*53 from C1.c) between C2.c and C1.radius heading 5*53 from C1.c) \
then to (C1.radius heading 5*54 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*54 from C1.c) between C2.c and C1.radius heading 5*54 from C1.c) \
then to (C1.radius heading 5*55 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*55 from C1.c) between C2.c and C1.radius heading 5*55 from C1.c) \
then to (C1.radius heading 5*56 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*56 from C1.c) between C2.c and C1.radius heading 5*56 from C1.c) \
then to (C1.radius heading 5*57 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*57 from C1.c) between C2.c and C1.radius heading 5*57 from C1.c) \
then to (C1.radius heading 5*58 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*58 from C1.c) between C2.c and C1.radius heading 5*58 from C1.c) \
then to (C1.radius heading 5*59 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*59 from C1.c) between C2.c and C1.radius heading 5*59 from C1.c) \
then to (C1.radius heading 5*60 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*60 from C1.c) between C2.c and C1.radius heading 5*60 from C1.c) \
then to (C1.radius heading 5*61 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*61 from C1.c) between C2.c and C1.radius heading 5*61 from C1.c) \
then to (C1.radius heading 5*62 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*62 from C1.c) between C2.c and C1.radius heading 5*62 from C1.c) \
then to (C1.radius heading 5*63 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*63 from C1.c) between C2.c and C1.radius heading 5*63 from C1.c) \
then to (C1.radius heading 5*64 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*64 from C1.c) between C2.c and C1.radius heading 5*64 from C1.c) \
then to (C1.radius heading 5*65 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*65 from C1.c) between C2.c and C1.radius heading 5*65 from C1.c) \
then to (C1.radius heading 5*66 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*66 from C1.c) between C2.c and C1.radius heading 5*66 from C1.c) \
then to (C1.radius heading 5*67 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*67 from C1.c) between C2.c and C1.radius heading 5*67 from C1.c) \
then to (C1.radius heading 5*68 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*68 from C1.c) between C2.c and C1.radius heading 5*68 from C1.c) \
then to (C1.radius heading 5*69 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*69 from C1.c) between C2.c and C1.radius heading 5*69 from C1.c) \
then to (C1.radius heading 5*70 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*70 from C1.c) between C2.c and C1.radius heading 5*70 from C1.c) \
then to (C1.radius heading 5*71 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*71 from C1.c) between C2.c and C1.radius heading 5*71 from C1.c) \
then to (C1.radius heading 5*72 from C1.c, C2.radius/dist(C2.c,C1.radius heading 5*72 from C1.c) between C2.c and C1.radius heading 5*72 from C1.c) \
close color black fill none
line from FE.start same as FE color none fill whitesmoke behind O1

Thanks for reading and for any feedback, suggestions, or corrections.

(2) By spindrift on 2025-06-05 12:49:33 in reply to 1 [link] [source]

Ooooh, I like that.

So you march around two offset circles, angle in parametric lockstep, and trace the loci of the x coordinate of one Vs the y coordinate of the other.

That's pretty cool.