-2
下面是我的代码示例,试图规范我的3点向量{5,5,5} 然而它运行时打印“正常化 - 失败”,有人可能会解释为什么它没有成功这样对我,所以我可能试图解决它?我想正常化一个向量,但我的代码返回失败?
#include <iostream>
#include "Geometry.h"
#include <math.h>
void Normalise()
{
TVector3 _krA;//vector/mag vector = answer x y z
{
_krA.m_fX = 5;
_krA.m_fY = 5;
_krA.m_fZ = 5;
}
TVector3 _rResultant;
{
_rResultant.m_fX = (_krA.m_fX * _krA.m_fX);
_rResultant.m_fY = (_krA.m_fY * _krA.m_fY);
_rResultant.m_fZ = (_krA.m_fZ * _krA.m_fZ);
}
float _fResultFinalMag = sqrt(_rResultant.m_fX + _rResultant.m_fY + _rResultant.m_fZ);
float _fresultXMag = (_krA.m_fX/_fResultFinalMag);
float _fresultYMag = (_krA.m_fY/_fResultFinalMag);
float _fresultZMag = (_krA.m_fZ/_fResultFinalMag);
float _fNormliseTestX = 0.577350;
float _fNormliseTestY = 0.577350;
float _fNormliseTestZ = 0.577350;
if (_fNormliseTestX == _fresultXMag && _fNormliseTestY == _fresultYMag && _fNormliseTestZ == _fresultZMag)
{
std::cout << "Normalise - Success" << std::endl;
}
else
{
std::cout << "Normalise - Failed" << std::endl;
std::cout << _fresultXMag << std::endl;
std::cout << _fresultYMag << std::endl;
std::cout << _fresultZMag << std::endl;
std::cout << _fResultFinalMag << std::endl;
}
}
如果你想用一个编译错误帮助,请注明你得到确切的编译错误(S)。 –
它运行良好,其实我不明白为什么代码返回失败 –
顺便说一句,你可能不希望[用'=='比较float值](https://isocpp.org/ wiki/faq/newbie#floating-point-arith) –