{"id":370,"date":"2009-08-07T13:23:18","date_gmt":"2009-08-07T20:23:18","guid":{"rendered":"https:\/\/actionsnippet.com\/?p=1946"},"modified":"2009-08-07T13:23:18","modified_gmt":"2009-08-07T20:23:18","slug":"gumdrop-torus","status":"publish","type":"post","link":"https:\/\/actionsnippet.com\/?p=370","title":{"rendered":"Gumdrop Torus"},"content":{"rendered":"<pre class=\"brush: as3; title: ; notranslate\" title=\"\">\r\nvar matrix:Matrix3D = new Matrix3D();\r\n \r\nvar verts:Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;();\r\nvar pVerts:Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;();\r\nvar uvts:Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;();\r\n\r\nfor (var i:Number = -2; i&lt;2; i+=.04){\r\n\tfor (var j:Number = -2; j&lt;2; j+=.04){\r\n\t\tfor (var k:Number = -2; k&lt;2; k+=.04){\r\n\/\/ equation from: http:\/\/local.wasp.uwa.edu.au\/~pbourke\/geometry\/gumdrop\/\r\n\t\t\tvar yz:Number = j * j + k * k;\r\n\t\t     var s:Number = 4 * (Math.pow(i,4) + Math.pow(yz,2)) \r\n\t\t\t + 17 * i * i *(yz) - 20 * (yz + i * i) + 17;\r\n\t\t\tif (s &lt;0 &amp;&amp; s &gt; -0.5){\r\n\t\t\t\tverts.push(i * 60);\r\n\t\t\t\tverts.push(j * 60);\r\n\t\t\t\tverts.push(k * 60);\r\n\t\t\t\tpVerts.push(0), pVerts.push(0);\r\n\t\t\t\tuvts.push(0), uvts.push(0), uvts.push(0);\r\n\t\t\t }\r\n\t\t}\r\n\t}\r\n}\r\n\r\nvar tVerts:Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;();\r\nmatrix.appendRotation(90, Vector3D.X_AXIS);\r\nmatrix.appendRotation(45, Vector3D.Y_AXIS);\r\nmatrix.appendScale(1.7, 1.7, 1.7);\r\nmatrix.transformVectors(verts, tVerts);\r\n\r\nvar p:Point = new Point();\r\nvar brush:BitmapData=new BitmapData(3,3,true,0x41FFFFFF);\r\nvar canvas:BitmapData = new BitmapData(500,500,false, 0x000000);\r\naddChild(new Bitmap(canvas));\r\nvar dx:Number=0;\r\nvar dy:Number=0;\r\naddEventListener(Event.ENTER_FRAME, onLoop);\r\nfunction onLoop(evt:Event):void {\r\n\tdx += (mouseX - dx)\/4;\r\n\tdy += (mouseY - dy)\/4;\r\n\tmatrix.identity();\r\n\tmatrix.appendRotation(dy,Vector3D.X_AXIS);\r\n\tmatrix.appendRotation(dx,Vector3D.Y_AXIS);\r\n\tmatrix.appendTranslation(250, 250, 0);\r\n\tUtils3D.projectVectors(matrix, tVerts, pVerts, uvts);\r\n\tcanvas.lock();\r\n\tcanvas.fillRect(canvas.rect, 0x000000);\r\n\tvar inc:int = 0;\r\n\tfor (var i:int = 0; i&lt;pVerts.length; i+=2){\r\n\t \r\n        p.x = pVerts&#x5B;i];\r\n        p.y = pVerts&#x5B;i+1];\r\n\t\tcanvas.copyPixels(brush, brush.rect, p, null, null, true); \r\n\t}\r\n\tcanvas.unlock();\r\n}\r\n<\/pre>\n<p>Felt like revisiting implicit surface plotting today&#8230; <\/p>\n<p><a href=\"http:\/\/wonderfl.net\/code\/cadb7727350ea9ba29520ec8aac37938ca8d754a\" target=\"blank\">Have a look at the swf over at wonderfl.net<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/actionsnippet.com\/wp-content\/gtorus.jpg\" \/><\/p>\n<p><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>var matrix:Matrix3D = new Matrix3D(); var verts:Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;(); var pVerts:Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;(); var uvts:Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;(); for (var i:Number = -2; i&lt;2; i+=.04){ for (var j:Number = -2; j&lt;2; j+=.04){ for (var k:Number = -2; k&lt;2; k+=.04){ \/\/ equation from: http:\/\/local.wasp.uwa.edu.au\/~pbourke\/geometry\/gumdrop\/ var yz:Number = j * j + k * k; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[101,24,121],"tags":[3,14,4],"class_list":["post-370","post","type-post","status-publish","format-standard","hentry","category-3d","category-bitmapdata","category-math","tag-actionscript","tag-as3","tag-flash"],"_links":{"self":[{"href":"https:\/\/actionsnippet.com\/index.php?rest_route=\/wp\/v2\/posts\/370","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/actionsnippet.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/actionsnippet.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/actionsnippet.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/actionsnippet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=370"}],"version-history":[{"count":0,"href":"https:\/\/actionsnippet.com\/index.php?rest_route=\/wp\/v2\/posts\/370\/revisions"}],"wp:attachment":[{"href":"https:\/\/actionsnippet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/actionsnippet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/actionsnippet.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}