- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为使用四元数和 Angle-Axis 的 OpenGL 编写相机类。我设法制作了一个水平旋转功能(这很容易),但我无法编写一个工作功能来垂直旋转它。我所有的尝试都以相机旋转结束, hell 知道什么方向...我需要一个公式或代码如何实现我的垂直旋转功能(pitchTurn() 在我的代码中)。
Here is my current code:
void Camera::yawTurn(const float& angle){
rotate(angle, 0.0f, 1.0f, 0.0f);
}
void Camera::pitchTurn(const float& angle){
// need code here
}
void Camera::rotate(const float& angle, const float& x, const float& y, const float& z){
Quaternionf t;
t.fromAxisAngle(angle, x, y, z);
q_ *= t;
q_.normalize();
}
我也想知道是否有更好的方法在不使用 Angle-Axis 的情况下使用四元数进行旋转。
最佳答案
最有可能的问题是旋转顺序。
四元数乘积 q * r,当被视为两个组合旋转时,按 r、q 的顺序应用于变换后的顶点。
现在,如果您想围绕全局 Y 轴转动相机(该轴不依赖于相机方向),您必须乘以 t * q。如果您想围绕局部 Y 轴转动相机(该轴是根据相机方向指定的 - 如果您直视下方,则您的“向上” vector 位于 XZ 平面内,即 Y 坐标为 0),你必须乘以 q * t。
典型的相机控件围绕全局 Y 轴和局部 X 轴旋转。所以你应该制作两个函数,preRotate 和 postRotate(或本地/全局),在 yawTurn 中使用全局(pre)版本,在 yawTurn 中使用本地(在 pitchTurn 中发布。
关于c++ - 垂直转动相机(使用角度轴旋转),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4531352/
如何将“off”指令应用于指定处理程序? 例如 var $btn = $("#theBtn"); var namedHandler = $btn.on("click", function() { //
我正在尝试使用以下标记设计一个 Breadcrumb 组件; Home Home Users 我正在分离 使用 ::pseu
我在使用以下代码时遇到问题。 import urllib2 import csv from bs4 import BeautifulSoup soup = BeautifulSoup(urllib2.
我是一名优秀的程序员,十分优秀!