gpt4 book ai didi

algorithm - 找到不规则(非凸)形状的稳定位置

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:27:58 25 4
gpt4 key购买 nike

给定一个二维不规则(非凸)形状的图像,我如何才能计算出它可以稳定地躺在平面上的所有方式?例如,如果形状是一个完美的正方形,那么它肯定有 4 种稳定方式。另一方面,圆要么没有稳定的方向,要么每个点都是稳定的方向。

编辑:有一个不错的小游戏叫做Splitter (当心,前面令人上瘾的游戏)这似乎接近我想要的。注意到您切下一 block 木头,它会掉到地上并以稳定的方式放置。

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

最佳答案

首先找到它的质心 (CM)。稳定位置是指如果您稍微旋转一下,CM 会更高的位置。现在看一下外壳,它是包围形状的最小凸区域:

Convex Hull and Centre of Mass
(来源:walkytalky.net)

如果船体是多边形,那么稳定位置是形状停留在其中一侧,CM 直接在该侧上方(不一定在侧的中点上方,只是在它上方的某个位置.

如果船体有曲线(即形状有接触船体的曲线),则必须对其进行特殊处理。如果 CM 位于曲线最低点的正上方,并且该点的曲线半径大于 CM 的高度,则当 CM 停留在弯曲的边缘上时,形状将是稳定的。

例子:

  1. 一个长方形。船体只是矩形,CM 位于中心。形状在四个边的每一边都是稳定的。
  2. 一个四边空心但四角完好无损的长方形。船体还是原来的长方形,CM也接近原来的样子。船体的所有四个边仍然稳定(也就是说,您仍然可以将形状搁置在任意两个角上)。
  3. 一个圆圈。 CM 在中心,船体是圆圈。没有稳定的位置,因为曲线的半径总是等于 CM 的高度。轻轻一碰,它就会滚动。
  4. 一个椭圆。 CM 在中心,船体是形状。现在有两个稳定的位置。
  5. 一个半圆。 CM 位于对称轴上的某处,船体就是形状。两个稳定的位置。
  6. 一个狭窄的半圆形新月。船体是一个半圆形,CM 在形状之外(但在船体内部)。两个稳定的位置。

Illustration of the examples
(来源:walkytalky.net)

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

关于algorithm - 找到不规则(非凸)形状的稳定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3074231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com