2010-11-16 6 views
0

Je suis en train d'implémenter un rastériseur pour un projet de classe, et je suis actuellement coincé sur la méthode/comment je devrais convertir les coordonnées de vertex pour afficher les coordonnées de la fenêtre.OpenGL: coordonnées 2D Vertex aux coordonnées de visualisation 2D?

me donne une liste des vertices de coordonnées 2D pour un triangle, comme

0 0 1 
2 0 1 
0 1 1 

et le dessin im dans une fenêtre de visualisation (en utilisant OpenGL et GLUT) de 400x400 pixels taille, par exemple.

Ma question est de savoir comment puis-je décider où dans le volet de visualisation pour mettre ces vertices, en supposant

1) Je veux que de coordonnées soit centrée autour de 0,0 au centre de l'écran
2) Je veux remplir la plus grande partie de l'écran (disons pour cet exemple, l'écran est la coordonnée maximale x + 1 longueurs de large, etc.)
3) J'ai toute la bibliothèque standard d'OpenGL et de GLUT à ma disposition .

Merci!

Répondre

1

http://www.opengl.org/sdk/docs/man/xhtml/glOrtho.xml

Pour le centre autour de 0 utilisation symétrique gauche/droite et en bas/haut. Méfiez-vous du proche/lointain qui sont quelque peu arbitraires mais sont souvent choisis (dans les exemples) comme -1 .. + 1 ce qui pourrait être un problème pour vos triangles à z = 1. Si vous tenez compte du rapport d'aspect, assurez-vous que la droite et la gauche et le bas sont proportionnels à la largeur/hauteur de la fenêtre.

0

Vous devriez considérer ce qui est le tronc de cône votre point de vue volumétrique et calculer les coordonnées en transformant les vos objets à considérer leur position, this explique la théorie tout à fait bien ..

Fondamentalement, vous devez projeter l'objet à l'aide d'un spécifié matrice de projection qui est calculée basant sur les caractéristiques de la vue:

  • échelle eux selon az (profondeur) valeur: on l'échelle à la fois y et x dans la inversement proportionnelle à z
  • vous barème et le décalage coordinat es afin de s'adapter à la largeur de votre vue
Questions connexes