Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543

    modificare as da cubo a diamante....

    Ciao, ho scaricato un esempio che fa ruotare un cubo...
    questi numeri quì sotto mi scrivono il cubo...
    l'action script che lo fa muovere e lo scrive è diviso in 4 fotogrammi...
    Io voglio ottenere un diamante cioè un cubo e una piramide poggiata su ogniuna delle basi...
    Io ho provato a modificare i vertici (aggiungendone) ma non sono riuscito nel mio intento
    qualcuno può aiutarmi a creare la figura o può spiegarmi questi punti a cosa corrispondono?
    codice:
    myTri = [-1,-1,-1, 1,
    	  1,-1,-1, 1,
    	 
    	 -1, 1,-1, 1,
    	  1, 1,-1, 1,
    	  
    	 -1,-1,-1, 1,
    	 -1, 1,-1, 1,
    	 
    	  1,-1,-1, 1,
    	  1, 1,-1, 1,
    	  
    	 -1,-1, 1, 1,
    	  1,-1, 1, 1,
    	  
    	 -1, 1, 1, 1,
    	  1, 1, 1, 1,
    	  
    	 -1,-1, 1, 1,
    	 -1, 1, 1, 1,
    	 
    	  1,-1, 1, 1,
    	  1, 1, 1, 1,
    	  
    	  
    	 -1,-1, 1, 1,
    	 -1,-1,-1, 1,
    	  
    	 -1, 1, 1, 1,
    	 -1, 1,-1, 1,
    	  
    	  1, 1, 1, 1,
    	  1, 1,-1, 1,
    	 
    	  1,-1, 1, 1,
    	  1,-1,-1, 1];
    questo è l'action script che c'è nel primo fotogramma
    codice:
    /**********************************************
     * By vamosg(oo.com)
     */
    _root.createEmptyMovieClip ("pen", 1);
    
    /**********************************************
     * MATRIX MULTIPLICATION
     */
    function mult(A,B){
    	C = new Array();
    	for(i=0;i<B.length;i+=4){
    		C.push(B[i]*A[ 0]+B[i+1]*A[ 1]+B[i+2]*A[ 2]+B[i+3]*A[ 3]);
    		C.push(B[i]*A[ 4]+B[i+1]*A[ 5]+B[i+2]*A[ 6]+B[i+3]*A[ 7]);
    		C.push(B[i]*A[ 8]+B[i+1]*A[ 9]+B[i+2]*A[10]+B[i+3]*A[11]);
    		C.push(B[i]*A[12]+B[i+1]*A[13]+B[i+2]*A[14]+B[i+3]*A[15]);
    	}
    	return C;
    }
    
    /**********************************************
     * PERSPECTIVE MATRIX
     */
    function pers(f){
    	pers = new Array();
    	pers  = [1,0,0  ,0,
    			 0,1,0  ,0,
    			 0,0,1  ,0,
    			 0,0,1/f,1];
    	return pers;
    }
    
    /**********************************************
     * SCALE MATRIX
     */
    function scale(x,y,z){
    	scale = [x,0,0,0,
    			 0,y,0,0,
    			 0,0,z,0,
    			 0,0,0,1];
    	return scale;
    }
    
    /**********************************************
     * NORMALISE HOMOGENEOUSNESS
     */
    function homdev(A){
    	B = new Array();
    	for(i=0;i<A.length;i+=4){
    		B.push(A[i+0]/A[i+3]);
    		B.push(A[i+1]/A[i+3]);
    		B.push(A[i+2]/A[i+3]);
    		B.push(A[i+3]/A[i+3]);
    	}
    	return B;
    }
    
    /**********************************************
     * ROTATE IN X
     */
    function rotx(x){
    	x = x*(Math.PI/180);
    	c = Math.cos(x);
    	s = Math.sin(x);
    	
    	rotx = [1,	0,	0,	0,
    			0,	c,	-s,	0,
    			0,	s,	c,	0,
    			0,	0,	0,	1];
    	return rotx;
    }
    
    /**********************************************
     * ROTATE IN Z
     */
    function rotz(z){
    	z = z*(Math.PI/180);
    	c = Math.cos(z);
    	s = Math.sin(z);
    	
    	rotz = [c,	-s,	0,	0,
    			s,	c,	0,	0,
    			0,	0,	1,	0,
    			0,	0,	0,	1];
    	return rotz;
    }
    
    /**********************************************
     * ROTATE IN Y
     */
    function roty(y){
    	y = y*(Math.PI/180);
    	c = Math.cos(y);
    	s = Math.sin(y)
    	roty = [c,	0,	s,	0,
    			0,	1,	0,	0,
    		   	-s,	0,	c,	0,
    			0,	0,	0,	1];
    	return roty;
    }
    
    /**********************************************
     * TRANSLATE IN X,Y,Z
     */
    function trans(x,y,z){
    	tmatr = [1,0,0,x,
    			 0,1,0,y,
    			 0,0,1,z,
    			 0,0,0,1];
    	return tmatr;
    }	
    
    /**********************************************
     * DRAW MODEL LINES
     */
    function drawlines(model){
    	xoff = 200;
    	yoff = 200;
    	with (_root.pen) {
    		for(i=0;i<model.length;i+=8){
    		lineStyle (1, 0x000000, 50);
    			moveTo (model[i+0]+xoff, model[i+1]+yoff);
    			lineTo (model[i+4]+xoff, model[i+5]+yoff);
    		}
    	}
    }
    questo c'è nel secondo...
    codice:
    /**********************************************
     * By vamosg(oo.com)
     */
    /**********************************************
     * DEFINE TRANSFORMATION MATRICES
     */
    scale = scale(50,50,50);
    roty = roty(0);
    rotx = rotx(0);
    focal = 250;
    persm = pers(focal);
    
    
    moveX = 10;
    moveY = 0;
    moveZ = 0;
    
    /**********************************************
     * DEFINE POINTS
     */
    
    myTri = [-1,-1,-1, 1,
    		  1,-1,-1, 1,
    		  
    		 -1, 1,-1, 1,
    		  1, 1,-1, 1,
    		  
    		 -1,-1,-1, 1,
    		 -1, 1,-1, 1,
    		 
    		  1,-1,-1, 1,
    		  1, 1,-1, 1,
    		  
    		 -1,-1, 1, 1,
    		  1,-1, 1, 1,
    		  
    		 -1, 1, 1, 1,
    		  1, 1, 1, 1,
    		  
    		 -1,-1, 1, 1,
    		 -1, 1, 1, 1,
    		 
    		  1,-1, 1, 1,
    		  1, 1, 1, 1,
    		  
    		  
    		 -1,-1, 1, 1,
    		 -1,-1,-1, 1,
    		  
    		 -1, 1, 1, 1,
    		 -1, 1,-1, 1,
    		  
    		  1, 1, 1, 1,
    		  1, 1,-1, 1,
    		 
    		  1,-1, 1, 1,
    		  1,-1,-1, 1];
    
    /**********************************************
     * SCALE OBJECT
     * SET UP AFFINE
     */
    myTri = mult(scale,myTri);
    affine = mult(roty,rotx);
    nel terzo fotogramma ci sono solo commenti mentre nel quarto c'è
    codice:
    /**********************************************
     * By vamosg(oo.com)
     */
    /**********************************************
     * MULTIPLY POINTS WITH AFFINE MATRIX
     */
     myTri = mult(affine,myTri);
    
    /**********************************************
     * MULTIPLY DISPLAY POINTS WITH PERSPECTIVE
     * MATRIX AND NORMALISE
     */
     if(Key.isDown(Key.RIGHT))
    	 moveX+=50;
     if(Key.isDown(Key.LEFT))
    	 moveX-=50;
     if(Key.isDown(Key.UP))
    	 moveY+=50;
     if(Key.isDown(Key.DOWN))
    	 moveY-=50;
    
     move = trans(moveX,moveY,moveZ);
    
     dis = mult(move,myTri);
     dis = mult(persm,dis);
     dis = homdev(dis);
    
    /**********************************************
     * CLEAR PREVIOUS LINES
     * DRAW NEW LINES
     */
     pen.clear();
     drawlines(dis);
    
    /**********************************************
     * NEXT FRAME
     */
     gotoAndPlay(3);
    Vi prego, aiutatemi....
    dirvi grazie è riduttivo....

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  2. #2
    veramente bello
    purtroppo non ho abbastanza tempo per aiutarti, ci vorrebbe n on poco per riscrivere il codice come serve a te, spero ti possa aiutare qualcun'altro, cmq magari se stasera non esco provo ad aiutarti da casa

  3. #3
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    quei numeri ho capito che sono i vertici, ogni 2 righe indica la posizione di 2 vertici che poi scrivono 1 linea....
    non riesco però a capire come modificare il tutto....
    GRAZIE a te e agli altri....

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  4. #4
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    vi prego, è importantissimo....
    anche se mi spiegate a cosa servono i punti....

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.