Fractals
-
It's time for another trip down memory lane… From time to time, I hear people talking about Autodesk's more "radical" R&D investments… whether in the consumer software space – much of which is being driven by the Maker movement – or related to the bio/nano research Andrew Hessel and team are performing at Pier 9. I can understand that to some this might seem as though Autodesk is departing from its core mission, in some way. I have a slightly different perspective on this… yes, we had perhaps 15 years of our history – largely during the Bartz era –…
-
Over the weekend I managed to complete the BerkeleyX Foundations of Computer Graphics class. This was really an excellent class, both in terms of the structure of the lectures and the homework assignments, which actually scaled in a non-linear way (the last assignment took as much time to complete as the previous three combined). But you were eased into it and didn't strictly need to do the last piece of homework (which was to write a ray-tracer from scratch) to get a "pass" on the course. What's nice about these MOOCs is that – in order to scale, putting the…
-
I had a little fun with the title for this post: unfortunately this one isn't a "how to" and I'm not actually going to provide a code sample. But I did want to highlight how AutoCAD's .NET API has been used for at least one exhibit at this year's Burning Man, and a very cool one, at that. I first heard about Burning Man when I was living in the San Francisco Bay Area back at (or soon after) the turn of the millennium. Our housemate back then (being British I have trouble with the term roommate… back in the…
-
This week has so far had an AU theme to it, just as last week we talked exclusively about Leap Motion and AutoCAD. Perhaps I'm sub-consciously shifting this blog to a weekly-themed format? Hmm. Like many of you, I'm sure, I received an email over the weekend to let me know that the recorded sessions from Autodesk University 2012 are now available online (for anyone with a valid AU online account). I wasn't sure which of my sessions had made it up there from this last year's event (thank goodness I rarely have to write cheques anymore), and so was…
-
As suggested in the last post, today we're going to take the results of running the code from that post and use them to generate a hollowed-out sphere. A big thanks to Francesco Tonioni, from our Product Support team in Neuchatel, who spent some time throwing ideas around on a lazy (but very cold) Sunday afternoon, contributing significantly to this post. A few minor changes to the code were needed: rather than creating the spheres at exactly the size at which they were generated by the F# code, I adjusted the C# code to multiply the radius by 0.98 and…
-
This post continues the series on fill algorithms for 3D printing by looking specifically at an Apollonian sphere packing. In the last post we got most of the way there, but today we're going to introduce a more elegant algorithm for solving the problem (with pretty impressive results :-). Many thanks to Professor Ronald Peikert from ETH Zurich for kindly providing the C++ code used to generate the F# code in today's post. The original algorithm was outlined in this paper co-authored by Professor Peikert, under the section The "Inversion Algorithm" and – as you might divine from the name…
-
So far in this series, we've looked at Apollonian circle packing using C# and also F#. The next few posts will look at solving this problem in 3D: performing Apollonian sphere packing. I've decided to stay in F# for the algorithmic side of things: it just feels a much cleaner environment for dealing with this kind of problem, and, besides, I've been having too much fun with it. 🙂 One thing I should mention, as this series is nominally about 3D printing fill algorithms: printing hollow spheres isn't at all straightforward with today's 3D printing technology, as support material is…
-
Following on from the previous post in this series, today's post completes the implementation to create a full Apollonian gasket in AutoCAD using F#. As a comment on the original Common LISP implementation, someone had contributed a more complete version which allowed me to complete today's F# version. Here's the additional F# file for the project (which I'll be providing in full at the end of the series): module CirclePackingFullFs open System.Numerics; // Use Descartes' theorem to calculate the radius/position // of the 4th circle // k4 = k1 + k2 + k3 +/- sqrt(k1k2 + k2k3 +…
-
To carry on from the last post in this series, today's post is looking at a simple, initial attempt to pack circles into a space using F#. Rather than starting from the C# code in the previous post, I decided to look for a solution that makes better use of F#'s mathematical capabilities. I came across this simple Common LISP implementation, which creates a subset of a full Apollonian gasket. [Aside from the links in the previous post, this page may also provide additional insights into programmatic approaches for solving this problem.] Here's my equivalent F# code: module CirclePackingFs …
-
To follow on from the recent series on using hyperbolic tessellation to generate patterns that might be used for 3D printing, I decided to research a slightly different approach. While I found hyperbolic tessellation reasonably straightforward for generating 2D patterns, it was much harder to adapt to 3D, mainly because we'd need to create irregular polyhedra rather than just irregular 2D polygons. I had enough trouble getting my head around the 2D side of things that I decided not to go down that path for now, at least. The good news from Alex Fielder is that he's been making good…