so dass im Grunde Ich habe eine überladene Funktion, die Norm zu berechnen:seltsames Verhalten für fuctions
double Szabo::norme(Gaussienne gaussienne, Atome atome) {
return sqrt(pow(gaussienne.GetX()-atome.x,2)+pow(gaussienne.GetY()-atome.y,2)+pow(gaussienne.GetY()-atome.y,2));
}
double Szabo::norme(Gaussienne gaussienneA, Gaussienne gaussienneB)
{
return sqrt(pow(gaussienneA.GetX()-gaussienneB.GetX(),2.0) + pow(gaussienneA.GetY()-gaussienneB.GetY(),2.0) + pow(gaussienneA.GetZ()-gaussienneB.GetZ(),2.0));
}
Gaussienne & Atom (Klasse & Struktur) ist wie folgt definiert:
Atome:
struct Atome
{
double x; double y; double z; double numeroAtomique;
};
Gaussienne:
#ifndef GaussienneHeader
class Gaussienne
{
protected:
// attributs
double alpha;
double coordX,coordY,coordZ;
public:
// methodes:
// Constructeurs:
Gaussienne();
Gaussienne(double alpha,double x, double y, double z);
// Accesseurs:
double GetAlpha() const; //return this->alpha
double GetX() const; //return this coordX
double GetY() const; // return this coordY
double GetZ() const; // return this coordZ
};
#define GaussienneHeader
#endif
Also jetzt will ich die Norm zwischen dem Zentrum von 2 Gaussi A & B, und das Atom in (0,0,0);
Ich erstelle ein „Platzhalter“ Gaußsche wie dies von der Mitte der Koordinate speichern des prevous zu
Gaussienne gaussienneP(0,(gaussienneA.GetX()+gaussienneB.GetX())/2.0,(gaussienneA.GetY()+gaussienneB.GetY())/2.0,(gaussienneA.GetZ()+gaussienneB.GetZ())/2.0);
, wenn ich dies nennen:
Szabo::norme(mygaussian,atome)
Ich habe anderes Ergebnis als beim Aufruf dies:
/* using this constructor: Gaussienne(double alpha,double x, double y, double z) with a dummy alpha = 0; */
Szabo::norme(mygaussian,Gaussienne(0,atome.x,atome.y,atome.z)
Fortunatly kann ich meine Ergebnisse mit einigen "Canon" -Programm vergleichen, so dass ich kn Dass die norme-Funktion mit den beiden Gaussianern die guten Ergebnisse liefert, ist die andere nicht.
Kann jemand mir und Erklärung bezüglich des seltsamen Verhaltens von diesem zur Verfügung stellen? Dank
lmao ich so dumm bin, danke bro. Ich sollte nicht um Mitternacht daran arbeiten;) – Devolution
Gern geschehen :) –
@devo das ist, warum Sie einen 'location' Typ schreiben,' operator-'darauf definieren, und' length_squared' und 'length' und skalar Division/Multiplikation. Testen Sie dann und schreiben Sie nicht mehr in die Mitte der anderen Logik. Weil Fehler einfach sind. – Yakk