## Leminscate of Bernoulii

Arjen Markus (25 november 2020) It is a classic, elegant, curve, which resembles a figure eight: the lemniscate. You can find a description on MathWorld or MacTutor and it was Jacob Bernoulli who named it in 1694.

For the mathematically inclined, here are two equations that describe the curve:

In cartesian coordinates:

`   (x**2 + y**2) ** 2 = a**2 (x**2 - y**2)`

and in polar coordinates:

`   r**2 = a**2 cos(2 theta)`

But rather than use either of these equations directly, it is more artistic (in my personal view ;)) to use the construction via the envelope of circles: The construction is simple:

• Draw a rectangular hyperbola
• Then draw circles with the centres on the hyperbola (both branches) and passing through the origin

The envelope of the circles is the lemniscate.

Here is the code I used for the picture:

```# lemniscate.tcl --
#     Draw a lemniscate of Bernoulli via the envelope of cicles on a hyperbola
#
#     Note:
#     Draw in the square x: -2 to 2, y: -2 to 2 and then scale the result to fit the
#     canvas.
#
pack [canvas .c -width 800 -height 800]

#
# Draw the hyperbola: x**2 - y**2 = 1
#

set dy [expr {4.0 / 40.0}]
for {set n -20} {\$n <= 20} {incr n} {
if { \$n > -20 } {
set xp \$x
set yp \$y
}

set y [expr {\$dy * \$n}]
set x [expr {sqrt(\$y**2 + 1.0)}]

if { \$n > -20 } {
set xpm [expr {-\$xp}]
set xm  [expr {-\$x}]
set ypm [expr {-\$yp}]
set ym  [expr {-\$y}]

.c create line \$xp  \$yp  \$x   \$y   -width 2 -fill red
.c create line \$xpm \$yp  \$xm  \$y   -width 2 -fill red
.c create line \$xp  \$ypm \$x   \$ym  -width 2 -fill red
.c create line \$xpm \$ypm \$xm  \$ym  -width 2 -fill red
}
}

#
# Draw the circles ...
#

for {set n -20} {\$n <= 20} {incr n} {
set y [expr {\$dy * \$n}]
set x [expr {sqrt(\$y**2 + 1.0)}]

#
# This is the centre, now determine the bounding box:
# the circle should pass through the origin
#

set x1min   [expr { \$x - \$radius}]
set x1max   [expr { \$x + \$radius}]
set y1min   [expr { \$y - \$radius}]
set y1max   [expr { \$y + \$radius}]

set x2min   [expr {-\$x - \$radius}]
set x2max   [expr {-\$x + \$radius}]
set y2min   [expr { \$y - \$radius}]
set y2max   [expr { \$y + \$radius}]

set x3min   [expr {-\$x - \$radius}]
set x3max   [expr {-\$x + \$radius}]
set y3min   [expr {-\$y - \$radius}]
set y3max   [expr {-\$y + \$radius}]

set x4min   [expr { \$x - \$radius}]
set x4max   [expr { \$x + \$radius}]
set y4min   [expr {-\$y - \$radius}]
set y4max   [expr {-\$y + \$radius}]

.c create oval \$x1min \$y1min \$x1max \$y1max
.c create oval \$x2min \$y2min \$x2max \$y2max
.c create oval \$x3min \$y3min \$x3max \$y3max
.c create oval \$x4min \$y4min \$x4max \$y4max
}

.c scale all 0 0 180 180
.c move  all 400 400```

Note: to make the calculation of the coordinates easy I simply used the geometrical coordinate system and relied on the canvas to do the transformation to the pixel coordinates.

anonymous - 2020-11-28 11:37:14

There must be Lemniscate of Bernoulli in the title...

arjen - 2020-11-30 09:43:06

Indeed a typo! I do not know how to correct a page title though.

anonymous - 2020-11-30 11:45:33

Really and truly, there would be nice to have the "Rename the page (by its author)" in the wiki menu.

 Category Mathematics Category Toys