tag:blogger.com,1999:blog-88394305088310120072024-03-11T10:08:33.263-07:00MakerHomeOne 3D print every day from home, for a yearmathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.comBlogger366125tag:blogger.com,1999:blog-8839430508831012007.post-71958147654140043252014-10-12T20:39:00.004-07:002014-10-13T04:35:26.722-07:00New Hacktastic blog!We're back from break after finishing the MakerHome 3D-print-a-day-for-a-year project, and picking up the pieces at a new blog. Join us over at <a href="http://www.mathgrrl.com/hacktastic">Hacktastic</a>:<br />
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7Y-4fvspmHPRt0KUh0Ugcqf0z7TPCTNcbCFS33bKHe_WwjjdcjU6l6LmR9cLxpCogNgdTp1xFu4GWvN5hknTXKDYVo87FWYE81FIuro3qs4-ePyZ0ZGLjL3TCTbNUSNC4BF36D9azVlp8/s1600/aaa.tiff" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7Y-4fvspmHPRt0KUh0Ugcqf0z7TPCTNcbCFS33bKHe_WwjjdcjU6l6LmR9cLxpCogNgdTp1xFu4GWvN5hknTXKDYVo87FWYE81FIuro3qs4-ePyZ0ZGLjL3TCTbNUSNC4BF36D9azVlp8/s1600/aaa.tiff" height="442" width="640" /></a></div>
<div>
<br /></div>
mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-69337862082683105992014-08-26T07:10:00.000-07:002014-08-26T07:10:50.254-07:00Day 365!!! Last day of the print-every-day-for-a-year project!I think the first thing that needs saying here is that a year is a very long time. There are a lot of days in a year. After about 60 or 70 days I remember thinking that we were probably halfway through this year-long blog thing and then being shocked at just how many days there are in a year. Damn.<br />
<br />
But it is over, we have finished the year and so we get a TROPHY. Since our 3D-printing journey began with the desire to print knots, our trophy is a tiny 3D-printer (model from RichRap's very cleverly designed <a href="http://www.thingiverse.com/thing:37536">Advent Makerbot Replicator 2</a>), which is printing an even tinier knot (model dating back all the way to the beginning of this journey, on <a href="http://makerhome.blogspot.com/2013/09/day-9-mini-knots.html">Day 9</a>):<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe298B1uLuyfsETNMaHZQ6XR5_BnLgO81nwnPbr-a6ZzJi5d0L4xhxZFB3Syw5P7BVg7yX6xx6wRgHNFceO7qDXJXPJm95M8kaSNLawHUXhVTdoVNOedUTQ0CTeBh6B_7Xxcz7eP7_0Jc1/s1600/day365_3dprinting_trophy.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe298B1uLuyfsETNMaHZQ6XR5_BnLgO81nwnPbr-a6ZzJi5d0L4xhxZFB3Syw5P7BVg7yX6xx6wRgHNFceO7qDXJXPJm95M8kaSNLawHUXhVTdoVNOedUTQ0CTeBh6B_7Xxcz7eP7_0Jc1/s1600/day365_3dprinting_trophy.jpg" height="480" width="640" /></a></div>
<br />
Thingiverse link for the printer model: <a href="http://www.thingiverse.com/make:91229">http://www.thingiverse.com/make:91229</a><br />
Thingiverse link for the tiny knot model: <a href="http://www.thingiverse.com/thing:146468">http://www.thingiverse.com/thing:146468</a><br />
<br />
Settings: We printed this tiny MakerBot Replicator 2 on a <a href="https://store.makerbot.com/replicator2">MakerBot Replicator 2</a>! Layer height .3mm, yes raft, no supports, in 47 minutes. The tiny knot was printed on our other good 3D-printing friend the <a href="http://www.afinia.com/3d-printers">Afinia H-Series</a>, using .2mm layer height, raft, and supports.<br />
<br />
Technical notes, ending flavor: After this post we will definitely be taking a break from the blog for a little while. Next week I start my new job as Mathematician-in-Residence at <a href="http://www.momath.org/">MoMath</a>, the National Museum of Mathematics, and I imagine that I'll be snowed under with crazy projects pretty quickly. But we still have some guest posts coming up, and more things to learn about, design, and print, so the blog will continue, just more slowly.<br />
<br />
In the next few weeks we'll also build more content at our <a href="https://www.etsy.com/shop/MakerGeek">MakerGeek Etsy shop</a> and our <a href="https://www.shapeways.com/shops/mathgrrl">Geekhaus Shapeways shop</a>, for those who want cool 3D-printed stuff but don't have a 3D-printer of their own.<br />
<br />
THANK YOU to <a href="http://www.makerbot.com/">MakerBot</a>, for making the excellent Replicator 2 printer.<br />
THANK YOU to <a href="http://www.afinia.com/">Afinia</a>, for making the wonderful H-Series printer.<br />
THANK YOU to <a href="https://www.shapeways.com/">Shapeways</a>, for printing all the things that I couldn't!<br />
THANK YOU to <a href="http://www.tinkercad.com/">Tinkercad</a>, for being free and easy for educators and students.<br />
THANK YOU to <a href="http://www.openscad.org/">OpenSCAD</a>, for making parametric 3D-design free and accessible to all.<br />
<br />
And finally, thanks to everyone who has been reading the blog! Say hi in the comments if you have a chance. If you happen to be in the Brooklyn/NYC area let me know so we can have beverages and talk 3D printing sometime...mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com8tag:blogger.com,1999:blog-8839430508831012007.post-31862723475594206152014-08-25T13:45:00.001-07:002014-08-25T17:44:36.268-07:00Day 364 - Customizable Hinged PolyhedraTWO DAYS LEFT. Just today and tomorrow, and we're done with our print-and-blog-about-one-thing-every-day-for-an-entire-freakin-year project!<br />
<br />
As our final big project this year, we've put together one model for making hinged nets of all five Platonic solids: the Tetrahedron (<a href="http://makerhome.blogspot.com/2014/08/day-353-customizable-hingesnap_14.html">Day 353</a>), Hexahedron/Cube (<a href="http://makerhome.blogspot.com/2014/08/day-345-customizable-hingesnap-cube-nets.html">Day 345</a>), Octahedron (<a href="http://makerhome.blogspot.com/2014/08/day-359-customizable-hingesnap.html">Day 359</a>), Dodecahedron (<a href="http://makerhome.blogspot.com/2014/08/day-362-customizable-hingesnap.html">Day 362</a>), and Icosahedron (<a href="http://makerhome.blogspot.com/2014/08/day-363-customizable-hingesnap.html">Day 363</a>). In the Thingiverse Customizer link below you can choose which polyhedra you wish to print and then set length, thickness, border, and clearance/tolerance values however you like. Here's the set of five:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNNBvmKkVSsWsfjdjIqmTmWVHLI6knvbDoW39a9NQzU2Bwi9VYfKf7Ayhzq8j6SATcsfyojTCh13KLBRAAJnFyhQdjtCde0YEyRYclNN3ey8P8g7QVu5O-dy10UYMQ32kHaXV5OPAXtXxB/s1600/day364_hinged_polyhedra.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNNBvmKkVSsWsfjdjIqmTmWVHLI6knvbDoW39a9NQzU2Bwi9VYfKf7Ayhzq8j6SATcsfyojTCh13KLBRAAJnFyhQdjtCde0YEyRYclNN3ey8P8g7QVu5O-dy10UYMQ32kHaXV5OPAXtXxB/s1600/day364_hinged_polyhedra.jpg" height="480" width="640" /></a></div>
<br />
Here's what they look like unfolded:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq1B5znBHcKCe9fTEefoKXsLoQgPkfaWd4TwFjUD45zAdQZxS7YK4e2vDU8t7_JdeCW9eXHcQtui9MuQo-BDuNiLShGUB9PGV9j-pO6glzHwFIUS-hrmMFl9h5tduGaKQ8cElqTpmIm47Y/s1600/day364_hinged_nets.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjq1B5znBHcKCe9fTEefoKXsLoQgPkfaWd4TwFjUD45zAdQZxS7YK4e2vDU8t7_JdeCW9eXHcQtui9MuQo-BDuNiLShGUB9PGV9j-pO6glzHwFIUS-hrmMFl9h5tduGaKQ8cElqTpmIm47Y/s1600/day364_hinged_nets.jpg" height="480" width="640" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/thing:440961">http://www.thingiverse.com/thing:440961</a><br />
<br />
Settings: These models print fully assembled with hinges intact. The clearances are optimized for a Replicator 2 with .3mm layer height, with no raft and no supports. You can use a raft if you have to, but you must use no supports at all or else the hinges might not work correctly.<br />
<br />
Technical notes, K-12 education flavor: The original idea for these models came from <a href="http://alexisstevens.weebly.com/">Alexis Stevens</a> at James Madison University, who was using paper polyhedral nets in her courses. These models are built to be sturdy and able to hold up to rough-and-tumble educational use. Students will be able to fold and unfold the plastic printed models as many times as they like without the models degrading as they would if they were made of folded paper. Thank you Alexis for this great idea!mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-29487682568272605542014-08-24T13:45:00.000-07:002014-08-25T17:11:28.230-07:00Day 363 - Customizable hinge/snap Icosahedron netTHREE DAYS LEFT.<br />
<br />
Our final hinge/snap net is for the remaining Platonic solid, the lovely Icosahedron:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYZeO5ckpq_zn5Ui4KyiBnrCzuIhy1sZwOrmVwmBMPfV3f2WLfa-zUJJ9aZ1_D3QHH7Iaeg3Rl1u9hZ3Ptoeu1Sp18QIqVfhHhO9YZ2nMG4PPDUzYjEGDG88Pbfake5j96zMpj4GcnhorQ/s1600/day364_hingesnap_Icosahedron.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYZeO5ckpq_zn5Ui4KyiBnrCzuIhy1sZwOrmVwmBMPfV3f2WLfa-zUJJ9aZ1_D3QHH7Iaeg3Rl1u9hZ3Ptoeu1Sp18QIqVfhHhO9YZ2nMG4PPDUzYjEGDG88Pbfake5j96zMpj4GcnhorQ/s1600/day364_hingesnap_Icosahedron.jpg" height="480" width="640" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/thing:440950">http://www.thingiverse.com/thing:440950</a><br />
<br />
Settings: Printed on a MakerBot Replicator 2 with no raft and no support on an acrylic build plate, with .3mm layer height. When you load the model the MakerBot Desktop software will tell you that the model needs to be scaled down, but that is only because it needs to be rotated. Rotating by 30 degrees will make the net line up horizontally with the platform.<br />
<br />
Technical notes, trickiness flavor: The Icosahedron is the trickiest of all the Platonic solids for hinged nets. The one we printed on <a href="http://makerhome.blogspot.com/2013/11/day-84-hinged-icosahedron.html">Day 84</a> hardly held together; it would collapse at the slightest touch back into its flat configuration. What goes wrong is that the Icosahedron is nearly spherical and therefore its faces meet at very obtuse angles, which makes it difficult to keep the faces snapped together. For this reason we have lowered the clearance between the snaps significantly for today's icosahedron model, reducing it from .55 millimeters to .25 millimeters.mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-22495792158069554722014-08-23T13:35:00.000-07:002014-08-25T15:52:12.931-07:00Day 362 - Customizable hinge/snap Dodecahedron netFOUR DAYS LEFT.<br />
<br />
Today we printed our fourth Platonic solid hinge/snap model, of a dodecahedron. This is the same shape we printed back on <a href="http://makerhome.blogspot.com/2013/11/day-83-hinged-dodecahedron.html">Day 83</a> as part of our old <a href="http://www.thingiverse.com/thing:185859">Hinged Nets and Snap Tiles</a> series but now the dimensions and tolerances of the model are customizable in OpenSCAD and at the Thingiverse Customizer link below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDVeNbmOwBJf670M9D39rqNRp_lM-0fVhDzidFgvQfroV4OvX7et5Alv3jHT66dTxk41OGPq5HK79U8TdqIFAfscYDMK6nun-2dLJb4Ba-oRQrWJg11UJ8yWsXY5HAuLoUIEuKVDtdklnn/s1600/day362_hingesnap_Dodecahedron.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDVeNbmOwBJf670M9D39rqNRp_lM-0fVhDzidFgvQfroV4OvX7et5Alv3jHT66dTxk41OGPq5HK79U8TdqIFAfscYDMK6nun-2dLJb4Ba-oRQrWJg11UJ8yWsXY5HAuLoUIEuKVDtdklnn/s1600/day362_hingesnap_Dodecahedron.jpg" height="480" width="640" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/thing:440853">http://www.thingiverse.com/thing:440853</a><br />
<br />
Settings: Printed on a Replicator 2 with .3mm layer height and no raft, no supports.mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-30679761534466216452014-08-22T13:54:00.000-07:002014-08-24T20:46:25.976-07:00Day 361 - Friday Fail: 72 Pencils editionFIVE DAYS LEFT.<br />
<br />
Today we printed a redesign of AuntDaisy's <a href="http://www.thingiverse.com/thing:23319">Geo Hart 72 Pencil Holder</a> from Thingiverse. Instead of scaling that model we made two simple new models in Tinkercad. Each model is just a hexagon ring with holes in it, used to line up pencils to make <a href="http://georgehart.com/">George Hart</a>'s wonderful <a href="http://www.georgehart.com/sculpture/pencils.html">72 Pencils</a> sculpture. Here's what our 72 pencils looked like right before we removed the last two rings and a stray rubber band that was keeping in the front pencil:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizF3VYY74bFkwG_BmuIjgcOTrVeKS7fZZbUwd3WkoUfXp17Zt7Nc6EcdeYsFuJLVmkZXhKrJ1Jju2CPNXicHgWAEjt0jYZOO_ZbDRfg7y5IUtDrs9OfS790IhcEXf8cmm7g_a2H1Rsf5GG/s1600/day361_pencils_together.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizF3VYY74bFkwG_BmuIjgcOTrVeKS7fZZbUwd3WkoUfXp17Zt7Nc6EcdeYsFuJLVmkZXhKrJ1Jju2CPNXicHgWAEjt0jYZOO_ZbDRfg7y5IUtDrs9OfS790IhcEXf8cmm7g_a2H1Rsf5GG/s1600/day361_pencils_together.jpg" /></a></div>
<br />
And here's what the rings themselves look like. The blue rings are sized to fit snugly around the erasers of standard yellow <a href="http://www.amazon.com/gp/product/B006CSPZK4/ref=ox_ya_os_product_refresh_T1">Triconderoga pencils</a>, and the red rings have large holes that are sized to fit around the body of the pencils at the pointy ends. I didn't need all eight of these; two of each were enough to keep half of the pencils in place so that I could line things up and slide in the other 36.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwRfmufcrld-LXJmBIgHqSfCsh2Kjw-Wc4YFaMrf9Lx2c3eedpPqeuHU6qtBcJSphns7LuPK81zSbrSO7BJxCTSpVun2-b2KOI_qWiWRzFzCIwDhZ0hcEKuQd6Un3B9Z3xX5qaCx7imJDm/s1600/day361_pencilhelpers.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwRfmufcrld-LXJmBIgHqSfCsh2Kjw-Wc4YFaMrf9Lx2c3eedpPqeuHU6qtBcJSphns7LuPK81zSbrSO7BJxCTSpVun2-b2KOI_qWiWRzFzCIwDhZ0hcEKuQd6Un3B9Z3xX5qaCx7imJDm/s1600/day361_pencilhelpers.jpg" height="480" width="640" /></a></div>
<br />
Tinkercad link: <a href="https://www.tinkercad.com/things/aTD0Zg8rDSj-pencil-sculpture-helpers">https://www.tinkercad.com/things/aTD0Zg8rDSj-pencil-sculpture-helpers</a><br />
Thingiverse link: <a href="http://www.thingiverse.com/thing:440151">http://www.thingiverse.com/thing:440151</a><br />
<br />
Technical notes, failure flavor: The sculpture seemed so, so sturdy that we somehow thought it would all stay together even after we removed the last helper rings. We saw online that other people use crazy glue to hold together parts of the model but that is OTHER PEOPLE. We thought we were soooo much better and would never have to do such a thing. Surely WE can do this without glue, everything is going so well, what could happen?<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6Mq_7_5AoXfQEiM8x9fRM3K8GVDMS5RG2h8L9XPeRkeeT1j5d2KAHMwgzw2Gwac7wSoqrpRQxwHmdtuMkdFSL35Bp9brovLREBHCNseLotEtb8JrQCtZVondcK42Pc9wUr_DD5mmvfQrw/s1600/day361_pencils_apart.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6Mq_7_5AoXfQEiM8x9fRM3K8GVDMS5RG2h8L9XPeRkeeT1j5d2KAHMwgzw2Gwac7wSoqrpRQxwHmdtuMkdFSL35Bp9brovLREBHCNseLotEtb8JrQCtZVondcK42Pc9wUr_DD5mmvfQrw/s1600/day361_pencils_apart.jpg" height="480" width="640" /></a></div>
<br />
The pencils are now assembled into a much simpler sculpture that we proudly display in our lovely home:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGfEKbX7saey7zmpNRLs_iLkr9MzJ7mJ7fELlITdG4sRp6chLLBxnvPuc4O87dAFrf7Uyb2wA5lE0G46sLR5Xz1CbbfV42YEmKdnLVUHilLn_VSqproXPTSopfFdvBght-RbbZ71hlrxz0/s1600/day361_pencils_together.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGfEKbX7saey7zmpNRLs_iLkr9MzJ7mJ7fELlITdG4sRp6chLLBxnvPuc4O87dAFrf7Uyb2wA5lE0G46sLR5Xz1CbbfV42YEmKdnLVUHilLn_VSqproXPTSopfFdvBght-RbbZ71hlrxz0/s1600/day361_pencils_together.jpg" height="480" width="640" /></a></div>
mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com1tag:blogger.com,1999:blog-8839430508831012007.post-48228934160338981962014-08-21T15:47:00.000-07:002014-08-24T20:29:02.366-07:00Day 360 - Shapeways print of the TRI bracelet<div class="separator" style="clear: both; text-align: left;">
SIX DAYS LEFT.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The TRI bracelet (<a href="http://makerhome.blogspot.com/2014/07/day-320-tri-customizable-function.html">Day 320</a>) is back from <a href="https://www.shapeways.com/model/2293264/function-bracelet-tri-large.html?materialId=77">Shapeways</a>! It's delicate but very beautiful and came out perfectly. You can bend it easily in your hand and it is soft on the wrist. It sort of feels like a strip of light, sanded tree bark. I wouldn't wear it to a bar fight or under a heavy jacket that I might take on and off a lot, but it is plenty sturdy for casual workday/eveningwear use.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLG3LQ5-cs-8ge5acg8GIHTWAhdrDdR-ZWg9Hfbyms45nminCfoe2yCrl9KrBkYpsy-N4b60q5t_-3kIEgdUDGbjSRq1qAH7G2yklPFIcav0BvvVT8zLQbwDAcH1yDtitlXE6JczlZ_61E/s1600/day360_fb_TRI_Shapeways.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLG3LQ5-cs-8ge5acg8GIHTWAhdrDdR-ZWg9Hfbyms45nminCfoe2yCrl9KrBkYpsy-N4b60q5t_-3kIEgdUDGbjSRq1qAH7G2yklPFIcav0BvvVT8zLQbwDAcH1yDtitlXE6JczlZ_61E/s1600/day360_fb_TRI_Shapeways.jpg" height="480" width="640" /></a></div>
<br />
Shapeways link - if you don't have a printer or want a light, delicate version of the bracelet, Shapeways will print and mail this to bracelet you for $10: <a href="https://www.shapeways.com/model/2293264/function-bracelet-tri-large.html?materialId=77">https://www.shapeways.com/model/2293264/function-bracelet-tri-large.html?materialId=77</a><br />
<br />
Thingiverse link - Customize to fit your own size and preferences, download for free, and print it yourself! <a href="http://www.thingiverse.com/thing:416336">http://www.thingiverse.com/thing:416336</a>mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-60590850532439478912014-08-20T15:46:00.000-07:002014-08-24T20:30:44.727-07:00Day 359 - Customizable hinge/snap Octahedron netToday we modified the code of the hinge/snap Tetrahedron net from <a href="http://makerhome.blogspot.com/2014/08/day-353-customizable-hingesnap_14.html">Day 353</a> to make an Octahedral net. Here are two copies, one unfolded and one folded:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKQIj7f9UYaCiHwAmAwHbbXVlQfM6JIcZ9LR2Ft-iPxXmvKNQ4uZ0cKrs7eCezuFA5BlkSCEMqgrx4IyvEs8Fn0b8gQeMkphMbi4MpeTne0bQpYu6Cp2cfEtLjryVFZFH6ArsRE7WpvGPx/s1600/day359_hingesnap_octahedron.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKQIj7f9UYaCiHwAmAwHbbXVlQfM6JIcZ9LR2Ft-iPxXmvKNQ4uZ0cKrs7eCezuFA5BlkSCEMqgrx4IyvEs8Fn0b8gQeMkphMbi4MpeTne0bQpYu6Cp2cfEtLjryVFZFH6ArsRE7WpvGPx/s1600/day359_hingesnap_octahedron.jpg" height="480" width="640" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/thing:440141">http://www.thingiverse.com/thing:440141</a><br />
<br />
Settings: Printed on a MakerBot Replicator 2 with .3mm layer height and no raft or supports, in 31 minutes.<br />
<br />
Technical notes, why-are-we-doing-this flavor: The hinge/snap models we've been making this week are better than the ones we made for the Tetrahedron we made on <a href="http://makerhome.blogspot.com/2013/11/days-80-82-coming-soon.html">Day 80</a>, the Cube we made on <a href="http://makerhome.blogspot.com/2013/11/day-81-hinged-cube.html">Day 81</a>, and the Octahedron we made on <a href="http://makerhome.blogspot.com/2013/11/day-82-hinged-octahedron.html">Day 82</a>, for five reasons:<br />
<br />
First of all, the snaps on the old models were not "ambidextrous"; some snaps had more tines than others, and we had to think carefully to make sure that we put the correct type of snaps on each face. In our new models every snap on every side is identical, and due to the orientability of the polyhedra these snaps automatically align together nicely.<br />
<br />
Second, and by far the most importantly, the old hinge/snap models were made in <a href="https://www.tinkercad.com/">Tinkercad</a> while the new models were made in <a href="http://www.openscad.org/">OpenSCAD</a>. The reason this is important is that the OpenSCAD models are parametric; in the OpenSCAD code we can change the length, thickness, and tolerances simply by changing the appropriate numerical parameter and then re-compiling. In Tinkercad, changing tolerances meant re-doing each hinge and snap by hand. Even better, since these new models are designed in OpenSCAD we can upload them to the Thingiverse Customizer so that users can change parameters as they like without ever having to deal with the actual code.<br />
<br />
Third, because of the way the OpenSCAD code for these models was written we will be able to use the code to create more exotic polyhedra than the <a href="http://en.wikipedia.org/wiki/Platonic_solid">Platonic solids</a>, without too much extra work. For example we could construct nets for all of the <a href="http://en.wikipedia.org/wiki/Semiregular_polyhedron">semi-regular polyhedra</a>, with different types of faces within the same model.<br />
<br />
Fourth, because we stole some design code from our <a href="http://www.thingiverse.com/thing:230139">Print-in-Place Fidget Cube</a>, these new models have much more reliable hinges with fewer non-manifold edges and fewer printing problems. The new hinges can also be printed smaller than the previous models' hinges.<br />
<br />
The fifth reason is kind of weird, which is that the snaps and hinges on this model don't look similar. We constructed the old models so that the snaps and hinges looked as much like each other as possible, so that the folded-up object would look as regular and homogeneous as possible. But it turns out to be kind of difficult to unfold an assembled object if you can't easily tell which edges have the hinges and which have the snaps! For the new nets we purposely made the snaps and hinges easy to tell apart.<br />
<br />
I'm glad to be finishing out the year with this re-do of our old hinge/snap models, because it really shows how much I've managed to learn this year, especially in OpenSCAD. There are so many things I didn't get a chance to learn, and I still know so little about everything, including OpenSCAD, but for this model at least I can see how I grew up a little bit over the course of the year. There are only six days left to our year of print-a-day. Six is the best number. Tomorrow we start counting down to the end...mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-76070649409949204942014-08-19T15:24:00.000-07:002014-08-24T19:50:06.817-07:00Day 358 - iPhone stand bingeI can't believe it took me this long to get around to printing an iPhone stand. Phone cases and stands are the first thing that most of my students think of to print. But here I am, almost at the end of printing one thing a day for an entire freakin year, and it just now occurs to me that I need a stand for my iPhone. This is like when I learned to knit by struggling through a complicated <a href="http://en.wikipedia.org/wiki/Fair_Isle_(technique)" target="_blank">Fair Isle</a> Estonian sock pattern instead of starting with a scarf like everybody else. After a couple of years of knitting strange and complicated things I finally got around to knitting a scarf, and now almost everything I knit is some kind of scarf. I wonder if now that I've finally printed an iPhone stand I will print nothing but iPhone stands...<br />
<br />
Or maybe I can just get it out of my system all at once. We printed five stands today:<br />
<br />
<b>Print One:</b> desktoplathes' <a href="http://www.thingiverse.com/thing:5235">iPhone stand with 2 settings</a>. Can't get simpler than this. Very nice! The two angled positions work particularly well if you have a case on your phone, since the lip of the angle grabs the front lip of the case. This results in a very sturdy stand, even though it is so small you could easily carry it around in your pocket.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEy4ujJ2V3KRJcZHYJBm-iWpzegtaPUr4ZXrsvsrJNmWFta7sIv4M-h7af6hLBc_9iedx-RgzFg7Hl9KiaX556c3XVohJWH175-BvwZFF3aQNFt39MWPqbSOR9dm0tUad6yES_8BrCt7K0/s1600/day358_iphone_desktoplathes.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEy4ujJ2V3KRJcZHYJBm-iWpzegtaPUr4ZXrsvsrJNmWFta7sIv4M-h7af6hLBc_9iedx-RgzFg7Hl9KiaX556c3XVohJWH175-BvwZFF3aQNFt39MWPqbSOR9dm0tUad6yES_8BrCt7K0/s1600/day358_iphone_desktoplathes.jpg" height="480" width="640" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/make:91016">http://www.thingiverse.com/make:91016</a><br />
<br />
Settings: MakerBot Replicator 2 with raft but no supports, .3mm layer height, 22 minutes.<br />
<br />
<b>Print T</b><b>wo:</b> SunnyJames' <a href="http://www.thingiverse.com/thing:18986/#files">6 Position iPhone stand</a>. A lot like the one above but with an extra slot for when you want to stand your phone dead vertical. I can see that being useful for filming. The center slot is too small for our iPhone 4 with case, and too large for our iPhone 5 without case; but for the iPhone 4 with no case this is Goldilocks. The outside slots work with or without the case, with either iPhone model.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9C7x_cTeErrBxM39WvnkG0ZtmFY15fW8K2yqq8b0agKA836uoCGCGf0XF59UsS4tK_8goOjOycnD5kkLi318OubirqXd9qwLj0rKL9_nuHAvzb_kndUscjanwvF5c-AaNH_9YerIuQhYi/s1600/day358_iphone_SunnyJames.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9C7x_cTeErrBxM39WvnkG0ZtmFY15fW8K2yqq8b0agKA836uoCGCGf0XF59UsS4tK_8goOjOycnD5kkLi318OubirqXd9qwLj0rKL9_nuHAvzb_kndUscjanwvF5c-AaNH_9YerIuQhYi/s1600/day358_iphone_SunnyJames.jpg" height="480" width="640" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/make:91017">http://www.thingiverse.com/make:91017</a><br />
<br />
Settings: MakerBot Replicator 2 with raft but no supports, .3mm layer height, 30 minutes.<br />
<br />
<b>Print T</b><b>hree:</b> adampaterson's <a href="http://www.thingiverse.com/thing:95104/#files">Phone Stand Concept - Dual Angle</a> model. This one is really interesting, and it took me a while to figure out how to use it. It turns out to be perfect for that super-low-angle position where you want to keep your phone on your desk and be able to use the touch screen. Yes! This is the only stand we printed that has this unique and very useful super-low position.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiuuFBxFUQVBy3A3A2XH4eibp-3EBdSSI-9gFZbXp_8dRYXNE5onaQqr96KqOnQpcebN6rATPpKVgE3VeqCdjrE_XUh6RtiYMVJum98naeAFVM6D7y2WSAA3pZGgJBUc-NA2GVCrP0Wc89/s1600/day358_iphone_adampaterson.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiiuuFBxFUQVBy3A3A2XH4eibp-3EBdSSI-9gFZbXp_8dRYXNE5onaQqr96KqOnQpcebN6rATPpKVgE3VeqCdjrE_XUh6RtiYMVJum98naeAFVM6D7y2WSAA3pZGgJBUc-NA2GVCrP0Wc89/s1600/day358_iphone_adampaterson.jpg" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/make:91021">http://www.thingiverse.com/make:91021</a><br />
<br />
Settings: MakerBot Replicator 2 with raft but no supports, .3mm layer height, 27 minutes.<br />
<br />
<b>Print F</b><b>our:</b> JohnA's <a href="http://www.thingiverse.com/thing:3293">Kickstand for iPhone / iPad Touch</a>. I love how tiny this is; you could even put this on your keychain if you wanted to. In fact, it has a hole that you could use to do just that! However I had trouble balancing my phone with this one, and sometimes I didn't get it quite right and the phone would fall over. Perhaps I need to print it at a slightly different scale to get it to fit correctly with my model of phone.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYdnVnYhWJlPKvinh0eecqEQS_UdeAzPP-PgpjM2UHHKuzRPRKnn8amA7NaxpfG_1imDGiqBGyqiSXpAV80CmU0AI6C4v8ILGaxdZ68T7kJ0s3YeLetCz4EFd3GDUB22svmitDzhSHmT3S/s1600/day358_iphone_JohnA.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYdnVnYhWJlPKvinh0eecqEQS_UdeAzPP-PgpjM2UHHKuzRPRKnn8amA7NaxpfG_1imDGiqBGyqiSXpAV80CmU0AI6C4v8ILGaxdZ68T7kJ0s3YeLetCz4EFd3GDUB22svmitDzhSHmT3S/s1600/day358_iphone_JohnA.jpg" height="480" width="640" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/make:91022">http://www.thingiverse.com/make:91022</a><br />
<br class="Apple-interchange-newline" />
Settings: MakerBot Replicator 2 with raft but no supports, .3mm layer height, 22 minutes.<br />
<br />
<b>Print F</b><b>ive:</b> tkramm's <a href="http://www.thingiverse.com/thing:30970">iPhone 5 Stand</a>. This one took about twice as long to print as the others, but it has a really sleek and professional design. I'm glad to have printed this one in black; it looks great with the phone. It's also very sturdy and gives access to the button on the front of the phone. There's only one angle option but it is a good one. Fits our iPhone 5 but not the iPhone 4.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7FNlLY3U9W75ggJp7FjkopI6f5kk8fBik_-nrjUvuzmf1sOAuclFdH_Tdrw2O_pKCOdXLsfK6IYH6qxSpztJYgrloTrhfZxfcR5GNiifxc8r16DNoWIlqE1eoFeXvhqqCw7YK4PNmxcPs/s1600/day358_iphone_tkramm.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7FNlLY3U9W75ggJp7FjkopI6f5kk8fBik_-nrjUvuzmf1sOAuclFdH_Tdrw2O_pKCOdXLsfK6IYH6qxSpztJYgrloTrhfZxfcR5GNiifxc8r16DNoWIlqE1eoFeXvhqqCw7YK4PNmxcPs/s1600/day358_iphone_tkramm.jpg" height="480" width="640" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/make:91024">http://www.thingiverse.com/make:91024</a><br />
<br class="Apple-interchange-newline" />
Settings: MakerBot Replicator 2 with raft but no supports, .3mm layer height, 57 minutes.<br />
<div>
<br />
The verdict? Some are better for charging, some for watching videos, some for landscape, some for filming. And now I think we have enough iPhone stands for the whole family and I can stop printing them now.<br />
<br />
Technical notes, time flavor: The five times listed above are from the MakerBot Desktop software's estimate; I used that measure in order to be consistent, because I didn't mark down the exact times for all of the items. In general the MakerWare estimated time is an over-estimate for the Replicator 2; for example, the fifth print actually took only 47 minutes, not 57. For the Replicator Mini the opposite is true: the MakerBot Desktop software tends to <i>under</i>-estimate the time needed for printing. In general we have the following:<br />
<br />
<div style="text-align: center;">
Actual Rep2 time < Estimated Rep2 time < Estimated Mini time < Actual Mini time.<br />
<br />
<div style="text-align: left;">
Technical notes, counting flavor: The other day someone joked to me that I didn't actually print something <i>every</i> day this year because sometimes there are guest posts. Well joke's on you Mr. Husband, today I printed five things. :)</div>
</div>
</div>
mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-89867662091009779562014-08-18T13:37:00.000-07:002014-08-26T06:43:07.214-07:00Day 357 - Printer challenge! 26 mm Level 3 Menger spongeToday we had a visit from <a href="http://educ.jmu.edu/~fieldre/">Rebecca Field</a>, JMU mathematics professor, co-author, long-time friend, and fellow member of the <a href="http://www.toroidalsnark.net/fmwth.html">Female mathematicians who have been known to have teal hair</a> list. She is about to take over as head of the <a href="http://geekhaus.com/3space/classes/gsci-104-spring-2014/">GSCI 104 3D Printing courses</a> this fall in the <a href="http://www.geekhaus.com/3space">JMU 3-SPACE</a> classroom. In that classroom we have nearly a dozen <a href="http://www.afinia.com/3d-printers">Afinia H-Series</a> 3D printers, currently running on ABS filament. Afinia now offers an <a href="http://www.afinia.com/3d-printers/3d-plastic-filaments">option to print with PLA</a>, and Dr. Field and the other directors of 3-SPACE are considering switching. PLA doesn't require a heated platform, and it has less problems with curling. We did some test prints with an Afinia using PLA and they looked really good. But as usual, the only question I really care about is: can we print a Menger sponge with it? The answer is yes, but not as well as in ABS. We also tested the MakerBot Replicator 2 and the MakerBot Mini, both in PLA. Here are the four results:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuvAfHTEy1sWaw8DNgiU-BrDGxwYRz3G4nJDjtMeZ6wXAUQVUK-U-8e_0lv96TpGVQzfTbhUrYQxOmntRDQ42Joluev0Jda6mGYYMMI3o4ELCAv8g1aYjRoQYnVm5d4iupuqrlZixnwg4w/s1600/day353_mengertesting.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuvAfHTEy1sWaw8DNgiU-BrDGxwYRz3G4nJDjtMeZ6wXAUQVUK-U-8e_0lv96TpGVQzfTbhUrYQxOmntRDQ42Joluev0Jda6mGYYMMI3o4ELCAv8g1aYjRoQYnVm5d4iupuqrlZixnwg4w/s1600/day353_mengertesting.jpg" height="480" width="640" /></a></div>
<br />
These are placed in order of quality from left to right; we'll detail each print below. The model we used was a base-repaired version of owens' game-changing, support-free <a href="http://www.thingiverse.com/thing:240739">Customizable Menger sponge</a> model. It's only 26 millimeters on a side, which makes the holes extremely small on this model. I think this is about the limit of what a filament-type printer can handle, so it is a very challenging test.<br />
<br />
Thingiverse link: <a href="http://www.thingiverse.com/thing:439910">http://www.thingiverse.com/thing:439910</a><br />
<br />
<b>Fourth place: </b>The Afinia PLA print (the blue model on the left) came in last in our test. However, printing a Menger sponge, especially a very small Level 3 (!) Menger sponge, is one of the most difficult things we could have asked these printers to do. The small holes on this model are too small to even put a thin needle through! So while the Afinia PLA had some problems with the fine detail of this model - especially at the corners - it still did a pretty good job. For less crazy-detailed models the Afinia PLA did very nicely. But as you can see in the close-up, it had some problems with globbing up on the detailed bits:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBXsBXtFIF8UqjHl0Ofs5hN5Hw6Zz_bEAf8piRESpJCIhkIbuE4RKn9BEIXlXh_V2Bhm0v6VIcpQhNiJV1qOHFhqXlRgA9hvMIFJ9PWsTVDGoII6QUvIn4piM0NwUSQV5u99mBT4Rw9JJd/s1600/day356_mengertest_afiniaPLA.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBXsBXtFIF8UqjHl0Ofs5hN5Hw6Zz_bEAf8piRESpJCIhkIbuE4RKn9BEIXlXh_V2Bhm0v6VIcpQhNiJV1qOHFhqXlRgA9hvMIFJ9PWsTVDGoII6QUvIn4piM0NwUSQV5u99mBT4Rw9JJd/s1600/day356_mengertest_afiniaPLA.jpg" height="508" width="640" /></a></div>
<br />
<b>Third place:</b> Next in quality was the MakerBot Mini. The main problem with this model was threading between all of the holes in the model. And there are a lot of holes! The extruder for the Mini seems to have a problem when bridging over empty space; little bits get extruded as the nozzle passes through the space, which makes little spiderwebs across all the gaps. The Mini did a much better job than the Afinia on the corners, but the threading in the small holes is impossible to remove. We cleaned up the threads from the larger holes before the picture was taken.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRn5524ZtHAyAzVQ_VcoIKjWNXuN4QVoHtB7imZnXoQqPsNhNAStzHxSyl6bxOQzRBVJcfMszqIRQGEfFUBJUYXmCsovDF4DyIXSLtYKBLCgOvGURKCXqq-gU5drn3z3Qr89tv7M89VaAL/s1600/day356_mengertest_mini.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRn5524ZtHAyAzVQ_VcoIKjWNXuN4QVoHtB7imZnXoQqPsNhNAStzHxSyl6bxOQzRBVJcfMszqIRQGEfFUBJUYXmCsovDF4DyIXSLtYKBLCgOvGURKCXqq-gU5drn3z3Qr89tv7M89VaAL/s1600/day356_mengertest_mini.jpg" height="480" width="640" /></a></div>
<br />
<b>Second place:</b> The Afinia H-Series with ABS was very, very nice. The corners aren't as sharp as on the MakerBots, but the detail came out very nicely, with very clean holes all the way through. And you can't beat the opaque, soft look of the ABS. And the amazing yellow color! A very nice and reliable print; I've printed literally hundreds of these on the Afinias and they work very well.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVd32Sb3-MArAjktZya2sFAPvDxhVwkhpd1n8w3cHHgAw-Oc6Pfg83L6U_5HEK1D6WeP-BqlvYZVDsO1OW70ZMA98fDcWz7ltUc0taStCBT17er-v91Rpaqd-er51MMitSwTxKRxGDem5o/s1600/day356_mengertest_afiniaABS.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVd32Sb3-MArAjktZya2sFAPvDxhVwkhpd1n8w3cHHgAw-Oc6Pfg83L6U_5HEK1D6WeP-BqlvYZVDsO1OW70ZMA98fDcWz7ltUc0taStCBT17er-v91Rpaqd-er51MMitSwTxKRxGDem5o/s1600/day356_mengertest_afiniaABS.jpg" height="480" width="640" /></a></div>
<br />
<b>First place:</b> The winner is of course my best friend the MakerBot Replicator 2. I LOVE YOU REPLICATOR 2 PLEASE DO NOT BE DISCONTINUED. Sigh. The picture below is a bit shiny and does not do justice to the incredible sharpness and detail of this model; the top face is most representative. The Replicator 2 prints this model as if it was as easy as printing a solid cube, no worries. I have a print of a Level 3 Menger sponge from the <a href="http://www.jmu.edu/engineering/">JMU Engineering Department</a> (thank you <a href="http://www.jmu.edu/engineering/people/wild.html">John Wild</a>!) made on a fancy refrigerator-sized <a href="http://www.stratasys.com/3d-printers/design-series/performance/dimension-elite">Dimension Elite</a> printer, and the Replicator 2 print is just as good. In fact, it's better, since the dissolvable support material from the Dimension Elite doesn't quite get out of the smallest tunnels, while the Replicator model has fully open tunnels because of the way that it printed on its corner; nothing was ever printed in the tunnels, so nothing needs to come out. Super clean tiny holes all the way through and edges so sharp it almost hurts to hold on to the model. Fantastic!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZd4Y8a8ImD_7etZR8lpVew6B0pR5bSOM4BzE3AWQ5QNZ0cd_8138mN7ZJSWPsLnib72GRwjDZFDPj2ITEI_Q2jFWtHTaThkvyJtLjvMA6i2Eg4uniZCKhyphenhyphenImIiCsWj0RgPvam3cdeQYAm/s1600/day356_mengertest_replicator2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZd4Y8a8ImD_7etZR8lpVew6B0pR5bSOM4BzE3AWQ5QNZ0cd_8138mN7ZJSWPsLnib72GRwjDZFDPj2ITEI_Q2jFWtHTaThkvyJtLjvMA6i2Eg4uniZCKhyphenhyphenImIiCsWj0RgPvam3cdeQYAm/s1600/day356_mengertest_replicator2.jpg" height="478" width="640" /></a></div>
mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com2tag:blogger.com,1999:blog-8839430508831012007.post-47171887427859430912014-08-17T19:31:00.000-07:002014-08-24T20:17:13.755-07:00Day 356 - Sunday guest: Fred Hohman and knot fibrations, part 2<i>Today we continue <a href="http://fredhohman.com/">Fred Hohman</a>'s guest post from <a href="http://makerhome.blogspot.com/2014/08/day-355-saturday-guest-fred-hohman-and.html">Day 355</a>, in which he will print the knot fibrations he constructed yesterday...</i><br />
<br />
Now that I have code that can generate trefoil knots and fibrations of any thickness, it’s time to start printing various versions of the models. The goal is to be able to print the trefoil knot separate from the pages to create a 3D puzzle. At the end of this post I’ll share some of my successful experiments in doing just that.<br />
<br />
<b>1. Printing the trefoil knot with one page with a gap.</b><br />
Here I made a model of the trefoil knot with one page, but removed the points where the page meets the knot. In other words, there is a gap running along the knot where the page meets the surface of the knot. When printed, the page should be free to wiggle a little bit. Here is the object in Mathematica:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2AOYOAQNOyrILTBNrFrV0T0qEMcYoUUIlTapcbvdVefFySRbndY9Xg-FyNI72N3tKpUHpJozr7b1fmngo7I6M1ft2dC4oER_2_76BXzZgduu3qGdsvergswiOk5vmH6QBtwJzXUgqVS3o/s1600/10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2AOYOAQNOyrILTBNrFrV0T0qEMcYoUUIlTapcbvdVefFySRbndY9Xg-FyNI72N3tKpUHpJozr7b1fmngo7I6M1ft2dC4oER_2_76BXzZgduu3qGdsvergswiOk5vmH6QBtwJzXUgqVS3o/s1600/10.jpg" height="640" width="578" /></a></div>
<br />
After exporting to STL and printing, this is the result:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqKSbzS2ewm70OxWZxP6Xw0EDumTCBdKYN_1HSF5da4Rkc5XFY2gE795R05NFMpr27TWBZblZ-m8HM9kkkH7mbIBi0yMqPhkFyUZXHYf4FEbuAK6iAQXeBOf8xzRGtmf7KD3KckkPeU-Pg/s1600/11.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqKSbzS2ewm70OxWZxP6Xw0EDumTCBdKYN_1HSF5da4Rkc5XFY2gE795R05NFMpr27TWBZblZ-m8HM9kkkH7mbIBi0yMqPhkFyUZXHYf4FEbuAK6iAQXeBOf8xzRGtmf7KD3KckkPeU-Pg/s1600/11.JPG" height="428" width="640" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/thing:331530">http://www.thingiverse.com/thing:331530</a><br />
<br />
<b>2. Printing the trefoil knot with three pages with a gap.</b><br />
This is a trefoil knot with three pages, all of which have gaps where the pages meet the knot. This knot is closely related to the previous model; however, two more pages have been added, all of which are equiangular (think of the <a href="http://en.wikipedia.org/wiki/Mercedes-Benz">Mercedes Benz logo</a>). The print time on this can be a bit longer (an afternoon), and the clean-up of supports can get annoying. However, this model looks fantastic in person. Here it is in Mathematica:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgVZUsckn3UfmPlqghIVxs1EQs6EhrCU9e4nTD5NKTMp9eIvZtFp7fNhPixZuUY1cUp2XtCYe313cyI-_mVWTdLusbTXZNNqPtNIn5C-CBIUahDkl5yE5zuZViCUSr_eZK1z_xyZh9bQDK/s1600/12.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgVZUsckn3UfmPlqghIVxs1EQs6EhrCU9e4nTD5NKTMp9eIvZtFp7fNhPixZuUY1cUp2XtCYe313cyI-_mVWTdLusbTXZNNqPtNIn5C-CBIUahDkl5yE5zuZViCUSr_eZK1z_xyZh9bQDK/s1600/12.jpg" height="640" width="600" /></a></div>
<br />
And now printed:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiduXh7EGWeAWGF1zRXBkdqlPtsLeo4_tgH68PrETweQROHy9PlkA1bQjz01V4K_Jk8iS9MQJHjRSQbj-UIlBnRXYxF4IQqWE9zhZWVpbLimlhBHFMDYB5kXd7joYOCNAfC5D5nmK5YOiOP/s1600/13.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiduXh7EGWeAWGF1zRXBkdqlPtsLeo4_tgH68PrETweQROHy9PlkA1bQjz01V4K_Jk8iS9MQJHjRSQbj-UIlBnRXYxF4IQqWE9zhZWVpbLimlhBHFMDYB5kXd7joYOCNAfC5D5nmK5YOiOP/s1600/13.JPG" height="428" width="640" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/thing:337185">http://www.thingiverse.com/thing:337185</a><br />
<br />
<b>3. Printing the trefoil knot and one page separately.</b><br />
Here I printed the standard trefoil knot but edited the domain so that the knot itself is bigger. I also made a groove in the knot that follows where one page meets the surface, with hopes that if I could print a page separately, then I could snap the page into the knot. Next, I took one page and split it into two pieces with the plane <i>z</i>=0. With a little force, I was able to get both pieces in the knot. A good first start, but not ideal for consistent “puzzle-building”.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFEqG3MWVgoR_sazfoe85kX6ES9qTXelzac8SP6T-z64WA3aPW748_KEM7ooG-_Gg1IR1bzy0hotBrVX8_T8Oq67R9oejIUxZCPIBP4eUI5HM3ROd1y7KHgm5xY5u2dyJNesl91M6oLz7t/s1600/14.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFEqG3MWVgoR_sazfoe85kX6ES9qTXelzac8SP6T-z64WA3aPW748_KEM7ooG-_Gg1IR1bzy0hotBrVX8_T8Oq67R9oejIUxZCPIBP4eUI5HM3ROd1y7KHgm5xY5u2dyJNesl91M6oLz7t/s1600/14.JPG" height="428" width="640" /></a></div>
<br />
<b>Current and future work.</b><br />
This puzzle-building problem illustrates a simple idea, but can prove to be very complicated in practice. Many people have assembled large objects by printing smaller components; however, due to the complex geometry of the shape we are dealing with, slicing the knot in a particular way such that the pieces can be reassembled without blocking any other piece is an interesting and challenging problem for any 3D printing enthusiast.<br />
<br />
My latest attempt has been to have Mathematica generate all twelve pages of Pi/6 thickness, cut each page into two pieces using the plane <i>z</i>=0, and import each piece individually into <a href="http://www.blender.org/">Blender</a>, a free, open-source 3D modeling and animation software. In Blender, I added small holes in the bottom and top of each piece of a page. Once the hole was made, I printed the pieces of the pages and glued in small magnets to hold two pieces of the same page together (not all pages are same; in fact, every page is different from one another). I successfully printed a trefoil knot and 3 pages (6 pieces), all with magnets, to make a 7-piece 3D puzzle. Here is the process in Blender:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhucd1JdoYphgwM1OUPfSvS3TWnq5QufyvhqPyCZmQXLutq_DNM8gdYyXJw13arjjc8f3xjBaNBkDIrX_xWylLAf44KD5eboV6OZbzvGjqq7xBYYDd2Z2DfJcQnYvADpWL14-z3n5-7HraP/s1600/15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhucd1JdoYphgwM1OUPfSvS3TWnq5QufyvhqPyCZmQXLutq_DNM8gdYyXJw13arjjc8f3xjBaNBkDIrX_xWylLAf44KD5eboV6OZbzvGjqq7xBYYDd2Z2DfJcQnYvADpWL14-z3n5-7HraP/s1600/15.png" height="388" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFL4CLp-TL0dY8WNFTw_V2v0brQHsFlzbor8Qvws3k8L_Fik8eGLyMplzHbJSTZmpnuU0Lw6NPv-qczeARxpUdqiW0285fhMEB5uAglm_HVJBjTLnQUFNAbTcmi6OkrT2SQQOzTA1fPbg8/s1600/16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFL4CLp-TL0dY8WNFTw_V2v0brQHsFlzbor8Qvws3k8L_Fik8eGLyMplzHbJSTZmpnuU0Lw6NPv-qczeARxpUdqiW0285fhMEB5uAglm_HVJBjTLnQUFNAbTcmi6OkrT2SQQOzTA1fPbg8/s1600/16.png" height="388" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpuyv_d3pQ9HaSf3F0-VYyzY1C5vOn6C9uaYfABeJ5A1U5D32qUeCO2C57fKvonZE0Z7GQFpPCZHJl8xEuuZCZbH_3zjAExl69pWqaZYCyt3eiIrosg0Rtsn_t9QaBQKswaQ323kZeWjey/s1600/17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpuyv_d3pQ9HaSf3F0-VYyzY1C5vOn6C9uaYfABeJ5A1U5D32qUeCO2C57fKvonZE0Z7GQFpPCZHJl8xEuuZCZbH_3zjAExl69pWqaZYCyt3eiIrosg0Rtsn_t9QaBQKswaQ323kZeWjey/s1600/17.png" height="388" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpGXhop3F5nn_oy5NDcsnQltxmR5SPUBvN8K6l3gabJKnRgDwTpI5Sk0XC83DVzve8znofr49GKET6Aj8sVAJpCzntUeVKbQy4HN-cIEmxdw1RujLW6-pZfym99ISCy7vWwGusT_V5myTa/s1600/18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpGXhop3F5nn_oy5NDcsnQltxmR5SPUBvN8K6l3gabJKnRgDwTpI5Sk0XC83DVzve8znofr49GKET6Aj8sVAJpCzntUeVKbQy4HN-cIEmxdw1RujLW6-pZfym99ISCy7vWwGusT_V5myTa/s1600/18.png" height="388" width="640" /></a></div>
And here are the prints:<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: left;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrsgIjpHnb2Bxi7HVeQvuUk2S7ja_WAxAHbdK7SZNI3WY3tFnWRAbPf0DMj9zF3qh9UEUMD5gXyCv3QbDcglrJETT-xmjrcihG7x3DkfsnM5h4IjmIMkB6I2jZKX-YFLaCsvtVRRS3cNSX/s1600/20.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrsgIjpHnb2Bxi7HVeQvuUk2S7ja_WAxAHbdK7SZNI3WY3tFnWRAbPf0DMj9zF3qh9UEUMD5gXyCv3QbDcglrJETT-xmjrcihG7x3DkfsnM5h4IjmIMkB6I2jZKX-YFLaCsvtVRRS3cNSX/s1600/20.JPG" height="480" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4dUjMHzvxy71ZStBVS0SnXgKoJhk0DU9ZfHR3ue3pMRD7ARcFrwS6hZwG8TK4LLjbmYUI6jbVsjcaXC8xzolzCO8g2YmBVEhyCQ46sY8phami-K6Q4FWHK3vNLdY6P53jhPPBgoI1jX6Z/s1600/21.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4dUjMHzvxy71ZStBVS0SnXgKoJhk0DU9ZfHR3ue3pMRD7ARcFrwS6hZwG8TK4LLjbmYUI6jbVsjcaXC8xzolzCO8g2YmBVEhyCQ46sY8phami-K6Q4FWHK3vNLdY6P53jhPPBgoI1jX6Z/s1600/21.JPG" height="480" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqFyk7ge1Wu9cUYFHatH-VFsw8qrc6BB7TlAhzWm5GDJ-tUYeDY_AbxuruD6UE1-7ngwtP2bOaV7CKdKlpt6IywWNB-_okoFySFI9dZoVXiVcup4kdZP_btHEqADL3aIa1c4cDC_kfm_OD/s1600/22.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqFyk7ge1Wu9cUYFHatH-VFsw8qrc6BB7TlAhzWm5GDJ-tUYeDY_AbxuruD6UE1-7ngwtP2bOaV7CKdKlpt6IywWNB-_okoFySFI9dZoVXiVcup4kdZP_btHEqADL3aIa1c4cDC_kfm_OD/s1600/22.JPG" height="480" width="640" /></a></div>
<br />
This coming year I will work to refine the process of adding holes; I may cut the pages at different angles too. Once a puzzle has been made and printed that is easy to piece together, contains multiple pieces, and is of appropriate size, I plan on posting the puzzle in its entirety on <a href="http://www.thingiverse.com/fredhohman/about">my Thingiverse profile</a>—so be on the lookout!<br />
<br />
I would like to thank Dr. Laura Taalman for the opportunity to write about my research so far, and Dr. David Gay at the University of Georgia for his guidance and access to a MakerBot Replicator 2.mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-22113137223026679102014-08-16T19:30:00.000-07:002014-08-24T17:17:58.386-07:00Day 355 - Saturday guest: Fred Hohman and knot fibrations, part 1<i>One thing about living in New York City is that you get a lot of guests. Lots of people come to the city and hotels are too expensive even to consider! We've had seven different people visit us since we moved here just a couple of months ago. Blog-wise it's the same story: now that the print-a-day year is wrapping up we have a lot of guests. Welcome all!</i><br />
<i><br /></i>
<i>Today's guest poster is <a href="http://www.fredhohman.com/">Fred Hohman</a> (<a href="https://www.thingiverse.com/fredhohman/about">fredhohman</a> on Thingiverse), an undergraduate mathematics student at the University of Georgia, student of <a href="http://www.math.uga.edu/~dgay/">David Gay</a> as well as my good friend <a href="http://www.jasoncantarella.com/wordpress/">Jason Cantarella</a>. Fred is the designer of the beautiful "trefoil trumpet" we printed on <a href="http://makerhome.blogspot.com/2014/07/day-311-trefoil-trumpet.html">Day 311</a>, and in the next two posts he'll be walking us through the math and the Mathematica of a sort of "3D puzzle" based on this trefoil. </i><br />
<br />
Hello MakerHome and MakerHome readers!<br />
<br />
I am <a href="http://www.fredhohman.com/">Fred Hohman</a>, a rising senior Mathematics and Physics student at the <a href="http://www.uga.edu/">University of Georgia</a>. I have been working under <a href="http://euclidlab.org/david-gay/">Dr. David Gay</a> in the <a href="http://www.math.uga.edu/">Department of Mathematics</a> at the University of Georgia since the beginning of the year, and I will be continuing my work until my graduation in May 2015.<br />
<br />
Earlier in the summer I had the wonderful opportunity to meet Dr. Laura Taalman (<a href="http://www.thingiverse.com/mathgrrl/about">mathgrrl</a>) after <a href="https://in.momath.org/civicrm/event/info?reset=1&id=232">her talk</a> at MoMath on “Making Mathematics Real: Knot Theory, Experimental Mathematics, and 3D Printing.“ After chatting about math and 3D printing she asked me say some words about my undergraduate research at UGA. You may have seen already Dr. Taalman’s earlier post “<a href="http://makerhome.blogspot.com/2014_07_03_archive.html">Day 311 — Trumpet Trefoil</a>,” in which she introduced my trefoil knot. If you have ever seen a standard trefoil knot you’ll notice that the trefoil that was depicted is a bit different.<br />
<br />
The goal of this project is to create a 3D puzzle of the trefoil knot and its fibrations via 3D printing.<br />
<br />
Let’s start with some theory.<br />
<br />
<b>Theory and Stereographic Projection.</b><br />
Consider the following function from C^2 to C (we can think of this as a function from R^4 to R^2 - see the Wikipedia entries for <a href="http://en.wikipedia.org/wiki/Real_coordinate_space">real n-space</a> and <a href="http://en.wikipedia.org/wiki/Complex_space">complex n-space</a> for more information): this function sends a coordinate pair (<i>u</i>, <i>v</i>), where <i>u</i> and <i>v</i> are complex numbers, to the quantity (<i>u</i>+i*<i>v</i>)^2-(<i>u</i>-i*<i>v</i>)^3, where i = sqrt(-1). This particular function’s zero-set, a set of points {(<i>u</i>,<i>v</i>), …} such that (<i>u</i>+i*<i>v</i>)^2=(<i>u</i>-i*<i>v</i>)^3, generates a trefoil knot through infinity. By considering inverse images of certain subsets of C we will generate a trefoil knot given our function’s zero-set; however, this inverse image is a subset of C^2. To obtain our knot and understand its subsets better, we need a method to realize our object in R^3.<br />
<br />
As a preliminary example, consider a sphere in R^3 sitting on a plane (think of a ball sitting on a table). From the top of the sphere (think North Pole), draw a line segment downward through the sphere and ending at the table. Notice that this line segment intersects both the sphere and table once. We can do this same line drawing method over and over to obtain a one-to-one correlation from the sphere to the plane, i.e., every point (well, minus the exact top of the sphere!) on the sphere can be mapped to the plane. This is called <a href="http://en.wikipedia.org/wiki/Stereographic_projection">stereographic projection</a>, and <a href="http://www.segerman.org/">Henry Segerman</a> (<a href="http://www.thingiverse.com/henryseg/about">henryseg</a> on Thingiverse) has created a fantastic 3D printed <a href="http://www.thingiverse.com/thing:202774">model</a> illustrating this method:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmfF3QPgj6T18f3ouzYQMI633qJYAR8mAOPUsm5YR96rjPZdUNfR5ltFU1tBhCisZ3p-spAeW8z-GKeVBH9IR4t7HIMYNmKqqI9a6yHGv4xGgzYEHPhytI55T1yiDlt9XsM8n0t7qjWiSB/s1600/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmfF3QPgj6T18f3ouzYQMI633qJYAR8mAOPUsm5YR96rjPZdUNfR5ltFU1tBhCisZ3p-spAeW8z-GKeVBH9IR4t7HIMYNmKqqI9a6yHGv4xGgzYEHPhytI55T1yiDlt9XsM8n0t7qjWiSB/s1600/1.jpg" height="480" width="640" /></a></div>
<br />
If we have a point light source (smartphone camera flash) and place it at the top of this model, light rays will act as the line segments in the above example. If held at the correct height, we should see the Cartesian grid on the table. I always keep this model in my backpack to demonstrate to people stereographic projection—I recommend printing it out!<br />
<br />
So stereographic projection is a function from the unit sphere in R^3 onto R^2, but recall that our function is defined in R^4. For us to embed our object in R^3, we use a generalized version of stereographic projection to go from the unit sphere in R^4 to R^3. With this tool, we can compose the inverse stereographic projection function with our function defined above. So our new function now goes from R^3 -> C.<br />
<br />
If we take inverse images of subsets of C, we now have a function that goes from C -> C^2 = R^4 -> R^3, i.e., our single, final function takes in certain subsets of C and outputs subsets of R^3—exactly what we want!<br />
<br />
<b>Mathematica, Plotting, and Resolution.</b><br />
To generate 3D computer models of the trefoil knots, I chose to use <a href="http://www.wolfram.com/mathematica/">Mathematica</a>. <a href="http://reference.wolfram.com/language/ref/RegionPlot3D.html"><span style="font-family: Courier New, Courier, monospace;">RegionPlot3D</span></a>, a built-in Mathematica function, plots regions in 3D space using inequalities. In order to use <span style="font-family: Courier New, Courier, monospace;">RegionPlot3D</span>, the user must specify the domain of values to plot over in the <i>x</i>, <i>y,</i> and <i>z</i> directions, as well as a mathematical inequality. As an example we can generate a sphere of radius 1 by the following code:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7B0JABJVGCYMeNDnYvRnqmYwqww6cWQhhOnGY1yrEbK8eeZBHKZ2z_YHRtvb9ZNlY0U5bLN-CDpCiirXjpertZzzxcAyVaR7Lx0MFHyJcv02XB2nYq9_VQqNMmOGnV3Lophlu3zbT1Rjg/s1600/2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7B0JABJVGCYMeNDnYvRnqmYwqww6cWQhhOnGY1yrEbK8eeZBHKZ2z_YHRtvb9ZNlY0U5bLN-CDpCiirXjpertZzzxcAyVaR7Lx0MFHyJcv02XB2nYq9_VQqNMmOGnV3Lophlu3zbT1Rjg/s1600/2.jpg" height="640" width="486" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Mathematica will plot all points (<i>x</i>, <i>y</i>, <i>z</i>) such that each point falls within the considered domain and obeys the given inequalities—but we can take this further. We can use multiple inequalities using boolean operators such as AND and OR. As an example, let’s consider the same sphere defined above, but restrict the region so that only points above the plane <i>z</i>=0 are plotted.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ1Mg9xIc9TSKhXGAggz8a6agH5F4TUBV1lvKtaOn7lU3EM7OzAl4flCQL5FtqXmxRmR4FGhI3sGm1IKv0DUtBFPFkcLIwnzQoWNbL77TfbhiCsvIdb85F38n30gpzMA-QjMMjbea5C53v/s1600/3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ1Mg9xIc9TSKhXGAggz8a6agH5F4TUBV1lvKtaOn7lU3EM7OzAl4flCQL5FtqXmxRmR4FGhI3sGm1IKv0DUtBFPFkcLIwnzQoWNbL77TfbhiCsvIdb85F38n30gpzMA-QjMMjbea5C53v/s1600/3.jpg" height="640" width="486" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Of course we could restrict the <i>z</i> range so that <i>z</i> goes from (0, 1), but it is nice to be able to manipulate a model without changing the overall plotted region. When models become more complicated this method allows us to control individual components without altering other pieces.<br />
<br />
Before we start creating trefoil knots, there is one last Mathematica option that needs to be discussed: <a href="http://reference.wolfram.com/language/ref/PlotPoints.html"><span style="font-family: Courier New, Courier, monospace;">PlotPoints</span></a>. Notice how choppy and non-circular the bottom of our hemisphere looks in the image above—<span style="font-family: Courier New, Courier, monospace;">PlotPoints</span> will fix this. The <span style="font-family: Courier New, Courier, monospace;">PlotPoints</span> function can be thought of as the resolution of a 3D model. A higher <span style="font-family: Courier New, Courier, monospace;">PlotPoints</span> value tells Mathematica to use more points to represent the plotted region. However, as we increase <span style="font-family: Courier New, Courier, monospace;">PlotPoints</span>, we also increase computation time. Say we used a <span style="font-family: Courier New, Courier, monospace;">PlotPoints</span> of <span style="font-family: Courier New, Courier, monospace;">50</span> and the model was under-represented. We could double our resolution and set <span style="font-family: Courier New, Courier, monospace;">PlotPoints</span> to <span style="font-family: Courier New, Courier, monospace;">100</span>, but remember we are in 3D space, so by doubling the number of points in all directions (<i>x</i>, <i>y</i>, and <i>z</i>) we increase our computation by 2*2*2*=8. In other words, doubling a model’s resolution increases computation time by a factor of 8. So let’s plot that same hemisphere with a <span style="font-family: Courier New, Courier, monospace;">PlotPoints</span> of <span style="font-family: Courier New, Courier, monospace;">100</span> and see what the bottom looks like.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfEhM2NJDSH7Z3SMkPkjb70T9bVEKMJ81YoKQBKv3owxDFi_EtWAmTim60i_E7yvo_k8cdDubVmJ78vEvOSKPnYRP4sH54VP4y4Dy5DoWhC1Dmv8NJpJgnlGcpc6DyxiisKI3C3219tsHQ/s1600/4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfEhM2NJDSH7Z3SMkPkjb70T9bVEKMJ81YoKQBKv3owxDFi_EtWAmTim60i_E7yvo_k8cdDubVmJ78vEvOSKPnYRP4sH54VP4y4Dy5DoWhC1Dmv8NJpJgnlGcpc6DyxiisKI3C3219tsHQ/s1600/4.jpg" height="640" width="456" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Much better! Now that we have an understanding of <span style="font-family: Courier New, Courier, monospace;">RegionPlot3D</span> and <span style="font-family: Courier New, Courier, monospace;">PlotPoints</span>, it’s time to create some trefoil knots.<br />
<br />
The main Mathematica function I wrote, <span style="font-family: Courier New, Courier, monospace;">inTinftube</span>, defines the trefoil knot (the composition of our trefoil knot function with inverse stereographic projection explained above) by inputting points (<i>x</i>, <i>y</i>, <i>z</i>) and “knot thickness” and returning a single number. Inside the function it tests points using inequalities such that if the outputted number is less than 0, Mathematica includes the point in the plot, and if the number is greater than 0, Mathematica does not include the point in the plot. We also need to define a boundary condition, otherwise our model would stretch to infinity! So we can include more inequalities that points must satisfy such that our boundary is a cylinder of radius 3, height 6, and is centered at the origin. With these parameters selected, the results below depict our “standard” trefoil knot. This knot is the inverse image of a small disk around 0 in C to give the knot thickness—a visual description of this will be shown in the next section.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqsfkpEkln3cAwAiwuCgKOdjD3v8pW-_0K8NvKXBwjR_zFe56hjixbXS9jeUL-kxVGf-FsAb0t_1deQZ8mEE2MrTVg4vTgfs63-AnWsm64JgdysMC7dB5YMljjX-cXdhx3T1hw5FoQ-Vio/s1600/4.5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqsfkpEkln3cAwAiwuCgKOdjD3v8pW-_0K8NvKXBwjR_zFe56hjixbXS9jeUL-kxVGf-FsAb0t_1deQZ8mEE2MrTVg4vTgfs63-AnWsm64JgdysMC7dB5YMljjX-cXdhx3T1hw5FoQ-Vio/s1600/4.5.jpg" height="376" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic37StQcUGFsRUfmgB34Qvg3nb1frX4eS6fizKRdupengh7ahXLMcrxOttJm28F9i8bK30xmqGyrBlvEgXs3_OsLUcu87BIaYa20bJ8ej_oqWdRhhMDFWZp-RtEzK9w7Uiz-8hedNU9Lls/s1600/5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic37StQcUGFsRUfmgB34Qvg3nb1frX4eS6fizKRdupengh7ahXLMcrxOttJm28F9i8bK30xmqGyrBlvEgXs3_OsLUcu87BIaYa20bJ8ej_oqWdRhhMDFWZp-RtEzK9w7Uiz-8hedNU9Lls/s1600/5.png" height="640" width="600" /></a></div>
<br />
<br />
Thingiverse link: <a href="http://www.thingiverse.com/thing:243260">http://www.thingiverse.com/thing:243260</a><br />
<br />
<b>Open Book Decomposition, Fibrations, and Pages.</b><br />
Now that we have our “standard/reference trefoil knot,” it is time to start adding fibrations. To do this, unravel the above trefoil so that it is a straight strand. Consider that cord the spine of a book. Now add in one page to the book; the page will connect to the spine along one edge. Now twist the cord back into the trefoil knot configuration—what does the page, i.e., knot fibration, look like? This idea is called an <a href="http://en.wikipedia.org/wiki/Open_book_decomposition">Open Book Decomposition</a>.<br />
<br />
We can visualize this by adding extra regions to the model in C before we apply our single function. To do this, I wrote another Mathematica function, <span style="font-family: Courier New, Courier, monospace;">inTinfpage</span>, that takes in points and outputs a number; however, this time the function also requires an angle. This angle will define a ray in the plane starting at the origin that is rotated an angle in the mathematically positive direction. As before, we can have Mathematica plot points if the outputted number is below zero, but we want a page of some physical thickness (in order to 3D print). For most of my successful prints I have been using a page thickness of pi/6. So we can now include another “ray-function” and input an angle that is pi/6 larger than before and have Mathematica plot things that are greater than 0. We have now included another region in the plane. This process is much easier to see in the image below.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCy2oS3BmcMuJLVPe5FXIXfYKhp32ksAj-dPcDbO3eHUjK11PdLnxulV5TU9C7LT5KFHKzSo28fpjpnzqoAbbIAmfPih3QStbf7LlW_eo1fiHF9KbR5FOpatYGibVzwuiJfgmP8GL5nZld/s1600/6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCy2oS3BmcMuJLVPe5FXIXfYKhp32ksAj-dPcDbO3eHUjK11PdLnxulV5TU9C7LT5KFHKzSo28fpjpnzqoAbbIAmfPih3QStbf7LlW_eo1fiHF9KbR5FOpatYGibVzwuiJfgmP8GL5nZld/s1600/6.png" height="400" width="397" /></a></div>
<br />
The circle is the radius of the trefoil knot, and the region in the first quadrant is our fiber with thickness. That’s the new region we want to include when using stereographic projection. Remember the picture above is the subset of C that we are taking inverse images of. We can now apply our same code to generate the following model.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgWBAkBjcJGoeX7lDCDkNIANml1q0utvpKpxVhp1xFFVHzTQeTOZHWj5vrrNFrEhT7VIdzrS93W33ptFgeuOeBURY9uTVhInCbHghXA3xI0TNAPH3vcNVKarZug-Nhr_SY8ADTJH5Kj1Pv/s1600/6.5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgWBAkBjcJGoeX7lDCDkNIANml1q0utvpKpxVhp1xFFVHzTQeTOZHWj5vrrNFrEhT7VIdzrS93W33ptFgeuOeBURY9uTVhInCbHghXA3xI0TNAPH3vcNVKarZug-Nhr_SY8ADTJH5Kj1Pv/s1600/6.5.jpg" height="414" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHRIePakZwP44e1UZVM9GiOGkDUCRpX5RbGqN4vCTv8dDoVY_f7M2ZiHnTVjoRbowKMVM8KOtd0TxAY7iwdcn1LZUH9I57lEWTDYpnaNjfhe6sSFIzGWyN10GnPHawjLxAVlznvdehTdD0/s1600/7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHRIePakZwP44e1UZVM9GiOGkDUCRpX5RbGqN4vCTv8dDoVY_f7M2ZiHnTVjoRbowKMVM8KOtd0TxAY7iwdcn1LZUH9I57lEWTDYpnaNjfhe6sSFIzGWyN10GnPHawjLxAVlznvdehTdD0/s1600/7.png" height="640" width="600" /></a></div>
<br />
Why stop at one extra region? We can add as many as we would like, and at pi/6 thickness, we should be able to fit 12 extra regions in our trefoil knot (since pi/6*12=2*pi). Some other examples are below, with the region in C shown on the left, and its inverse image (after applying stereographic projection) shown on the right.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4ao0se5xQSoy_NN5xGlC-41xEEQhgtlgdyg5-odmoK2BZEIs7Zv8ItcOGSiznjrgCHRsSbc7XUoKJ1e8ql4RADHw-jj2uaFrlnMvelHRNz54HtH1oVIrXnzctbe_fkHG2RwEeN8ATUU2o/s1600/8.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4ao0se5xQSoy_NN5xGlC-41xEEQhgtlgdyg5-odmoK2BZEIs7Zv8ItcOGSiznjrgCHRsSbc7XUoKJ1e8ql4RADHw-jj2uaFrlnMvelHRNz54HtH1oVIrXnzctbe_fkHG2RwEeN8ATUU2o/s1600/8.png" height="480" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzJyIv2Ang9ruvKkqMtp3x6bbqAMPw7LOZGoOWKFuvzp4ZzD_iiUWd8L9yK0lJjJYvgfspkrX44zXjKhnfhLX9KAU5viLc9_SrJzWYmi1oM8J1eRD7TsLFpBnXJaWRdSByTlZ1eUBQlBpv/s1600/9.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzJyIv2Ang9ruvKkqMtp3x6bbqAMPw7LOZGoOWKFuvzp4ZzD_iiUWd8L9yK0lJjJYvgfspkrX44zXjKhnfhLX9KAU5viLc9_SrJzWYmi1oM8J1eRD7TsLFpBnXJaWRdSByTlZ1eUBQlBpv/s1600/9.png" height="480" width="640" /></a></div>
<br />
We can now start to see the consequences of projecting our 4D function into R^3, which is why our knots are visually unlike typical trefoil knots.<br />
<br />
In the next post we'll 3D print the models we have created...mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-29929851512356084472014-08-15T07:03:00.000-07:002014-08-24T17:17:37.316-07:00Day 354 - Forty-one Pentagonal IcositetrahedraToday (August 15) I had the great pleasure and honor of attending the final convocation for the <a href="http://www.nyu.edu/admissions/visiting-students/nyu-gstem.html">2014 NYU GSTEM</a> program. At this event, 41 young women who are rising high school seniors presented the work they did this summer interning at various science, technology, engineering, and mathematics departments. The presentations were incredible and if I hadn't known they were high school students I would have thought they were just finishing college and on their way to graduate school. Today the future looked very, very bright. Like, genius bright. We made them each a Pentagonal Icositetrahedron (see <a href="http://makerhome.blogspot.com/2014/03/day-197-pentagonal-icositetrahedron.html">Day 197</a>).<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggDiiXbe0kFsNwoKlIITPVK7_reWfcUiwZXwvBZltskgvxfRt2PQqMOo9Q-sEbjDPXV65qHZ-akrtMp_tDO8QnTkiOxnvQtG5oi6Flfku7FOPYcC_RUvoTdjFJeZlWqN8vgMcJQ76PxYvM/s1600/day354_41PentIcosiTets.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggDiiXbe0kFsNwoKlIITPVK7_reWfcUiwZXwvBZltskgvxfRt2PQqMOo9Q-sEbjDPXV65qHZ-akrtMp_tDO8QnTkiOxnvQtG5oi6Flfku7FOPYcC_RUvoTdjFJeZlWqN8vgMcJQ76PxYvM/s1600/day354_41PentIcosiTets.jpg" height="480" width="640" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/make:90906">http://www.thingiverse.com/make:90906</a><br />
<br />
Settings: Printed at 50% scale on a MakerBot Replicator 2 with .2mm layer height and raft but no support (hooray!). Print time was about 21 minutes a piece and they printed eight-up without problems.<br />
<br />
Here are some of the are future geniuses looking at the 3D-objects we brought to the convocation:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH7HUS8XF-mbx1i-_GR_gaLKJlz5Jd87-ab90M3Mb5xdGYV6fht7bHzYHQ96_WpUzkIz3FAa0a5KRiZDu4b_wkG4MbqRGAsBqWX-73d8qCcicUxUKqs1_3_rBpf5zjOoIbdXq-IfXlKpFL/s1600/day354_GSTEM.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH7HUS8XF-mbx1i-_GR_gaLKJlz5Jd87-ab90M3Mb5xdGYV6fht7bHzYHQ96_WpUzkIz3FAa0a5KRiZDu4b_wkG4MbqRGAsBqWX-73d8qCcicUxUKqs1_3_rBpf5zjOoIbdXq-IfXlKpFL/s1600/day354_GSTEM.jpg" height="480" width="640" /></a></div>
<br />mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-84945823300298102622014-08-14T17:16:00.000-07:002014-08-24T17:16:27.031-07:00Day 353 - Customizable hinge/snap Tetrahedron netToday we modified <a href="http://makerhome.blogspot.com/2014/08/day-345-customizable-hingesnap-cube-nets.html">Day 344</a>'s Cube net design to make a Tetrahedron net:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8MFaCgguz2kGmV9jXrpepssVCKb-wzsJZWNRD4kkafETHXOEJfOX1OHLtKXPBvCKa1vfjB-2fbuachX9sID3KWpR-F_NKsoHbrcbaxcDzVsBAS321-QY9WTMxIIGSRk3otcJTbY3r3mLP/s1600/day353_hingesnap_tetrahedron2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8MFaCgguz2kGmV9jXrpepssVCKb-wzsJZWNRD4kkafETHXOEJfOX1OHLtKXPBvCKa1vfjB-2fbuachX9sID3KWpR-F_NKsoHbrcbaxcDzVsBAS321-QY9WTMxIIGSRk3otcJTbY3r3mLP/s1600/day353_hingesnap_tetrahedron2.jpg" height="480" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Here it is mostly folded up. This net is so small that it only folds well in one direction; in the other direction the edges of the faces keep the hinges from swinging open enough for the model to close all the way. The cube net, and all other larger nets, fold well both ways.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4B_k7gr2oKhAXSuYsJvdivqt65bLfoKstal29-pC2Zb1jULGzoIcGGwSIH-1a_FuqfcsfEc-as2lHbdUEqA3OaNXdNU9jITdLVFucHw1kp0tvlSMSt49wRDPTpUExwm1sWSpsfey0dZET/s1600/day353_hingesnap_tetrahedron3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4B_k7gr2oKhAXSuYsJvdivqt65bLfoKstal29-pC2Zb1jULGzoIcGGwSIH-1a_FuqfcsfEc-as2lHbdUEqA3OaNXdNU9jITdLVFucHw1kp0tvlSMSt49wRDPTpUExwm1sWSpsfey0dZET/s1600/day353_hingesnap_tetrahedron3.jpg" height="480" width="640" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/thing:440001">http://www.thingiverse.com/thing:440001</a><br />
<br />
Settings: We optimized this design for printing on a Replicator 2 with .3mm layer height and no raft, no supports. If your printer is different then you may need different clearances in your model. You can use the Thingiverse link to open the model in Customizer and set your own side length, border width, hinge clearance, and snap tolerance.<br />
<br />
Technical notes, platform/raft edition: These hinge/snap net models print best without a raft. You <i>can</i> print them with a raft, but it will take 50% as long and then another 25% longer for you to peel off the raft bits. (Note that although you can print these with rafts if for some reason you want/have to, you <i>cannot </i>print these models with supports or the hinges will not work correctly.) If you're printing on an acrylic build plate with PLA, like the standard plate that comes with the MakerBot Replicator 2, then you have an excellent build surface for printing without a raft. If you're printing with a glass platform on the Replicator, or with some other printers, then you may not be able to print without a raft. For me at least, PLA never sticks to the glass, and I need glass+tape+raft to make prints work on the glass build plate (see <a href="http://makerhome.blogspot.com/2014/03/day-214-friday-fail-raft-edition.html">Day 214</a>). In any case, make sure your build platform is very level before you try printing a large hinge/net model, or the outer pieces will be deformed and hinges and snaps may fail.<br />
<br />
Technical notes, OpenSCAD edition: Using the same <span style="font-family: Courier New, Courier, monospace;">hinge</span>, <span style="font-family: Courier New, Courier, monospace;">snap</span>, <span style="font-family: Courier New, Courier, monospace;">poly_maker</span>, and <span style="font-family: Courier New, Courier, monospace;">attach</span> modules as on <a href="http://makerhome.blogspot.com/2014/08/day-345-customizable-hingesnap-cube-nets.html">Day 344</a>, we assembled the tetrahedron as follows:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">// center triangle</span><br />
<span style="font-family: Courier New, Courier, monospace;">union(){</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>poly_maker(sides=3);</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>attach(type=2,side=1,sides=3);</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>attach(type=2,side=2,sides=3);</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>attach(type=1,side=3,sides=3);</span><br />
<span style="font-family: Courier New, Courier, monospace;">}</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span><span style="font-family: Courier New, Courier, monospace;">// next triangle</span><br />
<span style="font-family: Courier New, Courier, monospace;">translate([<span class="Apple-tab-span" style="white-space: pre;"> </span>(length/tan(180/3)+jump)*cos(180/3),</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>(length/tan(180/3)+jump)*sin(180/3),</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>0]) </span><br />
<span style="font-family: Courier New, Courier, monospace;">rotate(180/3,[0,0,1])</span><br />
<span style="font-family: Courier New, Courier, monospace;">union(){</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>poly_maker(sides=3);</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>attach(type=2,side=2,sides=3);<span class="Apple-tab-span" style="white-space: pre;"> </span></span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>attach(type=1,side=3,sides=3);<span class="Apple-tab-span" style="white-space: pre;"> </span></span><br />
<span style="font-family: Courier New, Courier, monospace;">}</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span><span style="font-family: Courier New, Courier, monospace;">// next next triangle</span><br />
<span style="font-family: Courier New, Courier, monospace;">translate([<span class="Apple-tab-span" style="white-space: pre;"> </span>0,</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>2*(length/tan(180/3)+jump)*sin(180/3),</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>0]) </span><br />
<span style="font-family: Courier New, Courier, monospace;">rotate(2*180/3,[0,0,1])</span><br />
<span style="font-family: Courier New, Courier, monospace;">union(){</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>poly_maker(sides=3);</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>attach(type=1,side=2,sides=3);<span class="Apple-tab-span" style="white-space: pre;"> </span></span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>attach(type=2,side=3,sides=3);<span class="Apple-tab-span" style="white-space: pre;"> </span></span><br />
<span style="font-family: Courier New, Courier, monospace;">}</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span><span style="font-family: Courier New, Courier, monospace;">// next next next triangle</span><br />
<span style="font-family: Courier New, Courier, monospace;">translate([<span class="Apple-tab-span" style="white-space: pre;"> </span>(length/tan(180/3)+jump)*cos(180/3),</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>3*(length/tan(180/3)+jump)*sin(180/3),</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>0]) </span><br />
<span style="font-family: Courier New, Courier, monospace;">rotate(3*180/3,[0,0,1])</span><br />
<span style="font-family: Courier New, Courier, monospace;">union(){</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>poly_maker(sides=3);</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>attach(type=2,side=1,sides=3);<span class="Apple-tab-span" style="white-space: pre;"> </span></span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>attach(type=2,side=2,sides=3);<span class="Apple-tab-span" style="white-space: pre;"> </span></span><br />
<span style="font-family: Courier New, Courier, monospace;">}</span>mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-29289824428765526322014-08-13T13:08:00.000-07:002014-08-24T13:12:22.309-07:00Day 352 - Center of mass demonstrationToday we printed designbynumbers' <a href="http://www.thingiverse.com/thing:408893">Center of mass manipulatives for calculus classes</a> from Thingiverse. It worked very well and balanced wonderfully!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_c9Y7YkYOdDlQ-8GQ1HWjqE1eDEdV_Th4Lo1CZs3ecTVdbHdxZmWybjJMYPlpzki0ILWKhd76OiVP4-d1MvUkJNTRBMeoB7UZMJaW2KrzXIhkOgE6o0Lc2OIBxAwRWdKVMV95affwjLio/s1600/day352_centerofmass.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_c9Y7YkYOdDlQ-8GQ1HWjqE1eDEdV_Th4Lo1CZs3ecTVdbHdxZmWybjJMYPlpzki0ILWKhd76OiVP4-d1MvUkJNTRBMeoB7UZMJaW2KrzXIhkOgE6o0Lc2OIBxAwRWdKVMV95affwjLio/s1600/day352_centerofmass.jpg" height="480" width="640" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/make:90962">http://www.thingiverse.com/make:90962</a><br />
<br />
Settings: Printed on a MakerBot Replicator 2 with .2mm layer height. We changed the infill to "linear" instead of "hexagonal" because the hexagon-filled one seemed not to balance quite right. With linear infill the balance was spot-on.mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com2tag:blogger.com,1999:blog-8839430508831012007.post-91121251955036235142014-08-12T06:31:00.000-07:002014-08-24T06:54:06.766-07:00Day 351 - Impossible Menger BurrAfter <a href="http://www.thingiverse.com/richgain/about">richgain</a>'s excellent guest posts walking us through <a href="http://burrtools.sourceforge.net/">Burr Tools</a> on <a href="http://makerhome.blogspot.com/2014/08/day-348-saturday-guest-rich-gain-and.html">Day 348</a> and <a href="http://makerhome.blogspot.com/2014/08/day-349-sunday-guest-rich-gain-and.html">Day 349</a>, we couldn't resist giving it a try. As I think we've established, I love Menger sponges and I'm kind of a jerk. So I made a burr puzzle that can never be assembled.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYNiTdB7pzbrf-2J1bdbeeAR-kzvH5wQ_pd66yOqnaN564_g3v9sB1hKnTT88MNLMtYX6vwWr4_y9ScykbHQiR99Bw1sko36bISzJynNKmCYM-eUFUtSBQSFfT3k0UQ8nh-W5_P-YMbMbo/s1600/photo+(93).JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYNiTdB7pzbrf-2J1bdbeeAR-kzvH5wQ_pd66yOqnaN564_g3v9sB1hKnTT88MNLMtYX6vwWr4_y9ScykbHQiR99Bw1sko36bISzJynNKmCYM-eUFUtSBQSFfT3k0UQ8nh-W5_P-YMbMbo/s1600/photo+(93).JPG" height="456" width="640" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/thing:439478">http://www.thingiverse.com/thing:439478</a><br />
<br />
Settings: The red menger cube was printed on a Replicator 2 at .3mm layer height in 10 minutes, without raft or support, on an acrylic platform. The white cross was printed on another Replicator 2 (don't judge, they had a warehouse sale for the last remaining Rep2's and... well...) at .3mm layer height in 8 minutes, with raft and support on a glass platform with tape.<br />
<br />
Technical notes, Burr Tools flavor: I have to give serious thanks and appreciation to the author of Burr Tools, <a href="http://sourceforge.net/u/roever/profile/">Andreas Roever</a>. Burr Tools has a lot of features that I haven't even attempted yet, including triangle and sphere grids and a whole lot more. And it's free. In addition it <i>solves</i> the puzzles you construct. And it's smart about it; for example, the menger+cross puzzle I made has a solution if you can get the cross into the cube. So it has an "assembly". But it doesn't have a "solution" because you can't actually perform the assembly. This is reported correctly by Burr Tools in the left column of the picture below. Very impressive and useful!<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKqzq4va-LK48d52OLTa0-CYVTfwHAKjB0vV6QREf20WC1_YsRhtpzOM3n086hiAh2_LUKxab9CW60XefF3NAA-0Wn0XkG7at2JCUu0zhqrz3Bd8k1G75Up-O4BN8hfx2PV_yF0di4C0mC/s1600/day351_both.tiff" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKqzq4va-LK48d52OLTa0-CYVTfwHAKjB0vV6QREf20WC1_YsRhtpzOM3n086hiAh2_LUKxab9CW60XefF3NAA-0Wn0XkG7at2JCUu0zhqrz3Bd8k1G75Up-O4BN8hfx2PV_yF0di4C0mC/s1600/day351_both.tiff" height="496" width="640" /></a></div>
<br />
Thanks also go out to <a href="https://www.linkedin.com/in/smiteo">Derek Bosch</a>, himself a creator of amazing and intricate puzzles, who wrote the code for the OSX port and also sent me a direct link to the most updated version of Burr Tools so I could run it on my Mac. Here's that link: <a href="http://sourceforge.net/projects/burrtools/files/latest/download">http://sourceforge.net/projects/burrtools/files/latest/download</a> .mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-1318822192174205452014-08-11T10:41:00.000-07:002014-08-23T11:30:01.107-07:00Day 350 - Triple BubblesWhen three bubbles intersect, they do so in a very specific way. Here's what it looks like:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv9dJHMHGxpj_3wDWAHBgEQ3Fm0xESCvV-jPO943jPGNSr8FIpbfL5qdJQBNU9cl609oi2-1tkRmPxNiEmXv4tCxpsa5Ldg7zYgK7JN6Hzo8h5PhAgXd-wIsdmN5_A3WKFSp-6sDLfWm6t/s1600/photo+(93).JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv9dJHMHGxpj_3wDWAHBgEQ3Fm0xESCvV-jPO943jPGNSr8FIpbfL5qdJQBNU9cl609oi2-1tkRmPxNiEmXv4tCxpsa5Ldg7zYgK7JN6Hzo8h5PhAgXd-wIsdmN5_A3WKFSp-6sDLfWm6t/s1600/photo+(93).JPG" height="480" width="640" /></a></div>
<br />
Using the OpenSCAD code for this design included at the bottom of this post you can make your own bubble model with any three bubbles you like. The code will automatically position the bubbles correctly and create the correct surface components that intersect in the center of the model. Or, to print exactly the model above, use the Thingiverse link.<br />
<br />
Thingiverse link: <a href="http://www.thingiverse.com/thing:438777">http://www.thingiverse.com/thing:438777</a><br />
<br />
Settings: This is very large model that took up most of the build plate of a MakerBot Replicator 2 and printed at .2mm layer height with raft but no supports. It took many hours but we forgot to make a note of exactly how many! So, just, a lot.<br />
<br />
Technical notes, math flavor: This model was requested by <a href="http://www.momath.org/">MoMath</a> to use as a cake centerpiece for mathematician <a href="http://en.wikipedia.org/wiki/Jean_Taylor">Jean Taylor</a>'s 70th birthday party. Jean Taylor famously proved that <a href="http://en.wikipedia.org/wiki/Plateau's_laws">Plateau's Laws</a> hold for minimal surfaces in her paper <a href="http://www.jstor.org/discover/10.2307/1970949?uid=3739832&uid=2&uid=4&uid=3739256&sid=21104616367773">The structure of singularities in soap-bubble-like and soap-film-like minimal surfaces</a>. According to Plateau's Laws, three bubbles will meet at 120-degree angles - just as in the center of the model shown above. However, the three surface components that meet at the 120-degree angle are not flat; they are curved. Each of the three components is a part of a larger sphere whose center lies outside of the bubbles. The three centers are shown by the points F, G, and H in the diagram below, taken from S.M. Blinder's Wolfram Demonstration <a href="http://demonstrations.wolfram.com/ThreeCoalescingSoapBubbles/">Three Coalescing Soap Bubbles</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWJmBKR6NpDqEWRhno1PBAZFoSnT-k4jOYa6_7HX5gKv9RRjVwOY2h8OtwbY_3jGVc0VRqIYJ9MM_5wzRaEaHz9hpJucFFGzGlNbO7MVi3tBHCBfyjmI7huYaRCf5rQwZUzpUQZ89LbeBW/s1600/day350_soap_configuration.tiff" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWJmBKR6NpDqEWRhno1PBAZFoSnT-k4jOYa6_7HX5gKv9RRjVwOY2h8OtwbY_3jGVc0VRqIYJ9MM_5wzRaEaHz9hpJucFFGzGlNbO7MVi3tBHCBfyjmI7huYaRCf5rQwZUzpUQZ89LbeBW/s1600/day350_soap_configuration.tiff" height="630" width="640" /></a></div>
<br />
We used S.M. Blinder's <a href="http://demonstrations.wolfram.com/sourcecode.html?demoname=ThreeCoalescingSoapBubbles&demodisplayname=Three%20Coalescing%20Soap%20Bubbles">Demonstration code</a> to get the mathematical descriptions of the points F, G, and H given the radii of the three intersecting bubbles.<br />
<br />
Technical notes, failure flavor: This model left a particularly large trail of fails; below is one that was designed with a much coarser mesh. The coarseness of the mesh left some gaps at the joins between the surfaces, which cased the model to separate. In addition we tried to print the entire top without supports, which caused the problem on the smallest sphere that led us to cancel the print. Most models can be made rather coarsely and still look fine, but this particular model needed a mesh with a very high degree of accuracy to even print correctly.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQRKlPntuu-6FKyraeM1koif6zR3_M9q3LcrTj8N8YikCEL8VO84rcQ9rkVN34DJuP7zd28up6_BgHRolW5HYNuXsrUzM5keTLjUnZs20cm1_PB8SngdN3Ob8dEvTpGqEJ2TFiUgqpOsnQ/s1600/photo+(92).JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQRKlPntuu-6FKyraeM1koif6zR3_M9q3LcrTj8N8YikCEL8VO84rcQ9rkVN34DJuP7zd28up6_BgHRolW5HYNuXsrUzM5keTLjUnZs20cm1_PB8SngdN3Ob8dEvTpGqEJ2TFiUgqpOsnQ/s1600/photo+(92).JPG" height="480" width="640" /></a></div>
<div>
<br /></div>
<div>
Technical notes, resolution flavor: To get a fine enough resolution for successful printing, we had to use a <i>lot</i> of triangles in our mesh. The hard part was getting the interior surface segments to contain enough triangles, since they came from much larger spheres. The key to doing this was using very small numbers for the <a href="http://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Primitive_Solids">fragment angle and fragment size</a> of the spheres: </div>
<div>
<br /></div>
<div>
<div>
<span style="font-family: Courier New, Courier, monospace;">fragA = 2;<span class="Apple-tab-span" style="white-space: pre;"> </span>// fragment angle</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">fragS = 2; <span class="Apple-tab-span" style="white-space: pre;"> </span>// fragment size</span></div>
</div>
<div>
<br /></div>
<div>
Here's what the mesh looks like in OpenSCAD:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMsaO3qD5DMP1CITbiSR6mouXY_kThw_m0nz14ER392u0vOcr9Ke0KdGvChlCnd0o1_Zcc3-xO480govqdRgCasgYfW3Xjo3LY0ZNkDbm6OsN42aE3SiQZZqal8I4njRbY49JuVy6HW7xE/s1600/day350_soap_triangles.tiff" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMsaO3qD5DMP1CITbiSR6mouXY_kThw_m0nz14ER392u0vOcr9Ke0KdGvChlCnd0o1_Zcc3-xO480govqdRgCasgYfW3Xjo3LY0ZNkDbm6OsN42aE3SiQZZqal8I4njRbY49JuVy6HW7xE/s1600/day350_soap_triangles.tiff" height="352" width="640" /></a></div>
<div>
<br /></div>
<div>
Because of the high resolution needed to make components of this model intersect successfully, I am not putting its OpenSCAD code on the Thingiverse Customizer. I think it would hang or crash to try to run this online. If you're interested in making different bubble configurations then download <a href="http://www.openscad.org/">OpenSCAD</a> and run the code at the bottom of this post, changing the bubble radii as desired. </div>
<div>
<br /></div>
<div>
Technical notes, OpenSCAD flavor: This was one of the most difficult things that I've made in OpenSCAD. When <a href="http://www.momath.org/">MoMath</a> asked me if I could design this triple-bubble model, my first reaction was that I had absolutely no idea how to do that, so probably not. But a bit of poking around on the web led me to the excellent triple-bubble <a href="http://demonstrations.wolfram.com/ThreeCoalescingSoapBubbles/">Wolfram Demonstration</a>, and they had already done all of the math! I tried to export the Wolfram object using Mathematica, but it was not the right kind of graphics object to allow an STL export. This meant that it had to be reconstructed from the ground up in OpenSCAD. Alas, this in turn meant that I really needed to <i>understand</i> all the mathematics in the code, and also translate the code from Mathematica syntax to OpenSCAD syntax. All this together with the need for high-resolution accuracy meant that this project took many days to put together and get working correctly. </div>
<div>
<br /></div>
<div>
The OpenSCAD code starts with any three radii for the bubbles and then positions the spheres correctly, computes the center coordinates of the larger spheres that determine the intersecting surface components, and then uses unions, differences, and intersections to output the correct sections of the three bubbles and thee surface components. Because it would be difficult to see the inside intersections if the bubbles were printed as full spheres, the final step is to cut off the top and bottom of the model. This also makes the model very easy to print. </div>
<div>
<br /></div>
<div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// mathgrrl triple bubble</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">////////////////////////////////////////////////////////////////</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// bubble radii </span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">a = 60;</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">b = 56;</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">c = 44;</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">////////////////////////////////////////////////////////////////</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// resolution parameters</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">th = .9; <span class="Apple-tab-span" style="white-space: pre;"> </span>// thickness</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">fragA = 2;<span class="Apple-tab-span" style="white-space: pre;"> </span>// fragment angle</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">fragS = 2; <span class="Apple-tab-span" style="white-space: pre;"> </span>// fragment size</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">////////////////////////////////////////////////////////////////</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// scale and render</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">intersection(){<span class="Apple-tab-span" style="white-space: pre;"> </span></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>build_bubbles();</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>cube([250,200,70],center=true);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">////////////////////////////////////////////////////////////////</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// translation coordinates</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// based on code from Wolfram Mathematica Demonstrations Project</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// http://demonstrations.wolfram.com/ThreeCoalescingSoapBubbles/</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">ab = sqrt(a*a+b*b-a*b);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">ac = sqrt(a*a+c*c-a*c);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">bc = sqrt(b*b+c*c-b*c);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">f = 1/(1/b-1/a);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">g = 1/(1/c-1/a);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">h = 1/(1/c-1/b);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// translation coords for sphere b</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">xb = ab;</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// translation coords for sphere c</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">xc = (pow(ab,2)+pow(ac,2)-pow(bc,2))/(2*ab);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">yc = (-1/(2*ab))*</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"> sqrt(<span class="Apple-tab-span" style="white-space: pre;"> </span>-pow(ab,4)</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>-(pow(ac,2)-pow(bc,2))*(pow(ac,2)-pow(bc,2))</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>+2*pow(ab,2)*(pow(ac,2)+pow(bc,2)));</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// translation coords for interface sphere f</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">bf = sqrt(pow(b,2)+pow(f,2)-b*f);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">xf = ab+bf;</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">yf = 0;</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// translation coords for interface sphere g</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">cg = sqrt(pow(c,2)+pow(g,2)-c*g);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">xg = (ac*xc+cg*xc)/ac;</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">yg = (ac*yc+cg*yc)/ac;</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// translation coords for interface sphere h</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">ch = sqrt(pow(c,2)+pow(h,2)-c*h);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">xh = (-ch*xb+bc*xc+ch*xc)/bc;</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">yh = (bc*yc+ch*yc)/bc;</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">////////////////////////////////////////////////////////////////</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// module for sphere parts and dividers</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">module build_bubbles(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>//first bubble shell fragment</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>difference(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_a(open=1,fudge=0);<span class="Apple-tab-span" style="white-space: pre;"> </span>// start with first bubble shell</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>intersection(){<span class="Apple-tab-span" style="white-space: pre;"> </span>// take away the part of the shell</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_a(open=1,fudge=0);<span class="Apple-tab-span" style="white-space: pre;"> </span>// that intersects the</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>union(){<span class="Apple-tab-span" style="white-space: pre;"> </span>// second and third bubbles</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_b(open=0,fudge=-th);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_c(open=0,fudge=-th);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>//second bubble shell fragment</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>difference(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_b(open=1,fudge=0);<span class="Apple-tab-span" style="white-space: pre;"> </span>// start with second bubble shell</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>intersection(){<span class="Apple-tab-span" style="white-space: pre;"> </span>// take away the part of the shell</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_b(open=1,fudge=0);<span class="Apple-tab-span" style="white-space: pre;"> </span>// that intersects the</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>union(){<span class="Apple-tab-span" style="white-space: pre;"> </span>// first and third bubbles</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_a(open=0,fudge=-th);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_c(open=0,fudge=-th);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>//third bubble shell fragment</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>difference(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_c(open=1,fudge=0);<span class="Apple-tab-span" style="white-space: pre;"> </span>// start with third bubble shell</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>intersection(){<span class="Apple-tab-span" style="white-space: pre;"> </span>// take away the part of the shell</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_c(open=1,fudge=0);<span class="Apple-tab-span" style="white-space: pre;"> </span>// that intersects the</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>union(){<span class="Apple-tab-span" style="white-space: pre;"> </span>// first and second bubbles</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_a(open=0,fudge=-th);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_b(open=0,fudge=-th);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>//interface between first and second</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>intersection(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_ab(open=1,fudge=0);<span class="Apple-tab-span" style="white-space: pre;"> </span>// take only the arc of the circle</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>difference(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_a(open=0,fudge=0.1);<span class="Apple-tab-span" style="white-space: pre;"> </span>// that intersects the first bubble</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_ac(open=0,fudge=-th);<span class="Apple-tab-span" style="white-space: pre;"> </span>// but not the other interface</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>//interface between first and third</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>intersection(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_ac(open=1,fudge=0);<span class="Apple-tab-span" style="white-space: pre;"> </span>// take only the arc of the circle</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>difference(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_a(open=0,fudge=0.02);<span class="Apple-tab-span" style="white-space: pre;"> </span>// that intersects the first bubble</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_ab(open=0,fudge=-0.02);<span class="Apple-tab-span" style="white-space: pre;"> </span>// but not the other interface</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>//interface between second and third</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>intersection(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_bc(open=1,fudge=0);<span class="Apple-tab-span" style="white-space: pre;"> </span>// take only the arc of the circle</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>difference(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_b(open=0,fudge=0.02);<span class="Apple-tab-span" style="white-space: pre;"> </span>// that intersects the second bubble</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>difference(){<span class="Apple-tab-span" style="white-space: pre;"> </span>// but not the other side of</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere(100);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere_ac(open=0,fudge=0.02);<span class="Apple-tab-span" style="white-space: pre;"> </span>// the other interface</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">////////////////////////////////////////////////////////////////</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// modules for the spheres</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// use open=1 for shell and open=0 for full sphere</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">module sphere_a(open,fudge){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>translate([0,0,0])</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>difference(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere(a+th/2+fudge,$fa=fragA,$fs=fragS);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere(open*(a-th/2+fudge),$fa=fragA,$fs=fragS);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">module sphere_b(open,fudge){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>translate([xb,0,0]) </span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>difference(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere(b+th/2,$fa=fragA,$fs=fragS);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere(open*(b-th/2+fudge),$fa=fragA,$fs=fragS);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">module sphere_c(open,fudge){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>translate([xc,yc,0]) </span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>difference(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere(c+th/2+fudge,$fa=fragA,$fs=fragS);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere(open*(c+-th/2+fudge),$fa=fragA,$fs=fragS);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">////////////////////////////////////////////////////////////////</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// modules for the interface spheres</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">// use open=1 for shell and open=0 for full sphere</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">module sphere_ab(open,fudge){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>translate([xf,yf,0]) </span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>difference(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere(f+th/2+fudge,$fa=fragA/2,$fs=fragS/2);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere(open*(f-th/2+fudge),$fa=fragA/2,$fs=fragS/2);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">module sphere_ac(open,fudge){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>translate([xg,yg,0])</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>difference(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere(g+th/2+fudge,$fa=fragA/2,$fs=fragS/2);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere(open*(g-th/2+fudge),$fa=fragA/2,$fs=fragS/2);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">module sphere_bc(open,fudge){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>translate([xh,yh,0])</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>difference(){</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere(h+th/2+fudge,$fa=fragA/2,$fs=fragS/2);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>sphere(open*(h-th/2+fudge),$fa=fragA/2,$fs=fragS/2);</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>}</span></div>
<div>
<span style="font-family: Courier New, Courier, monospace;">}</span></div>
</div>mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-60209064572968826752014-08-10T10:28:00.000-07:002014-08-22T11:24:15.811-07:00Day 349 - Sunday guest: Rich Gain and Printable Puzzles, part 2<i>This is the second in a pair of guest posts by Richard Gain (<a href="http://www.thingiverse.com/richgain/about">richgain</a> on Thingiverse), designer and printer of 3D burr puzzles. For richgain's first post see <a href="http://makerhome.blogspot.com/2014/08/day-348-saturday-guest-rich-gain-and.html">Day 348</a>.</i><br />
<br />
In <a href="http://makerhome.blogspot.com/2014/08/day-348-saturday-guest-rich-gain-and.html">Part 1</a>, we used Burr Tools to design the two different puzzle pieces and the target shape used in the "Looks Easy" puzzle. Now we will use the same program to generate printable parts.<br />
<br />
Go to the Export menu option and select STL. A new window will open in front of the main Burr Tools window. The large pane on the right can be used in exactly the same way to rotate and zoom until you have a good view of the selected piece.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg__ToPTRth1fM5lAf-c1skqnTFDI0CHv05VvYBP5uKeOHUI3rSxiyRzfCGLB6kF_chm20wnJ22_6wO0xc6gAKnewvdwinRgcXVpKmILu1_vs5wiLw9tuqkUfBa-xZjbiDwn49JNOb1YQJk/s1600/09.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg__ToPTRth1fM5lAf-c1skqnTFDI0CHv05VvYBP5uKeOHUI3rSxiyRzfCGLB6kF_chm20wnJ22_6wO0xc6gAKnewvdwinRgcXVpKmILu1_vs5wiLw9tuqkUfBa-xZjbiDwn49JNOb1YQJk/s1600/09.JPG" height="424" width="640" /></a></div>
<br />
Leave the file naming section for now and have a play with the export size settings. All units are in millimetres.<br />
<br />
<b>Unit size</b> - controls the size of each individual cubelet and 10 mm, or 1 cm, is a very good starting option. I have managed to go down to 4 mm and still print successful puzzles on a home printer.<br />
<br />
<b>Bevel </b>- is the width of the angled edge, which gets applied everywhere. This is important for sliding puzzles because it helps to prevent the pieces from snagging on each other as they move. I usually select a value which is 10% of the Unit size. Try increasing the bevel to 1.<br />
<br />
<b>Offset</b> - is the critical setting for getting a good fit in any puzzle. This is the amount which is shaved off every surface to allow the pieces to move. A good starting value is 0.1 mm (10 times more than the default setting!) but you should probably adjust this value after your first test print. Every printer is slightly different and the type of filament can affect the dimension accuracy as well.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho38t9kzpKZPNHOOl7GyzvtBwJdDyQ7Z_vanDlZzXXoHjUNSGQv9yAV3Yq8p-WV7XEwEho3sExA7vkrmaNSBdz7YoQeqBcdFUWRPdvyHfVraXM29curcKLjMOPqUbdjSVVFXdBL8Cl3H8I/s1600/10.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho38t9kzpKZPNHOOl7GyzvtBwJdDyQ7Z_vanDlZzXXoHjUNSGQv9yAV3Yq8p-WV7XEwEho3sExA7vkrmaNSBdz7YoQeqBcdFUWRPdvyHfVraXM29curcKLjMOPqUbdjSVVFXdBL8Cl3H8I/s1600/10.JPG" height="424" width="640" /></a></div>
<br />
When you have printed some test pieces, you will be able to slide one piece into the gap in another piece and hold it up. If the pieces fall apart under their own weight then the Offset is too large. Try lowering it a small amount, say 0.08 mm. If the puzzle is too tight it will be hard to pull apart again and this will only get worse as more pieces are added. In this case the offset needs to be increased to 0.12 mm or more. We are looking for a nice friction fit that slides easily with a little force.<br />
<br />
Wall thickness and Tube size are not recommended for home printing but they are very useful for getting puzzles printed by commercial services like Shapeways because they can dramatically reduce the cost of the puzzle without changing the way it functions. If you want to see the effect, try setting Wall thickness to 0.2 and Tube size to 0.5. Now Shift-click on any face to make a hole in that face. Ctrl-click to close the hole up again. If you want to make a hole right through a cube, Shift-click twice - once for the front face and again for the back face.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVp7dtydPFCJrljo7Gln9wbrhHciLQzKX1xEqkLqvPrfRzQWgrSkdXxnLAoOL7iAvGD7n3yH3CgD8TDsLVLIRELJqxmrKibHQiN5fT6o_ED8ECYMqq0RORVB0vcDc3uGkj0TXukCXypNoH/s1600/11.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVp7dtydPFCJrljo7Gln9wbrhHciLQzKX1xEqkLqvPrfRzQWgrSkdXxnLAoOL7iAvGD7n3yH3CgD8TDsLVLIRELJqxmrKibHQiN5fT6o_ED8ECYMqq0RORVB0vcDc3uGkj0TXukCXypNoH/s1600/11.JPG" height="470" width="640" /></a></div>
<br />
When you are happy with your settings it is time to save the pieces. Make sure the "Binary STL" checkbox is selected.<br />
<br />
It is worth pointing out that file handling and naming is very much a manual process in Burr Tools, so it is important to be quite methodical in naming the pieces you create. The program won't help you much in this area.<br />
<br />
Ignore the File name and Path fields for now and click on the narrow button with 3 dots just to the right. Taking this opportunity to set up the folder organisation and filename template for all the pieces will help you to manage a large number of similar files. Navigate to a suitable place on the disk and create a new folder for this puzzle.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr6NYlvudK2TJnDiQYVtFYAa5rY43t7wmxIFA0zj1955nXXUO2pxrUPPaVu6mDNQ0IGpK4GCfapYz79uwSvN5v8kyjFQI2At-eWJplgrwBSiaxLhZuKalMm1J5SodEjUTVSqCXjdZyA_RO/s1600/12.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr6NYlvudK2TJnDiQYVtFYAa5rY43t7wmxIFA0zj1955nXXUO2pxrUPPaVu6mDNQ0IGpK4GCfapYz79uwSvN5v8kyjFQI2At-eWJplgrwBSiaxLhZuKalMm1J5SodEjUTVSqCXjdZyA_RO/s1600/12.JPG" height="580" width="640" /></a></div>
<br />
I like to enter a Filename that tells me the name of the puzzle, which piece it is, and the dimension settings I used. That way if I need to come back and make changes later I don't have to try and remember what my export settings were. (You also have to add the .stl suffix manually.)<br />
<br />
So, shape 1 would be named: LooksEasy_S1_10_1_01.stl<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsTSBGsiH6QzyzykdeMa3PLtL-pzNs2DLcJTRZ1tWV44NJk4AJy9owgOcUQr4xOR8g2QujsqSzuCmVPIQ8-TRhPY0_S-VbooZBx8FEwyThAgwremkyC5Q5EJWenwRdLxlpgvy5RVJyjvAz/s1600/13.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsTSBGsiH6QzyzykdeMa3PLtL-pzNs2DLcJTRZ1tWV44NJk4AJy9owgOcUQr4xOR8g2QujsqSzuCmVPIQ8-TRhPY0_S-VbooZBx8FEwyThAgwremkyC5Q5EJWenwRdLxlpgvy5RVJyjvAz/s1600/13.JPG" height="454" width="640" /></a></div>
<br />
Click OK to accept the folder path and file name. Now we are ready to quickly export all the pieces.<br />
<br />
Click the blue S1 square to select it and then click "Export STL".<br />
<br />
Go back to the "File name" text box and change "_S1_" to "_S2_".<br />
<br />
Click the green S2 square to select it and then click "Export STL" again.<br />
<br />
When you have finished exporting, click the Abort button.<br />
<br />
All that remains is to load up your favourite 3D printing software (I use Simplify3D) and set up a plate with four pieces of each shape.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkMWpvmWhkqKcBFhVNn0CLe03EP5TbcnE8tleHFV2OM5dIytYap0jLgRamPWDj1GOf-FnZTuwmlLIOgoRHZlX8bxBFbdljhu2jbZ8ey-he3DJ91kD53kjbdOxQoxkffUf3Lm9AX8sicPiy/s1600/14.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkMWpvmWhkqKcBFhVNn0CLe03EP5TbcnE8tleHFV2OM5dIytYap0jLgRamPWDj1GOf-FnZTuwmlLIOgoRHZlX8bxBFbdljhu2jbZ8ey-he3DJ91kD53kjbdOxQoxkffUf3Lm9AX8sicPiy/s1600/14.JPG" height="422" width="640" /></a></div>
<br />
Eight pieces printed in black PLA.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaNFpGgQ2zlOlpa18JdctLqRdKDcn2UshPhgzlEXAydpZOp6gDmysYVRrRqJ1joMe8xniLC7JsZeiQeTtvsp6KbhGyReH8I6nt7Fl6P6iNbnYsZ0EQtJVbhcVUjNw-opgHKqejD21sW-LJ/s1600/15.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaNFpGgQ2zlOlpa18JdctLqRdKDcn2UshPhgzlEXAydpZOp6gDmysYVRrRqJ1joMe8xniLC7JsZeiQeTtvsp6KbhGyReH8I6nt7Fl6P6iNbnYsZ0EQtJVbhcVUjNw-opgHKqejD21sW-LJ/s1600/15.JPG" height="480" width="640" /></a></div>
<br />
Only one solution.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5tW5Xm5EVbsow_0XyTS3GGJEU6xqM-NdKEkwIMDSHYoBJieilmOlv9jlKgy2WgBvUJGsYgo19kUo2HPel_C1UftdrAvVsEiFP06W0k3_mOGQODNokkUwuezUG2tO9gPkKPtw_2M4PBmK8/s1600/16.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5tW5Xm5EVbsow_0XyTS3GGJEU6xqM-NdKEkwIMDSHYoBJieilmOlv9jlKgy2WgBvUJGsYgo19kUo2HPel_C1UftdrAvVsEiFP06W0k3_mOGQODNokkUwuezUG2tO9gPkKPtw_2M4PBmK8/s1600/16.JPG" height="480" width="640" /></a></div>
<br />
Happy puzzling!mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-42827764279730358702014-08-09T10:27:00.000-07:002014-08-22T11:24:07.133-07:00Day 348 - Saturday guest: Rich Gain and Printable Puzzles, part 1<i>Today's post is contributed by Richard Gain (<a href="http://www.thingiverse.com/richgain/about">richgain</a> on Thingiverse), designer of the nicely-constructed puzzles from <a href="http://makerhome.blogspot.com/2014/07/day-324-three-piece-box.html">Day 324</a> and <a href="http://makerhome.blogspot.com/2014/07/day-332-six-piece-box.html">Day 332</a> as well as the beautiful and terrible Szilassi polyhedron from <a href="http://makerhome.blogspot.com/2014/07/day-325-szilassi-polyhedron.html">Day 32</a>5. He has designed a stunning array of challenging burr puzzles that he makes using the program <a href="http://burrtools.sourceforge.net/">Burr Tools</a>; check out his <a href="https://www.shapeways.com/shops/microcubology">Shapeways shop</a> and <a href="http://www.thingiverse.com/richgain/designs/">Thingiverse collection</a>. Over the next two posts he's going to walk us through how to use Burr Tools to design printable puzzles!</i><br />
<br />
I have been 3D printing puzzles since 2008, first with the help of <a href="https://www.shapeways.com/shops/microcubology">Shapeways</a> and, since 2011, on home-made types of <a href="http://reprap.org/">RepRap</a> 3D printer.<br />
<br />
I quickly discovered that puzzles could be categorised in a new way depending on whether the shapes had overhanging parts which need the support option to be turned on in the slicing software.<br />
<br />
I decided to call these "printable" and "non-printable," harking back to the old wood-workers' classification of burr puzzles as either "notchable" or "non-notchable" depending on whether they could be made only with a saw. (Almost any puzzle can be printed on a home 3D printer by turning on automatic support but this usually leaves messy surfaces when it is removed, which can stop the puzzle from working well.)<br />
<br />
There is a fantastic collection of freely available puzzle designs at <a href="http://puzzlewillbeplayed.com/">Puzzle Will Be Played</a> with many new ones being added every week. This site can provide many wonderful new puzzle ideas for 3D printing, but please respect the designer's copyright and keep these for personal use only. Commercial reproduction can usually be arranged by negotiation with the designers.<br />
<br />
Choosing a printable puzzle is simply a matter of looking at a new design and working out whether there are any overhanging sections or not. Sometimes a piece can be rotated into a new position which has no overhangs but many pieces are complex and awkward shapes which would need support material however you positioned them. My own <a href="http://puzzlewillbeplayed.com/444/LockNessCube">Lock Ness Cube</a> is an example of such a puzzle.<br />
<br />
<a href="http://puzzlewillbeplayed.com/17PieceBurr/VASP">VASP</a> by Terry Smart is a brand new design of a classic burr puzzle. It would have been trickier to make out of wood because it is "non-notchable" (look at the internal corners of pieces D, I and J) however it is "printable" because there are no pieces with overhanging parts.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuthOmmzv6LKCtteg0cjhw8jdK2fyE8aIzqJ1RfxsSeRY_Tk5LazGdP88bKI-AMszpkjKAJ2hErvo0EBJJf1BLnGmwxP4B6e3Q-1OzngUOviWMtcI4wzJ0wUp8Wuk_H0ElMdiALxIzaWED/s1600/01.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuthOmmzv6LKCtteg0cjhw8jdK2fyE8aIzqJ1RfxsSeRY_Tk5LazGdP88bKI-AMszpkjKAJ2hErvo0EBJJf1BLnGmwxP4B6e3Q-1OzngUOviWMtcI4wzJ0wUp8Wuk_H0ElMdiALxIzaWED/s1600/01.JPG" height="640" width="622" /></a></div>
<br />
Let's start with something a little easier though. <a href="http://puzzlewillbeplayed.com/444/LooksEasy">Looks Easy</a> by Bram Cohen is also brand new and looks like an interesting puzzle challenge which should be easy to print, if not to solve!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhupCtVPw0QIkKyM9x7bqwToB1UxtMssUixECw3pNwyT8sOIMRoUR6td9L6LKgTZFa1MIamXMHRoJQqXTl2JBvm93b-IHpn1kUK9acvHtQhUdedKIG_RMEzAGCYXh6mc2gSAa50Ht1Iq3Cv/s1600/02.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhupCtVPw0QIkKyM9x7bqwToB1UxtMssUixECw3pNwyT8sOIMRoUR6td9L6LKgTZFa1MIamXMHRoJQqXTl2JBvm93b-IHpn1kUK9acvHtQhUdedKIG_RMEzAGCYXh6mc2gSAa50Ht1Iq3Cv/s1600/02.JPG" height="482" width="640" /></a></div>
<br />
By far the easiest way to make new 3D printable puzzle designs is to use a free program called <a href="http://burrtools.sourceforge.net/">Burr Tools</a>. Download it now from <a href="http://burrtools.sourceforge.net/">http://burrtools.sourceforge.net/</a> - the Download section is at the bottom of the page. The latest version is 0.6.3 but it is always worth checking for new updates.<br />
<br />
Once you have installed it to your preferred location, start the program up and you should see a screen like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Nxi9EKXe8X7Y6jHIQ9ConPBWGadlKKFqudm3FzsSiBTBzUrAt47I-bpRIav0oRqpw-F95RjWIFdhp1aYWFMrVo9BNZc61ijlSqt_9gVSM39zvMSywYz1Zg9ICzcir3R4Yz0gXFjEPUFj/s1600/03.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Nxi9EKXe8X7Y6jHIQ9ConPBWGadlKKFqudm3FzsSiBTBzUrAt47I-bpRIav0oRqpw-F95RjWIFdhp1aYWFMrVo9BNZc61ijlSqt_9gVSM39zvMSywYz1Zg9ICzcir3R4Yz0gXFjEPUFj/s1600/03.JPG" height="510" width="640" /></a></div>
<br />
Select File - New - Brick - OK. (Brick is the default type)<br />
<br />
On the Entities tab, click New shape. A blue S1 will appear.<br />
<br />
Now we can set the size of the pieces in blocks. This is a 4x4x4 cube puzzle so let's set X, Y and Z to 4 by dragging the wheels horizontally.<br />
<br />
Now click in the small 4x4 grid to paint the shape of the first layer of piece A. You can zoom and rotate the 3D view in the large window.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9PwzkBjNRjAqxCxST5Mw5tflAQBQYeysmoSYxca-ZgVUigPNwdUQdyfyeoWaUKylXVPMbBE3IcvKNW3vnkK2HFldUkP71PhWMZlZAzrJAXB_G1Qs9WSxy61pAOTz_vOjXVYsxhuDZfVHl/s1600/04.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9PwzkBjNRjAqxCxST5Mw5tflAQBQYeysmoSYxca-ZgVUigPNwdUQdyfyeoWaUKylXVPMbBE3IcvKNW3vnkK2HFldUkP71PhWMZlZAzrJAXB_G1Qs9WSxy61pAOTz_vOjXVYsxhuDZfVHl/s1600/04.JPG" height="510" width="640" /></a></div>
<br />
To paint on the second layer you would need to drag the slider on the left up a notch. We won't need that for this puzzle.<br />
<br />
Go back to the top and click New shape again. A green S2 will appear.<br />
<br />
Draw the shape of piece E in the 4x4 grid.<br />
<br />
Now would be a good time to save your work.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLPhOV8kGRR8QLZIn4JhPhvF9JRBWv4Og9k1lwDBhJ1dL1iGt8HBZHx02DiOgJ4cBAyJRDm0EkRFxHJs-ujFV5wz6NsqFbPpgbl9JznuH5Pt0tnYKiQNg5Yg7A_zt-ubirxejbnGXlPdxY/s1600/05.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLPhOV8kGRR8QLZIn4JhPhvF9JRBWv4Og9k1lwDBhJ1dL1iGt8HBZHx02DiOgJ4cBAyJRDm0EkRFxHJs-ujFV5wz6NsqFbPpgbl9JznuH5Pt0tnYKiQNg5Yg7A_zt-ubirxejbnGXlPdxY/s1600/05.JPG" height="510" width="640" /></a></div>
<br />
We only need to create the different shapes - copies can be added later - but there is one more shape we need; the target shape of the finished puzzle, in this case a 4x4x4 cube.<br />
<br />
Click New shape again to get red S3.<br />
<br />
We could simply paint every cell on all four layers but there is a quicker way. Just above the 4x4 grid there is a row of icons. Click the 5th icon to change to Rectangular Selection mode, and also the last icon to toggle "Draw in all Z layers." Now carefully click and drag in the 4x4 grid from top left to bottom right and you should have a large red cube.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhldlNu_ADFZ5ZXjlBMeAL7MuLnNG8GpyLk9l6ZwgPz6htKA5KHWiMErwBKwALpk0G6MX9TrqlvRRjyYB33qZvMimaJ85kpqTonzsZbWzsU89gKxafUZy5nZIGyRpDHNtSxhyiupfD6S_ZL/s1600/06.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhldlNu_ADFZ5ZXjlBMeAL7MuLnNG8GpyLk9l6ZwgPz6htKA5KHWiMErwBKwALpk0G6MX9TrqlvRRjyYB33qZvMimaJ85kpqTonzsZbWzsU89gKxafUZy5nZIGyRpDHNtSxhyiupfD6S_ZL/s1600/06.JPG" height="510" width="640" /></a></div>
<br />
Do experiment with these toggle switches when you are ready to learn more about the program. It is also worth checking out the Transform and Tools tabs which hide some very useful functions, like automatically making the internal cubes variable (may or may not be present) when there are internal holes in the puzzle. 'Looks Easy' has 0 internal holes so we don't need that now.<br />
<br />
For the final step in this section, let's finish entering the puzzle design. Go to the top and change from Entities to Puzzle.<br />
<br />
Click New. Click the red S3 shape, then click the Set Result button.<br />
<br />
Click the blue S1 shape, then click +1 four times.<br />
<br />
Click the green S2 shape, then click +1 four times.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCeG2i2T4lHpUpFXlKxP6Lu5PZQ0Ju3vo7WO8fWwY-yd-LXMUiLm3MKHUVy4b11Hk-JA-L1Zl_RqnoFRXfZROvz6FxEzyQrT3_nRl5_CAOodSFeQF0WqLma48P6YtiOA_HGm9sdtJkV9O-/s1600/07.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCeG2i2T4lHpUpFXlKxP6Lu5PZQ0Ju3vo7WO8fWwY-yd-LXMUiLm3MKHUVy4b11Hk-JA-L1Zl_RqnoFRXfZROvz6FxEzyQrT3_nRl5_CAOodSFeQF0WqLma48P6YtiOA_HGm9sdtJkV9O-/s1600/07.JPG" height="510" width="640" /></a></div>
<br />
Now select the Solver tab and click Start to get Burr Tools to show you the solution for this puzzle. Ticking the Disassemble check-box will show you how to solve the puzzle step-by-step by dragging the Move slider.<br />
<br />
Note that if the solution involves rotating any of the pieces then Burr Tools will be able to show the final positions but not the disassembly steps.<br />
<br />
In part 2 we'll look at how to turn this puzzle into a 3D printable design...mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-54105592496147069092014-08-08T15:28:00.000-07:002014-08-22T08:44:43.008-07:00Day 347 - Friday Fail: Self-Intersecting Faces EditionIt seems that the MakerBot Desktop software has an upper bound on the number of "self-intersecting faces" that can be in a model. When I had just a couple of squares hinged together, I didn't have any problems. But with six square faces all with hinges and snaps, there were over 500 of these bad faces (according to MeshLab), caused by triangles that end up somehow sharing parts in the OpenSCAD code. Desktop can't open a file with that much badness, and for a long time I went through a crash/restart/crash/<a href="https://www.youtube.com/watch?v=nn2FB1P_Mn8&ytsession=n4mhvMLT0S4g-yGbLZomE3E_qgwRM97EZcX67cuc24yWK5KpuxNPGgDIT1_MJ0dw9M8-FYfiC2ZklAlHO9kQgiqzRl6mL9MzZhr4RuirfROQo7_HfmL04csEInu1ow4ILs3ILufzHmORJo1db6fipcnCIMCyEfhNGAqlIWdr0AGxAw7vfhwkiTLaa0EmbwTBsdAwzWGO8ebRrqRN2FDFeeKKdUMnxRB6aLO22-hS5CKOKYKjjvBt7UcTiEmk_ks3Z4HHNzQQYGg1bxOvSCxJZJtuxv87Kfu0R7gVv6-d-pZRyjn9LzOR4j3bAC1E826G">turn-it-off-and-on-again</a>/restart/crash/uninstall/reinstall/forever cycle until I finally figured out that I should maybe go repair the mesh of my file. When I got the number of self-intersecting faces down under 50 by adding additional "fudges" to my OpenSCAD code, MakerBot Desktop could finally open it.<br />
<br />
Here's what the remaining 41 self-intersecting faces look like in MeshLab, after selecting <span style="font-family: Courier New, Courier, monospace;">Cleaning and Repairing</span> and applying <span style="font-family: Courier New, Courier, monospace;">Select Self Intersecting Faces</span>. I could get rid of these also but at this point thing were working so I left well enough alone.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7h5sB4gSoAqrZmpbyLv_zqbtAMcrzu_RUwXAZtWc3LmsWUf5NaIArMELbxbSf5NZd9uDWRHShq3N9Na_ZIOyn4SY4cIxmfEXgWvmhl9BmL22Ntr3NANXDwVDsDKej5cnRbxzkLNETmXmi/s1600/day347_selfintersecting.tiff" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7h5sB4gSoAqrZmpbyLv_zqbtAMcrzu_RUwXAZtWc3LmsWUf5NaIArMELbxbSf5NZd9uDWRHShq3N9Na_ZIOyn4SY4cIxmfEXgWvmhl9BmL22Ntr3NANXDwVDsDKej5cnRbxzkLNETmXmi/s1600/day347_selfintersecting.tiff" height="378" width="640" /></a></div>
<br />
With <span style="font-family: Courier New, Courier, monospace;">fudge</span> set to a teeny <span style="font-family: Courier New, Courier, monospace;">0.1</span>, we can sneak in fudges all over the OpenSCAD code with no effect on the printed size of the model, like this:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">translate([0-fudge,2*i*snapwidth,0-fudge]) </span><br />
<span style="font-family: Courier New, Courier, monospace;">cube([height/2+gap+fudge,snapwidth-space+fudge,height+fudge]);</span><br />
<br />
The trick is to make sure that none of your fudges intersect exactly with any of your other fudges. To avoid having two triangles that share the same face you need to keep track of how you've nudged everything - or change the value of fudge - so that you don't fudge-nudge other things into the same place.<br />
<br />mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-26080826179500047892014-08-07T15:25:00.000-07:002014-08-21T19:38:20.469-07:00Day 346 - Personalizable Crazy CubeOne really cool thing about a fold-out cube is that you can print things on the faces without using supports and then fold up the cube to get an object with interesting protrusions all over. To print a closed cube with crazy sides would be really unreliable, but to print a flat one is easy. Here's one crazily decorated hinge/snap cube net:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidjM-SPfQIoWsayuBWmF_0IjEIH-Wycrsys5IMaUIlA6hBp7EWN924V06pFJTCy8exD_XdYMZrMYQlUAe506Qbu0ZfhAqWxA1OME5TJmFNlPorx1Yg0L2ZQCxHo9a_SmteT_4GYtJYU-Ge/s1600/day346_crazycube_open.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidjM-SPfQIoWsayuBWmF_0IjEIH-Wycrsys5IMaUIlA6hBp7EWN924V06pFJTCy8exD_XdYMZrMYQlUAe506Qbu0ZfhAqWxA1OME5TJmFNlPorx1Yg0L2ZQCxHo9a_SmteT_4GYtJYU-Ge/s1600/day346_crazycube_open.jpg" height="480" width="640" /></a></div>
<br />
And here is it folded up:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjShN6x8R38iXfEXulNWcC4T1ii7RkQbs0Jm_MJD3yLPuhnTEwWCvFHeKTW1LTK7s22cgexNiyevZPeCOPoJ2lVotkAorvtEFUGTrCuy0v3MT0kBw1qvS1iD-9x00U2XyhEjE5kpxhlIKRn/s1600/day346_crazycube_closed.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjShN6x8R38iXfEXulNWcC4T1ii7RkQbs0Jm_MJD3yLPuhnTEwWCvFHeKTW1LTK7s22cgexNiyevZPeCOPoJ2lVotkAorvtEFUGTrCuy0v3MT0kBw1qvS1iD-9x00U2XyhEjE5kpxhlIKRn/s1600/day346_crazycube_closed.jpg" height="480" width="640" /></a></div>
<br />
The <a href="http://makerhome.blogspot.com/2014/08/day-345-customizable-hingesnap-cube-nets.html">Customizable Hinge/Snap Cube Net</a> was made in OpenSCAD and then imported into Tinkercad, where we added all the crazy shapes. Here's a public Tinkercad design you can modify to make your own Crazy Cube:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXTags-XeG-ibVnxwfCAZWK5pMrI_UHWwYXnjEAfDNCosgK5zxGZNqd69ZbQH3UgKy3_n557KrjVS1wfzYK-OEu-miNU-THvyV24wb-eXZpXRQGL6fC021LFkhhjeFy6cFh2lNflpiMbZI/s1600/day346_crazycube_TC.tiff" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXTags-XeG-ibVnxwfCAZWK5pMrI_UHWwYXnjEAfDNCosgK5zxGZNqd69ZbQH3UgKy3_n557KrjVS1wfzYK-OEu-miNU-THvyV24wb-eXZpXRQGL6fC021LFkhhjeFy6cFh2lNflpiMbZI/s1600/day346_crazycube_TC.tiff" height="438" width="640" /></a></div>
<br />
Tinkercad link: <a href="https://www.tinkercad.com/things/gu7kcfQV5C3-personalizable-crazy-cube">https://www.tinkercad.com/things/gu7kcfQV5C3-personalizable-crazy-cube</a><br />
Thingiverse link: <a href="http://www.thingiverse.com/thing:436982">http://www.thingiverse.com/thing:436982</a><br />
<br />
Settings: Printed on a Replicator 2 with .3mm/standard settings, raft but no supports.mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-36145479450776839452014-08-06T15:29:00.000-07:002014-08-24T15:58:54.534-07:00Day 345 - Customizable hinge/snap Cube netThis week we're attempting to combine three of our previous designs into one:<br />
<ul>
<li><a href="http://www.thingiverse.com/thing:230139">Print-in-Place Fidget Cube</a> (for the hinges)</li>
<li><a href="http://www.thingiverse.com/thing:208591">Poly-Snaps: Tiles for Building Polyhedra</a> (for the polygon code and homogeneous snaps) </li>
<li><a href="http://www.thingiverse.com/thing:185859">Polyhedra - Hinged Nets</a> (to update to OpenSCAD/Customizer)</li>
</ul>
<div>
So far we've managed to get snaps and hinges into the one right-angled model and get everything to fit. Today's code can make corners with two hinges and a snap, or two snaps and one hinge! In other words, we can now make nets for cubes: </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9Z13Ertk5b44CbOXzwr7Rf0HbvDOaNWtwhvhfYrwyb4x3NPtQZ0j-wAIJA2BgPgAqV9zww7NPmxyzFwTJRPgaV275V6hXL0pFxBJWC8LA_gmfF0t5qrDGy-PdOoRBzrZ6EyQil5bOgVhX/s1600/day345_hingesnap_cubenet.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9Z13Ertk5b44CbOXzwr7Rf0HbvDOaNWtwhvhfYrwyb4x3NPtQZ0j-wAIJA2BgPgAqV9zww7NPmxyzFwTJRPgaV275V6hXL0pFxBJWC8LA_gmfF0t5qrDGy-PdOoRBzrZ6EyQil5bOgVhX/s1600/day345_hingesnap_cubenet.jpg" height="480" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Thingiverse link: <a href="http://www.thingiverse.com/thing:436839">http://www.thingiverse.com/thing:436839</a><br />
<br />
Settings: Printed on a MakerBot Replicator 2 at .3mm layer height with standard settings, raft, and no supports. Use the Thingiverse Customizer to set the sizes and clearances however you like.mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-9410167685997381922014-08-05T15:15:00.000-07:002014-08-21T17:00:26.063-07:00Day 344 - Personalizable Hinged InitialsHere's one use for yesterday's hinge - some stand-up hinged initials for young C:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGjTfJt1YJdYCSPr75HmbtHjPIqd5ThJXU5-RnchEUqz-GapBKcJscIy2qYrUl_X4g02sF746zFcqweVlMEiDQTPZ5LR-gWArUb46G6nfhY359_URDnZr6Ahumo7M-6NLw4MqIAngWkqiN/s1600/day344_CGRhinge.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGjTfJt1YJdYCSPr75HmbtHjPIqd5ThJXU5-RnchEUqz-GapBKcJscIy2qYrUl_X4g02sF746zFcqweVlMEiDQTPZ5LR-gWArUb46G6nfhY359_URDnZr6Ahumo7M-6NLw4MqIAngWkqiN/s1600/day344_CGRhinge.jpg" height="480" width="640" /></a></div>
<br />
Of course, if your initials aren't CGR then this model doesn't help you very much. So here's a design you can customize yourself in Tinkercad:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1I0QUQY2RqqqU8C1xsVGX6xmLzeQAEhNCHf5N_FFsQJEGBQiqyFZbo5S29etNlmkEyXFc7d8xSBNLBMWLxYuqsLrrcSj4MAf7-ORqMyWorWUUjNmgITYiMXen2CG7mZuM4qsBNUNAUTyj/s1600/day344_tinkercad_initials.tiff" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1I0QUQY2RqqqU8C1xsVGX6xmLzeQAEhNCHf5N_FFsQJEGBQiqyFZbo5S29etNlmkEyXFc7d8xSBNLBMWLxYuqsLrrcSj4MAf7-ORqMyWorWUUjNmgITYiMXen2CG7mZuM4qsBNUNAUTyj/s1600/day344_tinkercad_initials.tiff" height="482" width="640" /></a></div>
<br />
Tinkercad link: <a href="https://www.tinkercad.com/things/7CItNykrXZQ-personalizable-hinged-initials">https://www.tinkercad.com/things/7CItNykrXZQ-personalizable-hinged-initials</a><br />
Thingiverse link: <a href="http://www.thingiverse.com/thing:436888">http://www.thingiverse.com/thing:436888</a><br />
<br />
Technical notes, Tinkercad/educator flavor: If you are supervising students who are personalizing this design in Tinkercad, I highly recommend having your students use the Ruler tool. To do this, select the Ruler from the "Helpers" section of the right-hand menu column in Tinkercad, and put the Ruler down anywhere on the Workplane (preferably somewhere out-of-the-way, maybe in a far corner). When the Ruler is on the Workplane, any object you select will have dimensions that you can modify by typing into the number fields. To personalize this object, first Ungroup it and remove the CGR initials. Put down letters from the right-hand Tinkercad column and resize them to fit in the boxes. Then use Adjust/Align and the arrow keys to get everything lined up just right.mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-16187182610165095282014-08-04T14:34:00.000-07:002014-08-21T17:16:43.060-07:00Day 343 - Customizable Cone HingeToday we made a cone hinge module that can be used inside other projects:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdDsVEqZBIW7yxUWXzWxrIA2z4gWpldnXGppcb5JBJjmu7mlicrFjIJaNB3XCWak1gSdh954JAdGAXvJJsSH8WaTsScoSt4iKcUnl-Y8fpXp03CnyYaBJtef_AaZ9jHiWxf2HqHlYG46Nz/s1600/day343_hinge.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdDsVEqZBIW7yxUWXzWxrIA2z4gWpldnXGppcb5JBJjmu7mlicrFjIJaNB3XCWak1gSdh954JAdGAXvJJsSH8WaTsScoSt4iKcUnl-Y8fpXp03CnyYaBJtef_AaZ9jHiWxf2HqHlYG46Nz/s1600/day343_hinge.jpg" height="480" width="640" /></a></div>
<br />
Thingiverse link: <a href="http://www.thingiverse.com/thing:436737">http://www.thingiverse.com/thing:436737</a><br />
<br />
Settings: Optimized for a MakerBot Replicator 2 with default .3mm/low settings, with raft but (and this is key) no supports. For different printers, to change scale, or for tighter/looser hinges, try changing the clearances in the Customizer at the Thingiverse link. <br />
<br />
Technical notes, OpenSCAD flavor: This is a conical hinge, so never needs support material. The picture below shows a cross-section about halfway through.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn9FW6_vY_Wtu1NGvjv7gfXlb92gKYs0ObE4I5_2z6kJqG0uNP4K4QnVxbqZZjCKXhEc22iJufNr5xaatb0gAPGJOv5PkrvGPQrH5MVP0xSuxQ1YpB0ukig3unopqqDlvKI9AwvRNdgBa2/s1600/day342_hinge_section.tiff" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn9FW6_vY_Wtu1NGvjv7gfXlb92gKYs0ObE4I5_2z6kJqG0uNP4K4QnVxbqZZjCKXhEc22iJufNr5xaatb0gAPGJOv5PkrvGPQrH5MVP0xSuxQ1YpB0ukig3unopqqDlvKI9AwvRNdgBa2/s1600/day342_hinge_section.tiff" height="496" width="640" /></a></div>
<br />
The space between the protruding cones and the cone-shaped holes is controlled by a parameter called <span style="font-family: Courier New, Courier, monospace;">clearance</span>, and the space between the hinge and the adjacent bars is controlled by the parameter called <span style="font-family: Courier New, Courier, monospace;">gap</span>. A non-customizable parameter called <span style="font-family: Courier New, Courier, monospace;">fudge</span> allows us to push things imperceptibly one way or another so as to avoid having identical duplicate triangles in our output mesh. Here is the full OpenSCAD code for this object:<br />
<br />
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<!--StartFragment--><span style="font-family: Courier New, Courier, monospace;">// mathgrrl cone hinge</span></div>
<div style="-qt-block-indent: 0; -qt-paragraph-type: empty; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">//////////////////////////////////////////////////////</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">// parameters</span></div>
<div style="-qt-block-indent: 0; -qt-paragraph-type: empty; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">// Length of the complete hinge</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">length = 20;</span></div>
<div style="-qt-block-indent: 0; -qt-paragraph-type: empty; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">// Height (diameter) of the hinge</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">height = 3;</span></div>
<div style="-qt-block-indent: 0; -qt-paragraph-type: empty; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">// Clearance between cones and holes</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">clearance = .7; </span></div>
<div style="-qt-block-indent: 0; -qt-paragraph-type: empty; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">// Clearance between hinge and sides</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">gap = .6; </span></div>
<div style="-qt-block-indent: 0; -qt-paragraph-type: empty; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">// Parameters that the user does not get to specify</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">$fn=24*1;</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">border = 2*1; </span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">fudge = .01*1; // to preserve mesh integrity</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">corner = 0*1; // space between hinge and corner</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">hinge_radius = height/2;</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">cone_height = 1.5*hinge_radius; </span></div>
<div style="-qt-block-indent: 0; -qt-paragraph-type: empty; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">//////////////////////////////////////////////////////</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">// renders</span></div>
<div style="-qt-block-indent: 0; -qt-paragraph-type: empty; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">rotate(90,[0,1,0]) </span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> translate([-hinge_radius,0,0])</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> hinge();</span></div>
<div style="-qt-block-indent: 0; -qt-paragraph-type: empty; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">translate([0,hinge_radius+gap,0]) bar();</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">translate([0,-2*border-hinge_radius-gap,0]) bar();</span></div>
<div style="-qt-block-indent: 0; -qt-paragraph-type: empty; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">//////////////////////////////////////////////////////</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">// module for hinge</span></div>
<div style="-qt-block-indent: 0; -qt-paragraph-type: empty; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">module hinge(){</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> rad = hinge_radius;</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> clr = clearance;</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> len = (length-2*corner)/3; </span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> con = cone_height;</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> // left outside hinge = (cylinder+box)-cone</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> difference(){</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> union(){</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> translate([0,0,corner]) cylinder(h=len-clr,r=rad);</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> translate([-rad,0,corner]) cube([2*rad,rad+gap,len-clr]);</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> }</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> translate([0,0,corner+len-con-clr+fudge]) cylinder(h=con,r1=0,r2=rad);</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> }</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> // inside hinge = cylinder+box+cone+cone</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> union(){</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> translate([0,0,corner+len]) cylinder(h=len,r=rad);</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> translate([-rad,-rad-gap,corner+len]) cube([2*rad,rad+gap,len]);</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> translate([0,0,corner+len-con]) cylinder(h=con,r1=0,r2=rad);</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> translate([0,0,corner+2*len]) cylinder(h=con,r1=rad,r2=0);</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> }</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> // right outside hinge = (cylinder+box)-cone</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> difference(){</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> union(){</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> translate([0,0,corner+2*len+clr]) cylinder(h=len-clr,r=rad);</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> translate([-rad,0,corner+2*len+clr]) cube([2*rad,rad+gap,len-clr]);</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> }</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> translate([0,0,corner+2*len+clr-fudge]) cylinder(h=con,r1=rad,r2=0); </span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> }</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">}</span></div>
<div style="-qt-block-indent: 0; -qt-paragraph-type: empty; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">//////////////////////////////////////////////////////</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">// module for bar shape</span></div>
<div style="-qt-block-indent: 0; -qt-paragraph-type: empty; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"><br /></span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">module bar(){</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;"> cube([length,2*border,height]);</span></div>
<div style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;">
<span style="font-family: Courier New, Courier, monospace;">}</span></div>
mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0tag:blogger.com,1999:blog-8839430508831012007.post-62088311355274041972014-08-03T13:38:00.000-07:002014-08-21T13:48:37.705-07:00Day 342 - HingeIn preparation for a new hinge-related project, today we redesigned our conical hinge maker.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF4QmVCoU8YfryNKUk8_lMBB2P7GOshsr_XJvJUn3NF5hqTfcWTr82VaokgaUo0F3Ibtu1fefn6biJHBMlRwDWimfkMgt8eAC3evJ_OPlC_cCUypei5hgbexT4jiT5A6S5TX1_phw1ymlm/s1600/day342_hinge_square.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF4QmVCoU8YfryNKUk8_lMBB2P7GOshsr_XJvJUn3NF5hqTfcWTr82VaokgaUo0F3Ibtu1fefn6biJHBMlRwDWimfkMgt8eAC3evJ_OPlC_cCUypei5hgbexT4jiT5A6S5TX1_phw1ymlm/s1600/day342_hinge_square.jpg" height="480" width="640" /></a></div>
<br />
Technical notes, clearance flavor: We made this hinge in OpenSCAD and tomorrow we'll have a customizable version up on Thingiverse, with modifiable tolerance parameters. Clearance dimensions matter a lot! Here's a picture of the six practice and failed designs that led up to the seventh working design:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfKuJdrDcKcEIvmb9zpNgkNRRF3p97aYXqtRZ5mYXi4EU_2wjHP8Tr7tjiZ9jHM1xZJH9L-6HBjVmNta9fwt47M2ya7kcZhyBygt-sSVZfpT68IMrzZUtToweF1gAecbieNL419bGjaTMA/s1600/day342_hinge_series.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfKuJdrDcKcEIvmb9zpNgkNRRF3p97aYXqtRZ5mYXi4EU_2wjHP8Tr7tjiZ9jHM1xZJH9L-6HBjVmNta9fwt47M2ya7kcZhyBygt-sSVZfpT68IMrzZUtToweF1gAecbieNL419bGjaTMA/s1600/day342_hinge_series.jpg" height="480" width="640" /></a></div>
mathgrrlhttp://www.blogger.com/profile/17236326897530195255noreply@blogger.com0