[C++] Problème avec graphics.h

Problème avec graphics.h [C++] - C++ - Programmation

Marsh Posté le 01-01-2007 à 14:47:17    

Bonjour à tous.

 

J'ai un ptit problème avec la librairie graphics.h. J'utilise une version modifiée qui tourne sur Dev-C++, que j'ai pu télécharger ici.
Le problème c'est que l'axe des y est inversé, comme vous pouvez le voir sur cette image :

 

http://scaryfred.free.fr/Images/02.jpg

 

Quand j'utilise la fonction putpixel(x,y,color) sur le point de coordonnées (0,0), ca m'allume le pixel du coin supérieur gauche, alors que logiquement cela devrait être le coin inférieur gauche.
J'ai essayé de regarder directement dans la librairie mais je ne vois pas ce que je pourrais modifier pour régler ce petit problème.

 

Sinon, tout ceci est pour le début d'un projet de master info, qui consiste à afficher un modèle au format PLY en mode fil de fer, c'est à dire en traçant les arêtes de chaque facette. Je pensais donc utiliser une bibliothèque du genre graphics.h, mais là je me rend compte que pour gérer la troisième coordonnée z je risque de galérer. Je précise que le prof ne veut pas d'OpenGl...
Si quelqu'un aurait une piste pour réaliser celà en C++ je suis preneur  :jap:

 

Merci et bonne année à tous [:al_bundy] !


Message édité par Fred051 le 01-01-2007 à 14:58:39
Reply

Marsh Posté le 01-01-2007 à 14:47:17   

Reply

Marsh Posté le 01-01-2007 à 18:09:08    

Pourquoi n'emplois-tu p

Reply

Marsh Posté le 01-01-2007 à 18:09:56    

Zut, problème d'Enter :d
 
Pourquoi n'emplois-tu pas SDL pour faire du graphisme ????
 
graphics.h provient du BGI de Borland, qui date de quelques années :d
 
Bonne soirée

Reply

Marsh Posté le 01-01-2007 à 20:04:53    

En fait ce n'est pas vraiment précisé quels outils je dois utiliser, dans le cours on utilisait des fonctions comme putpixel() donc j'ai pensé à la librairie graphics.h. Mais merci pour ta réponse je vais voir ce que je peux faire avec SDL.

Reply

Marsh Posté le 01-01-2007 à 21:38:17    

Je ne vois pas ce qui te choc, c'est classique : le {0,0} est en haut à gauche.
Ca fait des décennies que c'est comme ça (du aux écrans à tube catodique).
Mais bon, si tu veux te faire remarquer par ton prof, vas-y, change tout.

Reply

Marsh Posté le 02-01-2007 à 00:59:47    

Pour répondre ça autant s'abstenir, pas la peine d'être désagréable.

Reply

Marsh Posté le 02-01-2007 à 12:22:47    

Faut pas poser de questions si tu veux pas qu'on te réponde.
T'es bien douillet pour trouver que j'ai été désagréable....

Reply

Marsh Posté le 02-01-2007 à 13:22:17    

Salut,
   Au sujet de ton problème de 3D. Tu pourrais le faire toi même : fait une recherche google sur openGL et les projection et tu devrais trouver des truc comme ce schéma :
http://www-igm.univ-mlv.fr/~fdesor [...] /gl5.2.png
dans lequel tu vois comment on réalise la projection d'un modèle 3D sur un écran : il sagit tout simplement de définir le point d'observation (le sommet de la pyramide), le plan qui est en fait ton écran (le + petit rectangle) et finalement la distance de clipping (délimité par le grand rectangle). au final tu obtient une pyramide qui contient tout ce qui sera potentiellement visible. Puis il te reste a faire un petit coup de trigonométrie pour obtenir la projection de ton object 3D sur ton plan 2D (l'écran).
   Après ça commence a devenir rigolo : car il va falloir déterminer les faces que tu affiches et celle que tu affiche pas. Par exemple si tu veut projetter un cube sur ton plan, il ne va pas falloir projetter les faces de derrières que tu n'est pas sencé voir :) => d'où la nécéssitée de faire un tri sur les faces à afficher. Alors là je connais plusieurs méthodes :  
   - soit tu fait comme le Z-Buffer (là j'espère ne pas dire de connerie :D) a savoir que tu ne te contente pas de projetter que les vertices qui forme ton polygone mais tu projette tous les fragments qui composent ton polygone. puis tu fait le tri de ceux que tu affiche et de ceux que tu affiche pas.
   - autre méthode (la vieille technique de ma Sega Saturn :D ) tu prend un point de référence pour chaque polygone (par exemple le centre du polygone, celui qui est le + près de l'écran, celui qui est le + loin de l'écran) et tu trie cette fois ci pas les fragments mais carrément les polygones. La clairement tu as vite fait d'avoir des bugs, mais c'est clairement plus rapide et plus simple... :)
après à toi de voir...
 
voila, j'espère avoir pu t'aider un peu.
Bon courage :)
 
ps : au sujet de l'affichage sur l'écran je suis d'accord avec les autres : j'ai jamais vu un autre repère que celui avec le (0,0) en haut et à gauche de l'écran....


Message édité par Amonchakai le 02-01-2007 à 13:35:01
Reply

Marsh Posté le 02-01-2007 à 17:53:44    

Merci pour ta réponse. ^^
Je dois faire la méthode du Z-buffer, je sens que ça va être marrant !

Reply

Marsh Posté le 03-01-2007 à 11:49:26    

En école d'ingé, on avait fait un TP de CAO : un petit moteur 3D où il fallait implémenter les algos de base : bresenheim (ligne), Lambert/Gouraud/Phong (illumination ), scanline (remplissage de facettes), Z-buffer. On l'avait codé sous VC++ 5
 
Un site qui nous avait bien aidé : http://raphaello.univ-fcomte.fr/IG [...] ysique.htm

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed