- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试让生成的几何图形与方向 vector 对齐。为了说明我当前的问题是什么:
我当前针对这个三角形示例的代码解决方案(此代码针对您在屏幕上看到的所有节点从拆分开始运行,我使用的是 GLM 数学库):
glm::vec3 v1, v2, v3;
v1.x = -0.25f;
v1.z = -0.25f;
v2.x = 0.25f;
v2.z = -0.25f;
v3.x = 0.0f;
v3.z = 0.25f;
v1.y = 0.0f;
v2.y = 0.0f;
v3.y = 0.0f;
glm::mat4x4 translate = glm::translate(glm::mat4x4(1.0f), sp.position);
glm::mat4x4 rotate = glm::lookAt(glm::vec3(0.0f, 0.0f, 0.0f), sp.direction, glm::vec3(0.0f, 1.0f, 0.0f));
v1 = glm::vec4(translate * rotate * glm::vec4(v1, 1.0f)).swizzle(glm::comp::X, glm::comp::Y, glm::comp::Z);
v2 = glm::vec4(translate * rotate * glm::vec4(v2, 1.0f)).swizzle(glm::comp::X, glm::comp::Y, glm::comp::Z);
v3 = glm::vec4(translate * rotate * glm::vec4(v3, 1.0f)).swizzle(glm::comp::X, glm::comp::Y, glm::comp::Z);
A点的方向 vector 值:
B点的方向 vector 值:
编辑 1(24/11/2013 @ 20:36):A和B没有任何关系,都是分开生成的。生成 A 或 B 时,仅知道位置和方向。
我一直在查看此处发布的解决方案:
但我无法成功旋转我的几何图形以与我的方向 vector 对齐。我觉得我在做一些相当基本的错误。
如有任何帮助,我们将不胜感激!
最佳答案
如果 A
和 B
是单位 vector ,并且您需要一个旋转矩阵 R
来转换 B
以便它与 A
对齐,然后开始计算 C = B x A
(B
和 A
). C
是旋转轴,arcsin(|C|)
是必要的旋转角度。
您可以从中构建所需的旋转矩阵。看起来glm
已经支持这个了,我就不多解释了。
注意如果你在性能关键代码中做很多很多这样的事情,你可以通过注意 |C| 来提高一点速度= sin(theta), sqrt(1 - |C|^2) = cos(theta)
并使用这些已知的 sin(theta)
和 值自行计算矩阵余弦(θ)
。例如,请参见 this discussion . glm
例程将采用您的角度 arcsin(|C|)
并立即着手计算其 sin
和 cos
,这是一个小浪费,因为您已经知道这些并且操作相对昂贵。
如果旋转是围绕原点以外的某个点p
,则令T
是将p
带到原点的平移,并找到 X = T^-1 R T
。此 X
将是您想要的转换。
关于c++ - 旋转几何以对齐方向 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20177506/
我是一名优秀的程序员,十分优秀!