IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

optimisation, classes et operateurs


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 25
    Par défaut optimisation, classes et operateurs
    Hello!

    J'ai fais une petite classe de Vecteurs3D. Elle a comme attributs prives un tableau de type vector de nom coord
    l'une des méthodes que j'ai fais calcule le produit vectoriel de deux vecteurs. J'ai fais une nouvelle instance puis initialisé ses
    valeurs mais cela pose un soucis lorsque je veux faire la surcharge d'opertateur* en effet, créer à chaque fois un tableau n'est pas une très bonne idée...

    j'espère que vous pourrez m'aider, car je ne suis pas convaincu de mon bricolage. De plus, il m'est conseiller d’éviter les setters donc j'imagine qu'il existe une solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Vecteurs3D Vecteurs3D::prod_vec(Vecteurs3D const vec)const
    {
        Vecteurs3D resultat;
        resultat.set_coord(0, (coord[1]* vec.coord[2]) - (coord[2]*vec.coord[1]));
        resultat.set_coord(1, (coord[2]* vec.coord[0]) - (coord[0]*vec.coord[2]));
        resultat.set_coord(2, (coord[0]* vec.coord[1]) - (coord[1]*vec.coord[0]));
        return resultat;
    }
    Merci d'avance!

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Salut,

    tu es dans une fonction membre, pourquoi utiliser set_coord et non directement coord ?
    Tu passes ton paramètre par copie, utilise une référence. Dommage t'avais déjà pensé au const en plus. ^^
    Si tu dois faire 3 opérations, tu pourras difficilement faire mieux. Sauf à utiliser des intrinsics et SIMD.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 25
    Par défaut
    oui juste! J'y avais pas pensé je vais faire ça alors. Merci

  4. #4
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 25
    Par défaut
    Accessoirement, lors de la surcharge d'opérateur, comment différencier le produit vectoriel et le produit scalaire de vecteurs?
    voici mon prototype de produit scalaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const Vecteurs3D operator*(Vecteurs3D, Vecteurs3D const&);
    et sa definition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    const Vecteurs3D operator*(Vecteurs3D v1, Vecteurs3D const& v2)
    {
        v1*=v2;
        return v1;
    }

  5. #5
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Salut!
    Pour les vecteurs/points, je n'ai pas implémenté l'opérateur de multiplication avec un autre vecteur.
    J'ai implémenté 2 fonctions libres: cross et dot.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,
    On ne peut distinguer les operations par leur type de retour. La définition de l'operateur^() pourrait fournir un produit vectoriel et operateur*() pour le produit scalaire, mais l'utilisation de fonction comme indiqué par dragonjoker59 est beaucoup moins opaque.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Optimisation de surcharge d'operateurs de class
    Par shadowsam dans le forum Général Python
    Réponses: 2
    Dernier message: 05/03/2009, 09h59
  2. [POO] classe vect operateur []
    Par chris_013 dans le forum C++
    Réponses: 2
    Dernier message: 15/10/2008, 13h26
  3. [debutant] Utilisation de l'operateur = dans une classe
    Par Battosaiii dans le forum Débuter
    Réponses: 8
    Dernier message: 10/11/2005, 23h01
  4. Optimisation PHP4 lorsque l'on utilise presque des classes
    Par ouioui2000 dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2005, 17h05
  5. [Surcharge]Operateur<< avec une classe maison
    Par KeNnEdY dans le forum C++
    Réponses: 6
    Dernier message: 14/09/2005, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo