begin process at 2012 05 28 10:22:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Calculer barycentre [std::vector]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Calculer barycentre [std::vector]

dimanche 31 octobre 2004 à 17:10:04 | Calculer barycentre [std::vector]

skone007

Voilà je suis toujours dans mon pseudo moteur 3D enfin bref je suis en train de coder un petite fonction pour calculer le barycentre enfin calculer le barycentre en lui soit même c'est pas trop compliquer mais moi je me prends toujours la tête alors je presentes mon problème :

Je sais bien que le C++ a inventé les using namespace mais pour moi c'est plus claire comme ca je vois tout de suite de quel classe il sagit puisque j'ai 2 classes CCar

J'ai une classe CCar dans l'espace de nommage VM::Mesh et une autre classe dans l'espace de nommage VM

la classe VM::Mesh::CCar :

CODE

class CCar : public CMesh, CRoue, CVitre
{
public :
CCar();
virtual ~CCar();

// Operateur
inline VM::Mesh::CCar& operator=(const VM::Mesh::CCar&);

// Fonction
void Draw();

// Affecter
bool SetTOri(const CVector3f&);
bool SetBarycentre(const CVector3f&);
// ...
bool SetBody(const std::vector<CVector3f>&);
bool SetRoue(const std::vector<CRoue>&);
bool SetVitre(const std::vector<CVitre>&);
bool SetPhare(const std::vector<CVector3f>&);
bool SetStop(const std::vector<CVector3f>&);
bool SetArr(const std::vector<CVector3f>&);
bool SetClign(const std::vector<CVector3f>&);
// ...
bool SetBodyAt(int, const CVector3f&);
bool SetRoueAt(int, const CRoue&);
bool SetVitreAt(int, const CVitre&);
bool SetPhareAt(int, const CVector3f&);
bool SetStopAt(int, const CVector3f&);
bool SetArrAt(int, const CVector3f&);
bool SetClignAt(int, const CVector3f&);

// Retourner
CVector3f &GetTOri(void);
CVector3f &GetBary(void);
// ...
std::vector<CVector3f> &GetBody(void);
std::vector<CRoue> &GetRoue(void);
std::vector<CVitre> &GetVitre(void);
std::vector<CVector3f> &GetPhare(void);
std::vector<CVector3f> &GetStop(void);
std::vector<CVector3f> &GetArr(void);
std::vector<CVector3f> &GetClign(void);
// ...
CVector3f &GetBodyAt(int);
CRoue &GetRoueAt(int);
CVitre &GetVitreAt(int);
CVector3f &GetPhareAt(int);
CVector3f &GetStopAt(int);
CVector3f &GetArrAt(int);
CVector3f &GetClignAt(int);

// Calculer le barycentre
CVector3f CalculateBaryC(void);
CVector3f CalculateBaryC(std::vector<CVector3f>&);

private :
CVector3f mTOri; // Orientation temporaire
CVector3f mBaryC; // Barycentre
std::vector<CVector3f> mBody; // Tableau de vertex du Body
std::vector<CRoue> mRoue; // Tableau de Roue
std::vector<CVitre> mVitre; // Tableau de Vitre
std::vector<CVector3f> mPhare; // Tableau de position de phare
std::vector<CVector3f> mStop; // Tableau de position de feu stop
std::vector<CVector3f> mArr; // Tableau de position de marche arrière
std::vector<CVector3f> mClign; // Tableau de position de Clignotant

protected :
};




Et la classe VM::CCar

CODE

class CCar : public VM::Mesh::CCar
{
public :
CCar();
virtual ~CCar();

// Pointeur
VM::Mesh::CRoue *pRoue;
VM::Mesh::CVitre *pVitre;
VM::Mesh::CCar *pCar;

// Fonction
bool SetCar(const std::vector<VM::Mesh::CCar>&);
bool SetCarAt(int, const VM::Mesh::CCar&);

std::vector<VM::Mesh::CCar> &GetCar(void);
VM::Mesh::CCar &GetCarAt(int);

bool AddCar(const std::vector<CVector3f>&,
const std::vector<VM::Mesh::CRoue>&,
const std::vector<VM::Mesh::CVitre>&,
const std::vector<CVector3f>&,
const std::vector<CVector3f>&,
const std::vector<CVector3f>&,
const std::vector<CVector3f>&);

private :
std::vector<VM::Mesh::CCar> mCar; // Tableau de voiture

protected :
};




