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
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
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 };
Avantage:
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; };
-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:
Inconvénient:
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 };
-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.
Partager