Procházet zdrojové kódy

Fix for bug with improper magnitude returned of earth's field

submodule
T-bone před 7 roky
rodič
revize
1409ce82f6
1 změnil soubory, kde provedl 3 přidání a 3 odebrání
  1. 3
    3
      Modules/LemmaCore/src/EarthModel.cpp

+ 3
- 3
Modules/LemmaCore/src/EarthModel.cpp Zobrazit soubor

79
 		BMag = bfield.norm(  );
79
 		BMag = bfield.norm(  );
80
 	    BInc = std::acos (bfield.dot(Vector3r(0,0,1)) / BMag) ;
80
 	    BInc = std::acos (bfield.dot(Vector3r(0,0,1)) / BMag) ;
81
 	    BDec = std::acos (bfield.dot(Vector3r(1,0,0)) / BMag) ;
81
 	    BDec = std::acos (bfield.dot(Vector3r(1,0,0)) / BMag) ;
82
-		BFieldUnit = BField.array() / BMag;
82
+		BFieldUnit = BField / BField.norm();
83
  	}
83
  	}
84
 
84
 
85
 	void EarthModel::SetMagneticFieldIncDecMag(const Real &inc,
85
 	void EarthModel::SetMagneticFieldIncDecMag(const Real &inc,
104
 		BField(0) = BMag * cos(BInc*(PI/180.)) * cos(BDec*(PI/180.));
104
 		BField(0) = BMag * cos(BInc*(PI/180.)) * cos(BDec*(PI/180.));
105
 		BField(1) = BMag * cos(BInc*(PI/180.)) * sin(BDec*(PI/180.));
105
 		BField(1) = BMag * cos(BInc*(PI/180.)) * sin(BDec*(PI/180.));
106
 		BField(2) = BMag * sin(BInc*(PI/180.))  ;
106
 		BField(2) = BMag * sin(BInc*(PI/180.))  ;
107
-		BFieldUnit = BField.array() / BMag;
107
+		BFieldUnit = BField / BField.norm();
108
 	}
108
 	}
109
 
109
 
110
 	// ====================  INQUIRY       =======================
110
 	// ====================  INQUIRY       =======================
118
 	}
118
 	}
119
 
119
 
120
 	Vector3r EarthModel::GetMagneticFieldUnitVector() {
120
 	Vector3r EarthModel::GetMagneticFieldUnitVector() {
121
-		return this->BFieldUnit;
121
+		return BField/BField.norm();
122
 	}
122
 	}
123
 
123
 
124
 	Real  EarthModel::GetMagneticFieldMagnitude() {
124
 	Real  EarthModel::GetMagneticFieldMagnitude() {

Načítá se…
Zrušit
Uložit