问题标签 [glm-math]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - glm 平移矩阵不平移向量
我在开始使用 glm 时遇到了一些非常简单的错误(在 VS2010 中)。我有这个短代码:
变换向量的结果与其原始值相同(1.f, 1.f, 1.f, 0.f)。我不知道我在这里缺少什么。我已经尝试过旋转矩阵并且工作正常,该点已正确转换。
好的,我发现了问题所在。我想翻译一个顶点而不是一个向量,在这种情况下,我必须将 w 值设置为 1。
c++ - 带有 std::tuple 数组的 std::array 不完整类型错误
我对 C++11 有一些奇怪的行为std::array
。当我尝试将其std::array<std::tuple<int, float>, 6> myTuples;
作为成员变量进行编译时,出现以下错误:
mingw32\4.7.2\include\c++\array:-1: In instantiation of 'struct std::array<std::tuple<int, float>, 6u>':
mingw32\4.7.2\include\c++\array:77: error: 'std::array<_Tp, _Nm>::_M_instance' has incomplete type
我不确定这是否会改变任何东西,但它所在的类是从另一个模板类派生的模板类。模板参数是unsigned int
一个确定std::array
基类中受保护的大小,我在派生类中引用它using Base<param>::m_array;
。派生类有多种glm::vec3/dmat4/quat
类型,并使用 OpenGL 固定函数glBegin(GL_QUADS);
的东西。我正在使用 SDL-1.2.15 创建 OpenGL 上下文。我认为其中大部分是无关紧要的,但也许不是。我可以粘贴代码,但一切都是相互关联的,所以它只能作为一个整体编译(分布在源之间大约有一千行左右)。
但是,当我在这个 ideone 示例中包含同一行时,在非常相似的情况下,它编译得非常好。我通过使用命令行在我的编译器上编译它来检查它不仅仅是我的编译器(MinGW g++ 版本 4.7.2)g++ -Wall -std=c++11
有谁知道为什么我可能会收到这些错误?之前我遇到了一些问题,编译器在解析std::array
赋值时崩溃(使用array = {{a,b,c}};
默认参数),但这次是编译器错误不会崩溃。
c++ - 将 glm::lookat 矩阵转换为四元数并返回
我正在使用 glm 创建一个相机类,并且我遇到了一些关于查看功能的问题。我使用四元数来表示旋转,但我想使用 glm 预先编写的查看函数来避免重复代码。这是我现在的查看功能:
但是,当我打电话时LookAt(0.0f,0.0f,0.0f)
,我的相机没有旋转到那个点。当我glm::eulerangles(rotation)
在查看调用后调用时,我得到一个具有以下值的 vec3:(180.0f, 0.0f, 180.0f)。position
是 (0.0f,0.0f,-10.0f),所以我根本不应该有任何旋转来查看 0,0,0。这是构建视图矩阵的函数:
为什么我没有得到正确的四元数,我该如何修复我的代码?
c++ - glm四元数lookat函数
我正在尝试根据这个答案编写一个使用 glm::quat 来表示旋转的lookat函数。但是,我在获得正确的角度时遇到了麻烦。这是我的查看功能:
当我的相机位于 (0.0f, 0.0f, -10.0f) 时调用 LookAt(0.0f, 0.0f, 0.0f),这会输出正确的旋转 0,0,0。但是,如果我将相机转换为 (0.0f, -0.01f, -10.0f) 或更多,我会得到大约 124,0,0 的旋转。如果我继续将 y 翻译为 -0.01f,这会下降。如果我不规范化四元数,我不会遇到这个问题。绕x轴旋转仍然是124,但外观很好。但是,如果我稍后对四元数进行归一化,它似乎再次旋转到大约 124。我无法归一化cross
,因为这样做会引发断言。什么会导致我从我的查看函数中得到关于 x 的 124 欧拉角,我该如何解决?
c++ - 为什么 GLM 构造函数都是显式的?
我已经开始在我的代码中使用 GLM 库。看起来不错,但我不能做这样的事情:
因为构造函数都是显式的。
这开始惹恼我了。我想不出一个很好的理由来禁止这种简单值类型的隐式构造。作者是否盲目地遵循了一些不相关的格言,或者他们知道我不知道的事情?
c++ - 使用 glm 沿四元数平移相机
我正在尝试沿 glm::quat 中定义的方向转换相机的位置。
当旋转是身份四元数时,这很好用。当旋转是其他东西时,X 和 Z 平移不起作用。当相机向左旋转 45 度并且我打电话TranslateCameraAlongZ(-0.1f)
时,当我应该向后和向右移动时,我被向后和向左平移。所有不是完美 90 度增量的翻译都同样混乱。我在这里做错了什么,最简单的解决方法是什么?如果它们可能相关,这里是生成我的视图矩阵的函数和旋转我的相机的函数:
opengl - 使用正交相机进行拾取/射线投影
我的代码中有一个“简单”的问题,当我的相机处于透视模式时可以完美地选择工作,但是当我处于正交模式时结果很奇怪。
这是我所做的:
射线计算听起来不错,因为我可以选择对象。
这是我对结果所做的事情:
当我做最后一步时,这就是我所拥有的:
没有归一化方向:
- 在正交相机中还可以
- 不要在透视相机中工作
归一化方向:
- 不要在透视相机中工作
- 在正交相机中还可以
c++ - glm 和 cxx-prettyprint,clang:调用在模板定义中不可见的函数'operator <<'
有人一起使用这些库吗?cxx-prettyprint和glm。我遇到了一个很难弄清楚的编译时问题。
如果您对“SUITE”和“TEST”感到困惑,那是因为这段代码使用UnitTest++
.
Math.h 中有:
这是错误:
c++ - 使用扫掠 AABB 相交算法解决碰撞法线
所以我有以下扫过的 AABB 碰撞检测算法工作得很好而且花花公子(基于这篇文章)
我的问题是如何确定碰撞法线,或者换句话说,碰撞的盒子的aabb0
一侧aabb1
?
我在谷歌上找了高低都无济于事。我需要碰撞的法线,以便确定碰撞后如何“滑动” aabb0
。(aabb0
是玩家的边界框,aabb1
是世界某处的静态块)。
aabb0
是玩家的边界框。
d0
是 的位移aabb0
。
aabb1
是世界上的一个静态方块。
d1
是aabb1
(始终为 0)的位移。
u0
是第一次和u1
最后一次碰撞时间。
c++ - OpenGL形状不渲染
我正在尝试在 OpenGL 中渲染一个球体。不幸的是,屏幕总是只显示背景。我尝试重新定位相机无济于事(尽管我可能做错了)。任何见解将不胜感激。
这是 OpenGL 调用来更新屏幕的函数:
以及 Ship 的定义: