我试图遵循一个代数方程,并将其转换为c ++。
我坚持:
Calculate the radius as r = ||dp||
其中dp是向量,并且:
dp = (dx,dy)
根据我的谷歌搜索,r = || dp ||中的竖线 意味着我需要归一化向量。
我有:
std::vector<double> dpVector;
dpVector.push_back(dx);
dpVector.push_back(dy);
我应该如何对此进行规范化,使其返回双精度的“ r”?
您可能正在寻找欧几里得范数,它是向量的几何长度和标量值。
double r = std::sqrt(dx*dx + dy*dy);
与此相反,向量的归一化表示相同的方向,其长度(其欧氏范数;)设置为1。这又是向量。
固定维的矢量对象(尤其是低维的矢量对象)适合表示为类类型。
一个简单的例子:
namespace wse
{
struct v2d { double x, y; };
inline double dot(v2d const &a, v2d const &b)
{
return a.x*b.x + a.y*b.y;
}
inline double len(v2d const &v) { return std::sqrt(dot(v,v)); }
}
// ...
wse::v2d dp{2.4, 3.4};
// ... Euclidean norm:
auto r = len(dp);
// Normalized vector
wse::v2d normalized_dp{dp.x/r, dp.y/r};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句