Skip to content

Instantly share code, notes, and snippets.

@empet
Created June 22, 2024 21:02
Show Gist options
  • Save empet/1d1c18eb66f9e5c2f68bdb6c0aab33c6 to your computer and use it in GitHub Desktop.
Save empet/1d1c18eb66f9e5c2f68bdb6c0aab33c6 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "b1b4313c",
"metadata": {},
"source": [
"## <center> The Hopf torus as the preimage of the Viviani's curve </center>"
]
},
{
"cell_type": "markdown",
"id": "c3591e7f",
"metadata": {},
"source": [
"The common Viviani's curve on the unit sphere is defined as the intersection between the sphere $x^2+y^2+z^2=1$ and the cylinder $(x-1/2)^2+y^2=1/4$. If the sphere is parameterized by longitude and latitude:\n",
"$$\\begin{array}{lll} x&=&\\cos(\\theta)\\cos(\\varphi)\\\\\n",
"y&=&\\sin(\\theta)\\cos(\\varphi), \\quad \\theta\\in (-\\pi, \\pi], \\varphi\\in[-\\pi/2, \\pi/2]\\\\\n",
"z&=&\\sin(\\varphi),\\end{array}$$\n",
"then the intersection curve has the parameterization derived\n",
"from the sphere parameterization, with $\\theta=\\varphi$.\n",
"Replacing x,y,z in the cylinder equation we get that $\\cos(\\theta)=\\cos(\\varphi)$, i.e $\\theta=\\varphi$. Hence the Viviani's curve has the parameterization:\n",
"$$\\begin{array}{lll}x&=&\\cos^2(\\theta)\\\\\n",
" y&=&0.5\\sin(2\\theta), \\quad \\theta\\in (-\\pi, \\pi]\\\\\n",
" z&=&\\sin(\\theta)\\end{array}$$\n",
"Taking into account that $cos(\\theta)=1-2\\sin^2(\\theta/2)$\n",
"we get the following parameterization of the Viviani's curve, where $t/2=\\theta$, \n",
" $t\\in(-2\\pi, 2\\pi]$:\n",
"\n",
"$$\\begin{array}{lll}\n",
" x&=&0.5(1+\\cos(t))\\\\\n",
" y&=&0.5\\sin(t)\\\\\n",
" z&=&\\sin(t/2)\n",
" \\end{array}$$"
]
},
{
"cell_type": "markdown",
"id": "c630f418",
"metadata": {},
"source": [
"To get the Hopf torus as the preimage through the Hopf map, $h:\\mathbb{S}^3\\to\\mathbb{S}^2$, $h(q)=q*k*q^{-1}$, we rotate this version of the Viviani's curve, about y-axis, with an angle of $\\pi/2$.\n",
"After such a rotation the new Viviani's curve is the intersection\n",
" of the unit sphere to the cylinder $(x^2+(z+1/2)^2=1/4$, and it is parameterized by:\n",
"\n",
"$$\\begin{array}{lll}x&=&\\sin(t/2)\\\\\n",
" y&=&0.5\\sin(t)\\quad t\\in(-2\\pi, 2\\pi]\\\\\n",
" z&=&-0.5(1+\\cos(t))\\end{array}$$"
]
},
{
"cell_type": "markdown",
"id": "a9b80f94",
"metadata": {},
"source": [
"![viviani def](https://github.com/empet/Datasets/blob/master/Images/viviani-intersection.png?raw=true)"
]
},
{
"cell_type": "markdown",
"id": "d7d389a6",
"metadata": {},
"source": [
"The preimage of the Viviani's curve through the Hopf map is a Hopf torus consisting in two tori,\n",
"each one coresponding to a loop in the auto-intersecting Viviani's curve:"
]
},
{
"cell_type": "markdown",
"id": "8f094f20",
"metadata": {},
"source": [
"%%html\n",
"<img src=\"https://github.com/empet/Datasets/blob/master/Images/viviani-hopftor.gif?raw=true\">"
]
},
{
"cell_type": "markdown",
"id": "4cfd522d",
"metadata": {},
"source": [
"The fibres corresponding to 40 points on this version of Viviani's curve:"
]
},
{
"cell_type": "markdown",
"id": "237971ed",
"metadata": {},
"source": [
"![hopf fibs viviani](https://github.com/empet/Datasets/blob/master/Images/Hopf-fibs-viviani.png?raw=true)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3b86bd94",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"@webio": {
"lastCommId": "df909072a9924f988abb4d4288f50262",
"lastKernelId": "fe0914b2-68dc-4b54-bf1c-29b1858140a1"
},
"kernelspec": {
"display_name": "Julia 1.9.0",
"language": "julia",
"name": "julia-1.9"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.9.0"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment