Bonjour,
Je cherche a créer une fonction qui renvoie un liste des trois premiers points ordonnées d'une autre liste de telle sorte que le triangle soit direct.
Je ne sais pas comment faire pour récupérer les points de la liste afin de pouvoir utiliser mes fonctions de calcul du produit et vectoriel et de permutation dans la fonction triangle.

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
 
class point{
	private:
		int x,y;
 
	public:
		point();
		point (int, int);
};
 
 
class maillon
{
private:
       point val;               // Le point dans le maillon.
       maillon * suiv;         // L'adresse du suivant.
       maillon * prec;         // L'adresse du precedent.
 
 
public:
       // CONSTRUCTEUR
       maillon(point &);
       maillon(point &, maillon*, maillon*);
};
 
 
class list
{
  private :
		maillon * tete ;
		maillon * queu ;
                int nb_maillons ;   // Nombre de maillons de la liste.
 public: 
...
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
 
list list::triangle(const list & source)
{
	tete = queu = NULL;
	nb_maillons = 0;
 
	maillon * lecteur = source.tete;
 
	for (int i=0; i<3; i++)
	{
		inserer_fin(lecteur->val);
		lecteur = lecteur->suiv;
	}
 
}
 
//calcul la composante z du prod vectoriel
float prod_vect(point a, point b, point c){
	float z=0;
	point ab, bc;
	ab.x=b.x-a.x;
        ab.y=b.y-a.y;
        bc.x=c.x-b.x;
        bc.y=c.y-b.y;
	z=ab.x*bc.y-ab.y*bc.x;
	return z;
}
 
void list::permutation(point *a, point *b)
{
 point*tmp;
 tmp = *a;
 *a = *b;
 *b = tmp;
}