Et là je suis en train d'essayé de coder les fonctions
VM::Mesh::CCar::CCalculateBaryC(std::vector<CVector3f>&);
et
VM::Mesh::CCar::CCalculateBaryC(void);

celle sans paramètre c'est pour calculer le barycentre du mBody du tableau VM::CCar::mCar indexé en 0 et affécté en mBaryC toujours du mCar[0].
et celle avec un paramètre c'est pour renvoyé un CVector3f du tableau en paramètre enfin bref.

Voilà ma fonction sans paramètre :

CODE

// Calculer le Barycentre
CVector3f VM::Mesh::CCar::CalculateBaryC(void)
{
// Declaration
CVector3f BC;
CVector3f temp;
VM::CCar car;
VM::Mesh::CCar mcar;
std::vector<VM::Mesh::CCar> tmcar;
std::vector<VM::CCar> tcar;
std::vector<CVector3f> tv;
// Initialisation
BC.Set(0.0f, 0.0f, 0.0f);
temp.Set(0.0f, 0.0f, 0.0f);
tmcar = car.GetCar();
mcar = tmcar[0];
tv = mcar.GetBody();
// Calculer
if((tmcar[0].GetBody()).empty()) // Si le tableau Body est vide
{
return CVector3f(0.0f, 0.0f, 0.0f);
tmcar[0].SetBarycentre(CVector3f(0.0f, 0.0f, 0.0f));
}
else // sinon
{
int i = tv.size();
for(int u = 0; u <= i; u++)
{
temp += tv[i];
}
BC = temp / i;
return BC;
tmcar[0].SetBarycentre(BC);
}
}




Et apparament j'ai une violation d'acces et on m'avais parlé d'iterator et j'ai pas trop bien compris et sur le net encore moi :S ... Enfin bref si quelqu'un aurai la gentiesse de me donné un peu de son temps pour me dire ce qui cloche sur mon code et pourquoi j'ai cette violation d'acces je suis aussi pres à entendre les critiques sur mes classes aussi ...


SKone le site
SK1-SKone Production-SK1
dimanche 31 octobre 2004 à 18:35:42 | Re : Calculer barycentre [std::vector]

djl


return BC;
tmcar[0].SetBarycentre(BC);

tmcar[0].SetBarycentre(BC); ne sera jamais executée

pour tes indices utilise plutot vector<...>::size_type (comme on utiliserais size_t)

et BC.Set(0.0f, 0.0f, 0.0f); -> BC.Set(0, 0, 0); (en c++)

mias tu pourrais etre plus precis ? la a priori rien d'anormal, ca plante ou et comment ? avant de parler d'iterateur, tu voudrais faire quoi avec ton vector ?
dimanche 31 octobre 2004 à 21:28:37 | Re : Calculer barycentre [std::vector]

skone007

Au passage :
mcar = tmcar[0];
ne pas marcher non plus violation d'acces
Mais le problème est plus vaste je m'embrouilles aves mes classes apparament...
Ces problèmes j'en est des tas comme ca qui sont en commentaire pour l'instant j'ai besoin d'un vrai coup de pouce enfin bref j'arrive pas à acceder au membre de mCar;
std::vector<VM::Mesh::CCar> mCar;
et dans VM::Mesh::CCar
y a d'autre tableau du type :
std::vector<CVector3f> mBody...
enfin ta vu ca je voudrais accedé a ces membres a partir de VM::CCar je voudrais pouvoir y acceder parce que je vais crée plusieurs voiture (VM::CCar) il sont pas tous le même body et tt ca enfin voilà je veux avoir :
mCar[0], mCar[1], ...
et a partir de ce tableau je voudrais accedé au membre de VM::Mesh::CCar... Je sais pas si je suis très claire :S

Dans mon Main j'ai crée des voitures comme ca :

// -------------------------------------
CVector3f _v;
std::vector<CVector3f> v;
CRoue _r;
std::vector<CRoue> r;
CVitre _vt;
std::vector<CVitre> vt;

_v.Set(0.0f, 0.0f, 0.0f);
_v.Set(1.0f, 0.0f, 0.0f);
_v.Set(0.0f, 1.0f, 0.0f);
_v.Set(0.0f, 0.0f, 1.0f);
_v.Set(0.0f, 0.0f, 0.0f);

std::vector<VM::Mesh::CCar> c;
c = car.GetCar();

