Point Point::operator+(Vecteur &vecteur2) const // Somme vectorielle { assert(dim()==vecteur2.dim() && ( (ref() && vecteur2.ref()) || (!ref() && !vecteur2.ref()) )); if(ref()) { vecteur2.changerDeReferentiel(ref()); } Point res(*this); for(int i=0 ; i<dim() ; i++) { res[i] += vecteur2[i]; } return res; }
void Point::changerDeReferentiel(Referentiel* newRef) { if( ref_ && (ref_ != newRef) ) { // Les deux origines sont exprimées dans le référentiel de référence Vecteur entreOrigines = ref()->origin() - newRef->origin(); entreOrigines.changerDeReferentiel(newRef); if(!estNul()) { Vecteur::changerDeReferentiel(newRef); } *this += entreOrigines; setRef(newRef); } }