我正在尝试实现几何模板引擎。其中一个部分是采用原型多边形网格并将实例与较大对象中的一些点对齐。
所以,问题是这样的:给定多边形网格中某些(可能是全部)顶点的 3d 点位置,找到一个缩放旋转,以最小化变换后的顶点和给定点位置之间的差异。如果有帮助,我还有一个可以保持固定的中心点。顶点和 3d 位置之间的对应关系是固定的。
我认为这可以通过求解变换矩阵的系数来完成,但我有点不确定如何构建系统来解决。
这方面的一个例子是立方体。原型将是单位立方体,以原点为中心,具有顶点索引:
4----5
|\ \
| 6----7
| | |
0 | 1 |
\| |
2----3
适合的顶点位置示例:
- v0: 1.243,2.163,-3.426
- v1: 4.190,-0.408,-0.485
- v2:-1.974,-1.525,-3.426
- v3:0.974,-4.096,-0.485
- v5:1.974、1.525、3.426
- v7:-1.243,-2.163,3.426
那么,给定原型和那些点,我如何找到单个比例因子,以及关于 x、y 和 z 的旋转,这将最小化顶点和这些位置之间的距离?最好将该方法推广到任意网格,而不仅仅是立方体。