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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
class DessinCube extends Shape3D
{
public DessinCube()
{
// Les coordonnees des 24 sommets des 6 faces visibles du cube
// Face 1
Point3f face1_s1 = new Point3f(-0.5f, 0.5f, 0.5f);
Point3f face1_s2 = new Point3f(-0.5f, -0.5f, 0.5f);
Point3f face1_s3 = new Point3f( 0.5f, -0.5f, 0.5f);
Point3f face1_s4 = new Point3f( 0.5f, 0.5f, 0.5f);
// Face 2
Point3f face2_s1 = new Point3f( 0.5f, 0.5f, 0.5f);
Point3f face2_s2 = new Point3f( 0.5f, -0.5f, 0.5f);
Point3f face2_s3 = new Point3f( 0.5f, -0.5f, -0.5f);
Point3f face2_s4 = new Point3f( 0.5f, 0.5f, -0.5f);
// Face 3
Point3f face3_s1 = new Point3f( 0.5f, 0.5f, -0.5f);
Point3f face3_s2 = new Point3f( 0.5f, -0.5f, -0.5f);
Point3f face3_s3 = new Point3f(-0.5f, -0.5f, -0.5f);
Point3f face3_s4 = new Point3f(-0.5f, 0.5f, -0.5f);
// Face 4
Point3f face4_s1 = new Point3f(-0.5f, 0.5f, -0.5f);
Point3f face4_s2 = new Point3f(-0.5f, -0.5f, -0.5f);
Point3f face4_s3 = new Point3f(-0.5f, -0.5f, 0.5f);
Point3f face4_s4 = new Point3f(-0.5f, 0.5f, 0.5f);
// Face 5
Point3f face5_s1 = new Point3f(-0.5f, 0.5f, 0.5f);
Point3f face5_s2 = new Point3f(0.5f, 0.5f, 0.5f);
Point3f face5_s3 = new Point3f(0.5f, 0.5f, -0.5f);
Point3f face5_s4 = new Point3f(-0.5f, 0.5f, -0.5f);
// Face 6
Point3f face6_s1 = new Point3f(-0.5f, -0.5f, 0.5f);
Point3f face6_s2 = new Point3f(0.5f, -0.5f, 0.5f);
Point3f face6_s3 = new Point3f(0.5f, -0.5f, -0.5f);
Point3f face6_s4 = new Point3f(-0.5f, -0.5f, -0.5f);
// Normales
Vector3f[] normales =
{
new Vector3f( 0.0f, 0.0f, 1.0f), // face avant
new Vector3f( 0.0f, 0.0f, -1.0f), // face arrière
new Vector3f( 1.0f, 0.0f, 0.0f), // face droite
new Vector3f(-1.0f, 0.0f, 0.0f), // face gauche
new Vector3f( 0.0f, 1.0f, 0.0f), // face haute
new Vector3f( 0.0f, -1.0f, 0.0f), // face basse
};
// Ensemble de points définissant un clipping sur la texture.
TexCoord2f[] textureCoord =
{
new TexCoord2f(0.0f, 0.0f),
new TexCoord2f(1.0f, 0.0f),
new TexCoord2f(1.0f, 1.0f),
new TexCoord2f(0.0f, 1.0f)
};
// Les couleurs des 4 faces visibles du cube
Color3f color1 = new Color3f(Color.magenta);
Color3f color2 = new Color3f(Color.red);
Color3f color3 = new Color3f(Color.yellow);
Color3f color4 = new Color3f(Color.white);
Color3f color5 = new Color3f(Color.blue);
Color3f color6 = new Color3f(Color.black);
Color3f color7 = new Color3f(Color.green);
Color3f color8 = new Color3f(Color.cyan);
// Construction de l'objet geometrique QuadArray constitue de 24
// points
QuadArray quadArray = new QuadArray(24,QuadArray.COORDINATES |
QuadArray.NORMALS | QuadArray.COLOR_3 | QuadArray.TEXTURE_COORDINATE_2);
// Tableau des points constituant les 6 faces (quadrilateres) qui
// sont visibles
quadArray.setCoordinates(0, new Point3f[] {
/* face 1 */ face1_s1, face1_s2, face1_s3, face1_s4,
/* face 2 */ face2_s1, face2_s2, face2_s3, face2_s4,
/* face 3 */ face3_s1, face3_s2, face3_s3, face3_s4,
/* face 4 */ face4_s1, face4_s2, face4_s3, face4_s4,
/* face 5 */ face5_s1, face5_s2, face5_s3, face5_s4,
/* face 6 */ face6_s1, face6_s2, face6_s3, face6_s4
});
// Tableau des couleurs des 4 sommets de chaque face
quadArray.setColors(0, new Color3f[] {
/* couleur face 1 */ color1, color2, color3, color4,
/* couleur face 2 */ color4, color3, color7, color8,
/* couleur face 3 */ color8, color7, color6, color5,
/* couleur face 4 */ color5, color6, color2, color1,
/* couleur face 5 */ color1, color4, color8, color5,
/* couleur face 6 */ color6, color2, color3, color7
});
/*----- Remplissage des normales en chacun des points -----*/
int i;
for (i = 0; i<24; i++) quadArray.setNormal(i,normales[i/4]);
/*----- Liaison sommets et points de clipping de la texture -----*/
for (i=0; i<24; i++) quadArray.setTextureCoordinate(0,i,textureCoord[i%4]);
this.setGeometry(quadArray);
} // fin constructeur DessinCube
} // fin de la classe DessinCube extends Shape3D |
Partager