感谢您查看此内容。我为这种相当冗长的构建道歉,但我认为需要澄清一些事情。
我有一系列连接的原子,比如一种具有刚性键和键角的聚合物。通过刚性键,我们得到两个直接邻居之间的距离[例如。 2-3,3-4等等总是固定的并且键角[使用3个原子定义,例如。始终保持1-2-3]。我们可以自由地围绕扭转角旋转。通过该长度,角度和扭转角度相对于每个先前原子定义原子,这基本上允许我们通过设置坐标系来找到笛卡尔坐标。现在,如果我们想要对齐一对未与基本原子直接连接的原子,我们可以找到一个可以完成工作的旋转矩阵?例如,假设我们有10个原子,我们想在原子1,2和9,10之间定义一组新的内部坐标。原子9和10的空间位置是用原子6,7和8指定的内部坐标找到的。[距离8-9,角度7-8-9和扭转角度6-7-8-9和类似for atom 10]
现在,如果我们决定通过将距离定义为2-9并且角度1-2-9和二面角1-2-9-10来重新定向原子9和10,是否有办法找到旋转/变换矩阵将执行此重新排列而不会干扰其余原子的几何形状[即它将保持角度7-8-9,距离8-9和二面角6-7-8-9]。
提前感谢任何建议。
答案 0 :(得分:0)
虽然我有点困惑,但我会抓住它。听起来你有一组点,想要在某些位置固定一些点并保留组的空间关系时重新定向它们。如果您知道起始位置中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原子集是刚性的。