谢谢你看这篇文章。我为这个相当冗长的构建道歉,但我认为有必要澄清一些事情。
我有一个相互连接的原子链,比如说聚合物,它有刚性的键和键角。对于刚性键,我们得到了两个紧邻之间的距离,例如。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。
在此之前,非常感谢您的建议。
发布于 2009-12-16 23:40:24
在我有点困惑的时候,我会试一试。这听起来像是你有一组点,并且想要重定向它们,同时在某些位置固定一些,并保留组的空间关系。如果你知道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原子集是刚性的。
https://stackoverflow.com/questions/1878194
复制相似问题