{"id":390,"date":"2009-08-28T10:14:35","date_gmt":"2009-08-28T17:14:35","guid":{"rendered":"https:\/\/actionsnippet.com\/?p=2058"},"modified":"2009-08-28T10:14:35","modified_gmt":"2009-08-28T17:14:35","slug":"simple-z-sorting","status":"publish","type":"post","link":"https:\/\/actionsnippet.com\/?p=390","title":{"rendered":"Simple z-sorting"},"content":{"rendered":"<pre class=\"brush: as3; title: ; notranslate\" title=\"\">\r\n&#x5B;SWF(backgroundColor=0x444444, width=500, height=500)]\r\nvar hsw:Number = stage.stageWidth \/ 2;\r\nvar hsh:Number = stage.stageHeight \/ 2;\r\n\r\nvar pointNum:int = 200;\r\nvar points3D:Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;();\r\nvar points2D:Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;();\r\nvar uvts:Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;();\r\nvar sorted:Array = &#x5B;];\r\n\r\nvar pnt:Point = new Point();\r\nvar m:Matrix3D = new Matrix3D();\r\nvar v:Vector3D = new Vector3D();\r\nfor (var i:int = 0; i&lt;pointNum; i++){\r\n\tv.x = Math.random()*400-200;\r\n\tm.identity();\r\n\tm.appendRotation(Math.random()*360, Vector3D.X_AXIS);\r\n\tm.appendRotation(Math.random()*360, Vector3D.Y_AXIS);\r\n\tm.appendRotation(Math.random()*360, Vector3D.Z_AXIS);\r\n\tv = m.transformVector(v);\r\n\tpoints3D.push(v.x, v.y, v.z);\r\n\tpoints2D.push(0,0);\r\n\tuvts.push(0,0,0);\r\n\tsorted.push(new Vector3D());\r\n}\r\npoints3D.fixed = true;\r\npoints2D.fixed = true;\r\nuvts.fixed = true;\r\n\r\nvar p:PerspectiveProjection = new PerspectiveProjection();\r\nvar proj:Matrix3D = p.toMatrix3D();\r\n\r\nvar dx:Number = 0, dy:Number = 0;\r\naddEventListener(Event.ENTER_FRAME, onLoop);\r\nfunction onLoop(evt:Event):void {\r\n\tvar i:int, j:int;\r\n\tdx += (mouseX - dx) \/ 4;\r\n\tdy += (mouseY - dy) \/ 4;\r\n\tm.identity();\r\n\tm.appendRotation(dx, Vector3D.Y_AXIS);\r\n\tm.appendRotation(dy, Vector3D.X_AXIS);\r\n\tm.appendTranslation(0, 0, 1000);\r\n\tm.append(proj);\r\n\t\r\n\tUtils3D.projectVectors(m, points3D, points2D, uvts);\r\n\t\r\n\tfor (i = 0, j = 0; i&lt;points2D.length; i+=2, j++){\r\n\t\tsorted&#x5B;j].x = points2D&#x5B;i] + hsw;\r\n\t\tsorted&#x5B;j].y = points2D&#x5B;i + 1] + hsh;\r\n\t\tsorted&#x5B;j].z = uvts&#x5B;j * 3 + 2];\r\n\t}\r\n\tsorted.sortOn(&quot;z&quot;, Array.NUMERIC);\r\n\t\r\n\tgraphics.clear();\r\n\tfor(i = 0; i&lt;sorted.length; i++){\r\n\t\tvar zpos:Number = sorted&#x5B;i].z * 12000;\r\n\t\tvar c:int = zpos * 14;\r\n\t\tgraphics.beginFill(c &lt;&lt; 16 | c &lt;&lt; 8 | c);\r\n\t\tgraphics.drawCircle(sorted&#x5B;i].x, sorted&#x5B;i].y,zpos);\r\n\t\tgraphics.endFill();\r\n\t}\r\n}\r\n<\/pre>\n<p>Here is an easy way to do z-sorting on a cluster of circles.<\/p>\n<p><a href=\"http:\/\/wonderfl.net\/code\/cc3d98ef63c1b65bb96dcda9c560f84dd8f6a90c#\" target=\"blank\"><br \/>\nHave a look at the swf over at wonderfl&#8230;<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/actionsnippet.com\/wp-content\/cluster.gif\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#x5B;SWF(backgroundColor=0x444444, width=500, height=500)] var hsw:Number = stage.stageWidth \/ 2; var hsh:Number = stage.stageHeight \/ 2; var pointNum:int = 200; var points3D:Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;(); var points2D:Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;(); var uvts:Vector.&lt;Number&gt; = new Vector.&lt;Number&gt;(); var sorted:Array = &#x5B;]; var pnt:Point = new Point(); var m:Matrix3D = new Matrix3D(); var v:Vector3D = new Vector3D(); for (var [&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,33,47,79],"tags":[3,14,4],"class_list":["post-390","post","type-post","status-publish","format-standard","hentry","category-3d","category-graphics","category-sorton","category-vector","tag-actionscript","tag-as3","tag-flash"],"_links":{"self":[{"href":"https:\/\/actionsnippet.com\/index.php?rest_route=\/wp\/v2\/posts\/390","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=390"}],"version-history":[{"count":0,"href":"https:\/\/actionsnippet.com\/index.php?rest_route=\/wp\/v2\/posts\/390\/revisions"}],"wp:attachment":[{"href":"https:\/\/actionsnippet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=390"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/actionsnippet.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=390"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/actionsnippet.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=390"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}