{ "cells": [ { "cell_type": "markdown", "id": "2139e6d5", "metadata": {}, "source": [ "# Edge Refinement on Spherical Surfaces\n", "\n", "This notebook demonstrates how to refine edges on a sphere, showing the difference between linear interpolation and spherical (geodesic) interpolation." ] }, { "cell_type": "markdown", "id": "7c1ed3a5", "metadata": {}, "source": [ "## Import Libraries" ] }, { "cell_type": "code", "execution_count": 1, "id": "b8b9519a-fc76-4c90-9a81-8fd4a3c939e3", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "from matplotlib.patches import Arc\n", "import numpy as np\n", "from matplotlib import collections as mc" ] }, { "cell_type": "markdown", "id": "0e19c99d", "metadata": {}, "source": [ "## Setup: Define Points on Icosahedron Edge\n", "\n", "We start with two vertices from an icosahedron on a unit sphere." ] }, { "cell_type": "code", "execution_count": 2, "id": "a95057b1-016f-4b2a-900b-263799d16016", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Base edge length: 1.0515\n" ] } ], "source": [ "phi = (1 + 5**0.5) / 2\n", "length = 2 / (1 + phi**2)**0.5\n", "print(f\"Base edge length: {length:.4f}\")" ] }, { "cell_type": "markdown", "id": "d86525d8", "metadata": {}, "source": [ "## Visualize the Initial Edge" ] }, { "cell_type": "code", "execution_count": 4, "id": "50fd1252-7897-4144-af46-95493f3ebcb1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "||AB|| = 1.0515\n", "Angle between A and B: 63.43\u00b0\n" ] } ], "source": [ "phi = (1 + 5**0.5) / 2\n", "p_O = np.array([0, 0.0])\n", "p_A = np.array([phi, 1])\n", "p_B = np.array([phi, -1])\n", "\n", "# Normalize to unit sphere\n", "p_A = p_A / (1 + phi**2) ** 0.5\n", "p_B = p_B / (1 + phi**2) ** 0.5\n", "\n", "A_theta = np.arcsin(p_A[1]) / np.pi * 180\n", "B_theta = np.arcsin(p_B[1]) / np.pi * 180\n", "omega = np.arccos(np.dot(p_A, p_B))\n", "\n", "arc_AB= Arc(\n", " (0, 0),\n", " 2,\n", " 2,\n", " theta1=B_theta,\n", " theta2=A_theta,\n", " linewidth=2,\n", " zorder=0,\n", " color=\"k\",\n", ")\n", "\n", "print(f\"||AB|| = {np.linalg.norm(p_A - p_B):.4f}\")\n", "print(f\"Angle between A and B: {omega / np.pi * 180:.2f}\u00b0\")\n" ] }, { "cell_type": "code", "execution_count": 6, "id": "931a733d", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create figure\n", "plt.figure(figsize=(6, 6))\n", "\n", "\n", "ax = plt.gca()\n", "\n", "# Plot points\n", "for p, lab in [(p_O, \"O\"), (p_A, \"A\"), (p_B, \"B\")]:\n", " ax.scatter(*p)\n", " ax.annotate(\n", " lab, p, fontsize=12, xytext=(10, -5), textcoords=\"offset pixels\"\n", " )\n", "\n", "ax.add_patch(arc_AB)\n", "\n", "ax.add_patch(\n", " Arc(\n", " (0, 0),\n", " 0.1,\n", " 0.1,\n", " theta1=B_theta,\n", " theta2=A_theta,\n", " linewidth=1,\n", " zorder=0,\n", " color=\"g\",\n", " )\n", ")\n", "ax.annotate(rf\"$\\omega={omega / np.pi * 180:.2f}\u00b0$\", (0.06, 0.0), fontsize=12)\n", "\n", "# Add lines\n", "ax.add_collection(\n", " mc.LineCollection([[p_O, p_A], [p_O, p_B], [p_A, p_B]], linewidths=1)\n", ")\n", "ax.add_collection(mc.LineCollection([[p_A, p_B]], colors=\"r\", linewidths=2))\n", "plt.axis(\"equal\")\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "3711dd28", "metadata": {}, "source": [ "## Helper Function for Distance Annotation" ] }, { "cell_type": "code", "execution_count": 18, "id": "f0949261-b81d-4ebc-88c6-f2ad4d5ad9b1", "metadata": {}, "outputs": [], "source": [ "def annotate_distances(ax, points, offset=None):\n", " \"\"\"Annotate distances between consecutive points.\"\"\"\n", " offset = offset or [0, 0]\n", " dists = np.linalg.norm(points[1:] - points[:-1], axis=-1)\n", " for i in range(points.shape[0] - 1):\n", " p = (points[i] + points[i + 1]) / 2\n", " ax.annotate(rf\"$={dists[i]:.2f}$\", p + offset, fontsize=10)" ] }, { "cell_type": "markdown", "id": "1b3ee68e", "metadata": {}, "source": [ "## Linear Interpolation (Incorrect for Spheres)\n", "\n", "This approach uses linear interpolation in 3D space, then projects back to the sphere. Notice the unequal edge lengths." ] }, { "cell_type": "code", "execution_count": 19, "id": "754d8916-3ee6-49db-8619-8e2e6fcdac1e", "metadata": {}, "outputs": [], "source": [ "alphas = np.arange(1, 5) / 5\n", "hat_AB = p_B[None, :] * alphas[:, None] + p_A[None, :] * (1 - alphas)[:, None]\n", "AB = hat_AB / np.linalg.norm(hat_AB, axis=-1, keepdims=True)\n", "new_points = np.r_[p_A[None, :], AB, p_B[None, :]]\n", "hat_new_points = np.r_[p_A[None, :], hat_AB, p_B[None, :]]" ] }, { "cell_type": "code", "execution_count": null, "id": "7edc526d-a7e2-489b-8a61-7c146e280888", "metadata": {}, "outputs": [ { "ename": "RuntimeError", "evalue": "Can not put single artist in more than one figure", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[20], line 4\u001b[0m\n\u001b[1;32m 1\u001b[0m plt\u001b[38;5;241m.\u001b[39mfigure(figsize\u001b[38;5;241m=\u001b[39m(\u001b[38;5;241m6\u001b[39m, \u001b[38;5;241m6\u001b[39m))\n\u001b[1;32m 2\u001b[0m ax \u001b[38;5;241m=\u001b[39m plt\u001b[38;5;241m.\u001b[39mgca()\n\u001b[0;32m----> 4\u001b[0m \u001b[43max\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43madd_patch\u001b[49m\u001b[43m(\u001b[49m\u001b[43marc_element\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 5\u001b[0m ax\u001b[38;5;241m.\u001b[39madd_collection(\n\u001b[1;32m 6\u001b[0m mc\u001b[38;5;241m.\u001b[39mLineCollection(\n\u001b[1;32m 7\u001b[0m [[p_O, p_A], [p_O, p_B], [p_A, p_B]]\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 10\u001b[0m )\n\u001b[1;32m 11\u001b[0m )\n\u001b[1;32m 12\u001b[0m ax\u001b[38;5;241m.\u001b[39madd_collection(\n\u001b[1;32m 13\u001b[0m mc\u001b[38;5;241m.\u001b[39mLineCollection([[p_A, p_B]], colors\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124m\"\u001b[39m, linewidths\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m)\n\u001b[1;32m 14\u001b[0m )\n", "File \u001b[0;32m/misc/envs/sphedron/lib/python3.10/site-packages/matplotlib/axes/_base.py:2473\u001b[0m, in \u001b[0;36m_AxesBase.add_patch\u001b[0;34m(self, p)\u001b[0m\n\u001b[1;32m 2469\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 2470\u001b[0m \u001b[38;5;124;03mAdd a `.Patch` to the Axes; return the patch.\u001b[39;00m\n\u001b[1;32m 2471\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 2472\u001b[0m _api\u001b[38;5;241m.\u001b[39mcheck_isinstance(mpatches\u001b[38;5;241m.\u001b[39mPatch, p\u001b[38;5;241m=\u001b[39mp)\n\u001b[0;32m-> 2473\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_set_artist_props\u001b[49m\u001b[43m(\u001b[49m\u001b[43mp\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2474\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m p\u001b[38;5;241m.\u001b[39mget_clip_path() \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 2475\u001b[0m p\u001b[38;5;241m.\u001b[39mset_clip_path(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mpatch)\n", "File \u001b[0;32m/misc/envs/sphedron/lib/python3.10/site-packages/matplotlib/axes/_base.py:1226\u001b[0m, in \u001b[0;36m_AxesBase._set_artist_props\u001b[0;34m(self, a)\u001b[0m\n\u001b[1;32m 1224\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_set_artist_props\u001b[39m(\u001b[38;5;28mself\u001b[39m, a):\n\u001b[1;32m 1225\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Set the boilerplate props for artists added to Axes.\"\"\"\u001b[39;00m\n\u001b[0;32m-> 1226\u001b[0m \u001b[43ma\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mset_figure\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_figure\u001b[49m\u001b[43m(\u001b[49m\u001b[43mroot\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1227\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m a\u001b[38;5;241m.\u001b[39mis_transform_set():\n\u001b[1;32m 1228\u001b[0m a\u001b[38;5;241m.\u001b[39mset_transform(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtransData)\n", "File \u001b[0;32m/misc/envs/sphedron/lib/python3.10/site-packages/matplotlib/artist.py:755\u001b[0m, in \u001b[0;36mArtist.set_figure\u001b[0;34m(self, fig)\u001b[0m\n\u001b[1;32m 749\u001b[0m \u001b[38;5;66;03m# if we currently have a figure (the case of both `self.figure`\u001b[39;00m\n\u001b[1;32m 750\u001b[0m \u001b[38;5;66;03m# and *fig* being none is taken care of above) we then user is\u001b[39;00m\n\u001b[1;32m 751\u001b[0m \u001b[38;5;66;03m# trying to change the figure an artist is associated with which\u001b[39;00m\n\u001b[1;32m 752\u001b[0m \u001b[38;5;66;03m# is not allowed for the same reason as adding the same instance\u001b[39;00m\n\u001b[1;32m 753\u001b[0m \u001b[38;5;66;03m# to more than one Axes\u001b[39;00m\n\u001b[1;32m 754\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parent_figure \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 755\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCan not put single artist in \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 756\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmore than one figure\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 757\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parent_figure \u001b[38;5;241m=\u001b[39m fig\n\u001b[1;32m 758\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parent_figure \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_parent_figure \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m:\n", "\u001b[0;31mRuntimeError\u001b[0m: Can not put single artist in more than one figure" ] }, { "data": { "image/png": "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5UPzf/zjHxcTJkwo7rvvvmLXrl1Fa2urP9VMyu756tWri8rKyuKJJ54ofvnLXw7dDh48OFYP4bST3fPf568t8rJ7vmfPnuLcc88t/u7v/q54+eWXi+9///vF5MmTi69+9atj9RBOO9k9b21tLc4999ziX/7lX4rdu3cX//7v/15ceOGFxWc+85mxeginlYMHDxY7d+4sdu7cWURE8cADDxQ7d+4sfv7znxdFURTLly8vFi5cODT/7T/V/Id/+Idi165dxdq1a0/fP9UsiqL4xje+UZx//vlFZWVlMXfu3OI///M/h/7bVVddVSxevHjY/O9+97vFRRddVFRWVhYf/ehHi02bNpV5xae/zJ5/4AMfKCLiiFtra2v5F34ay/6e/1/iYWSye/78888X9fX1RalUKi644ILia1/7WnH48OEyr/r0ltnzt956q/jyl79cXHjhhUVVVVVRV1dXfOELXyj+93//t/wLPw398Ic/POq/zW/v8eLFi4urrrrqiGNmzZpVVFZWFhdccEHxT//0T+nz+kpuACBlzN/zAACcXsQDAJAiHgCAFPEAAKSIBwAgRTwAACniAQBIEQ8AQIp4AABSxAMAkCIeAIAU8QAApPw/SD3QfzSV6y8AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(6, 6))\n", "ax = plt.gca()\n", "\n", "arc_element = Arc(\n", " (0, 0),\n", " 2,\n", " 2,\n", " theta1=B_theta,\n", " theta2=A_theta,\n", " linewidth=1,\n", " zorder=0,\n", " color=\"k\",\n", ")\n", "\n", "ax.add_patch(arc_element)\n", "ax.add_collection(\n", " mc.LineCollection(\n", " [[p_O, p_A], [p_O, p_B], [p_A, p_B]]\n", " + [[p_O, AB_i] for AB_i in AB],\n", " linewidths=1,\n", " )\n", ")\n", "ax.add_collection(\n", " mc.LineCollection([[p_A, p_B]], colors=\"r\", linewidths=2)\n", ")\n", "\n", "# Plot original points\n", "for p, lab in [(p_O, \"O\"), (p_A, \"A\"), (p_B, \"B\")]:\n", " ax.scatter(*p)\n", " ax.annotate(\n", " lab, p, fontsize=10, xytext=(-25, 0), textcoords=\"offset pixels\"\n", " )\n", "\n", "# Plot linear interpolation points\n", "for p, lab in zip(hat_AB, [rf\"$\\hat{{AB}}_{i}$\" for i in range(1, 5)]):\n", " ax.scatter(*p)\n", " ax.annotate(\n", " lab, p, fontsize=10, xytext=(-30, 15), textcoords=\"offset pixels\"\n", " )\n", "\n", "# Plot projected points\n", "for p, lab in zip(AB, [rf\"${{AB}}_{i}$\" for i in range(1, 5)]):\n", " ax.scatter(*p)\n", " ax.annotate(\n", " lab, p, fontsize=10, xytext=(10, 15), textcoords=\"offset pixels\"\n", " )\n", "\n", "\n", "annotate_distances(ax, new_points)\n", "annotate_distances(ax, hat_new_points, offset=[-0.08, 0])\n", "\n", "\n", "for i in range(new_points.shape[0] - 1):\n", " ax.add_collection(\n", " mc.LineCollection(\n", " [[new_points[i], new_points[i + 1]]], colors=\"g\", linewidths=2\n", " )\n", " )\n", "\n", "plt.xlim(-0.05, 1.1)\n", "plt.axis(\"equal\")\n", "plt.axis(\"off\")\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "94c2a939", "metadata": {}, "source": [ "Check the edge lengths (notice they are unequal):" ] }, { "cell_type": "code", "execution_count": 7, "id": "28059e1d-4026-410e-8661-0fd7ebc360a0", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.19814743, 0.2315976 , 0.24534642, 0.2315976 , 0.19814743])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.linalg.norm(new_points[1:]-new_points[:-1],axis=-1)" ] }, { "cell_type": "code", "execution_count": null, "id": "1d62503f-f039-4731-a3bd-d19c91582110", "metadata": {}, "outputs": [], "source": [ "alphas = np.sin(np.arange(1, 5) / 5 * omega) / np.sin(omega)\n", "betas = np.sin((1 - np.arange(1, 5) / 5) * omega) / np.sin(omega)\n", "hat_AB = p_B[None, :] * alphas[:, None] + p_A[None, :] * betas[:, None]\n", "AB = hat_AB / np.linalg.norm(hat_AB, axis=-1, keepdims=True)" ] }, { "cell_type": "markdown", "id": "b8715d68", "metadata": {}, "source": [ "## Spherical Interpolation (Correct Method)\n", "\n", "Using the spherical law of sines for proper geodesic interpolation on the sphere. This produces equal edge lengths." ] }, { "cell_type": "code", "execution_count": null, "id": "9c87519f-4d83-4cef-a079-1b28cf93ceac", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(6, 6))\n", "ax = plt.gca()\n", "\n", "# Plot original points\n", "for p, lab in [(p_O, \"O\"), (p_A, \"A\"), (p_B, \"B\")]:\n", " ax.scatter(*p)\n", " ax.annotate(lab, p, fontsize=10, xytext=(15, 0), textcoords='offset pixels')\n", "\n", "# Plot intermediate points\n", "for p, lab in zip(hat_AB, [rf\"$\\hat{{AB}}_{i}$\" for i in range(1, 5)]):\n", " ax.scatter(*p)\n", " ax.annotate(lab, p, fontsize=10, xytext=(-30, 15), textcoords='offset pixels')\n", "\n", "for p, lab in zip(AB, [rf\"${{AB}}_{i}$\" for i in range(1, 5)]):\n", " ax.scatter(*p)\n", " ax.annotate(lab, p, fontsize=10, xytext=(10, 15), textcoords='offset pixels')\n", "\n", "arc_element = Arc((0, 0), 2, 2, theta1=B_theta, theta2=A_theta, linewidth=1, zorder=0, color=\"k\")\n", "ax.add_patch(arc_element)\n", "ax.add_collection(mc.LineCollection([[p_O, p_A], [p_O, p_B], [p_A, p_B]] + [[p_O, AB_i] for AB_i in AB], linewidths=1))\n", "ax.add_collection(mc.LineCollection([[p_A, p_B]], colors=\"r\", linewidths=2))\n", "\n", "new_points = np.r_[p_A[None, :], AB, p_B[None, :]]\n", "annotate_distances(ax, new_points)\n", "\n", "for i in range(new_points.shape[0] - 1):\n", " ax.add_collection(mc.LineCollection([[new_points[i], new_points[i + 1]]], colors=\"g\", linewidths=2))\n", "\n", "plt.xlim(-0.05, 1.1)\n", "plt.axis('equal')\n", "plt.tight_layout()\n", "plt.axis(\"off\")\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.16" } }, "nbformat": 4, "nbformat_minor": 5 }