Quote:
il n'y a pas d'erreur de ma part.
L'énoncé parle bien d'une classe Matrice dont le paramètre de généricité sera la classe Pixel.
Alors l'énoncé est mal formulé je pense, justement je revenais mettre un message complémentaire, parce que je me suis dit que ce que je t'avais dit tombait sans doute à côté.
Je dois dire que ton énoncé m'a déstabilisé. :lol: Et justement tu touches les points justes dans ton dernier message.
Quote:
Pour écrire les méthodes de transformations, il n'y a pas besoin d'avoir en attribut une matrice représenté par un tableau ?
Il me semblait que ces calculs se faisaient à l'aide de matrice
Très très bien dit. C'est justement là que ce situe le noeud du problème et c'est ce qui m'a gêné dans la question initiale. Mais peut être qu'une des difficultés de l'exercice c'est de bien comprendre ce qu'il faut faire
Tu as 100% raison, les calculs se font avec une matrice. Et justement la matrice *est* en tant que telle. Par exemple une matrice carré en 2D c'est quatre nombres. Les nombres sont des nombres et c'est tout. Et selon la valeur de ces nombres on aura une matrice rotation ou autre.
La matrice est générique en tant que telle car tu peux l'appliquer à ce que tu veux. Mathématiquement je parle. Un point, un segment de droite, un triangle, toutes formes géométriques.
Pour le codage ça ne fait pas de sens de dire qu'elle doit prend une paramètre générique Pixel. C'est là que je ne comprends pas.
Quote:
L'idée de l'exo est d' écrire un programme qui permet d'effectuer des transformations géométriques sur une image. C'est pour ça que j'ai parlé de rotation ou de translation pour un point.
Par rotation d'un point, je voulais dire : déplacer le point d'un angle de X degré.
Bon c'est d'accord pour tout ça. Alors que faire ? Pour moi de deux choses l'une.
- Il faut écrire une classe matrice générique. Mais alors qu'est-ce qui va être générique ? le caractère de la matrice (rotation, identité, etc) dans ce cas tu écris quelque chose comme:
template<class Type_Matrice> classe Matrice {};
Et selon Type_Matrice, la classe se spécialise en rotation, identité, etc.
- ou bien la matrice est une classe qui comporte 4 nombres. Donc une matrice déjà définie (i.e spécialisée du point de vue programmation)
Dans ce cas il s'agit d'une simple classe, mais dont la méthode de calcul (d'application) de la matrice transforme des formes géométriques quelconques et c'est alors là que se situerait la généricité.
class Matrice
{
int a,b,c,d; les coeffs de la matrice // ou bien un tableau comme tu disais
template <class Forme_Geo> Forme_Geo application(Forme_Geo la_forme);
};
Enfin c'est comme ça que ma petite tête voit les choses. (Et encore, car mettre des templates ici je ne suis pas sûr que ça soit le mieux à faire... mais bon)
Est-ce que j'ai été clair ?
Mais une classe Matrice générique qui prend un paramètre générique Pixel (dont le type est connu et donc pas générique), je ne comprends pas. Selon moi ça n'a aucun sens ...
Alors l'énoncé est mal formulé je pense, justement je revenais mettre un message complémentaire, parce que je me suis dit que ce que je t'avais dit tombait sans doute à côté.
Je dois dire que ton énoncé m'a déstabilisé. :lol: Et justement tu touches les points justes dans ton dernier message.
Très très bien dit. C'est justement là que ce situe le noeud du problème et c'est ce qui m'a gêné dans la question initiale. Mais peut être qu'une des difficultés de l'exercice c'est de bien comprendre ce qu'il faut faire
Tu as 100% raison, les calculs se font avec une matrice. Et justement la matrice *est* en tant que telle. Par exemple une matrice carré en 2D c'est quatre nombres. Les nombres sont des nombres et c'est tout. Et selon la valeur de ces nombres on aura une matrice rotation ou autre.
La matrice est générique en tant que telle car tu peux l'appliquer à ce que tu veux. Mathématiquement je parle. Un point, un segment de droite, un triangle, toutes formes géométriques.
Pour le codage ça ne fait pas de sens de dire qu'elle doit prend une paramètre générique Pixel. C'est là que je ne comprends pas.
Bon c'est d'accord pour tout ça. Alors que faire ? Pour moi de deux choses l'une.
- Il faut écrire une classe matrice générique. Mais alors qu'est-ce qui va être générique ? le caractère de la matrice (rotation, identité, etc) dans ce cas tu écris quelque chose comme:
Et selon Type_Matrice, la classe se spécialise en rotation, identité, etc.
- ou bien la matrice est une classe qui comporte 4 nombres. Donc une matrice déjà définie (i.e spécialisée du point de vue programmation)
Dans ce cas il s'agit d'une simple classe, mais dont la méthode de calcul (d'application) de la matrice transforme des formes géométriques quelconques et c'est alors là que se situerait la généricité.
Enfin c'est comme ça que ma petite tête voit les choses. (Et encore, car mettre des templates ici je ne suis pas sûr que ça soit le mieux à faire... mais bon)
Est-ce que j'ai été clair ?
Mais une classe Matrice générique qui prend un paramètre générique Pixel (dont le type est connu et donc pas générique), je ne comprends pas. Selon moi ça n'a aucun sens ...