v = car.GetBody();
v.push_back(CVector3f(0, 0, 0));
v.push_back(CVector3f(0, 0, 1));
v.push_back(CVector3f(0, 1, 0));
v.push_back(CVector3f(0, 1, 1));
v.push_back(CVector3f(1, 0, 0));
v.push_back(CVector3f(1, 0, 1));
v.push_back(CVector3f(1, 1, 0));
v.push_back(CVector3f(1, 1, 1));
v.push_back(CVector3f(2, 5, 2));

r = car.GetRoue();
roue.SetRoue(v);

vt = car.GetVitre();
r.push_back(roue);
vitre.SetVitre(v);
vt.push_back(vitre);

car.AddCar(v, r, vt, v, v, v, v);
car.AddCar(v, r, vt, v, v, v, v);
car.AddCar(v, r, vt, v, v, v, v);
// -------------------------------------
normalement avec ca mCar.size(); dois être 3 mais voilà des idées des methodes can you help me :( j'ai vraiment besoin d'aide ...


SKone le site
SK1-SKone Production-SK1
dimanche 31 octobre 2004 à 21:52:23 | Re : Calculer barycentre [std::vector]

djl

ouai en fait c'est pas facile à voir (je me perds dans tout tes noms)

dans tes methodes Get*, tu retourne un vector par reference, mais il existe bien dans le contexte d'appel ?


en passant, ne redefinie jamais operator= si tu n'as pas besoin de redefinir le destructeur (ou construteur de copie), le compilo le fais tres bien et ca fais une source potentiel de bug en plus
dimanche 31 octobre 2004 à 21:58:35 | Re : Calculer barycentre [std::vector]

skone007

Tu n'aurais pas MSN ca serait plus simple pour parler parce que là je suis desespérer ca fait quelque semaine que je suis sur ce prb d'acceder a ces membres et les Get quand je les utilises bien sur que ce qui doit être retourner existe ...

SKone le site
SK1-SKone Production-SK1
dimanche 31 octobre 2004 à 22:05:39 | Re : Calculer barycentre [std::vector]

djl

non désolé, et surtout j'ai pas trop le temps la :(

il te dis quoi le debuggeur sur ton access violation ?
lundi 1 novembre 2004 à 22:02:03 | Re : Calculer barycentre [std::vector]

skone007

Merci pour ta reponses je vais recommencer tout le projet parce qu'apparament j'ai un problème de stucture et d'organisation des classes ...
Merci quand même ...

SKone le site
SK1-SKone Production-SK1


Cette discussion est classée dans : const, vector, std, ccar, cvector3f


Répondre à ce message

Sujets en rapport avec ce message

Constructeur par parametre [ par pinkettee ] Bonjour, dans mon programme j'ai une erreur quelque part et je sais pas comment la corriger [CODE]class Feuille{ map titrefeuille; Classe Template - Probleme d'edition de lien [ par ano2345 ] Bonjour a tous,   <p class="MsoNormal" style="MARG Spécialisation des template [ par lglandeur ] Bonjour,J'ai une fonction template qui appartiens a une class (qui n'est pas template), et je souhaite spécialiser cette fonction pour le type std ::s comment instancier dynamiquement un "vector" [ par mohamed_bn ] Bonjour, J'aime construire une fonction qui retourne un vecteur d'entiers std::vector v; Pour pouvoir récupérer correctement ce tableau, normalement i exporter des objects STL et BOOST dans un DLL [ par bbking18 ] Bonjours, actuelement je travaille sur une petite biblioteque en c++, j'utilise des containeurs STL ( std::vector et std::set surtout ) et quelques ob [C++, flux et fichier]Charger un fichier dans un vector<char> [ par PhilipMorris ] Bonjour à tous![^^happy10] Débutant en c++, je cherche à charger les octets d'un fichier dans un " vector tableau ", de la taille du fichier donc. J Symbol extern non résolue [ par La Guite ] Bonjour,J'ai un projet en cours : une application win32 sous visual 9 et sous vista.J'ai une erreur de compile :1>Scene.obj : error LNK2019: unresolve Différence entre déclarations d'objet [ par skeleton18 ] Salut à toutes et à tous, Je ne suis pas vraiment un débutant en C++, mais j'ai une question de débutant... J'ai défini une classe Test comme ceci méthode virtuelle et std::vector [ par tch0utch0u2 ] Bonjour,J'ai un vector STL déclarer comme suit:vector m_vElement;auquel j'ajoute successivement des objets de classesderivées de ClasseDeBase.Lorsque tableau [ par ToToL ] Bonjour,j'ai un tableau créé de cette maniere :std::vector Pos;et a un moment j'ai besion d'en créé un autre qui doit etre une copie de Pos , quel es


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales