社区
机器视觉
帖子详情
三维物体绕任意轴的旋转
xiongzm
2008-06-18 05:11:28
最近碰到的问题是:对一系列的点绕任意轴旋转,求旋转后的坐标。
比如简单一点的:绕过原点的一直线旋转,要经过几次旋转变换得到,写起来比较麻烦。
有什么库函数实现这个功能吗,多谢!
OpenGL库中有这样的函数吗?我的输入是一系列点的坐标,希望输出得到变换后的坐标。
...全文
815
3
打赏
收藏
三维物体绕任意轴的旋转
最近碰到的问题是:对一系列的点绕任意轴旋转,求旋转后的坐标。 比如简单一点的:绕过原点的一直线旋转,要经过几次旋转变换得到,写起来比较麻烦。 有什么库函数实现这个功能吗,多谢! OpenGL库中有这样的函数吗?我的输入是一系列点的坐标,希望输出得到变换后的坐标。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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;
三维
坐标点
绕
任意
轴
旋转
的新坐标计算
任意
轴
可以用一个起点一个方向向量来表示。那么
绕
任意
轴
旋转
就可以先将此
轴
移到通过原点,然后再
旋转
,再将
旋转
完的新坐标做反向平移。 则问题化为 计算
绕
通过原点的向量
旋转
任意
角度后的新点。假设单位向量为(rx,ry,rz),那么
旋转
矩阵如下: 写成函数如下: void Rotate_Point3D(float theta, float nx, float ny, float nz,
UE4实现
物体
绕
任意
轴
旋转
1.功能描述:已知向量a(要
旋转
的
物体
的前方向量),
旋转
轴
单位向量^n,
旋转
角度θ。使a向量
绕
^n
旋转
到a'。在Tick中,使θ递增,达到a
旋转
的效果。 如上图,以^n为一条
轴
建立
三维
坐标系(n,b,c),可知n+b=a,n+c=a'。 叉乘和点乘:点乘的符号用“ · ”表示,叉乘的符号用“ × ”表示。 公式:a' = (a · ^n) * ^n + (a × ^n) * sinθ + (a - (a · ^n) * ^n) * cosθ (事先推导过) 2.蓝图实现 ...
三维
空间的
绕
轴
旋转
变换
最近在看文献的时候看到作者有用到
三维
绕
轴
变换。我看了好久都没摸清他的矩阵是怎么得到的。待我提笔一画,妈呀,果然这脑子是废了,这么easy的问题都他么的解不出来。既然脑子废了那手还是勤劳点把。叹气。唉,,猪生艰难。。。我只想过吃完就睡睡完就吃的生活啊!为什么要这么torture我。咳,言归正传。 首先出一个清晰的问题让你知道这个博客是在讲什么? 如下,这是一个
三维
坐标(没错就是右手坐标系),然后...
三维
空间中
绕
任意
轴
旋转
的罗德里格斯公式Matlab实现。
在这个修改后的版本中,我们使用 `cross` 函数来代替手动构造交叉矩阵的方法。`cross` 函数接受两个向量作为输入,并返回它们的叉乘结果。注意,`cross` 函数在Matlab中返回的是叉乘结果向量,而不是交叉矩阵。使用这个函数,您可以更简洁地实现罗德里格斯
旋转
公式。这段代码将输出
绕
指定
轴
旋转
指定角度后的点向量。% 计算
旋转
角度的正弦和余弦值。% 定义
旋转
轴
,
旋转
角度和待
旋转
的点。% 计算
旋转
矩阵的偏置部分。% 计算
旋转
矩阵的交叉部分。
三维
空间
绕
坐标
轴
的
旋转
变换
三维
空间中的
旋转
变换比二维空间中的
旋转
变换复杂。除了需要指定
旋转
角外,还需指定
旋转
轴
。
若以坐标系的三个坐标
轴
x,y,z分别作为
旋转
轴
,则点实际上只在垂直坐标
轴
的平面上作二维
旋转
。此时用二维
旋转
公式就可以直接推出
三维
旋转
变换矩阵。
规定在右手坐标系中,
物体
旋转
的正方向是右手螺旋方向,即从该
轴
正半
轴
向原点看是逆时针方向。
绕
X
轴
绕
Y
轴
机器视觉
4,499
社区成员
15,352
社区内容
发帖
与我相关
我的任务
机器视觉
图形图像/机器视觉
复制链接
扫一扫
分享
社区描述
图形图像/机器视觉
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章