| CARVIEW |
Select Language
HTTP/2 200
date: Tue, 30 Dec 2025 19:45:21 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"326e7b198cfdc9a43e127fbe45f9a0c8"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com github.githubassets.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com github.githubassets.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=dONd5Nsul%2BALLiHd0BcgPDIx2t3iqrSYzcy1iRZCG%2BTFad%2BmbMJnpO4yN3MmETzNXOuUFwGuea9TuFDcF3ROK1ZPN%2Feajl8ZMXLOE5AVCv31AS9aPFgBX1aWS7xXCTFCodwRDI1b9HpfJG1XNemvZqviI45%2F1tQACXmbdOho0k9S9Kw7k20844r3uxhKOC88uKukzjGMeXdtlrw%2FJ40BNroVceHoiwEbqo3WSCySH%2Bn7q3cMpWt5XnMrf%2FsSP8AHgeAU5yTXvfPfiE6ooUfy4g%3D%3D--jafEETPOxFykFu7W--SrRrdzruicttdihBSQ42UQ%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.127446276.1767123920; Path=/; Domain=github.com; Expires=Wed, 30 Dec 2026 19:45:20 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Wed, 30 Dec 2026 19:45:20 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: ECC6:262140:FFB23F:11B00E4:69542BD0
GitHub - aldenwalker/shine: surface visualizer
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 0
aldenwalker/shine
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
shine Copyright 2014 Alden Walker akwalker@math.uchicago.edu Released under the GPL. shine currently does the following: (1) finds and visualizes hyperbolic structures on surfaces (2) visualizes embedded surfaces in R^3 and (hyperbolic) geodesics on them See INSTALL for installation instructions. Once you have the appropriate python packages, you should just have to type: ipython shine.py (I use ipython). *** comments *** Shine is not particularly polished (hah). It is extremely slow, and opening large surfaces takes a while (because it finds the hyperbolic structure). It should be rewritten in C++ or something and use OpenGL. Sometimes drawing loops has random bugs. Email me with any questions, and especially with any bugs you encounter! *** acknowledgements *** This program was inspired by wireframe by Danny Calegari (available on his github page) and by geometric surface code by Nathan Dunfield. *** opening/loading *** Shine creates surfaces as boundaries of regular neighborhoods of planar graphs. It triangulates them and finds a hyperbolic structure (it tries to make the incident triangles around a vertex have equidistributed angles). There are two ways to get a planar graph into shine. Creating a surface from a graph: Select "new from graph" from the file menu and draw a graph. Click a vertex to make it active, and then you can click on either another vertex (to draw an edge between them) or on blank space (to create a new vertex joined to the active one). The dots show integer points. Since takes a neighborhood of radius 1/2. The chunkier a surface is, the better looking it will be. Loading a graph file: A graph file has the following format: <number of vertices> <number of edges> <coordinates of vertices, one vertex per line> <vertices connected by edges, one edge per line> <optional loop data> See genus_2.pgr for an example. The loop data is in the following format: <loop label> <edges crossed> A loop travels along the top of the regular neighborhood of the surface, and the edges should be listed in order, with signs. To go around vertically, write an "a" after an edge. To ensure the loops can be multiplied, they should all start and end with the same edge. See genus_2.pgr. You can also load a saved session .pkl file. *** saving *** Go to File -> save session to save a .pkl file with all the data of the surface, loops, etc. *** 3D visualization *** Control the visualization with the buttons on the upper left. Turn the mesh and shading on or off with the view menu. The buttons S and F subdivide and flow. Subdividing twice and then flowing numerous times usually produces a good first pass. *** hyperbolic visualization *** Use the View menu to see the lifted surface. Subdividing makes this take much longer. If you want to explore the hyperbolic structure, don't bother subdividing. You can click to change the zoom. *** loops *** Click the plus to add a loop, which can either be given as a word in the generators from the graph file (if they exist), or as a drawn loop on the surface. Click the boundary edges to change sides of the surface. Click "geoify" to smooth the curve in the hyperbolic metric. Note you need to do this every time you subdivide. You can change the color by clicking the color. *** exporting *** The default selections produce a good approximation of the standard surface outline that everyone draws. It's worthwhile to give the visualization one last subdivision and smooth so that the boundary looks good.
About
surface visualizer
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published
You can’t perform that action at this time.