Bonjour,

Voila j'ai besoin d'une classe ChampVectoriel mais sachant que j'ai déjà une classe ChampScalaire j'ai deux choix possible pour faire celle-ci.

Ma classe ChampScalaire peut se résumer à ceci

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
class ChampScalaire
{
private:
    float m_pas; //Pas de discrétisation suivant X et Y.
    unsigned int m_tailleX; //nb de cases suivant X.
    unsigned int m_tailleY; //nb de cases suivant Y.
    std::vector<float>  m_champ; //tableau contenant les valeurs du champ en chaque point
};
Et donc comme premier choix pour ma classe ChampVectoriel je peux faire ça:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
class ChampVectoriel
{
private:
ChampScalaire m_x;
ChampScalaire m_y;
};
Avantage:
-Réutilisation de la classe précédente
Inconvénient:
-Obligé de faire les calculs composante pas composante (répétition de code)


La deuxième possibilité est la suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
class ChampVectoriel
{
private:
    float m_pas; //Pas de discrétisation suivant X et Y.
    unsigned int m_tailleX; //nb de cases suivant X.
    unsigned int m_tailleY; //nb de cases suivant Y.
    std::vector<Vecteur>  m_champ; //tableau contenant les vecteurs du champ en chaque point
};
Inconvénient:
-Avoir une classe vecteur (en fait je l'ai déjà mais bon le code devient plus gros)
-Niveau performance c'est mieux d'avoir un gros tableau (mon champ) avec plein de petits tableau de deux cases (mes vecteurs) ou alors deux gros tableaux (champ suivant x et y)?

Avantage:
-Possibilité d’utiliser les surcharges d'opérateur de la classe Vecteur et donc le code devient plus propre quand je fais des calculs, par ex:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
ChampVectoriel champ(10,20) //champ 10*20 cases
 
champ(i,j)=champ(i,j)*2+vecteur;

Qu’en pensez vous ?

Merci.