auriez vous une idée à ce sujet :
http://www.google.fr/search?sourceid...m+vu+en+classe
auriez vous une idée à ce sujet :
http://www.google.fr/search?sourceid...m+vu+en+classe
google, c'est comme les femmes, il faut être subtil, et pas y aller comme un gros bourrin...
http://www.google.fr/search?hl=fr&q=...thme+Bresenham
Mais si vous l'avez vu en classe, tu dois déjà avoir toutes les infos...
C'est quoi le problème exactement?
merci pour votre reponse ...
le probleme c'est de donné 1 programe qd tu le donne n il dévise notre triangle et j'ai pas encore trouvé l'idée.
je ne comprend ni le problème, ni la question
il faudrait être plus explicite dans tes explications
Tutoriels OpenGL
Je ne répondrai à aucune question en MP
- Si c'est simple tu dis que c'est compliqué et tu le fait
- Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.
tt est espliqué dans le lien.....
C'est un problème algorithmique d'abord avant de faire du rendu. Voici plus ou moins comment je découperais le problème.
--- Un triangle
- Créer une structure qui définit un triangle.
- Créer une fonction qui affiche un triangle.
- Créer une fonction qui divise un triangle en 3 sous-triangles.
--- Une liste de triangles
- Créer une structure qui peut contenir une liste de triangles.
- Créer une fonction qui affiche les triangles d'une liste de triangles
- Créer une fonction qui parcourt une liste de triangles et divise chaque triangle en trois sous-triangles, créant donc une nouvelle liste.
--- Itération
- Ecrire une fonction qui fait n itérations sur une liste de triangles.
Jc
quel lien ?
le premier ne mène à rien, le second mène à des articles sur l'algorithme de bresenham, qui est un algorithme de tracé de segments
ce n'est en aucune façon un problème où une question à un problème
je veux bien aider en répondant à une question ou un problème mais je ne vois pas quoi répondre à un lien google
edit : au fait, quel est le lien avec opengl ?
Tutoriels OpenGL
Je ne répondrai à aucune question en MP
- Si c'est simple tu dis que c'est compliqué et tu le fait
- Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.
Ca, c'est juste un lien que j'ai donné en pensant qu'il avait un problème avec l'algo... et également avec une recherche google (vu l'allure de la requête... et en précisant qu'à l'époque on ne tombait sur aucun document...)
Cela ne t'empêche pas de nous expliquer ce qui te bloque, et ce que tu as fait...Envoyé par happy_1177
Tout est expliqué dans le lien...![]()
voila tt :
Vous devez généraliser et implanter l’algorithme de Bresenham vu en classe. À l’aide de cet algorithme, vous devrez réaliser une application simple qui consiste à afficher un triangle subdivisé n fois.
En partant d’un triangle ABC, la première itération (n=1) consiste à subdiviser le triangle en quatre triangles. Cette division est réalisée en joignant les points milieux P, Q et R respectivement de AB, AC et BC.
La deuxième itération (n=2) consiste à subdiviser de la même façon les trois triangles APQ(1), PBR(2), QRC(3), le triangle PQR(4) ne doit subir aucune subdivision, et ainsi de suite pour les autres triangles.
Il faut réfléchir à une fonction récurrente pour diviser le triangle n fois (diviserTriangle).
Fonctions à coder:
1. Une fonction est réservée pour écrire le code de traçage de segment de droite par la méthode de Brensenham (tracerDroiteBresenham).
2. Une fonction est réservée pour écrire l’algorithme qui permet de diviser le triangle n fois (diviserTriangle).
3. Une fonction est réservée pour afficher un triangle. Cette fonction doit servir à appeler la fonction tracerDroiteBresenham(), (afficheTriangle).
Squelette :
------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 /* Tp1.cpp */ #include <iostream.h> #include "glut.h" #include "math.h" int n ; void init(int w, int h) { glViewport(0, 0, (GLdouble)w, (GLdouble)h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0, (GLdouble)w, 0, (GLdouble)h); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glClearColor(0.0, 0.0, 0.0, 0.0); glColor3f(1, 0, 0); } void tracerDroiteBresenham(int x1, int y1, int x2, int y2) { } void afficheTriangle(int x1, int y1, int x2, int y2, int x3, int y3) { } void diviserTriangle(int x1, int y1, int x2, int y2, int x3, int y3, int n) { } void afficher() { glClear(GL_COLOR_BUFFER_BIT); diviserTriangle(0,0,200,200,400,0,n) ; glFlush(); } int main(int argc, char** argv) { glutInit(&argc, argv); cout << "Donnez la valeur de n : " ; cin >> n ; glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); glutInitWindowSize(400, 400); glutInitWindowPosition(100, 100); glutCreateWindow("TP1"); init(400, 200); glutDisplayFunc(afficher); glutMainLoop(); return 0; }
voila le lien ou tt est expliqué avec les shemas
voila le lien
voila ce que j'ai fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 /* Tp1.cpp */ #include <iostream.h> #include "glut.h" #include "math.h" int n ; void init(int w, int h) { glViewport(0, 0, (GLdouble)w, (GLdouble)h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0, (GLdouble)w, 0, (GLdouble)h); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glClearColor(0.0, 0.0, 0.0, 0.0); glColor3f(1, 0, 0); } // programe apart void pixel(int x, int y) { glBegin(GL_QUADS) ; glVertex2i(x,y) ; glVertex2i(x+1,y) ; glVertex2i(x+1,y+1) ; glVertex2i(x,y+1) ; glEnd() ; } void tracerDroiteBresenham(int x1, int y1, int x2, int y2) /*{ glBegin(GL_TRIANGLES); // Dessiner un Triangle glVertex3f( 0.0f, 1.0f, 0.0f); // Point du haut glVertex3f(-1.0f,-1.0f, 0.0f); // Point en bas à gauche glVertex3f( 1.0f,-1.0f, 0.0f); // Point en bas à droite glEnd(); // Le dessin du Triangle est fini }*/ void lignePixels(int xi,int yi,int xf,int yf) { int x = xi ; int y = yi ; int dx = abs( xf - xi ); int dy = abs(yf - yi) ; int Pi = 2dy-dx ; pixel(x,y) ; for ( x = xi+1 ; x <= xf ; x++ ) if (Pi<0) { yi+1= yi ; Pi+1 = Pi+2dy; } else { yi+1+= 1 ; Pi+1 = Pi+2dy-2dx; } } /*void dessineSegment(float *c,segment *s) { glColor4fv(c) ; glLineWidth(3.0) ; glBegin(GL_LINES) ; glVertex2d(s->pi.x+0.5,s->pi.y+0.5); glVertex2d(s->pf.x+0.5,s->pf.y+0.5); glEnd() ; glLineWidth(1.0) ; }*/ void afficheTriangle(int x1, int y1, int x2, int y2, int x3, int y3) { tracerDroiteBresenham(int x1, int y1, int x2, int y2); tracerDroiteBresenham(int x1, int y1, int x3, int y3); tracerDroiteBresenham(int x3, int y3, int x2, int y2); } void diviserTriangle(int x1, int y1, int x2, int y2, int x3, int y3, int n) { } void afficher() { glClear(GL_COLOR_BUFFER_BIT); diviserTriangle(0,0,200,200,400,0,n) ; glFlush(); } int main(int argc, char** argv) { glutInit(&argc, argv); cout << "Donnez la valeur de n : " ; cin >> n ; glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); glutInitWindowSize(400, 400); glutInitWindowPosition(100, 100); glutCreateWindow("TP1"); init(400, 200); glutDisplayFunc(afficher); glutMainLoop(); return 0; }
Humm, on ne pourra jamais aider sérieusement si tu nous dis pas où tu bloques sérieusement. On ne fera pas le travail à ta place, cela n'est pas le but de ce forum et ne l'a jamais été.
Par contre, si tu nous disLà, on peut aider.cette fonction est difficile à écrire, j'aimerais qu'elle fasse ceci mais j'ai tenté cela
Jc
Partager