{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "# Cuboidal E3: A Study in Structure\n", "### (version 1.4)\n", "\n", "\n", "\n", "
\n", "
\n", "\n", "
\n", "\"Cuboidal\n", "Figure 1: Overlapping Cuboids with Embedded E3\n", "
\n", "\n", "What we see here is another vZome construction by David Koski, showing an E3 embedded in two cuboids, with one edge length in common, the first cuboid (blue) the Golden Cuboid.\n", "\n", "What are the dimensions, based on the color coding? Note that vZome has this way of repeating colors based on orientation and scale, which is why all three edges of the Golden Cuboid appear blue.\n", "\n", "Lets start with E3 itself, the blue shaded tetrahedron module nestled inside (inscribe within) both cuboids. The darker triangle towards the bottom of the figure is 1/4 the diamond face of a Rhombic Triacontahedron. If we take the diamond center to the origin of said RT to be ø, and accept that in ratio to unit sphere Radius (R) = 1, then said tetrahedron is E3 i.e. 1/120th of the \"SuperRT\" or \"RT3\". The \"SuperRT\" is \"phi-up\" from the regular RT made of E modules. It's made from intersecting Platonic Duals: Icosahedron and Pentagonal Dodecahedron." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from math import sqrt as rt2\n", "ø = (rt2(5) + 1)/2\n", "ø_down = ø ** -1\n", "ø_up = ø\n", "Blue = ø_down\n", "Orange = 1/((rt2(ø ** 2 + 1)) * ø_down)\n", "Red = rt2(ø ** 2 + 1)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.6180339887498948\n", "0.8506508083520401\n", "1.902113032590307\n" ] } ], "source": [ "for item in Blue, Orange, Red:\n", " print(item)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The shop-talk around \"ø up\" and \"ø down\" involves scaling all linear dimensions of a shape, whereby volume actually increases or decreases by a factor of ø to the 3rd power. When you think \"ø to the 3rd\" sometimes imagine a tetrahedron of edges ø vis-a-vis a regular tetrahedron of edges 1 (D). Remember in Synergetics we may use this alternative model of 3rd powering, where our unit-tetrahedron comes from in the first place." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "Blue = ø_down\n", "Red = rt2(ø ** 2+1)\n", "Orange = ø/Red" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.6180339887498948\n", "0.85065080835204\n", "1.902113032590307\n" ] } ], "source": [ "for item in Blue, Orange, Red:\n", " print(item)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the purposes of Synergetics, our canonical bridge to the Platonics involves making the unit edge of the tetrahedron serve as our D, the Diameter of a unit-radius sphere (D = 2R). We often call this edge length 2, using R as our unit. \n", "\n", "The Icosahedron with edges D, for example, is our volume of ~18.51..., which Jitterbugs to become the Cuboctahedron (VE) of volume 20. The octahedron of edges D has volume 4, the cube of face diagonals D has edges 3, and the unit of volume, the regular tetrahedron of edges D, is of course volume 1.\n", "\n", "Links to Volumes Table:\n", "* [on Codepen](https://codepen.io/pdx4d/full/qjwORr/)\n", "* [in Wikipedia](https://en.wikipedia.org/wiki/Synergetics_(Fuller)\n", "* [at Synergetics on the Web](http://www.grunch.net/synergetics/volumes.html)\n", "\n", "The dual of said Icosahedron, its edges made to intersect said Icosa's at 90 degrees, gives the superstructure of our SuperRT, the one fragmenting into 120 E3 modules, as depicted in Figure One.\n", "\n", "What is the volume of the E3? In tetravolumes, we take the SuperRT volume of 15√2 (equivalently vol(CO) * S3)..." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "21.213203435596427\n" ] } ], "source": [ "RT3_vol = 15 * rt2(2)\n", "print(RT3_vol)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "... and simply divide by 120." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.04173131692777365\n" ] } ], "source": [ "E_vol = (RT3_vol * ø_down ** 3)/120 # a little more than 1/24, volume of T module\n", "print(E_vol)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another expression (in Python) for the E's volume is (rt2(2)/8) \\* (φ \\*\\* -3).\n", "\n", "For exercise, lets computer these expressions for E's and SuperRT's volume to a hundred places of decimal precision." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "E3*120 21.213203435596425732025330863145471178545078130654221097650196069860987176931606\n", "Check: 21.213203435596425732025330863145471178545078130654221097650196069860987176931606\n", "E vol: 0.041731316927773654299439512001665297072526423571415085063018172101391185214378\n", "Check: 0.041731316927773654299439512001665297072526423571415085063018172101391185214378\n" ] } ], "source": [ "from decimal import Decimal, localcontext\n", "with localcontext() as cm:\n", " cm.prec = 300 # 100 decimal points of precision\n", " Phi = (Decimal(1) + Decimal(5).sqrt())/Decimal(2)\n", " RT3_vol = Decimal('15') * Decimal('2').sqrt()\n", " check_RT = Decimal('20') * (Decimal('9')/Decimal('8')).sqrt()\n", " E_volume = (Decimal('2').sqrt() / Decimal('8')) * Phi ** -3 # simplified expression\n", " check_E = (RT3_vol * Phi ** -3) / Decimal('120') # shrink SuperRT and explode\n", "print(\"E3*120 {:80.78f}\".format(RT3_vol))\n", "print(\"Check: {:80.78f}\".format(check_RT))\n", "print(\"E vol: {:80.78f}\".format(E_volume))\n", "print(\"Check: {:80.78f}\".format(check_E))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "How about we redo those calcs with gmpy2, why not?" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "E3*120: 21.213203435596425732025330863145471178545078130654221097650196069860987176931606\n", "E vol: 0.041731316927773654299439512001665297072526423571415085063018172101391185214378\n" ] } ], "source": [ "import gmpy2\n", "\n", "gmpy2.get_context().precision=300\n", "Ø = (1 + gmpy2.root(5, 2))/2\n", "vol_scale_factor = 1.5\n", "rad_scale_factor = gmpy2.root(vol_scale_factor, 3)\n", "\n", "S3 = gmpy2.root(9/8, 2)\n", "SuperRT_vol = S3 * 20\n", "Emod_RT_vol = SuperRT_vol * (1/Ø)**3\n", "print(\"E3*120: {:80.78f}\".format( SuperRT_vol))\n", "print(\"E vol: {:80.78f}\".format( Emod_RT_vol/120 ))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "vZome by Scott Vorthman is a downloadable Java application that simulates working the ZomeTool, meaning it takes the ZomeTool hub as an object providing relevant information as to the orientation of the rods stuck into it. If you've never seen the ZomeTool hub, it's a phenomenal specimen of precision engineering.\n", "\n", "In making connections between hubs, vZome automatically colorizes depending on a carefully defined palette. When the rod would not be possible, given hub contraints, it's left to the vZome user to specify a color.\n", "\n", "For Further Reading:\n", "* [Koski on EPQR (\"peculiar\") Modules in Golden Cuboid](https://www.youtube.com/watch?v=lm9MkxsbJG4)\n", "* [vZome by Scott Vorthmann](http://vzome.com/home/)\n", "* [ZomeTool](http://www.zometool.com/)\n", "* [Hypertoons 2017](http://coffeeshopsnet.blogspot.com/2017/11/hypertoons-2017.html)\n", "* [S&E Modules (Python 3 Repl)](https://repl.it/@kurner/SandE-Modules)\n", "* [Pattern Verification with Python](VerifyArctan.ipynb)\n", "* [The E Module in Tetravolumes](NewPyx.ipynb)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }