三维物体绕任意轴的旋转

xiongzm 2008-06-18 05:11:28
最近碰到的问题是:对一系列的点绕任意轴旋转,求旋转后的坐标。
比如简单一点的:绕过原点的一直线旋转,要经过几次旋转变换得到,写起来比较麻烦。
有什么库函数实现这个功能吗,多谢!

OpenGL库中有这样的函数吗?我的输入是一系列点的坐标,希望输出得到变换后的坐标。
...全文
782 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
youxia000 2008-07-14
  • 打赏
  • 举报
回复
不好意思 我没用opengl

最近学习了下 你可以 看看 glRotate()
youxia000 2008-06-24
  • 打赏
  • 举报
回复
做过这个,没有法线现成的东西

自己写的矩阵变换,

一般要分三步,

先把要旋转的轴转到 与Z轴重合M1, 对Z轴做旋转Mz, 把旋转轴从Z轴转回来 M1(-1)
carfieldlee 2008-06-20
  • 打赏
  • 举报
回复
这几天也在整这个
绕任意轴n旋转角度θ的变换矩阵

cosTheta = cos(θ);
sinTheta = sin(θ);
nx,ny,nz为 轴n的向量标准化后三个分量

Matri4D matrix(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1); //初始化

matrix[0][0] = nx * nx * ( 1 - cosTheta ) + cosTheta;
matrix[0][1] = nx * ny * ( 1 - cosTheta ) + nz * sinTheta;
matrix[0][2] = nx * nz * ( 1 - cosTheta ) - ny * sinTheta;
matrix[1][0] = nx * ny * ( 1 - cosTheta ) - nz * sinTheta;
matrix[1][1] = ny * ny * ( 1 - cosTheta ) + cosTheta;
matrix[1][2] = ny * nz * ( 1 - cosTheta ) + nx * sinTheta;
matrix[2][0] = nx * nz * ( 1 - cosTheta ) + ny * sinTheta;
matrix[2][1] = ny * nz * ( 1 - cosTheta ) - nx * sinTheta;
matrix[2][2] = nz * nz * ( 1 - cosTheta ) + cosTheta;

4,448

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