找到不规则(非凸)形状的稳定放置

Hao*_*Lim 10 algorithm physics

给定一个二维不规则(非凸)形状的图像,我怎样才能计算出它在平面上稳定的所有方式?例如,如果形状是一个完美的方形矩形,那么它肯定有4种稳定方式.另一方面,圆圈没有稳定的方向,或者每个点都是稳定的方向.

编辑:有一个很好的小游戏叫做Splitter(小心,上瘾的游戏)似乎接近我想要的.注意到你砍掉了一块木头,它会掉到地上并以稳定的方式放置.

编辑:最后,我采用的方法是计算质心(形状)并计算凸包(使用OpenCV),然后遍历每对顶点.如果质心落在由2个顶点形成的线的顶部,则认为是稳定的,否则,不是.

Bet*_*eta 9

首先找到它的质心(CM).稳定位置是指如果轻微旋转CM将会更高的位置.现在看看船体,包围形状的最小凸起区域:

凸壳和质量中心http://walkytalky.net/extern/hull.png

如果船体是多边形,那么稳定的位置是其中一个侧面上的形状搁置的位置,并且CM直接在该侧面上方(不一定在侧面的中点上方,仅在其上方的某处).

如果船体有曲线(即,如果形状有接触船体的曲线),则必须给予特殊处理.如果CM直接位于曲线的最低点之上,则在弯曲边缘上停留时形状将是稳定的,并且该点处的曲线半径大于CM的高度.

例子:

  1. 一个矩形.船体只是矩形,CM位于中心.形状在四个边的每一边都是稳定的.
  2. 一个边框挖空的矩形,但角落仍然完好无损.船体仍然是原始的矩形,CM接近以前的位置.船体的所有四个侧面仍然稳定(也就是说,您仍然可以将形状放在任何两个角上).
  3. 一个圆圈.CM位于中心,船体是圆形.没有稳定的位置,因为曲线的半径总是等于CM的高度.给它轻微的触摸,它会滚动.
  4. 椭圆.CM位于中心,船体是形状.现在有两个稳定的位置.
  5. 一个半圆.CM位于对称轴上的某个位置,船体就是形状.两个稳定的位置.
  6. 狭窄的半圆形新月形.船体是半圆形,CM在形状之外(但在船体内).两个稳定的位置.

示例http://walkytalky.net/extern/stable.png的插图

(标有X的椭圆位置不稳定,因为曲率小于到质心的距离.)