1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| import java.awt.Color;
import java.util.ArrayList;
import java.util.List;
import javax.media.j3d.LineStripArray;
import javax.media.j3d.QuadArray;
import javax.media.j3d.Shape3D;
import javax.vecmath.Color3f;
import javax.vecmath.Point3f;
/**
* Classe contenant les fonctions permettant de dessiner un cube 3D
*
* @author Guy Alexis TAMBIE
*
*/
public class CubeFactory extends Shape3D{
public CubeFactory(float log, float haut, float larg){
int nbFaces = 4; // nombre de lignes (bandes) représentant le nombre de faces
int nbPtsParFaces = 5; // nombre de points par faces
// stripVertexCount est construit de façon simplifiée en attribuant le même nombre de points pour chaque ligne
int[] stripVertexCount = new int[nbFaces];
for (int i = 0 ; i < nbFaces ; i++) {
stripVertexCount[i] = nbPtsParFaces;
}
Point3f[] points = new Point3f[nbFaces*nbPtsParFaces];
// Les coordonnees des 16 sommets des 4 faces visibles du cube
List<Point3f> points3f = new ArrayList<Point3f>();
// Face 1
points3f.add(new Point3f(-log, haut, larg));
points3f.add(new Point3f(-log, -haut, larg));
points3f.add(new Point3f( log, -haut, larg));
points3f.add(new Point3f( log, haut, larg));
points3f.add(new Point3f(-log, haut, larg));
// Face 2
points3f.add(new Point3f( log, haut, larg));
points3f.add(new Point3f( log, -haut, larg));
points3f.add(new Point3f( log, -haut, -larg));
points3f.add(new Point3f( log, haut, -larg));
points3f.add(new Point3f( log, haut, larg));
// Face 3
points3f.add(new Point3f( log, haut, -larg));
points3f.add(new Point3f( log, -haut, -larg));
points3f.add(new Point3f(-log, -haut, -larg));
points3f.add(new Point3f(-log, haut, -larg));
points3f.add(new Point3f( log, haut, -larg));
// Face 4
points3f.add(new Point3f(-log, haut, -larg));
points3f.add(new Point3f(-log, -haut, -larg));
points3f.add(new Point3f(-log, -haut, larg));
points3f.add(new Point3f(-log, haut, larg));
points3f.add(new Point3f(-log, haut, -larg));
points3f.toArray(points);
//Construction de l'objet de type linestrip array contenant l'ensemble des points de toutes les lignes
LineStripArray lineStripArray = new LineStripArray(nbFaces*nbPtsParFaces, LineStripArray.COORDINATES, stripVertexCount);
// On rentre le tableau des points dans l'objet lineStripArray
lineStripArray.setCoordinates(0, points);
// Mise a jour de la geometrie de l'objet SphereWithLines
this.setGeometry(lineStripArray);
}
} |