(二)
前一阵子做了个虚拟力(VFA)的算法,这个算法目前解决包容(packet)和覆盖(covering)问题,具有无可比拟的优势。所以突然想到同样可以将这个东西用在物体的三维重构上。好处当然不用说了,通用性强、不需要考虑千奇百怪的情况、随着算法不同的参数设置可以得到自己觉得合理的重构图等等。
先简单的说说VFA算法。如果一小堆粗砂(颗粒大小差异比较大)放在筛子里,然后左右晃动筛子。一段时间后会发现颗粒比较大的小石块分布在上层,而比较细的沙子在下层。我们暂时理解那些颗粒大的为算法最终求的较优解,这样这些比较优的解最终就出来了。试想假如我们利用传统的数值优化算法在这许多离散的小沙子里找较优解,效率往往是非常低的,很多这类问题归结为NP问题或是NP-hard问题。所以大自然就是这么强大,利用沙子自身的形状和重力及颗粒间的相互作用力轻松的得到了解决方案。VFA就是设置物体的一些属性,然后模仿自然力关系,最终得到期望的结果。
VFA应用于重构问题时大致有两种方案可以参考:一是同样是利用一小块一小块的许多小碎片贴在物体表面,完成重构。另一种是用一整块图形来紧紧包裹物体,最终实现重构。
明显的第二种方法不需要考虑无缝覆盖的问题。
两种算法的关键是如何设置对象的力作用,总的来说有以下几种力需要设置(以第一种为例):
1,需要在物体的几何中心(通常是几何中心,不排除例外情况)设置一个吸引力源。
2,在待重构的物体表面点设置外法向的排斥力(当碎片在外部时)及外法向的吸引力(当碎片在内部时)。
3,小碎片间的切向排斥力。具体方向和其质心相关。
4,小碎片的旋转能力所需要的力矩设置。
5,最终算法停止时小碎片的弯曲力,即可折叠能力。
(二)
前一阵子做了个虚拟力(VFA)的算法,这个算法目前解决包容(packet)和覆盖(covering)问题,具有无可比拟的优势。所以突然想到同样可以将这个东西用在物体的三维重构上。好处当然不用说了,通用性强、不需要考虑千奇百怪的情况、随着算法不同的参数设置可以得到自己觉得合理的重构图等等。
先简单的说说VFA算法。如果一小堆粗砂(颗粒大小差异比较大)放在筛子里,然后左右晃动筛子。一段时间后会发现颗粒比较大的小石块分布在上层,而比较细的沙子在下层。我们暂时理解那些颗粒大的为算法最终求的较优解,这样这些比较优的解最终就出来了。试想假如我们利用传统的数值优化算法在这许多离散的小沙子里找较优解,效率往往是非常低的,很多这类问题归结为NP问题或是NP-hard问题。所以大自然就是这么强大,利用沙子自身的形状和重力及颗粒间的相互作用力轻松的得到了解决方案。VFA就是设置物体的一些属性,然后模仿自然力关系,最终得到期望的结果。
VFA应用于重构问题时大致有两种方案可以参考:一是同样是利用一小块一小块的许多小碎片贴在物体表面,完成重构。另一种是用一整块图形来紧紧包裹物体,最终实现重构。
明显的第二种方法不需要考虑无缝覆盖的问题。
两种算法的关键是如何设置对象的力作用,总的来说有以下几种力需要设置(以第一种为例):
1,需要在物体的几何中心(通常是几何中心,不排除例外情况)设置一个吸引力源。
2,在待重构的物体表面点设置外法向的排斥力(当碎片在外部时)及外法向的吸引力(当碎片在内部时)。
3,小碎片间的切向排斥力。具体方向和其质心相关。
4,小碎片的旋转能力所需要的力矩设置。
5,最终算法停止时小碎片的弯曲力,即可折叠能力。