<?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>GrgrDvrt &#187; espace</title>
	<atom:link href="http://grgrdvrt.com/blog/tag/espace/feed/" rel="self" type="application/rss+xml" />
	<link>http://grgrdvrt.com/blog</link>
	<description>Un blog utilisant WordPress</description>
	<lastBuildDate>Tue, 10 Jan 2012 09:04:24 +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>tween aléatoire dans l&#039;espace</title>
		<link>http://grgrdvrt.com/blog/36/2006110222-tween-aleatoire-dans-l-espace/</link>
		<comments>http://grgrdvrt.com/blog/36/2006110222-tween-aleatoire-dans-l-espace/#comments</comments>
		<pubDate>Thu, 02 Nov 2006 09:30:00 +0000</pubDate>
		<dc:creator>Grgrdvrt</dc:creator>
				<category><![CDATA[Miam]]></category>
		<category><![CDATA[espace]]></category>
		<category><![CDATA[mouvement]]></category>

		<guid isPermaLink="false">http://grgrdvrt.com/wordpress/?p=36</guid>
		<description><![CDATA[et voici le code: import mx.transitions.Tween;import mx.transitions.easing.Regular;import com.robertpenner.geom.Vector3d;import com.robertpenner.display.Graphic3d;var sw:Number = Stage.width;var sh:Number = Stage.height;var c:Number = sw/1.5;//l'objet dont les coordonnées sont interpoléesvar pt:Vector3d = new Vector3d(Math.random()*c-c/2, Math.random()*c-c/2, Math.random()*c-c/2);var dx:Number = Math.random()*c-c/2-pt.x;var tx:Tween = new Tween(pt, "x", Regular.easeInOut, pt.x, pt.x+dx, Math.abs(dx)/5, false);var dy:Number = Math.random()*c-c/2-pt.y;var ty:Tween = new Tween(pt, "y", Regular.easeInOut, pt.y, pt.y+dy, Math.abs(dy)/5, false);var [...]]]></description>
			<content:encoded><![CDATA[<embed src="http://starmonkey.free.fr/joins/ranTween3d.swf" width="400" height="400"><br /><br /> et voici le code:<br /> <pre>import mx.transitions.Tween;<br />import mx.transitions.easing.Regular;<br />import com.robertpenner.geom.Vector3d;<br />import com.robertpenner.display.Graphic3d;<br />var sw:Number = Stage.width;<br />var sh:Number = Stage.height;<br />var c:Number = sw/1.5;<br /><br />//l'objet dont les coordonnées sont interpolées<br />var pt:Vector3d = new Vector3d(Math.random()*c-c/2, Math.random()*c-c/2, Math.random()*c-c/2);<br />var dx:Number = Math.random()*c-c/2-pt.x;<br />var tx:Tween = new Tween(pt, "x", Regular.easeInOut, pt.x, pt.x+dx, Math.abs(dx)/5, false);<br />var dy:Number = Math.random()*c-c/2-pt.y;<br />var ty:Tween = new Tween(pt, "y", Regular.easeInOut, pt.y, pt.y+dy, Math.abs(dy)/5, false);<br />var dz:Number = Math.random()*c-c/2-pt.z;<br />var tz:Tween = new Tween(pt, "z", Regular.easeInOut, pt.z, pt.z+dz, Math.abs(dz)/5, false);<br /><br />//quand une tween est finie, on la relance<br />tx.onMotionFinished = function() {<br />	var dx:Number = Math.random()*c-c/2-pt.x;<br />	this.continueTo(pt.x+dx, Math.abs(dx)/5);<br />};<br />ty.onMotionFinished = function() {<br />	var dy:Number = Math.random()*c-c/2-pt.y;<br />	this.continueTo(pt.y+dy, Math.abs(dy)/5);<br />};<br />tz.onMotionFinished = function() {<br />	var dz:Number = Math.random()*c-c/2-pt.z;<br />	this.continueTo(pt.z+dz, Math.abs(dz)/5);<br />};<br /><br />//code pour la visualisation de l'exemple<br />//ici les coordonnées du point sont copiées dans un tableau qui est actualisé dans le onChanged<br />var ref:MovieClip = this;<br />var tab:Array = new Array();<br />var l:Number = 100;<br />for (var i:Number = 0; i &lt; l; i++) {<br />	tab.push(pt.getClone());<br />}<br />tx.onMotionChanged = function() {<br />	ref.clear();<br />	//on récupèreune projection sur l'écran des points 3d<br />	var current:Vector3d = tab[0].persProjectNew();<br />	ref.moveTo(current.x+sw/2, current.y+sh/2);<br />	for (var i:Number = 1; i &lt; l; i++) {<br />		current = tab[i].persProjectNew();<br />		var pers = tab[i].getPerspective();<br />		//l'épaisseur varie en fonction de la profondeur et de l'index du point<br />		ref.lineStyle(pers*50*i/l);<br />		ref.lineTo(current.x+sw/2, current.y+sh/2);<br />	}<br />	<br />	//gestion des touches<br />	if (Key.isDown(37)) {<br />		for (var i = 0; i &lt; l; i++) {<br />			tab[i].rotateY(5);<br />		}<br />	} else if (Key.isDown(39)) {<br />		for (var i = 0; i &lt; l; i++) {<br />			tab[i].rotateY(-5);<br />		}<br />	}<br />	if (Key.isDown(38)) {<br />		for (var i = 0; i &lt; l; i++) {<br />			tab[i].rotateX(5);<br />		}<br />	} else if (Key.isDown(40)) {<br />		for (var i = 0; i &lt; l; i++) {<br />			tab[i].rotateX(-5);<br />		}<br />	}<br />	tab.shift();<br />	tab.push(pt.getClone());<br />};</pre> <br /> Il n&#8217;y a pas de différence majeure avec la version 2d si ce n&#8217;est qu&#8217;au moment de l&#8217;affichage il faut récupérer une projection 2d de chaque point et que l&#8217;épaisseur du trait varie avec la profondeur.<br /> Par contre j&#8217;aurai voulu mettre des variations de couleurs en fonction de la profondeur mais il faudrait gérer l&#8217;ordre d&#8217;affichage des lineTo et là ça devient plus dur<br /><br /> Maintenant j&#8217;aimerai bien voir pour une adaptation en as3 si possible en utilisant la classe Point à la place de la classe Vector (ou au moins comme superclasse) histoire d&#8217;utiliser les outils proposés par flash&#8230;]]></content:encoded>
			<wfw:commentRss>http://grgrdvrt.com/blog/36/2006110222-tween-aleatoire-dans-l-espace/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

