连接点链和旋转矩阵
感谢您查看此内容。我为这个相当冗长的积累表示歉意,但我认为有必要澄清一些事情。
我有一条相连的原子链,比如说具有刚性键和键角的聚合物。对于刚性键,我们得到的条件是两个直接邻居之间的距离[例如。 2-3,3-4等]总是固定的并且键角[使用3个原子定义,例如。 1-2-3]始终保持不变。我们确实可以自由地围绕扭转角旋转。原子是通过这个长度、角度和扭转角相对于每个先前的原子来定义的,这基本上允许我们通过建立坐标系来找到笛卡尔坐标。现在,如果我们想要对齐一对不直接连接到提供新方向的基础原子的原子,我们能找到一个可以完成这项工作的旋转矩阵吗?
例如,假设我们有 10 个原子,并且想要在原子 1,2 和 9,10 之间定义一组新的内坐标。使用原子 6、7 和 8 指定的内坐标找到了原子 9 和 10 的空间位置。[距离 8-9、角度 7-8-9 和扭转角 6-7-8-9 等对于原子 10]
现在,如果我们决定通过将距离定义为 2-9、角度 1-2-9 和二面角 1-2-9-10 来重新定向原子 9 和 10,有没有办法找到旋转/变换矩阵将执行此重新排列而不干扰其余原子的几何形状[也就是说,它将保留角度 7-8-9、距离 8-9 和二面体 6-7-8-9]。
预先非常感谢您的任何建议。
Thanks for looking at this. I apologize for this rather lengthy build-up but I thought it is needed to clarify things.
I have a chain of connected atoms, say a polymer which has rigid bonds and bond angles. With rigid bonds we get the condition that the distance between two immediate neighbours [eg. 2-3,3-4,etc.] is always fixed and the bond angles [defined using 3 atoms, eg. 1-2-3] are always maintained. We do have freedom to rotate around the torsion angles. The atoms are defined with respect to each previous atom by this length, angle and the torsion angle and that basically allows us to find the Cartesian coordinates by setting up a coordinate system. Now, if we want to align a pair of atoms which are not directly connected to the base atoms with respect to which the new orientations are supplied can we find a rotation matrix that can do the job?
For example, imagine that we have 10 atoms and we want to define a new set of internal coordinates between atoms 1,2 and 9,10. The locations in space of atoms 9 and 10 have been found using the internal coordinates specified by atoms 6, 7 and 8. [Distance 8-9, angle 7-8-9 and the torsion angle 6-7-8-9 and similarly for atom 10]
Now if we decide to reorient atoms 9 and 10 by defining a distance as 2-9 and the angle 1-2-9 and the dihedral angle 1-2-9-10, is there a way to find a rotation/transformation matrix that will perform this realignment without disturbing the geometry of the rest of the atoms [that is it will preserve the angle 7-8-9, distance 8-9 and dihedral 6-7-8-9].
Thanks a lot in advance for any advice.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
虽然我有点困惑,但我会尝试一下。听起来您有一组点,并且想要重新定向它们,同时在某些位置修复一些点并保留组的空间关系。如果您知道起始位置的 4 个点的坐标及其在目标位置的坐标,则可以将这些点 (x,y,z,1) 作为列放入 4x4 矩阵 S 中。将目标坐标放入另一个矩阵中矩阵 D。然后你求解 D = MS,其中 D 是目的地,S 是源,M 是将你从 S 带到 D 的变换。所以我们右乘 S~(逆)得到 M = DS ~。
另一方面,我建议您永远不要在此类事情上使用角度。如果要限制原子 4-5-6 之间的角度为某个值,更好的表示方法是存储点积 d = (4-5)*(6-5)。当然,这假设距离不变并且 3 个原子组是刚性的。
While I'm a bit confused, I will take a stab at it. It sounds like you have a set of points and want to reorient them while fixing some in certain locations and preserving the spatial relationships of the group. If you know the coordinates of 4 points in the starting location and their coordinates in the destination location, you can just put those points (x,y,z,1) as columns in a 4x4 matrix S. You put the destination coordinates in another matrix D. Then you solve D = MS where D is the destination, S is the source, and M will be the transformation that takes you from S to D. So we right-multiply by S~ (inverse) to get M = DS~.
On another note, I would recommend that you never use angles for this type of thing. If you want to make a constraint that the angle between atoms 4-5-6 is a certain value, a much better representation is to store the dot product d = (4-5)*(6-5). This of course assumes the distances are not variable and the 3 atom set is rigid.