为了账号安全,请及时绑定邮箱和手机立即绑定

转换刚性变换,使旋转中心不是原点

转换刚性变换,使旋转中心不是原点

qq_花开花谢_0 2022-12-14 20:32:11
给定一个旋转矩阵R,使某个点c(新的旋转中心)在变换 下不变y = R * c,即改变R使旋转中心位于c而不是原点的等效变换是什么。一个限制是我不能对要使用的实际矢量进行操作,只能编辑原始转换(这是因为那部分埋在外部库中,我无法更改它)。我有一些有用的东西,但它违反了上述限制:import numpy as np# R is a given rotation matrix, v is an arbitrary vector and cen is the desired centertheta = np.pi / 2cen = np.array([0.5, 0.5])v = np.array([0, 0])R = Rot(theta) # ordinary rotation matrixy = R @ (v - center ) + cen # y = [0, 1] which is the expected result since we have a right angle triangle # with vertices at (0, 0) (0.5, 0.5) and (0, 1)我也尝试实现类似于此处的计算,但我得到的结果不正确我怎样才能获得相同的结果但保持形式y = R*v(或使用刚性 transform y = R*v + t)但v不像我那样改变?
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

在写这个问题时,我想到了(显而易见的)解决方案,它只是扩展我之前写的解决方案并重新排列。如果有人也需要这个,新的转换应该是:

y = R_new*v + t_new

其中R_new = R,t_new = (I - R)*cenI是恒等式。


查看完整回答
反对 回复 2022-12-14
  • 1 回答
  • 0 关注
  • 63 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信