gltranslatef glrotate error?
gltranslatef glrotate error?
我正在绘制一个立方体,我想在它自己的 3 轴上移动它(而不是来自基本坐标的立方体)。立方体永远不会位于原点上,这就是为什么我需要使用 glTranslatef() 函数。
我不明白:
当我在其 y 轴上旋转立方体时,一切正常。当我尝试在其 x 轴上旋转它时,它无法正常工作:它开始在我的屏幕上移动并且不会停留在其位置。
工作正常:(我的立方体在自己的位置上旋转,同时保持自己的位置(0,0.5,0))
glTranslatef(0, 0, 0);
glRotatef(getCubeAngle(), 0.0f, 1.0f, 0.0f);
glTranslatef( 0.5, 0, 0.0);
无法正常工作:(立方体沿自己的轴旋转 + 立方体开始沿 x 轴在我的屏幕上移动)
glTranslatef(0, 0, 0);
glRotatef(getCubeAngle(), 0.0f, 1.0f, 0.0f);
glTranslatef( 0.5, 0, 0.0);
/*glTranslatef( 0.0, 0.5, 0.0); with this line instead it works well*/
为什么?
旋转矩阵将始终使用(当前)原点作为旋转的中心。当你想绕不同的点旋转时,你需要先平移,使枢轴点成为局部原点。
我不知道你的立方体在对象空间中实际上有什么坐标,所以我不知道中心到底在哪里。但是从你的描述中可以得出中心不在(-0.5,0,0),你目前将其用作旋转中心。请记住,翻译的顺序与您可能期望的顺序相反。代码首先按 (0.5,0,0) 进行转换,然后旋转。
我的猜测是,你的立方体实际上已经以原点为中心,你只是得到了变换的顺序。
相关文章:
- "error: no matching function for call to"构造函数错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 使用 LuaBridge 将 LuaJIT 绑定到C++会导致"PANIC: unprotected error"
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- C++错误:"error: int aaa::bbb is protected within this context"
- 尝试链接我的着色器时,我收到错误代码"error c5145 must write to gl_position"
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 使用 cmake 的 LLVM 构建在 tsan_libdispatch_mac.cc 期间失败; "Error: conflicting types for ..."
- C++ "error: invalid use of void expression"
- struct.error:解压缩 C++ 结构时,解包需要 288 字节的缓冲区
- 如何修复"error: ‘_1’ was not declared in this scope"?
- 从不同目录执行时"symbol lookup error:",否则从构建目录执行时按预期工作
- 对象声明中的模板"error: expected expression"
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- OpenCV 3.4.1 error readNetFromTensorflow 无法在 cv::d nn::ReadProtoFromBinaryFile 中打开 .pb
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- 为什么我会"error: expected expression"?
- CMake Error at modules/videoio/cmake/detect_ffmpeg.cmake:16
- 如果两个静态库使用相同的另一个静态库,如何避免"LNK2005 Already Defined error"?
- gltranslatef glrotate error?