CirclePack
Open source Java code for creation, manipulation, analysis, and display of circle packing (in the sense of Bill Thurston).
Install / Use
/learn @kensmath/CirclePackREADME
CirclePack
Open source Java code for creation, manipulation, analysis, and display of circle packing (in the sense of Bill Thurston).
A "circle packing" is a configuration of circles satisfying a prescribed pattern of tangencies. It is also the term for the mathematical topic which studies the theory and application of these configurations. On the theory side, circle packing now provides a remarkably comprehensive and faithful theory for discrete analytic functions and discrete conformal geometry. Those interested are directed to my Cambridge University Press book "Introduction to Circle Packing: the Theory of Discrete Analytic Functions", 2005. But circle packing has benn applied both inside and outside of mathematics without particular reference to this theory. Indeed, the images of circle packings give patterns evocative of many patterns one sees in nature, and modelling with circle packing provides many advantages --- thanks to the background mathematical theory --- in diverse topics such as brain imaging, physics of jammed packings, knot and general graph embedding, random graph theory, 3D printing, etc.
CirclePack software is pure Java code, graphically based, with input and scripting features intended to be user friendly. However, this is aspirational, as the topic is continually growing, and the desire to run new experiments overwhelms the desire to make the software more accessible. Sorry. Perhaps a community can be developed to improve things. In using CirclePacking, I have numerous scripts that can be executed by any user; I am working on organizing these as a resource that potential users can access. Again, this is aspirational: wish me luck.
A brief hitory of CirclePack development: Circle packing was introduced by Bill Thurston, first in his famous "Notes" in the late 1970's, but more broadly in a fantastic talk at the 1985 Conference celebrating deBrange's solution of the Bieberbach conjecture. I was fascinated by that talk and started to move my research towards circle packing. My initial interest was in the intriguing circle packing images, leading to some minor coding in Basic. Thinking about the topic for coding was more valuable than the coding itself, and I soon began to see substantial theoretical potential in the topic. Among other things I proved Thurston's Conjecture from that 1985 talk using prbabilistic methods and I published papers with Alan Beardon on a discrete Schearz lemma and Uniformization theorem. Many others took part in the rapid growth of this topic: I will mention, in particular, Oded Schramm and Z-X He, who proved quite astounding results. It became evident to me early on that developing the theory depended on doing experiments, so I became more serious about coding, starting my early versions of CirclePack in the early 1990's. That coding continues to this day, but the underlying machinery has morphed many times. Basic and Mathemtica did not last long and I quickly moved to C, using SunView and later XView as GUI platforms. When XView was killed, I jumped to Java (and Swing). This is the packacge occupying this repository. This history explains some of the shortcomings of CirclePack: since it was not initially conceived in an opbject oriented way, the code is unnecessarily convoluted. The main difficulty, however, is that the next experiment, the next theorem, the next application, are more attractive than cleaning up the code. Fortunately, the code is sufficiently well structured that it generally works, and for those in the know (that includes me, perhaps only me) it can be modified quickly to incorporate new features. Though I'm not originally a programmer, I would love to share the clever bits of my CirclePack work --- anyone want to hear that?
Current projects include 3D printing (patterns for infill) with John Bowers and a gropu at Oak Ridge National Lab, rigidity connections such as particle jamming in 2D, conformal tiling with Phil Bowers, and the discrete Schwarzian derivative, inspired by my former student, Gerald Orick.
I would love to find a way to open CirclePack to interested contributors; I won't be arround forever, and circle packing is too valuable to be lost. If you are interested in such an undertaking, I'll be happy to talk with you.
Related Skills
node-connect
354.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
112.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
354.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
354.3kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
