<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>*drawlogic &#187; PAPERVISION</title>
	<atom:link href="http://drawlogic.com/category/papervision/feed/" rel="self" type="application/rss+xml" />
	<link>http://drawlogic.com</link>
	<description>interactive and game development technologies for the web - flash, flex, unity3d, silverlight, javascript</description>
	<lastBuildDate>Thu, 22 Dec 2011 21:55:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Blender to AS3 Exporter for Papervision 3D, Away 3D and Sandy Updated by Rozengain</title>
		<link>http://drawlogic.com/2009/06/14/blender-to-as3-exporter-for-papervision-3d-away-3d-and-sandy-updated-by-rozengain/</link>
		<comments>http://drawlogic.com/2009/06/14/blender-to-as3-exporter-for-papervision-3d-away-3d-and-sandy-updated-by-rozengain/#comments</comments>
		<pubDate>Sun, 14 Jun 2009 20:27:29 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[3d]]></category>
		<category><![CDATA[3D ENGINES]]></category>
		<category><![CDATA[ACTIONSCRIPT]]></category>
		<category><![CDATA[ACTIONSCRIPT3]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[AWAY3D]]></category>
		<category><![CDATA[blender]]></category>
		<category><![CDATA[FLASH]]></category>
		<category><![CDATA[GAMEDEV]]></category>
		<category><![CDATA[GAMES]]></category>
		<category><![CDATA[PAPERVISION]]></category>
		<category><![CDATA[RENDERING]]></category>
		<category><![CDATA[SANDY]]></category>
		<category><![CDATA[TECHNOLOGY]]></category>
		<category><![CDATA[TOOLS]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[exporter]]></category>
		<category><![CDATA[papervision 3d]]></category>
		<category><![CDATA[pipeline]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://drawlogic.com/?p=567</guid>
		<description><![CDATA[Rozengain or Dennis Ippel of AKQA updated probably one of the tools I use the most for flash 3d and that is the blender to as3 exporter.  This simplifies loading in the meshes you have and lessens the bulk of the COLLADA format.  COLLADA is great but flash is still client side and fairly memory [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rozengain.com/blog/2009/06/12/blender-to-actionscript-exporter-updated-export-multiple-objects-at-once/" target="_blank">Rozengain or Dennis Ippel</a> of <a title="AKQA" href="http://www.akqa.com/">AKQA</a> updated probably one of the tools I use the most for flash 3d and that is the blender to as3 exporter.  This simplifies loading in the meshes you have and lessens the bulk of the COLLADA format.  COLLADA is great but flash is still client side and fairly memory intensive for 3d so loading in models directly to as3 is nice if flash is your presentation tool.</p>
<p><a href="http://www.rozengain.com/blog/2009/06/12/blender-to-actionscript-exporter-updated-export-multiple-objects-at-once/" target="_blank">AS3 Blender exporter</a> has been updated to allow multiple object export. Also in April is was <a href="http://www.rozengain.com/blog/2009/04/06/blender-to-actionscript-exporter-updated-quads-and-modifiers/" target="_blank">updated to export quads and modifiers</a>.</p>
<p><a href="http://www.rozengain.com/blog/2009/06/12/blender-to-actionscript-exporter-updated-export-multiple-objects-at-once/" target="_blank"><img class="alignnone" title="Rozengain AS3 Blender Exporter" src="http://i81.photobucket.com/albums/j223/drawkbox/blendexpnew.jpg" alt="" width="340" height="229" /></a></p>
<p><a href="http://www.rozengain.com/blog/2009/06/12/blender-to-actionscript-exporter-updated-export-multiple-objects-at-once/" target="_blank"><img class="alignnone" title="Blender to AS3 Pipeline" src="http://i81.photobucket.com/albums/j223/drawkbox/export-actionscript-blender.jpg" alt="" width="350" height="275" /></a></p>
<p>One concern you might have is statically binding the code within a main swf fileon compile and resulting file size compared to loading in the DAE dynamically.  But you can just load these in as you would external DAE COLLADA files as compiled swfs and since it is just code it is very compact.   This adds some duplication of code (such as tweening libraries or the 3d engine source as needed) but allows a more horizontal loading or lazy loading of meshes when needed.</p>
<p>This is just another option to get 3D models into the flash 3d engine of your choice in addition to COLLADA, some MD2 support and limited ASE support.</p>
<p>This is an awesome project that keeps getting better, thanks Rozengain.</p>
]]></content:encoded>
			<wfw:commentRss>http://drawlogic.com/2009/06/14/blender-to-as3-exporter-for-papervision-3d-away-3d-and-sandy-updated-by-rozengain/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AS3 JiglibFlash Example with MouseConstraint in Papervision 3D</title>
		<link>http://drawlogic.com/2009/04/23/as3-jiglibflash-example-with-mouseconstraint-in-papervision-3d/</link>
		<comments>http://drawlogic.com/2009/04/23/as3-jiglibflash-example-with-mouseconstraint-in-papervision-3d/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 22:10:59 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[3d]]></category>
		<category><![CDATA[3D ENGINES]]></category>
		<category><![CDATA[ACTIONSCRIPT]]></category>
		<category><![CDATA[ACTIONSCRIPT3]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[AWAY3D]]></category>
		<category><![CDATA[FLASH]]></category>
		<category><![CDATA[FLEX]]></category>
		<category><![CDATA[GAMEDEV]]></category>
		<category><![CDATA[GAMES]]></category>
		<category><![CDATA[OPEN SOURCE]]></category>
		<category><![CDATA[PAPERVISION]]></category>
		<category><![CDATA[PERFORMANCE]]></category>
		<category><![CDATA[PHYSICS]]></category>
		<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[RENDERING]]></category>
		<category><![CDATA[SANDY]]></category>
		<category><![CDATA[TECHNOLOGY]]></category>
		<category><![CDATA[ENGINE]]></category>
		<category><![CDATA[jiglibflash]]></category>

		<guid isPermaLink="false">http://drawlogic.com/?p=531</guid>
		<description><![CDATA[@bartek from everydayflash.com is an amazing 3d flash designer and developer.  The latest from everydayflash is a sample using MouseConstraint in JiglibFlash the 3d physics engine for all major flash 3d engines. It is easy to see how the latest version of JiglibFlash with MouseConstraint will be heavily influencing flash games and applications very soon. [...]]]></description>
			<content:encoded><![CDATA[<p>@bartek from <a href="http://www.everydayflash.com/blog/index.php/2009/04/23/jiglibflash-3d-physics/" target="_blank">everydayflash.com</a> is an amazing 3d flash designer and developer.  The latest from everydayflash is a <a href="http://www.everydayflash.com/blog/index.php/2009/04/23/jiglibflash-3d-physics/" target="_blank">sample using MouseConstraint in JiglibFlash the 3d physics engine for all major flash 3d engines</a>.</p>
<p><a href="http://www.everydayflash.com/flash/jiglib/pingpong.html" target="_blank"><img class="alignnone" title="jiglibflash 3d physics engine" src="http://i81.photobucket.com/albums/j223/drawkbox/paddle.png" alt="" width="569" height="307" /></a></p>
<p>It is easy to see how the latest version of <a href="http://www.jiglibflash.com/blog/" target="_blank">JiglibFlash</a> with <a href="http://www.jiglibflash.com/blog/2009/04/14/radians-vs-degress-new-class-and-other-news/" target="_blank">MouseConstraint</a> will be heavily influencing flash games and applications very soon. This is a very smooth and quick demo that feels very responsive on the controls.  There are so many possible uses for JiglibFlash now that the MouseConstraint is available.  It will evolve further but this version seems ready to start integrating into many flash game and interactive ideas and projects. Even though it is still alpha it has been heavily cleaned up and a plugin system added by bartek for pluggable 3d render engines.  That is a huge step for 3d pipelines in flash.</p>
<p>Great work JiglibFlash team!</p>
]]></content:encoded>
			<wfw:commentRss>http://drawlogic.com/2009/04/23/as3-jiglibflash-example-with-mouseconstraint-in-papervision-3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AS3 Version of OpenCV for Facial Detection, Web Cam Object Detection, Head Tracking, 3D Library Integration and more with Open Computer Vision Library for Flash</title>
		<link>http://drawlogic.com/2009/03/16/as3-version-of-opencv-for-facial-detection-web-cam-object-detection-head-tracking-3d-library-integration-and-more-with-open-computer-vision-library/</link>
		<comments>http://drawlogic.com/2009/03/16/as3-version-of-opencv-for-facial-detection-web-cam-object-detection-head-tracking-3d-library-integration-and-more-with-open-computer-vision-library/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 21:47:32 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[3d]]></category>
		<category><![CDATA[3D ENGINES]]></category>
		<category><![CDATA[ACTIONSCRIPT]]></category>
		<category><![CDATA[ACTIONSCRIPT3]]></category>
		<category><![CDATA[ADOBE]]></category>
		<category><![CDATA[ALCHEMY]]></category>
		<category><![CDATA[APPLICATIONS]]></category>
		<category><![CDATA[ARCHITECT]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[BEST OF]]></category>
		<category><![CDATA[CODE]]></category>
		<category><![CDATA[ENGINE]]></category>
		<category><![CDATA[FLASH]]></category>
		<category><![CDATA[FLEX]]></category>
		<category><![CDATA[GAMEDEV]]></category>
		<category><![CDATA[GAMES]]></category>
		<category><![CDATA[LIBRARIES]]></category>
		<category><![CDATA[MOTION]]></category>
		<category><![CDATA[OPEN SOURCE]]></category>
		<category><![CDATA[PAPERVISION]]></category>
		<category><![CDATA[PERFORMANCE]]></category>
		<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[RENDERING]]></category>
		<category><![CDATA[TECHNOLOGY]]></category>
		<category><![CDATA[TOOLS]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[detection]]></category>
		<category><![CDATA[face]]></category>
		<category><![CDATA[flash 10]]></category>
		<category><![CDATA[head]]></category>
		<category><![CDATA[libspark]]></category>
		<category><![CDATA[marilena]]></category>
		<category><![CDATA[opencv]]></category>
		<category><![CDATA[recognition]]></category>
		<category><![CDATA[tracking]]></category>
		<category><![CDATA[visual]]></category>

		<guid isPermaLink="false">http://drawlogic.com/?p=425</guid>
		<description><![CDATA[Libspark from Japan is a treasure trove of great flash advancements, they seem to realize the great things that can come from porting in existing solid libraries from C/C++ etc into flash and have been scoring lately including augmented reality in flash porting the ARToolkit to FLARToolkit.  Recently a port of openCV for as3 called [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.libspark.org/" target="_blank">Libspark</a> from Japan is a treasure trove of great flash advancements, they seem to realize the great things that can come from porting in existing solid libraries from C/C++ etc into flash and have been scoring lately including augmented reality in flash porting the <a href="http://www.hitl.washington.edu/artoolkit/" target="_blank">ARToolkit</a> to FLARToolkit.  Recently a port of <a href="http://www.libspark.org/wiki/mash/Marilena" target="_blank">openCV for as3 called Marilena</a> was found and it is for object detection and decent facial recognition (it is a computer vision library from intel) considering the processing power needed to do this.</p>
<p><strong>Face Detection:</strong> Here is the <a href="http://maaash.jp/lab/Marilena_sample/" target="_blank">sample included with Marilena</a> showing facial detection on an image.</p>
<p><a href="http://maaash.jp/lab/Marilena_sample/" target="_blank"><img class="alignnone size-full wp-image-436" title="marilena1" src="http://drawlogic.com/wp-content/uploads/2009/03/marilena1.jpg" alt="marilena1" width="520" height="163" /></a></p>
<p>Lots of recent action has blown up on this front from <a href="http://mrdoob.com/blog/post/643" target="_blank">Mr doob</a>, <a href="http://www.quasimondo.com/" target="_blank">quasimondo </a>(optimizing the <a href="http://www.libspark.org/wiki/mash/Marilena" target="_blank">Marilena</a> classes for better performance) and <a href="http://www.boffswana.com/news/?p=498" target="_blank">Boffwswana</a>. Also there is a kit called <a href="http://code.google.com/p/deface/" target="_blank">deface</a> by sshipman that is the first foray into this a year ago doing similar things but it was just a bit before it&#8217;s time and a bit slow in previous versions of flash,<a href="http://suckatmath.com/personal/facedetect/facedetect.html" target="_blank"> it performs decent now in this sample</a>. Flash 10 performance of the AVM2 and future directions with Alchemy will lead to more interesting stuff just like this.</p>
<p><strong><a href="http://mrdoob.com/blog/post/643" target="_blank">Mr. doob</a> head tracking sample, be sure to check <a href="http://mrdoob.com/blog/post/643" target="_blank">lots of other examples there</a><br />
</strong></p>
<p><strong><a href="http://mrdoob.com/blog/post/643" target="_blank"><img class="alignnone size-full wp-image-428" title="mrdoob_facedriven3d" src="http://drawlogic.com/wp-content/uploads/2009/03/mrdoob_facedriven3d.png" alt="mrdoob_facedriven3d" width="350" height="222" /></a><br />
</strong></p>
<p><strong><a href="http://www.boffswana.com/news/?p=498" target="_blank">Boffswana </a>example of head tracking <a href="http://www.youtube.com/watch?v=Jd3-eiid-Uw" target="_blank">Johnny Lee Wii style</a> </strong>with only a webcam and flash, no wiimote needed since it uses facial detection to check where you are and how close you are in the screen and then moves accordingly.</p>
<p><a href="http://www.boffswana.com/news/?p=498" target="_blank"><img class="alignnone size-full wp-image-427" title="bofswana" src="http://drawlogic.com/wp-content/uploads/2009/03/bofswana.jpg" alt="bofswana" width="505" height="379" /></a></p>
<p><a href="http://mrdoob.com/blog/post/643" target="_blank"></a></p>
<p>This is stemming from the recent explosion of the <a href="http://www.libspark.org/wiki/saqoosha/FLARToolKit/en" target="_blank">FLARToolkit </a>and <a href="http://drawlogic.com/2008/11/17/as3-augmented-reality-in-flash-and-papervision-3d-flartoolkit/" target="_blank">augmented reality in flash</a> as well as the gimmicks used by Nintendo with the <a href="http://www.youtube.com/watch?v=Jd3-eiid-Uw" target="_blank">wii and Johnny Lee&#8217;s great head tracking advancements</a>. Porting great libraries to flash seems to be the phase we are entering now judging by the recent excitement around Adobe Alchemy and the LLVM along with the lead from the libspark.org contributors. We have also seen this heavily last year in ports of Box2D for 2d physics and other toolkits using established working code and porting that to flash now that is is mostly capable of handling the performance.</p>
<p><a href="http://sourceforge.net/projects/opencv/" target="_blank">OpenCV</a> (Open Computer Vision Library by Intel) is quite a powerful platform that allows you to do all this and now it is available in flash. There are other great libraries for nearly all platforms now. I have done some previous work with <a href="http://code.google.com/p/aforge/" target="_blank">Aforge which is also a port of OpenCV</a> mainly for<a href="http://drawlogic.com/2007/10/17/motion-detection-in-flash-as2-and-as3-and-c/" target="_blank"> motion detection</a>. This was always around but not until the recent performance updates and the innovation that has come with Alchemy and the thinking that goes along with that (porting in libraries to flash from C/C++ etc), has allowed this to flourish in flash and thus the web.</p>
<p>The amazing new things we can do with flash by porting in existing libraries is only going to get more intense as alchemy and flash 10 are even more mainstream.  It is almost as if Flash will eventually just become a web renderer and simplified front end to many great toolkits that exist in more native environments like C/C++ but with the speed and distribution access of the web with Flash.  Exciting times ahead.</p>
]]></content:encoded>
			<wfw:commentRss>http://drawlogic.com/2009/03/16/as3-version-of-opencv-for-facial-detection-web-cam-object-detection-head-tracking-3d-library-integration-and-more-with-open-computer-vision-library/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>ODE (Open Dynamics Engine) 3D Physics Engine Running on Flash Player Using Alchemy</title>
		<link>http://drawlogic.com/2009/02/28/ode-open-dynamic-engine-3d-physics-engine-running-on-flash-player-using-alchemy/</link>
		<comments>http://drawlogic.com/2009/02/28/ode-open-dynamic-engine-3d-physics-engine-running-on-flash-player-using-alchemy/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 14:11:47 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[ACTIONSCRIPT]]></category>
		<category><![CDATA[ACTIONSCRIPT3]]></category>
		<category><![CDATA[ADOBE]]></category>
		<category><![CDATA[ALCHEMY]]></category>
		<category><![CDATA[APPLICATIONS]]></category>
		<category><![CDATA[ARCHITECT]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[DEVELOPMENT]]></category>
		<category><![CDATA[FLASH]]></category>
		<category><![CDATA[GAMEDEV]]></category>
		<category><![CDATA[GAMES]]></category>
		<category><![CDATA[LIBRARIES]]></category>
		<category><![CDATA[PAPERVISION]]></category>
		<category><![CDATA[PERFORMANCE]]></category>
		<category><![CDATA[PHYSICS]]></category>
		<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[RENDERING]]></category>
		<category><![CDATA[TECHNOLOGY]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[ENGINE]]></category>
		<category><![CDATA[flash10]]></category>
		<category><![CDATA[FLEX]]></category>
		<category><![CDATA[llvm]]></category>
		<category><![CDATA[ode]]></category>

		<guid isPermaLink="false">http://drawlogic.com/?p=414</guid>
		<description><![CDATA[Alchemy is going to shake things up a bit.  As witnessed before from Quake running in flash and now ODE compiled to run in flash using Alchemy (LLVM based). It is an early test but shows what could be possible. Mihai Pricope has a post with sources on how he got the ODE (Open Dynamics [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://labs.adobe.com/technologies/alchemy/" target="_blank">Alchemy</a> is going to shake things up a bit.  As witnessed before from <a href="http://www.peterelst.com/blog/2007/10/03/adobe-max-chicago-sneak-peeks/" target="_blank">Quake running in flash</a> and now <a href="http://miti.pricope.com/2009/02/23/ode-open-dynamic-engine-for-flash/" target="_blank">ODE compiled to run in flash</a> using Alchemy (<a href="http://llvm.org/" target="_blank">LLVM</a> based). It is an early test but shows what could be possible.</p>
<p>Mihai Pricope has a <a href="http://miti.pricope.com/2009/02/23/ode-open-dynamic-engine-for-flash/" target="_blank">post</a> with sources on how he got <a href="http://miti.pricope.com/2009/02/23/ode-open-dynamic-engine-for-flash/" target="_blank">the ODE (Open Dynamics Engine) a great open source physics engine for 3D, running on the AVM2 Flash Player</a> virtual machine.</p>
<p><a href="http://miti.pricope.com/2009/02/23/ode-open-dynamic-engine-for-flash/" target="_blank"><img class="alignnone" style="border: 0pt none;" title="ODE in Flash" src="http://i81.photobucket.com/albums/j223/drawkbox/flash-ode.png" alt="" width="440" height="295" /></a></p>
<blockquote><p>I’ve took Alchemy for a test and decided to compile ODE (<a onclick="javascript:urchinTracker('/outbound/www.ode.org/');" href="http://www.ode.org/">Open Dynamic Engine</a>). Just to add yet another physics engine to the Flash World. It was a hell of a ride but I finally got to produce some bouncing balls <img src='http://drawlogic.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . For a still unknown reason some as 3d libraries have been very slow to render 6 translucent walls and 2 balls. Papervision3D seems to move quite decent.</p>
<p>You can download the ode sources from <a onclick="javascript:urchinTracker('/file/samples/ode/ode-flash.tgz');" href="http://miti.pricope.com/samples/ode/ode-flash.tgz">here</a>. To recompile them do (you need to have the <a onclick="javascript:urchinTracker('/outbound/labs.adobe.com/technologies/alchemy/');" href="http://labs.adobe.com/technologies/alchemy/">Alchemy</a> environment turned on):</p></blockquote>
<p>Flash 10 will become mainstream shortly and with that the possibilities of using Alchemy in your projects is becoming a reality for production.  But what specifically can you do with Alchemy, a project that helps to compile C/C++ code into AVM2 capable files?</p>
<p><a href="http://labs.adobe.com/technologies/alchemy/" target="_blank">Alchemy </a>described from Adobe:</p>
<blockquote><p>With Alchemy, Web application developers can now reuse hundreds of millions of lines of existing open source C and C++ client or server-side code on the Flash Platform.  Alchemy brings the power of high performance C and C++ libraries to Web applications with minimal degradation on AVM2.  The C/C++ code is compiled to ActionScript 3.0 as a SWF or SWC that runs on Adobe Flash Player 10 or Adobe AIR 1.5.</p></blockquote>
<p><a href="http://labs.adobe.com/wiki/index.php/Alchemy:FAQ" target="_blank">Alchemy is based on the LLVM Low Level Virtual Machine</a> that allows new levels of code translation.  Maybe this can lead to more effective and performing code to run on the iPhone with flash player 10. Or some type of system that allows flash developers to code in AS3 or take projects and get them ready to run on the iPhone much like some of the Java to Cocoa compilation systems and <a href="http://tirania.org/blog/archive/2008/Mar-10.html" target="_blank">Unity3D using mono to compile down to iPhone capable code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://drawlogic.com/2009/02/28/ode-open-dynamic-engine-3d-physics-engine-running-on-flash-player-using-alchemy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mini Javascript Version of Papervision3D-like Engine with Canvas (Pseudo 3d with 2d)</title>
		<link>http://drawlogic.com/2009/02/18/mini-javascript-version-of-papervision3d-with-canvas-pseudo-3d-with-2d/</link>
		<comments>http://drawlogic.com/2009/02/18/mini-javascript-version-of-papervision3d-with-canvas-pseudo-3d-with-2d/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 21:32:59 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[3d]]></category>
		<category><![CDATA[3D ENGINES]]></category>
		<category><![CDATA[CODE]]></category>
		<category><![CDATA[DEVELOPMENT]]></category>
		<category><![CDATA[ENGINE]]></category>
		<category><![CDATA[GAMEDEV]]></category>
		<category><![CDATA[GAMES]]></category>
		<category><![CDATA[JAVASCRIPT]]></category>
		<category><![CDATA[LIBRARIES]]></category>
		<category><![CDATA[OPEN SOURCE]]></category>
		<category><![CDATA[PAPERVISION]]></category>
		<category><![CDATA[RENDERING]]></category>
		<category><![CDATA[TECHNOLOGY]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[FLASH]]></category>
		<category><![CDATA[japan]]></category>
		<category><![CDATA[papervision3d]]></category>
		<category><![CDATA[pseudo]]></category>

		<guid isPermaLink="false">http://drawlogic.com/?p=389</guid>
		<description><![CDATA[Looks like it is a javascript day here at *drawlogic.  Here is an interesting example with some demos of a javascript and canvas based pseudo 3d engine. Anything this cool you know it has to be from Japan. Also of note, it has been rumored that Silverlight 3 will have fully hardware accelerated 3d and [...]]]></description>
			<content:encoded><![CDATA[<p>Looks like it is a javascript day here at *drawlogic.  Here is an interesting example with some<a href="http://gyu.que.jp/jscloth/touch.html" target="_blank"> demos of a javascript and canvas based pseudo 3d engine</a>. Anything this cool you know it has to be from Japan.<br />
Also of note, it has been rumored that Silverlight 3 will have fully hardware accelerated 3d and canvas and javascript engines are getting much faster with great demos like this.  Adobe needs to leap into hardware acceleration for flash on a broader scale soon.</p>
<p>But I digress, this demo it appears, was inspired by Papervision3D due to the naming and the javascript reference of &#8220;<a href="http://gyu.que.jp/jscloth/parpevision.js" target="_blank">parpevision.js</a>&#8220;.  I wasn&#8217;t able to find much more information about this but it is very well done and this example even shows some environment mapping. It is not close to flash pseudo-3d engines like Papervision3D yet but at the rate of javascript engine development lately this could rival flash AVM2 in the next couple of years.</p>
<p><a href="http://gyu.que.jp/jscloth/touch.html" target="_blank"><img class="alignnone" title="papervision in javascript" src="http://i81.photobucket.com/albums/j223/drawkbox/js-environment-mapping.png" alt="" width="479" height="375" /></a></p>
<h3>Demos</h3>
<ul>
<li><a href="http://gyu.que.jp/jscloth/" target="_blank">Cloth</a></li>
<li><a href="http://gyu.que.jp/jscloth/miku.html" target="_blank">Miku Character</a></li>
<li><a href="http://gyu.que.jp/jscloth/touch.html" target="_blank">Enviroment Mapping</a></li>
</ul>
<h3>Code</h3>
<ul>
<li>Sample iPod iTouch Mesh data (<a href="http://gyu.que.jp/jscloth/touchdat/meshdata.js" target="_blank">meshdata.js</a>) &#8211; contains models</li>
<li>Code from the main engine (<a href="http://gyu.que.jp/jscloth/parpevision.js" target="_blank">parpevision.js</a>)</li>
<li>Sample Viewport and main app (<a href="http://gyu.que.jp/jscloth/touch.js" target="_blank">touch.js</a> from demo 3)</li>
</ul>
<p>Here is the code for the parpevision.js file and the mini engine, it is an MIT license.<span id="more-389"></span></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">/* MIT-LICENSE */</span>
<span style="color: #006600; font-style: italic;">/*
Copyright (c) 2009 Satoshi Ueyama
&nbsp;
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
&quot;Software&quot;), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
&nbsp;
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
&nbsp;
THE SOFTWARE IS PROVIDED &quot;AS IS&quot;, WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/</span>
&nbsp;
window.<span style="color: #660066;">P3D</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
	texture<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">,</span>
	g<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">null</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
P3D.<span style="color: #660066;">clear</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>f<span style="color: #339933;">,</span> w<span style="color: #339933;">,</span> h<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> g <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">g</span><span style="color: #339933;">;</span>
	g.<span style="color: #660066;">beginPath</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	g.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> f<span style="color: #339933;">;</span>
	g.<span style="color: #660066;">fillRect</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> w<span style="color: #339933;">,</span> h<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
P3D.<span style="color: #660066;">num_cmp</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>a<span style="color: #339933;">,</span>b<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000066; font-weight: bold;">return</span> a<span style="color: #339933;">-</span>b<span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
P3D.<span style="color: #660066;">drawTriangle</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>poss<span style="color: #339933;">,</span> uvs<span style="color: #339933;">,</span> shade_clr<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> w <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">texture</span>.<span style="color: #660066;">width</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> h <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">texture</span>.<span style="color: #660066;">height</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> g <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">g</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> vAd <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">-</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">-</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> vBd <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">-</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">-</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> vA <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span> uvs<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">u</span> <span style="color: #339933;">-</span> uvs<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">u</span> <span style="color: #339933;">,</span> uvs<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">v</span> <span style="color: #339933;">-</span> uvs<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">v</span> <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> vB <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span> uvs<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">u</span> <span style="color: #339933;">-</span> uvs<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">u</span> <span style="color: #339933;">,</span> uvs<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">v</span> <span style="color: #339933;">-</span> uvs<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">v</span> <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	vA<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">*=</span> w<span style="color: #339933;">;</span>
	vA<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">*=</span> h<span style="color: #339933;">;</span>
&nbsp;
	vB<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">*=</span> w<span style="color: #339933;">;</span>
	vB<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">*=</span> h<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> m <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> M22<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	m._11 <span style="color: #339933;">=</span> vA<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	m._12 <span style="color: #339933;">=</span> vA<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	m._21 <span style="color: #339933;">=</span> vB<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	m._22 <span style="color: #339933;">=</span> vB<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> im <span style="color: #339933;">=</span> m.<span style="color: #660066;">getInvert</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>im<span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> a <span style="color: #339933;">=</span> im._11 <span style="color: #339933;">*</span> vAd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> im._12 <span style="color: #339933;">*</span> vBd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> b <span style="color: #339933;">=</span> im._21 <span style="color: #339933;">*</span> vAd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> im._22 <span style="color: #339933;">*</span> vBd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> c <span style="color: #339933;">=</span> im._11 <span style="color: #339933;">*</span> vAd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> im._12 <span style="color: #339933;">*</span> vBd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> d <span style="color: #339933;">=</span> im._21 <span style="color: #339933;">*</span> vAd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> im._22 <span style="color: #339933;">*</span> vBd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> wu <span style="color: #339933;">=</span> uvs<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">u</span> <span style="color: #339933;">*</span> w<span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> hv <span style="color: #339933;">=</span> uvs<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">v</span> <span style="color: #339933;">*</span> h<span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> du <span style="color: #339933;">=</span> wu <span style="color: #339933;">*</span> a <span style="color: #339933;">+</span> hv <span style="color: #339933;">*</span> b<span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> dv <span style="color: #339933;">=</span> wu <span style="color: #339933;">*</span> c <span style="color: #339933;">+</span> hv <span style="color: #339933;">*</span> d<span style="color: #339933;">;</span>
&nbsp;
	g.<span style="color: #660066;">save</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	g.<span style="color: #660066;">beginPath</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	g.<span style="color: #660066;">moveTo</span><span style="color: #009900;">&#40;</span>poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	g.<span style="color: #660066;">lineTo</span><span style="color: #009900;">&#40;</span>poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	g.<span style="color: #660066;">lineTo</span><span style="color: #009900;">&#40;</span>poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	g.<span style="color: #660066;">clip</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	g.<span style="color: #660066;">transform</span><span style="color: #009900;">&#40;</span>a<span style="color: #339933;">,</span> c<span style="color: #339933;">,</span> b<span style="color: #339933;">,</span> d<span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">-</span> du<span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">-</span> dv<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">// bounds</span>
	<span style="color: #003366; font-weight: bold;">var</span> bx <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>wu<span style="color: #339933;">,</span> wu<span style="color: #339933;">+</span>vA<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> wu<span style="color: #339933;">+</span>vB<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> by <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>hv<span style="color: #339933;">,</span> hv<span style="color: #339933;">+</span>vA<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> hv<span style="color: #339933;">+</span>vB<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	bx.<span style="color: #660066;">sort</span><span style="color: #009900;">&#40;</span>P3D.<span style="color: #660066;">num_cmp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	by.<span style="color: #660066;">sort</span><span style="color: #009900;">&#40;</span>P3D.<span style="color: #660066;">num_cmp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> bw <span style="color: #339933;">=</span> bx<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">-</span> bx<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> bh <span style="color: #339933;">=</span> by<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">-</span> by<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>bx<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span>bw<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;=</span> <span style="color: #009900;">&#40;</span>w<span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> bw<span style="color: #339933;">++;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>by<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span>bh<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;=</span> <span style="color: #009900;">&#40;</span>h<span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> bh<span style="color: #339933;">++;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>bx<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;=</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>bx<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">--;</span> bw<span style="color: #339933;">++;</span><span style="color: #009900;">&#125;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>by<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;=</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>by<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">--;</span> bh<span style="color: #339933;">++;</span><span style="color: #009900;">&#125;</span>
&nbsp;
	g.<span style="color: #660066;">drawImage</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">texture</span><span style="color: #339933;">,</span> bx<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> by<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> bw<span style="color: #339933;">,</span> bh<span style="color: #339933;">,</span> bx<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> by<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> bw<span style="color: #339933;">,</span> bh<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>shade_clr<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		g.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> shade_clr<span style="color: #339933;">;</span>
		g.<span style="color: #660066;">fillRect</span><span style="color: #009900;">&#40;</span>bx<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> by<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> bw<span style="color: #339933;">,</span> bh<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	g.<span style="color: #660066;">restore</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
P3D.<span style="color: #660066;">drawTestByIndexBuffer</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>pos_buf<span style="color: #339933;">,</span> ix_buf<span style="color: #339933;">,</span> culling<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> g <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">g</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>ix_buf.<span style="color: #660066;">length</span><span style="color: #339933;">%</span>3<span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>
		<span style="color: #000066; font-weight: bold;">throw</span> <span style="color: #3366CC;">&quot;invalid index buffer length!&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> len <span style="color: #339933;">=</span> ix_buf.<span style="color: #660066;">length</span><span style="color: #339933;">/</span><span style="color: #CC0000;">3</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">,</span> ibase<span style="color: #339933;">,</span> vbase<span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> poss <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	g.<span style="color: #660066;">strokeWidth</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> ibase <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> len<span style="color: #339933;">;++</span>i<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		vbase <span style="color: #339933;">=</span> ix_buf<span style="color: #009900;">&#91;</span>ibase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">2</span><span style="color: #339933;">;</span>
		poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">=</span> pos_buf<span style="color: #009900;">&#91;</span>vbase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">=</span> pos_buf<span style="color: #009900;">&#91;</span>vbase  <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		vbase <span style="color: #339933;">=</span> ix_buf<span style="color: #009900;">&#91;</span>ibase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">2</span><span style="color: #339933;">;</span>
		poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">=</span> pos_buf<span style="color: #009900;">&#91;</span>vbase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">=</span> pos_buf<span style="color: #009900;">&#91;</span>vbase  <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		vbase <span style="color: #339933;">=</span> ix_buf<span style="color: #009900;">&#91;</span>ibase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">2</span><span style="color: #339933;">;</span>
		poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">=</span> pos_buf<span style="color: #009900;">&#91;</span>vbase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">=</span> pos_buf<span style="color: #009900;">&#91;</span>vbase  <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">// z component of cross product &amp;lt; 0 ?</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> Ax <span style="color: #339933;">=</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">-</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> Ay <span style="color: #339933;">=</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">-</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> Cx <span style="color: #339933;">=</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">-</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> Cy <span style="color: #339933;">=</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">-</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> cull <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>Ax <span style="color: #339933;">*</span> Cy<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span>Ay <span style="color: #339933;">*</span> Cx<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span>culling<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		g.<span style="color: #660066;">beginPath</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		g.<span style="color: #660066;">strokeStyle</span> <span style="color: #339933;">=</span> cull <span style="color: #339933;">?</span> <span style="color: #3366CC;">&quot;#592&quot;</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;#0f0&quot;</span><span style="color: #339933;">;</span>
		g.<span style="color: #660066;">moveTo</span><span style="color: #009900;">&#40;</span>poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		g.<span style="color: #660066;">lineTo</span><span style="color: #009900;">&#40;</span>poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		g.<span style="color: #660066;">lineTo</span><span style="color: #009900;">&#40;</span>poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		g.<span style="color: #660066;">lineTo</span><span style="color: #009900;">&#40;</span>poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		g.<span style="color: #660066;">stroke</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
P3D.<span style="color: #660066;">drawByIndexBuffer</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>pos_buf<span style="color: #339933;">,</span> ix_buf<span style="color: #339933;">,</span> tx_buf<span style="color: #339933;">,</span> culling<span style="color: #339933;">,</span> z_clip<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> w<span style="color: #339933;">,</span> h<span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> color_polygon <span style="color: #339933;">=</span> <span style="color: #339933;">!</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">texture</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">texture</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		w <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">texture</span>.<span style="color: #660066;">width</span><span style="color: #339933;">;</span>
		h <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">texture</span>.<span style="color: #660066;">height</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> g <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">g</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> m <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> M22<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>culling<span style="color: #009900;">&#41;</span> culling <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>ix_buf.<span style="color: #660066;">length</span><span style="color: #339933;">%</span>3<span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>
		<span style="color: #000066; font-weight: bold;">throw</span> <span style="color: #3366CC;">&quot;invalid index buffer length!&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">,</span> ibase<span style="color: #339933;">,</span> vbase<span style="color: #339933;">,</span> tbase<span style="color: #339933;">,</span> poss <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> len <span style="color: #339933;">=</span> ix_buf.<span style="color: #660066;">length</span><span style="color: #339933;">/</span><span style="color: #CC0000;">3</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> uv_0u<span style="color: #339933;">,</span> uv_0v<span style="color: #339933;">,</span> uv_1u<span style="color: #339933;">,</span> uv_1v<span style="color: #339933;">,</span> uv_2u<span style="color: #339933;">,</span> uv_2v<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">,</span> ibase <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> len<span style="color: #339933;">;++</span>i<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		tbase <span style="color: #339933;">=</span> ix_buf<span style="color: #009900;">&#91;</span>ibase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">1</span>
		vbase <span style="color: #339933;">=</span> tbase <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
		poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">=</span> pos_buf<span style="color: #009900;">&#91;</span>vbase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> uv_0u <span style="color: #339933;">=</span> tx_buf<span style="color: #009900;">&#91;</span>tbase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">=</span> pos_buf<span style="color: #009900;">&#91;</span>vbase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> uv_0v <span style="color: #339933;">=</span> tx_buf<span style="color: #009900;">&#91;</span>tbase<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>z_clip <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #009900;">&#40;</span>pos_buf<span style="color: #009900;">&#91;</span>vbase<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">0</span> <span style="color: #339933;">||</span> pos_buf<span style="color: #009900;">&#91;</span>vbase<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>ibase <span style="color: #339933;">+=</span> <span style="color: #CC0000;">2</span><span style="color: #339933;">;</span> <span style="color: #000066; font-weight: bold;">continue</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
		tbase <span style="color: #339933;">=</span> ix_buf<span style="color: #009900;">&#91;</span>ibase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">1</span>
		vbase <span style="color: #339933;">=</span> tbase <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
		poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">=</span> pos_buf<span style="color: #009900;">&#91;</span>vbase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> uv_1u <span style="color: #339933;">=</span> tx_buf<span style="color: #009900;">&#91;</span>tbase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">=</span> pos_buf<span style="color: #009900;">&#91;</span>vbase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> uv_1v <span style="color: #339933;">=</span> tx_buf<span style="color: #009900;">&#91;</span>tbase<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>z_clip <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #009900;">&#40;</span>pos_buf<span style="color: #009900;">&#91;</span>vbase<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">0</span> <span style="color: #339933;">||</span> pos_buf<span style="color: #009900;">&#91;</span>vbase<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #339933;">++</span>ibase<span style="color: #339933;">;</span> <span style="color: #000066; font-weight: bold;">continue</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
		tbase <span style="color: #339933;">=</span> ix_buf<span style="color: #009900;">&#91;</span>ibase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">1</span>
		vbase <span style="color: #339933;">=</span> tbase <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
		poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">=</span> pos_buf<span style="color: #009900;">&#91;</span>vbase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> uv_2u <span style="color: #339933;">=</span> tx_buf<span style="color: #009900;">&#91;</span>tbase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">=</span> pos_buf<span style="color: #009900;">&#91;</span>vbase<span style="color: #339933;">++</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span> uv_2v <span style="color: #339933;">=</span> tx_buf<span style="color: #009900;">&#91;</span>tbase<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>z_clip <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> <span style="color: #009900;">&#40;</span>pos_buf<span style="color: #009900;">&#91;</span>vbase<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">0</span> <span style="color: #339933;">||</span> pos_buf<span style="color: #009900;">&#91;</span>vbase<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #000066; font-weight: bold;">continue</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> vAd <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">-</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">-</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> vBd <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">-</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">-</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> vCd <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">-</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">-</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">// z component of cross product &amp;lt; 0 ?</span>
		<span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>vAd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">*</span> vCd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span>vAd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">*</span> vCd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">*</span>culling<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000066; font-weight: bold;">continue</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>color_polygon<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			g.<span style="color: #660066;">fillStyle</span> <span style="color: #339933;">=</span> uv_0u<span style="color: #339933;">;</span>
&nbsp;
			g.<span style="color: #660066;">beginPath</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			g.<span style="color: #660066;">moveTo</span><span style="color: #009900;">&#40;</span>poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			g.<span style="color: #660066;">lineTo</span><span style="color: #009900;">&#40;</span>poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			g.<span style="color: #660066;">lineTo</span><span style="color: #009900;">&#40;</span>poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			g.<span style="color: #660066;">fill</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">continue</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> vA <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span> uv_1u <span style="color: #339933;">-</span> uv_0u <span style="color: #339933;">,</span> uv_1v <span style="color: #339933;">-</span> uv_0v <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> vB <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span> uv_2u <span style="color: #339933;">-</span> uv_0u <span style="color: #339933;">,</span> uv_2v <span style="color: #339933;">-</span> uv_0v <span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		vA<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">*=</span> w<span style="color: #339933;">;</span>
		vA<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">*=</span> h<span style="color: #339933;">;</span>
&nbsp;
		vB<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">*=</span> w<span style="color: #339933;">;</span>
		vB<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">*=</span> h<span style="color: #339933;">;</span>
&nbsp;
		m._11 <span style="color: #339933;">=</span> vA<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		m._12 <span style="color: #339933;">=</span> vA<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		m._21 <span style="color: #339933;">=</span> vB<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		m._22 <span style="color: #339933;">=</span> vB<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> im <span style="color: #339933;">=</span> m.<span style="color: #660066;">getInvert</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>im<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">continue</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> a <span style="color: #339933;">=</span> im._11 <span style="color: #339933;">*</span> vAd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> im._12 <span style="color: #339933;">*</span> vBd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> b <span style="color: #339933;">=</span> im._21 <span style="color: #339933;">*</span> vAd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> im._22 <span style="color: #339933;">*</span> vBd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> c <span style="color: #339933;">=</span> im._11 <span style="color: #339933;">*</span> vAd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> im._12 <span style="color: #339933;">*</span> vBd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> d <span style="color: #339933;">=</span> im._21 <span style="color: #339933;">*</span> vAd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">+</span> im._22 <span style="color: #339933;">*</span> vBd<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> wu <span style="color: #339933;">=</span> uv_0u <span style="color: #339933;">*</span> w<span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> hv <span style="color: #339933;">=</span> uv_0v <span style="color: #339933;">*</span> h<span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> du <span style="color: #339933;">=</span> wu <span style="color: #339933;">*</span> a <span style="color: #339933;">+</span> hv <span style="color: #339933;">*</span> b<span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> dv <span style="color: #339933;">=</span> wu <span style="color: #339933;">*</span> c <span style="color: #339933;">+</span> hv <span style="color: #339933;">*</span> d<span style="color: #339933;">;</span>
&nbsp;
		g.<span style="color: #660066;">save</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		g.<span style="color: #660066;">beginPath</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		g.<span style="color: #660066;">moveTo</span><span style="color: #009900;">&#40;</span>poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		g.<span style="color: #660066;">lineTo</span><span style="color: #009900;">&#40;</span>poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		g.<span style="color: #660066;">lineTo</span><span style="color: #009900;">&#40;</span>poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span><span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		g.<span style="color: #660066;">clip</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		g.<span style="color: #660066;">transform</span><span style="color: #009900;">&#40;</span>a<span style="color: #339933;">,</span> c<span style="color: #339933;">,</span> b<span style="color: #339933;">,</span> d<span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">-</span> du<span style="color: #339933;">,</span> poss<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">-</span> dv<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #006600; font-style: italic;">// bounds</span>
		<span style="color: #003366; font-weight: bold;">var</span> bx <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>wu<span style="color: #339933;">,</span> wu<span style="color: #339933;">+</span>vA<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> wu<span style="color: #339933;">+</span>vB<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> by <span style="color: #339933;">=</span> <span style="color: #009900;">&#91;</span>hv<span style="color: #339933;">,</span> hv<span style="color: #339933;">+</span>vA<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> hv<span style="color: #339933;">+</span>vB<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		bx.<span style="color: #660066;">sort</span><span style="color: #009900;">&#40;</span>P3D.<span style="color: #660066;">num_cmp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		by.<span style="color: #660066;">sort</span><span style="color: #009900;">&#40;</span>P3D.<span style="color: #660066;">num_cmp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> bw <span style="color: #339933;">=</span> bx<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">-</span> bx<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> bh <span style="color: #339933;">=</span> by<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">-</span> by<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>bx<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span>bw<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;=</span> <span style="color: #009900;">&#40;</span>w<span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> bw<span style="color: #339933;">++;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>by<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">+</span>bh<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;=</span> <span style="color: #009900;">&#40;</span>h<span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> bh<span style="color: #339933;">++;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>bx<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;=</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>bx<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">--;</span> bw<span style="color: #339933;">++;</span><span style="color: #009900;">&#125;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>by<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;=</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>by<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">--;</span> bh<span style="color: #339933;">++;</span><span style="color: #009900;">&#125;</span>
&nbsp;
		g.<span style="color: #660066;">drawImage</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">texture</span><span style="color: #339933;">,</span> bx<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> by<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> bw<span style="color: #339933;">,</span> bh<span style="color: #339933;">,</span> bx<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> by<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> bw<span style="color: #339933;">,</span> bh<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">/*
		if (shade_clr) {
			g.fillStyle = shade_clr;
			g.fillRect(bx[0], by[0], bw, bh);
		}
*/</span>
		g.<span style="color: #660066;">restore</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> Vec3<span style="color: #009900;">&#40;</span>_x<span style="color: #339933;">,</span> _y<span style="color: #339933;">,</span> _z<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">=</span> _x <span style="color: #339933;">||</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">=</span> _y <span style="color: #339933;">||</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">z</span> <span style="color: #339933;">=</span> _z <span style="color: #339933;">||</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
Vec3.<span style="color: #660066;">prototype</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
	zero<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">z</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	sub<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>v<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">-=</span> v.<span style="color: #660066;">x</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">-=</span> v.<span style="color: #660066;">y</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">z</span> <span style="color: #339933;">-=</span> v.<span style="color: #660066;">z</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	add<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>v<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">+=</span> v.<span style="color: #660066;">x</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">+=</span> v.<span style="color: #660066;">y</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">z</span> <span style="color: #339933;">+=</span> v.<span style="color: #660066;">z</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	copyFrom<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>v<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">=</span> v.<span style="color: #660066;">x</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">=</span> v.<span style="color: #660066;">y</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">z</span> <span style="color: #339933;">=</span> v.<span style="color: #660066;">z</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	norm<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">return</span> Math.<span style="color: #660066;">sqrt</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span><span style="color: #339933;">*</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span><span style="color: #339933;">*</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">z</span><span style="color: #339933;">*</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	normalize<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> nrm <span style="color: #339933;">=</span> Math.<span style="color: #660066;">sqrt</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span><span style="color: #339933;">*</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span><span style="color: #339933;">*</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">z</span><span style="color: #339933;">*</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>nrm <span style="color: #339933;">!=</span> <span style="color: #CC0000;">0</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">/=</span> nrm<span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">/=</span> nrm<span style="color: #339933;">;</span>
			<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">z</span> <span style="color: #339933;">/=</span> nrm<span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	smul<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>k<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">*=</span> k<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">*=</span> k<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">z</span> <span style="color: #339933;">*=</span> k<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	dpWith<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>v<span style="color: #009900;">&#41;</span>	<span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span><span style="color: #339933;">*</span>v.<span style="color: #660066;">x</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span><span style="color: #339933;">*</span>v.<span style="color: #660066;">y</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">z</span><span style="color: #339933;">*</span>v.<span style="color: #660066;">z</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	cp<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>v<span style="color: #339933;">,</span> w<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>w.<span style="color: #660066;">y</span> <span style="color: #339933;">*</span> v.<span style="color: #660066;">z</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span>w.<span style="color: #660066;">z</span> <span style="color: #339933;">*</span> v.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>w.<span style="color: #660066;">z</span> <span style="color: #339933;">*</span> v.<span style="color: #660066;">x</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span>w.<span style="color: #660066;">x</span> <span style="color: #339933;">*</span> v.<span style="color: #660066;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">z</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>w.<span style="color: #660066;">x</span> <span style="color: #339933;">*</span> v.<span style="color: #660066;">y</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span>w.<span style="color: #660066;">y</span> <span style="color: #339933;">*</span> v.<span style="color: #660066;">x</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	toString<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">x</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;, &quot;</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">y</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;,&quot;</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">z</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> M44<span style="color: #009900;">&#40;</span>cpy<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>cpy<span style="color: #009900;">&#41;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">copyFrom</span><span style="color: #009900;">&#40;</span>cpy<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">ident</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
M44.<span style="color: #660066;">prototype</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span>
	ident<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			  <span style="color: #000066; font-weight: bold;">this</span>._12 <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._13 <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._14 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._21 <span style="color: #339933;">=</span>       <span style="color: #000066; font-weight: bold;">this</span>._23 <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._24 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._31 <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._32 <span style="color: #339933;">=</span>       <span style="color: #000066; font-weight: bold;">this</span>._34 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._41 <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._42 <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._43 <span style="color: #339933;">=</span>       <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._11 <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._22 <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._33 <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._44 <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	copyFrom<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>m<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._11 <span style="color: #339933;">=</span> m._11<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._12 <span style="color: #339933;">=</span> m._12<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._13 <span style="color: #339933;">=</span> m._13<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._14 <span style="color: #339933;">=</span> m._14<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._21 <span style="color: #339933;">=</span> m._21<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._22 <span style="color: #339933;">=</span> m._22<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._23 <span style="color: #339933;">=</span> m._23<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._24 <span style="color: #339933;">=</span> m._24<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._31 <span style="color: #339933;">=</span> m._31<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._32 <span style="color: #339933;">=</span> m._32<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._33 <span style="color: #339933;">=</span> m._33<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._34 <span style="color: #339933;">=</span> m._34<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._41 <span style="color: #339933;">=</span> m._41<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._42 <span style="color: #339933;">=</span> m._42<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._43 <span style="color: #339933;">=</span> m._43<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._44 <span style="color: #339933;">=</span> m._44<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	transVec3<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>out<span style="color: #339933;">,</span> x<span style="color: #339933;">,</span> y<span style="color: #339933;">,</span> z<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		out<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> x <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._11 <span style="color: #339933;">+</span> y <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._21 <span style="color: #339933;">+</span> z <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._31 <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>._41<span style="color: #339933;">;</span>
		out<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> x <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._12 <span style="color: #339933;">+</span> y <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._22 <span style="color: #339933;">+</span> z <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._32 <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>._42<span style="color: #339933;">;</span>
		out<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> x <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._13 <span style="color: #339933;">+</span> y <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._23 <span style="color: #339933;">+</span> z <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._33 <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>._43<span style="color: #339933;">;</span>
		out<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">3</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> x <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._14 <span style="color: #339933;">+</span> y <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._24 <span style="color: #339933;">+</span> z <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._34 <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>._44<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	transVec3Rot<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>out<span style="color: #339933;">,</span> x<span style="color: #339933;">,</span> y<span style="color: #339933;">,</span> z<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		out<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> x <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._11 <span style="color: #339933;">+</span> y <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._21 <span style="color: #339933;">+</span> z <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._31<span style="color: #339933;">;</span>
		out<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> x <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._12 <span style="color: #339933;">+</span> y <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._22 <span style="color: #339933;">+</span> z <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._32<span style="color: #339933;">;</span>
		out<span style="color: #009900;">&#91;</span><span style="color: #CC0000;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> x <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._13 <span style="color: #339933;">+</span> y <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._23 <span style="color: #339933;">+</span> z <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._33<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	perspectiveLH<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>vw<span style="color: #339933;">,</span> vh<span style="color: #339933;">,</span> z_near<span style="color: #339933;">,</span> z_far<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._11 <span style="color: #339933;">=</span> <span style="color: #CC0000;">2.0</span><span style="color: #339933;">*</span>z_near<span style="color: #339933;">/</span>vw<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._12 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._13 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._14 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._21 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._22 <span style="color: #339933;">=</span> <span style="color: #CC0000;">2</span><span style="color: #339933;">*</span>z_near<span style="color: #339933;">/</span>vh<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._23 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._24 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._31 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._32 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._33 <span style="color: #339933;">=</span> z_far<span style="color: #339933;">/</span><span style="color: #009900;">&#40;</span>z_far<span style="color: #339933;">-</span>z_near<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._34 <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._41 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._42 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._43 <span style="color: #339933;">=</span> z_near<span style="color: #339933;">*</span>z_far<span style="color: #339933;">/</span><span style="color: #009900;">&#40;</span>z_near<span style="color: #339933;">-</span>z_far<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._44 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	lookAtLH<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>aUp<span style="color: #339933;">,</span> aFrom<span style="color: #339933;">,</span> aAt<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> aX <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Vec3<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> aY <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Vec3<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> aZ <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Vec3<span style="color: #009900;">&#40;</span>aAt.<span style="color: #660066;">x</span><span style="color: #339933;">,</span> aAt.<span style="color: #660066;">y</span><span style="color: #339933;">,</span> aAt.<span style="color: #660066;">z</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		aZ.<span style="color: #660066;">sub</span><span style="color: #009900;">&#40;</span>aFrom<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">normalize</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		aX.<span style="color: #660066;">cp</span><span style="color: #009900;">&#40;</span>aUp<span style="color: #339933;">,</span> aZ<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">normalize</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		aY.<span style="color: #660066;">cp</span><span style="color: #009900;">&#40;</span>aZ<span style="color: #339933;">,</span> aX<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._11 <span style="color: #339933;">=</span> aX.<span style="color: #660066;">x</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._12 <span style="color: #339933;">=</span> aY.<span style="color: #660066;">x</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._13 <span style="color: #339933;">=</span> aZ.<span style="color: #660066;">x</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._14 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._21 <span style="color: #339933;">=</span> aX.<span style="color: #660066;">y</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._22 <span style="color: #339933;">=</span> aY.<span style="color: #660066;">y</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._23 <span style="color: #339933;">=</span> aZ.<span style="color: #660066;">y</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._24 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._31 <span style="color: #339933;">=</span> aX.<span style="color: #660066;">z</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._32 <span style="color: #339933;">=</span> aY.<span style="color: #660066;">z</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._33 <span style="color: #339933;">=</span> aZ.<span style="color: #660066;">z</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._34 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._41 <span style="color: #339933;">=</span> <span style="color: #339933;">-</span>aFrom.<span style="color: #660066;">dpWith</span><span style="color: #009900;">&#40;</span>aX<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._42 <span style="color: #339933;">=</span> <span style="color: #339933;">-</span>aFrom.<span style="color: #660066;">dpWith</span><span style="color: #009900;">&#40;</span>aY<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._43 <span style="color: #339933;">=</span> <span style="color: #339933;">-</span>aFrom.<span style="color: #660066;">dpWith</span><span style="color: #009900;">&#40;</span>aZ<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._44 <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
&nbsp;
	    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	mul<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>A<span style="color: #339933;">,</span> B<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._11 <span style="color: #339933;">=</span> A._11<span style="color: #339933;">*</span>B._11  <span style="color: #339933;">+</span>  A._12<span style="color: #339933;">*</span>B._21  <span style="color: #339933;">+</span>  A._13<span style="color: #339933;">*</span>B._31  <span style="color: #339933;">+</span>  A._14<span style="color: #339933;">*</span>B._41<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._12 <span style="color: #339933;">=</span> A._11<span style="color: #339933;">*</span>B._12  <span style="color: #339933;">+</span>  A._12<span style="color: #339933;">*</span>B._22  <span style="color: #339933;">+</span>  A._13<span style="color: #339933;">*</span>B._32  <span style="color: #339933;">+</span>  A._14<span style="color: #339933;">*</span>B._42<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._13 <span style="color: #339933;">=</span> A._11<span style="color: #339933;">*</span>B._13  <span style="color: #339933;">+</span>  A._12<span style="color: #339933;">*</span>B._23  <span style="color: #339933;">+</span>  A._13<span style="color: #339933;">*</span>B._33  <span style="color: #339933;">+</span>  A._14<span style="color: #339933;">*</span>B._43<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._14 <span style="color: #339933;">=</span> A._11<span style="color: #339933;">*</span>B._14  <span style="color: #339933;">+</span>  A._12<span style="color: #339933;">*</span>B._24  <span style="color: #339933;">+</span>  A._13<span style="color: #339933;">*</span>B._34  <span style="color: #339933;">+</span>  A._14<span style="color: #339933;">*</span>B._44<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._21 <span style="color: #339933;">=</span> A._21<span style="color: #339933;">*</span>B._11  <span style="color: #339933;">+</span>  A._22<span style="color: #339933;">*</span>B._21  <span style="color: #339933;">+</span>  A._23<span style="color: #339933;">*</span>B._31  <span style="color: #339933;">+</span>  A._24<span style="color: #339933;">*</span>B._41<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._22 <span style="color: #339933;">=</span> A._21<span style="color: #339933;">*</span>B._12  <span style="color: #339933;">+</span>  A._22<span style="color: #339933;">*</span>B._22  <span style="color: #339933;">+</span>  A._23<span style="color: #339933;">*</span>B._32  <span style="color: #339933;">+</span>  A._24<span style="color: #339933;">*</span>B._42<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._23 <span style="color: #339933;">=</span> A._21<span style="color: #339933;">*</span>B._13  <span style="color: #339933;">+</span>  A._22<span style="color: #339933;">*</span>B._23  <span style="color: #339933;">+</span>  A._23<span style="color: #339933;">*</span>B._33  <span style="color: #339933;">+</span>  A._24<span style="color: #339933;">*</span>B._43<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._24 <span style="color: #339933;">=</span> A._21<span style="color: #339933;">*</span>B._14  <span style="color: #339933;">+</span>  A._22<span style="color: #339933;">*</span>B._24  <span style="color: #339933;">+</span>  A._23<span style="color: #339933;">*</span>B._34  <span style="color: #339933;">+</span>  A._24<span style="color: #339933;">*</span>B._44<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._31 <span style="color: #339933;">=</span> A._31<span style="color: #339933;">*</span>B._11  <span style="color: #339933;">+</span>  A._32<span style="color: #339933;">*</span>B._21  <span style="color: #339933;">+</span>  A._33<span style="color: #339933;">*</span>B._31  <span style="color: #339933;">+</span>  A._34<span style="color: #339933;">*</span>B._41<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._32 <span style="color: #339933;">=</span> A._31<span style="color: #339933;">*</span>B._12  <span style="color: #339933;">+</span>  A._32<span style="color: #339933;">*</span>B._22  <span style="color: #339933;">+</span>  A._33<span style="color: #339933;">*</span>B._32  <span style="color: #339933;">+</span>  A._34<span style="color: #339933;">*</span>B._42<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._33 <span style="color: #339933;">=</span> A._31<span style="color: #339933;">*</span>B._13  <span style="color: #339933;">+</span>  A._32<span style="color: #339933;">*</span>B._23  <span style="color: #339933;">+</span>  A._33<span style="color: #339933;">*</span>B._33  <span style="color: #339933;">+</span>  A._34<span style="color: #339933;">*</span>B._43<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._34 <span style="color: #339933;">=</span> A._31<span style="color: #339933;">*</span>B._14  <span style="color: #339933;">+</span>  A._32<span style="color: #339933;">*</span>B._24  <span style="color: #339933;">+</span>  A._33<span style="color: #339933;">*</span>B._34  <span style="color: #339933;">+</span>  A._34<span style="color: #339933;">*</span>B._44<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._41 <span style="color: #339933;">=</span> A._41<span style="color: #339933;">*</span>B._11  <span style="color: #339933;">+</span>  A._42<span style="color: #339933;">*</span>B._21  <span style="color: #339933;">+</span>  A._43<span style="color: #339933;">*</span>B._31  <span style="color: #339933;">+</span>  A._44<span style="color: #339933;">*</span>B._41<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._42 <span style="color: #339933;">=</span> A._41<span style="color: #339933;">*</span>B._12  <span style="color: #339933;">+</span>  A._42<span style="color: #339933;">*</span>B._22  <span style="color: #339933;">+</span>  A._43<span style="color: #339933;">*</span>B._32  <span style="color: #339933;">+</span>  A._44<span style="color: #339933;">*</span>B._42<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._43 <span style="color: #339933;">=</span> A._41<span style="color: #339933;">*</span>B._13  <span style="color: #339933;">+</span>  A._42<span style="color: #339933;">*</span>B._23  <span style="color: #339933;">+</span>  A._43<span style="color: #339933;">*</span>B._33  <span style="color: #339933;">+</span>  A._44<span style="color: #339933;">*</span>B._43<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._44 <span style="color: #339933;">=</span> A._41<span style="color: #339933;">*</span>B._14  <span style="color: #339933;">+</span>  A._42<span style="color: #339933;">*</span>B._24  <span style="color: #339933;">+</span>  A._43<span style="color: #339933;">*</span>B._34  <span style="color: #339933;">+</span>  A._44<span style="color: #339933;">*</span>B._44<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	translate<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>x<span style="color: #339933;">,</span> y<span style="color: #339933;">,</span> z<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._11 <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._12 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._13 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._14 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._21 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._22 <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._23 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._24 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._31 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._32 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._33 <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._34 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._41 <span style="color: #339933;">=</span> x<span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._42 <span style="color: #339933;">=</span> y<span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._43 <span style="color: #339933;">=</span> z<span style="color: #339933;">;</span>  <span style="color: #000066; font-weight: bold;">this</span>._44 <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	transpose33<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> t<span style="color: #339933;">;</span>
&nbsp;
		t <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._12<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._12 <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._21<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._21 <span style="color: #339933;">=</span> t<span style="color: #339933;">;</span>
&nbsp;
		t <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._13<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._13 <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._31<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._31 <span style="color: #339933;">=</span> t<span style="color: #339933;">;</span>
&nbsp;
		t <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._23<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._23 <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._32<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._32 <span style="color: #339933;">=</span> t<span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">// OpenGL style rotation</span>
	glRotate<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>angle<span style="color: #339933;">,</span> x<span style="color: #339933;">,</span> y<span style="color: #339933;">,</span> z<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #003366; font-weight: bold;">var</span> s <span style="color: #339933;">=</span> Math.<span style="color: #660066;">sin</span><span style="color: #009900;">&#40;</span> angle <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> c <span style="color: #339933;">=</span> Math.<span style="color: #660066;">cos</span><span style="color: #009900;">&#40;</span> angle <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #003366; font-weight: bold;">var</span> xx <span style="color: #339933;">=</span> x <span style="color: #339933;">*</span> x<span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> yy <span style="color: #339933;">=</span> y <span style="color: #339933;">*</span> y<span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> zz <span style="color: #339933;">=</span> z <span style="color: #339933;">*</span> z<span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> xy <span style="color: #339933;">=</span> x <span style="color: #339933;">*</span> y<span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> yz <span style="color: #339933;">=</span> y <span style="color: #339933;">*</span> z<span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> zx <span style="color: #339933;">=</span> z <span style="color: #339933;">*</span> x<span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> xs <span style="color: #339933;">=</span> x <span style="color: #339933;">*</span> s<span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> ys <span style="color: #339933;">=</span> y <span style="color: #339933;">*</span> s<span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> zs <span style="color: #339933;">=</span> z <span style="color: #339933;">*</span> s<span style="color: #339933;">;</span>
		<span style="color: #003366; font-weight: bold;">var</span> one_c <span style="color: #339933;">=</span> <span style="color: #CC0000;">1.0</span> <span style="color: #339933;">-</span> c<span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">/*
		this._11 = (one_c * xx) + c;
		this._21 = (one_c * xy) - zs;
		this._31 = (one_c * zx) + ys;
		this._41 = 0;
&nbsp;
		this._12 = (one_c * xy) + zs;
		this._22 = (one_c * yy) + c;
		this._32 = (one_c * yz) - xs;
		this._42 = 0;
&nbsp;
		this._13 = (one_c * zx) - ys;
		this._23 = (one_c * yz) + xs;
		this._33 = (one_c * zz) + c;
		this._43 = 0;
&nbsp;
		this._14 = 0;
		this._24 = 0;
		this._34 = 0;
		this._44 = 1;
*/</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._11 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>one_c <span style="color: #339933;">*</span> xx<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> c<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._12 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>one_c <span style="color: #339933;">*</span> xy<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> zs<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._13 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>one_c <span style="color: #339933;">*</span> zx<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> ys<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._14 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._21 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>one_c <span style="color: #339933;">*</span> xy<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> zs<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._22 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>one_c <span style="color: #339933;">*</span> yy<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> c<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._23 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>one_c <span style="color: #339933;">*</span> yz<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> xs<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._24 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._31 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>one_c <span style="color: #339933;">*</span> zx<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> ys<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._32 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>one_c <span style="color: #339933;">*</span> yz<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> xs<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._33 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>one_c <span style="color: #339933;">*</span> zz<span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> c<span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._34 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">this</span>._41 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._42 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._43 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">this</span>._44 <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #006600; font-style: italic;">// matrix 2x2</span>
<span style="color: #003366; font-weight: bold;">function</span> M22<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">this</span>._11 <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>._12 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>._21 <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">this</span>._22 <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
M22.<span style="color: #660066;">prototype</span>.<span style="color: #660066;">getInvert</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> out <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> M22<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #003366; font-weight: bold;">var</span> det <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._11 <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._22 <span style="color: #339933;">-</span> <span style="color: #000066; font-weight: bold;">this</span>._12 <span style="color: #339933;">*</span> <span style="color: #000066; font-weight: bold;">this</span>._21<span style="color: #339933;">;</span>
	<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>det <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #339933;">-</span><span style="color: #CC0000;">0.0001</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> det <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #CC0000;">0.0001</span><span style="color: #009900;">&#41;</span>
		<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
&nbsp;
	out._11 <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._22 <span style="color: #339933;">/</span> det<span style="color: #339933;">;</span>
	out._22 <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">this</span>._11 <span style="color: #339933;">/</span> det<span style="color: #339933;">;</span>
&nbsp;
	out._12 <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #000066; font-weight: bold;">this</span>._12 <span style="color: #339933;">/</span> det<span style="color: #339933;">;</span>
	out._21 <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #000066; font-weight: bold;">this</span>._21 <span style="color: #339933;">/</span> det<span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">return</span> out<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://drawlogic.com/2009/02/18/mini-javascript-version-of-papervision3d-with-canvas-pseudo-3d-with-2d/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>AS3 Flash/Flex 3D Physics Engine JiglibFlash Based on JigLib C++ 3D Physics Engine</title>
		<link>http://drawlogic.com/2009/01/12/as3-flashflex-3d-physics-engine-jiglibflash-based-on-jiglib-c-3d-physics-engine/</link>
		<comments>http://drawlogic.com/2009/01/12/as3-flashflex-3d-physics-engine-jiglibflash-based-on-jiglib-c-3d-physics-engine/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 15:01:36 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[3d]]></category>
		<category><![CDATA[3D ENGINES]]></category>
		<category><![CDATA[ACTIONSCRIPT]]></category>
		<category><![CDATA[ACTIONSCRIPT3]]></category>
		<category><![CDATA[ARCHITECT]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[GAMEDEV]]></category>
		<category><![CDATA[GAMES]]></category>
		<category><![CDATA[MOTION]]></category>
		<category><![CDATA[OPEN SOURCE]]></category>
		<category><![CDATA[PAPERVISION]]></category>
		<category><![CDATA[PHYSICS]]></category>
		<category><![CDATA[TECHNOLOGY]]></category>
		<category><![CDATA[FLASH]]></category>
		<category><![CDATA[FLEX]]></category>

		<guid isPermaLink="false">http://drawlogic.com/?p=335</guid>
		<description><![CDATA[(use arrow keys and spacebar to control the red ball) A new 3d physics library is under development and in early stages called jiglibflash.  Like the Box2D ports it is based on a C++ library of the same name called jiglib, only this is 3D instead of 2D.  It is similar in purpose to WOW [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flashbookmarks.com/demos/jiglibtimestep/" target="_blank"><img class="alignnone" title="jiglib" src="http://farm4.static.flickr.com/3087/3190770067_5969ff4890_o.png" alt="" width="520" height="497" /><br />
</a>(use arrow keys and spacebar to control the red ball)</p>
<p>A new 3d physics library is under development and in early stages called <a href="http://code.google.com/p/jiglibflash/" target="_blank">jiglibflash</a>.  Like the Box2D ports it is based on a <a href="http://www.rowlhouse.co.uk/jiglib/index.html" target="_blank">C++ library of the same name called jiglib</a>, only this is 3D instead of 2D.  It is similar in purpose to <a href="http://seraf.mediabox.fr/wow-engine/as3-3d-physics-engine-wow-engine/" target="_blank">WOW Engine</a> which is the <a href="http://drawlogic.com/2008/01/22/as3-first-open-source-3d-flash-physics-engine-released-wowengine/" target="_blank">other current open source 3d flash physics engine</a>.  For more on this toolkit see the links below.</p>
<ul>
<li><a href="http://www.flashbookmarks.com/demos/jiglibtimestep/" target="_blank">Demo</a></li>
<li><a href="http://code.google.com/p/jiglibflash/" target="_blank">Code on Google Code</a></li>
<li><a href="http://www.nabble.com/3D-physic-engine-jiglibflash-tp21413886p21413886.html" target="_blank">Announcement</a></li>
</ul>
<p><strong>UPDATE</strong>: <a href="http://sleepydesign.blogspot.com/2009/01/away3d-jiglib-flash-3d-physics-engine.html" target="_blank">katopz has also ported this to use Away3D</a> as the renderer.</p>
<p><strong>UPDATE: </strong>Also <a href="http://www.flashsandy.org/blog/jiglib-for-flash-as3-3d-physic-engine.html" target="_blank">updated for the sandy3d engine</a> as the renderer.</p>
]]></content:encoded>
			<wfw:commentRss>http://drawlogic.com/2009/01/12/as3-flashflex-3d-physics-engine-jiglibflash-based-on-jiglib-c-3d-physics-engine/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>AS3 Augmented Reality in Flash and Papervision 3D and FLARToolKit</title>
		<link>http://drawlogic.com/2008/11/17/as3-augmented-reality-in-flash-and-papervision-3d-flartoolkit/</link>
		<comments>http://drawlogic.com/2008/11/17/as3-augmented-reality-in-flash-and-papervision-3d-flartoolkit/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 20:50:29 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[3d]]></category>
		<category><![CDATA[ACTIONSCRIPT]]></category>
		<category><![CDATA[ACTIONSCRIPT3]]></category>
		<category><![CDATA[ALGORITHM]]></category>
		<category><![CDATA[ARCHITECT]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[DEVELOPMENT]]></category>
		<category><![CDATA[EFFECTS]]></category>
		<category><![CDATA[FLASH]]></category>
		<category><![CDATA[FLEX]]></category>
		<category><![CDATA[GAMEDEV]]></category>
		<category><![CDATA[MOTION]]></category>
		<category><![CDATA[OPEN SOURCE]]></category>
		<category><![CDATA[PAPERVISION]]></category>
		<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[RENDERING]]></category>
		<category><![CDATA[TECHNOLOGY]]></category>
		<category><![CDATA[VIDEO]]></category>
		<category><![CDATA[VISUALIZATION]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[ar]]></category>
		<category><![CDATA[augmented]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[reality]]></category>

		<guid isPermaLink="false">http://drawlogic.com/?p=277</guid>
		<description><![CDATA[Augmented reality is a very cool technology.  It is the star wars holograms that we always want, it is playing a game that maps out the physical world mixed with virtual assets, it is straight up cool. The FLARToolKit is doing some of this cool in Flash.  This little toolkit is pretty sweet mapping points [...]]]></description>
			<content:encoded><![CDATA[<p>Augmented reality is a very cool technology.  It is the star wars holograms that we always want, it is playing a game that maps out the physical world mixed with virtual assets, it is straight up cool.</p>
<p>The <a title="FLARToolKit" href="http://www.libspark.org/wiki/saqoosha/FLARToolKit" target="_blank">FLARToolKit</a> is doing some of this cool in Flash.  This little toolkit is pretty sweet mapping points and sets of points to patterns, colors or other visual queues that technology can latch onto.  Combine this with a webcam and you have some pretty cool AR.</p>
<p><span id="more-277"></span></p>
<p><object width="540" height="405" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=1634128&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed width="540" height="405" type="application/x-shockwave-flash" src="http://vimeo.com/moogaloop.swf?clip_id=1634128&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" allowfullscreen="true" allowscriptaccess="always" /></object></p>
<p><a href="http://vimeo.com/1634128">Desktop Fireworks</a> from <a href="http://vimeo.com/saqoosha">Saqoosha</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Found via <a href="http://www.todayandtomorrow.net/2008/09/01/desktop-fireworks/" target="_blank">today and tomorrow</a>:</p>
<blockquote><p>I’ve been following the development of <a title="FLARToolKit" href="http://www.libspark.org/wiki/saqoosha/FLARToolKit" target="_blank">FLARToolKit</a> for some time now and it’s getting more interesting day by day. What it is? FLARToolKit is a Flash Actionscript port of <a title="ARToolKit" href="http://www.hitl.washington.edu/artoolkit/" target="_blank">ARToolKit</a>, a software library for building Augmented Reality applications. Huh? Maybe you’ve seen some really cool <a title="Augmented Reality @ YouTube" href="http://www.youtube.com/results?search_query=augmented+reality&amp;search_type=&amp;aq=0&amp;oq=augmented+r" target="_blank">Augmented Reality videos</a> before. The FLARToolKit will bring all of this to your webbrowser when you have a webcam and a recent Flash Player.</p>
<p>This is one of the most exciting Flash things I’ve seen for a while now. <a title="Saqoosha" href="http://saqoosha.net/" target="_blank">Saqoosha</a>, a Japanese Flash developer, made this little demo: <a title="Desktop Fireworks by Saqoosha" href="http://translate.google.com/translate?hl=en&amp;sl=ja&amp;u=http://saqoosha.net/2008/08/31/1221/" target="_blank">Desktop Fireworks</a>. You will need a the Flash Player 9, a webcam and you’ll need to print out <a title="Hanabi Marker" href="http://saqoosha.net/lab/fireworks/hanabi-marker.pdf" target="_blank">this marker</a>. I’ve already did some tests together with Papervision3D and I can say we’ll probably see more of this soon. This is Flash at it’s best baby!</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://drawlogic.com/2008/11/17/as3-augmented-reality-in-flash-and-papervision-3d-flartoolkit/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Blender to .as3 Exporter for Papervision 3D, Away3D and Sandy3D Updated</title>
		<link>http://drawlogic.com/2008/09/26/blender-to-as3-exporter-for-papervision-3d-away3d-and-sandy3d-updated/</link>
		<comments>http://drawlogic.com/2008/09/26/blender-to-as3-exporter-for-papervision-3d-away3d-and-sandy3d-updated/#comments</comments>
		<pubDate>Fri, 26 Sep 2008 21:14:44 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[3d]]></category>
		<category><![CDATA[3D ENGINES]]></category>
		<category><![CDATA[ACTIONSCRIPT]]></category>
		<category><![CDATA[ACTIONSCRIPT3]]></category>
		<category><![CDATA[ARCHITECT]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[AWAY3D]]></category>
		<category><![CDATA[DEVELOPMENT]]></category>
		<category><![CDATA[FLASH]]></category>
		<category><![CDATA[FLEX]]></category>
		<category><![CDATA[GAMEDEV]]></category>
		<category><![CDATA[OPEN SOURCE]]></category>
		<category><![CDATA[PAPERVISION]]></category>
		<category><![CDATA[PERFORMANCE]]></category>
		<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[PYTHON]]></category>
		<category><![CDATA[RENDERING]]></category>
		<category><![CDATA[SANDY]]></category>
		<category><![CDATA[TECHNOLOGY]]></category>
		<category><![CDATA[TOOLS]]></category>
		<category><![CDATA[blender]]></category>
		<category><![CDATA[engines]]></category>
		<category><![CDATA[exporter]]></category>
		<category><![CDATA[pipeline]]></category>

		<guid isPermaLink="false">http://drawk.wordpress.com/?p=272</guid>
		<description><![CDATA[If you are exporting from blender to actionscript directly so you can get your models into flash as script you can use the Blender to .as3 exporter which so kindly supports all flash 3d engines currently Away3D, Papervision3D and Sandy3D.  Dennis Ippel made the Blender exporter a while back but the update supports papervision 2.0. [...]]]></description>
			<content:encoded><![CDATA[<p>If you are exporting from <a href="http://www.rozengain.com/blog/2008/01/02/export-your-blender-objects-straight-to-away3d-papervision3d-and-sandy/" target="_blank">blender to actionscript </a>directly so you can get your models into flash as script you can use the Blender to .as3 exporter which so kindly supports all flash 3d engines currently Away3D, Papervision3D and Sandy3D.  Dennis Ippel made the Blender exporter a while back but the update supports papervision 2.0.</p>
<p><a href="http://www.rozengain.com/blog/2008/01/02/export-your-blender-objects-straight-to-away3d-papervision3d-and-sandy/" target="_blank"><img class="alignnone" title="Blender Exporter Dialog" src="http://farm4.static.flickr.com/3106/2890968982_8dabc5dbc8_o.jpg" alt="" width="350" height="258" /></a></p>
<ul>
<li><a href="http://www.rozengain.com/blog/2008/01/02/export-your-blender-objects-straight-to-away3d-papervision3d-and-sandy/" target="_blank">Post on the exporter and how to use</a></li>
<li><a title="Sample export for Sandy 3.0" href="http://www.rozengain.com/files/blog/blender-export/BlenderExportSandy.rar">Sandy 3.0 Example</a></li>
<li><a title="Sample export for Away3D" href="http://www.rozengain.com/files/blog/blender-export/BlenderExportAway3D.rar">Away3D Example</a></li>
<li><a title="Sample export for Papervision3D 1.7" href="http://www.rozengain.com/files/blog/blender-export/BlenderExportPapervision17.rar">Papervision3D 1.7 Example</a></li>
<li><a title="Sample export for Papervision3D 2.0" href="http://www.rozengain.com/files/blog/blender-export/BlenderExportPapervision20.rar">Papervision3D 2.0 Example</a></li>
<li><a title="ActionScript 3.0 exporter at the Blender wiki" href="http://wiki.blender.org/index.php/Scripts/Catalog/ExportPage4#ActionScript_3.0_Exporter">ActionScript 3.0 exporter at the Blender wiki</a></li>
</ul>
<p>The benefits of COLLADA are nice but there are so many differences that you can run into trouble.  With the exporter it is a direct faces and vector export without all the bloat of DAE/COLLADA xml.  This works if you are only developing for flash and dont&#8217; need to use the models in other platforms/systems/engines that aren&#8217;t in flash.</p>
]]></content:encoded>
			<wfw:commentRss>http://drawlogic.com/2008/09/26/blender-to-as3-exporter-for-papervision-3d-away3d-and-sandy3d-updated/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>AS3 Papervision 3D Debugging/Stats with PV3DDebug</title>
		<link>http://drawlogic.com/2008/09/24/as3-papervision-3d-debuggingstats-with-pv3ddebug/</link>
		<comments>http://drawlogic.com/2008/09/24/as3-papervision-3d-debuggingstats-with-pv3ddebug/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 11:36:04 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[3d]]></category>
		<category><![CDATA[3D ENGINES]]></category>
		<category><![CDATA[ACTIONSCRIPT]]></category>
		<category><![CDATA[ACTIONSCRIPT3]]></category>
		<category><![CDATA[ARCHITECT]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[BENCHMARK]]></category>
		<category><![CDATA[DEBUGGING]]></category>
		<category><![CDATA[DEVELOPMENT]]></category>
		<category><![CDATA[FLASH]]></category>
		<category><![CDATA[FLEX]]></category>
		<category><![CDATA[GAMEDEV]]></category>
		<category><![CDATA[PAPERVISION]]></category>
		<category><![CDATA[PERFORMANCE]]></category>
		<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[TECHNOLOGY]]></category>
		<category><![CDATA[console]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[panel]]></category>
		<category><![CDATA[TOOLS]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://drawk.wordpress.com/?p=268</guid>
		<description><![CDATA[I have been doing lots of Papervision 3D for a project recently and needed to debug some placement and camera issues.  I did a quick search and found PV3DDebug by Jason Bejot and it worked out great and is a pretty sweet utility I thought I would mention when you need to debug Papervision or [...]]]></description>
			<content:encoded><![CDATA[<p>I have been doing lots of Papervision 3D for a project recently and needed to debug some placement and camera issues.  I did a quick search and found <a href="http://jasonbejot.com/?p=16" target="_blank">PV3DDebug by Jason Bejot </a>and it worked out great and is a pretty sweet utility I thought I would mention when you need to debug Papervision or even for inclusion as a debug console in all your papervision apps and games. It is a good base for your own consoles or debug panels. It is also a great tool to help out with focus and zoom issues and understanding with camera placement.</p>
<p>The code is really easy to drop in and you can get lots of info on the PV3D scenes and camera manipulation.</p>
<ul>
<li><a href="http://jasonbejot.com/?page_id=22" target="_blank">Check out PV3DDebug</a></li>
<li><a href="http://jasonbejot.com/?p=16" target="_blank">Posting on the project</a></li>
</ul>
<p><a href="http://jasonbejot.com/?page_id=22" target="_blank"><img class="alignnone" title="PV3DDebug for Flash AS3" src="http://farm4.static.flickr.com/3074/2884129399_00588f52b5_o.png" alt="" width="383" height="363" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://drawlogic.com/2008/09/24/as3-papervision-3d-debuggingstats-with-pv3ddebug/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>AS3 Zupko&#8217;s Reflections and Shadows with Raycasting in Papervision 3D</title>
		<link>http://drawlogic.com/2008/08/24/as3-zupkos-reflections-in-papervision-3d/</link>
		<comments>http://drawlogic.com/2008/08/24/as3-zupkos-reflections-in-papervision-3d/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 03:34:07 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[3d]]></category>
		<category><![CDATA[3D ENGINES]]></category>
		<category><![CDATA[ACTIONSCRIPT]]></category>
		<category><![CDATA[ACTIONSCRIPT3]]></category>
		<category><![CDATA[ARCHITECT]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[DEVELOPMENT]]></category>
		<category><![CDATA[EFFECTS]]></category>
		<category><![CDATA[ENGINE]]></category>
		<category><![CDATA[FLASH]]></category>
		<category><![CDATA[FLEX]]></category>
		<category><![CDATA[GAMEDEV]]></category>
		<category><![CDATA[isometric]]></category>
		<category><![CDATA[OPEN SOURCE]]></category>
		<category><![CDATA[PAPERVISION]]></category>
		<category><![CDATA[PROGRAMMING]]></category>
		<category><![CDATA[RENDERING]]></category>
		<category><![CDATA[TECHNOLOGY]]></category>
		<category><![CDATA[orthographic]]></category>
		<category><![CDATA[projection]]></category>
		<category><![CDATA[reflections]]></category>

		<guid isPermaLink="false">http://drawk.wordpress.com/?p=257</guid>
		<description><![CDATA[The Zupko show continues with reflections in Papervision 3D [demo]. Be sure to check out the shadow demo that this is based on: After posting my shadow experiment, Patrick Matte posed a question wondering if I would be able to do real-time reflections in a similar manner. The next day I had it done, along [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://blog.zupko.info/?p=156" target="_blank">Zupko show continues with reflections in Papervision 3D</a> [<a href="http://lab.zupko.info/reflection/realz/" target="_blank">demo</a>].</p>
<p><a href="http://blog.zupko.info/?p=156" target="_blank"><img class="alignnone" src="http://farm4.static.flickr.com/3275/2794490873_b5e178b5b5_o.png" alt="" width="450" height="279" /></a></p>
<p><strong>Be sure to check out the <a href="http://blog.zupko.info/?p=146" target="_blank">shadow demo</a> that this is based on:</strong></p>
<p><a href="http://lab.zupko.info/RayCasting/" target="_blank"><img class="alignnone" src="http://farm4.static.flickr.com/3207/2794506215_17e26385ed_o.png" alt="" width="450" height="279" /></a></p>
<blockquote><p>After posting my <a href="http://blog.zupko.info/?p=146" target="_blank">shadow experiment</a>, Patrick Matte posed a question wondering if I would be able to do real-time reflections in a similar manner. The next day I had it done, along with some nice iterations along the way: orthographic and perspective projection (I can release those later if anyone really wants them). I&#8217;ve been sitting on it every since and finally decided I would take the time to write a little description into how its done and give the code to those who are interested (and I fixed up some code for backface culling in the reflection this morning).</p></blockquote>
<ul>
<li><a href="http://lab.zupko.info/reflection/realz/" target="_blank">View the reflections demo</a></li>
<li><a href="http://blog.zupko.info/?p=156" target="_blank">View the reflections post</a></li>
<li><a href="http://blog.zupko.info/?p=146" target="_blank">View the shadow demo</a></li>
<li><a href="http://blog.zupko.info/?p=156" target="_blank">View the shadow post<br />
</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://drawlogic.com/2008/08/24/as3-zupkos-reflections-in-papervision-3d/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

