J'ai essayé d'écrire une classe qui devrait créer un cylindre. Mais quand j'essaie de dessiner mon ArrayList
il y a 180 objets avec la même valeur dedans. Je ne comprends pas ce qui ne va pas quand j'essaie d'ajouter les Quads à mon ArrayList
.Ajout d'éléments à une liste de tableaux
public class Planet {
public static ArrayList<Quad> createRing(int x, int y, int z, int radius) {
ArrayList<Quad> quads = new ArrayList<Quad>();
for (int i = 0; i < 360; i++) {
float x1 = (float) (Math.sin(Math.toRadians(i)) * radius);
float y1 = (float) (Math.cos(Math.toRadians(i)) * radius);
i++;
float x2 = (float) (Math.sin(Math.toRadians(i)) * radius);
float y2 = (float) (Math.cos(Math.toRadians(i)) * radius);
quads.add(new Quad(new Vector3f(x1, y1, 4), new Vector3f(x2, y2, 4), new Vector3f(x2, y2, 0),
new Vector3f(x1, y1, 0)));
}
return quads;
}
}
----QUAD.java
import org.lwjgl.opengl.GL11;
import org.lwjgl.util.vector.Vector3f;
public class Quad {
//have to be non-static
static Vector3f Cord1;
static Vector3f Cord2;
static Vector3f Cord3;
static Vector3f Cord4;
//have to be non-static
public Quad(Vector3f cord1,Vector3f cord2,Vector3f cord3,Vector3f cord4) {
Cord1 = cord1;
Cord2 = cord2;
Cord3 = cord3;
Cord4 = cord4;
}
public void draw() {
//GL11.glBegin(GL11.GL_QUADS);
GL11.glColor3f(1, 0, 0);
GL11.glVertex3f(Cord1.x, Cord1.y, Cord1.z);
GL11.glVertex3f(Cord2.x, Cord2.y, Cord2.z);
GL11.glVertex3f(Cord3.x, Cord3.y, Cord3.z);
GL11.glVertex3f(Cord4.x, Cord4.y, Cord4.z);
}
public void out() {
System.out.println(Cord1.x+" "+ Cord1.y+" "+ Cord1.z);
System.out.println(Cord2.x+" "+ Cord2.y+" "+ Cord2.z);
System.out.println(Cord3.x+" "+ Cord3.y+" "+ Cord3.z);
System.out.println(Cord4.x+" "+ Cord4.y+" "+ Cord4.z);
}
}
Avez-vous essayé 'System.out.println (eins); System.out.println (zwei); 'etc et vérifiez si elles sont identiques? Êtes-vous sûr d'attribuer des valeurs différentes à chaque fois? –
J'ai testé cela en changeant la valeur dans la boucle for et chaque fois que je dessine, j'ai une autre partie de mon cylindre. Mais je ne peux pas dessiner le cylindre entier à la fois. –
Est-ce que 'Quad' est une classe que vous avez définie? Ses membres sont-ils "statiques"? Veuillez ajouter le code pour cette classe. (S'ils sont statiques, rendez-les non statiques). –