http://borv.free.fr/flash/jeux/3Dligne.swf
Pareil, mais avec des lignes.
Voici le code, pour les 0.5 pélerins que ça intéresse (il suffit de le copier-coller dans une fenêtre Action Script) :
Code :
numpoint =1;
numligne = 0;
angley = 0;
anglez = 0;
var cx0:Array = new Array();
var cy0:Array = new Array();
var cz0:Array = new Array();
var cx:Array = new Array();
var cy:Array = new Array();
var cz:Array = new Array();
var maille:Array = new Array();
//------------------------------------------------
// Fonction de création d'un point :
point = function(px,py,pz)
{
cx0[numpoint]=px;
cy0[numpoint]=py;
cz0[numpoint]=pz;
numpoint++;
}
// Fonction de création d'une ligne :
relier = function(l1,l2)
{
maille[2*numligne]=l1;
maille[2*numligne+1]=l2;
numligne ++;
}
// Fonction de traçage des lignes :
ligne = function()
{
_root.createEmptyMovieClip("dessin",1);
dessin.lineStyle(4, 0x000000, 100);
i=0;
while(i<=numligne)
{
dessin.moveTo(320+cz[maille[2*i]],240+cy[maille[2*i]]);
dessin.lineTo(320+cz[maille[2*i+1]],240+cy[maille[2*i+1]]);
i++;
}
}
//------------------------------------------------
// Création des points :
point(-100,-100,-100)
point(100,-100,-100)
point(-100,100,-100)
point(-100,-100,100)
point(100,100,-100)
point(-100,100,100)
point(100,-100,100)
point(100,100,100)
// Création des lignes :
relier(1,2);
relier(1,3);
relier(1,4);
relier(2,5);
relier(3,5);
relier(3,6);
relier(4,6);
relier(2,7);
relier(7,8);
relier(6,8);
relier(5,8);
relier(4,7);
//------------------------------------------------
onEnterFrame = function()
{
if(Key.isDown(Key.RIGHT)) angley ++;
if(Key.isDown(Key.LEFT)) angley --;
if(Key.isDown(Key.UP)) anglez ++;
if(Key.isDown(Key.DOWN)) anglez --;
for (i=1;i<=numpoint;i++)
{
// Rotation Y :
xx = Math.cos(angley/100)*cx0[i] + Math.sin(angley/100)*cz0[i];
yy = cy0[i];
zz = -Math.sin(angley/100)*cx0[i] + Math.cos(angley/100)*cz0[i];
// Rotation Z :
cx[i] = Math.cos(anglez/100)*xx - Math.sin(anglez/100)*yy;
cy[i] = -Math.sin(anglez/100)*xx + Math.cos(anglez/100)*yy;
cz[i] = zz;
}
ligne()
}
Vous pouvez ainsi créer vos propre structures 3D, avec le formalisme suivant :
-
point(x,y,z) crée un point aux coordonnées (x,y,z) de l'espace (en pixels, l'origine étant le centre de l'écran)
-
relier(p1,p2) relie par une ligne les points numéro "p1" et "p2" (les points étant numérotés à partir de 1, par ordre de création)