2009-12-09 10 views
1

Je travaille sur un projet OpenGL dans lequel je veux dessiner une étoile. Il ne doit pas nécessairement être une étoile 3D (2d regarde bien). J'ai les coordonnées xyz pour le centre de l'étoile et je connais la taille que je voudrais qu'elle soit. Je ne fais pas beaucoup de programmation de maths OpenGL/3d, donc n'importe quelle aide ici serait très appréciée.Java OpenGL dessine une étoile

EDIT: Plus de détails: Je ne sais pas si c'est possible mais puis-je dessiner une étoile 2D à un certain point dans l'espace 3D? J'ai essayé simple avec un carré et essayé quelque chose comme:

gl.glTranslated(x, y, z); 
gl.glBegin(GL.GL_QUADS); 
gl.glVertex2D(x-size,y-size); 
gl.glVertex2D(x-size,y+size); 
gl.glVertex2D(x+size,y+size); 
gl.glVertex2D(x+size,y-size); 
gl.glEnd(); 

La place ne semble pas être à la bonne profondeur, même si je traduis à x, y, z. Il semblait être plus proche de l'avant de l'écran qu'il ne devrait l'être. Est-il possible de traduire une forme 2d en 3D comme ça?

grâce,

Jeff

+1

S'il vous plaît fournir ce que vous avez jusqu'à présent et de spécifier ce qui vous pose problème. Personne ne va écrire tout le programme pour vous –

+0

Jonathan, je ne cherche pas quelqu'un pour écrire le programme entier pour moi, mais j'aurais dû être plus clair. J'ai ajouté quelques détails supplémentaires. –

+0

Vous semblez avoir utilisé une projection orthographique plutôt qu'une projection perspective. –

Répondre

0

J'ai décidé d'aller avec le dessin en 3D et il semble que la traduction ait déjà été faite pour moi et je n'ai pas eu besoin de retraduire. Donc, en fait, je traduisais loin du point. Merci pour l'aide de tout le monde.

3

Avez-vous mis votre projection matrix? Sinon, il est probablement défini sur identité, ce qui signifie que les valeurs z de vos sommets n'auront aucun effet sur leurs positions rendues dans l'espace écran. Pour obtenir le sens de la profondeur que vous voulez, vous devez créer une matrice de projection de perspective. Vous pouvez utiliser glFrustum() pour créer votre matrice de projection. Voici un exemple (de Wikipedia's OpenGL page):

glMatrixMode(GL_PROJECTION);  /* Subsequent matrix commands will affect the projection matrix */ 
glLoadIdentity();     /* Initialise the projection matrix to identity */ 
glFrustum(-1, 1, -1, 1, 1, 1000); /* Apply a perspective-projection matrix */ 

Il y a une tonne de tutoriels OpenGL gratuits en ligne, de sorte que vous ne devriez pas avoir de mal à trouver plus d'informations.

+0

Intéressant. (Pour info, je travaille dans l'application NASA WorldWind). Cependant, si je fais quelque chose comme gluSphere (...) la sphère dessine au bon endroit. Je vais en lire plus sur les matrices, merci! –