Complexe en C++ ?

cs_sunmat Messages postés 8 Date d'inscription samedi 4 février 2006 Statut Membre Dernière intervention 19 février 2006 - 11 févr. 2006 à 19:43
cs_sunmat Messages postés 8 Date d'inscription samedi 4 février 2006 Statut Membre Dernière intervention 19 février 2006 - 13 févr. 2006 à 11:01
Bonjour,

J'ai remarqué qu'une classe COMPLEX était présente dans le fichier
<math>, une simple structure avec 2 réels (si je me souvient
bien) représentant la partie réelle et la partie imaginaire du
complexe. Cette structure pourrai m'être utile pour la programmation de
jeux (les transformations planes sous formes complexe sont plus simple
que sous forme cartésienne) mais je ne sais pas si la constante i est
définie en C++ (rappel : i est tel que i² = -1).

Quelqu'un pourrais m'indiquer si elle existe ?

D'avance merci...

11 réponses

julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
11 févr. 2006 à 20:48
Elle ne me dit rien du tout.
Mais normalement tu n'en a pas besoin si tu travailles avec la structure complexe.
Tu fais tes calculs sur chaque partie du complexe, et tu fais le -1 ensuite en fonction du calcul (gestion du i par la prog)

void carrecomplex (COMPLEX *c)
{
c->re = c->re*c->re - c->im*c->im;
c->im = 2*c->re*c->cim;
}

Je ne me rappelles plus la structure COMPLEX, je l'ai donc utilisé ici comme si elle contenanit 2 champs re (pour la partie reelle et im pour la partie imaginaire), tu corrigeras si ce n'est pas les bons noms de champ.

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
11 févr. 2006 à 20:55
C'est quand même mieux de faire une vraie classe que d'utiliser un vieille structure.
i n'existe pas, mais tu l'obtiens évidemment facilement: c'est le couple (0, 1)
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
11 févr. 2006 à 20:59
Ben de toute façon, faut quand même implémenter ce genre de fonctions (addition, soustraction, multiplication, division... de complexes) . Apres que ce soit des méthodes d'une classe ou des fonctions en C, ça dépend du type de programmation que tu fais, non?

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
11 févr. 2006 à 21:22
Oui, mais pour ce genre de chose c'est bien plus agréable d'utiliser des objets. Si tu utilise la surcharge des opérateurs, tu obtiens du code bien plus facile a écrire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
11 févr. 2006 à 23:32
C'est vrai que

Complex1 + Complex2 c'est mieux que

Addition(Complex1, Complex2);



Chacun son point de vue après

if(!Meilleur("Joky")) return ERREUR;<
0
cs_sunmat Messages postés 8 Date d'inscription samedi 4 février 2006 Statut Membre Dernière intervention 19 février 2006
11 févr. 2006 à 23:38
Je me suis refait intégralement une classe complexe avec la gestion des
translation, le calcul du modul, de l'argument, la gestion des
homothéties, mais je ne vois pas comment exprimer une rotation sans
utiliser la forme exponentielle avec la constante i...

Bon, je pense que je ne vais pas généraliser mes rotations, je vais
faire une seule rotation d'angle PI/12, ça devrai convenir pour avoir
des mouvements fluides d'images, et je composerai à partir de ça.

Merci de votre aide !
0
cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
12 févr. 2006 à 15:50
salut,
const Complex c_i = Complex(0,1);
ne te convient pas?
0
cs_sunmat Messages postés 8 Date d'inscription samedi 4 février 2006 Statut Membre Dernière intervention 19 février 2006
12 févr. 2006 à 16:22
si bien sur, mais le problème, c'est que je ne voit pas comment
utiliser les formes exponentielles de complexes pour utiliser des
rotations, par exemple. La fonction exponentielle n'étant pas définie
pour les complexes.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
12 févr. 2006 à 16:30
Tu t'en sors avec cos et sin normalement
0
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 3
12 févr. 2006 à 22:52
Bonjour, il me semble que toutes ces fonctions sont présentent dans la classe "complex" (header <math>).
real(), imag() pourc chopper les parties réelles et imaginaires
conj() pour le conjugué
abs() er arg() pour avoir les paramètres rho et theta de la forme rho*e^i*theta
puis pour les autres fonctions trigo basiques exp(), sin() sinh(), ...
Voilà, dans ton cas je pense donc qu'il peut donc être intéressant de créer une classe fille de complex ou tu implémenterai toutes le fonctions supplémentaires dont tu as besoins (Homothéties, etc...) .

Bonne chance.

Bouba
0
cs_sunmat Messages postés 8 Date d'inscription samedi 4 février 2006 Statut Membre Dernière intervention 19 février 2006
13 févr. 2006 à 11:01
ok merci de l'info !

ce dont je suis sur, c'est que ces fonctions ne sont pas dans la classe
complexe, elles doivent donc être ailleur dans le fichier, bref je
chercherai...
0
Rejoignez-nous