@Blastfurnace 提供了正确的下载地址。但我还是有话要说。
请使用 glm 而不是vmath.h
: http: //glm.g-truc.net/0.9.5/index.html
我使用vmath.h
并发现了大量的错误。运算符的某些定义会导致递归函数调用和堆栈溢出。半径和度数之间的转换也是相反的。
第 11 行:
template <typename T>
inline T radians(T angleInRadians)
{
return angleInRadians * static_cast<T>(180.0/M_PI);
}
第 631 行:
static inline mat4 perspective(float fovy /* in degrees */, float aspect, float n, float f)
{
float top = n * tan(radians(0.5f*fovy)); // bottom = -top
float right = top * aspect; // left = -right
return frustum(-right, right, -top, top, n, f);
}
显然,正切函数接受弧度输入,但函数“弧度”将弧度转换为度数。
第 137 行:
inline vecN& operator/=(const vecN& that)
{
assign(*this * that);
return *this;
}
它应该是除法而不是乘法:assign(*this / that)
。
第 153 行:
inline vecN& operator/(const T& that)
{
assign(*this / that);
}
看?运算符'/'的递归调用。至少在 Xcode 中,这会导致堆栈溢出。
这些错误让我很恼火,而 glm 库提供了几乎相同的功能,但代码更稳定。我强烈建议您使用 glm 而不是当前的 buggy vmath.h
。也许当所有这些错误都被修复后,一个简单的vmath.h
将是一个更好的选择,而你现在需要放弃。