Steiner Circles

Steiner Circles

If you take the stereographic projection of a mesh sphere, you obtain Steiner circles.

Interestingly, the map of any inscribed circle of the sphere under stereographic projection is a perfect circle on the plane.

Unfortunately, due to the low sampling size, the smooth option can be a bit botched sometimes.

The code is parameterized so that the user can specify Euler angle rotations of the sphere, and see the resulting stereographic projection on the plane.

If a line goes near the north pole, we omit it by setting the opacity to zero.

There are other workarounds, but they require using a conditional in a for loop, and I wanted to use the smooth option.

For example, this animation shows the sphere undergoing a rotation which is based on all three angles changing differently:

Steiner Circles Animation

Try changing the values of \zrotationa, \yrotation and \zrotationb for yourself!

\documentclass[
tikz
,border = 3.14mm
]{standalone}
\usepackage{tikz-3dplot}
\pgfmathdeclarefunction{sphereX}{2}{%
% #1 - longitude
% #2 - latitude
\pgfmathparse{cos(#2)*cos(#1)}%
}
\pgfmathdeclarefunction{sphereY}{2}{%
\pgfmathparse{cos(#2)*sin(#1)}%
}
\pgfmathdeclarefunction{sphereZ}{2}{%
\pgfmathparse{sin(#2)}%
}
% https://tex.stackexchange.com/a/736767/319072
\pgfmathdeclarefunction{tdplottransformrotmainX}{6}{%
% #1 - Z rotation
% #2 - Y rotation
% #3 - Z rotation
% #4 - x value
% #5 - y value
% #6 - z value
\pgfmathparse{
(
(
sin(#1) * cos(#2) * cos(#3) +
cos(#1) * sin(#3)
) * #4 +
(
-sin(#1) * cos(#2) * sin(#3) +
cos(#1) * cos(#3)
) * #5 +
sin(#1) * sin(#2) * #6
) * -1
}%
}
\pgfmathdeclarefunction{tdplottransformrotmainY}{6}{%
\pgfmathparse{
(
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Leave a Reply

Your email address will not be published.