使用GLM获取矢量长度


14

我对GLM库的行为感到困惑,或者我使用不当。

glm::vec2 testVec(6,-4);

float len = testVec.length();

我得到了2上面的代码片段的值。我相信我正在尝试获取由定义的向量的长度testVec。您很清楚这不是向量的正确长度。我在这里想念什么?

Answers:


15

抱歉让您发布如此琐碎的问题!问题已解决。我使用了错误的功能。这里是正确的:

glm::vec2 testVec(6,-4);
float len  = glm::length(testVec);

具有相同名称的成员函数将返回组件的数目(即,vec2::length将始终屈服2vec3::length将始终屈服3等)。


7
道歉,我认为这是一个公平的问题,因为在这里看到GLM的功能命名颇有误导性。我希望这将在将来成为有用的(简洁的)参考。
马丁·恩德

3
@MartinEnder并非犯有GLM的罪恶:GLSL规范规定了这种混淆的存在:存在一个length(vecN)自由函数,其返回vecN,和vecN.length()方法的范式,返回的维vecN。请参见§5.5 矢量和标量分量以及 GLSL 4.60规范的长度
罗斯兰
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.