У меня есть векторный класс в C # (фрагмент ниже). Моя проблема в том, что когда я вызываю GetMagnitude (), он всегда возвращает 0.0f - даже при работающем отладчике, и я проверяю, что Sq имеет допустимое значение, как только он возвращается в другую функцию (например: Normalize ()) он вернул 0.0f. Может кто-нибудь объяснить это и помочь мне это исправить? Я предполагаю, что это как-то связано с преобразованием double-> float, но я просто не могу понять это.
public class float3
{
public float x;
public float y;
public float z;
public float GetMagnitude()
{
float SumSquares = (float)( Math.Pow(x, 2) + Math.Pow(y, 2) + Math.Pow(z, 2));
float Sq = (float)Math.Sqrt(SumSquares);
return Sq;
}
public void Normalize()
{
float inverse = 1.0f / GetMagnitude();
x *= inverse;
y *= inverse;
z *= inverse;
}
}