识别 3 维形状的简单算法

问题描述 投票:0回答:0

我正在制作一个游戏,其中用户的身体周围有一个球体,他们可以在该球体的任何地方绘制不同的形状。给定一个预定义形状列表(范围从正方形和三角形等简单形状到球体上的复杂长线)我很想知道我可以用来识别用户绘制的形状的可能算法。

最初我天真的方法是将形状缩放到与预定义形状相同的大小,旋转它以匹配预定义形状的旋转,然后计算两个形状上的点之间的差异。我实际上确实让这个有点工作,但我有(并且仍然有)旋转用户的形状以与预定义的形状对齐的许多问题。

因为用户在球体上绘制形状,它们可能会以旋转无法解释的方式扭曲和扭曲。如果我画一个非常大的形状,当我缩放它时,它会比画得更小和缩放的形状更“弯曲”。此外,如果我不知道它最初是如何定向的,找到一种方法将它旋转到预定义形状的旋转是很复杂的,根据形状,我在尝试将形状旋转到预定义形状的方向时得到了非常奇怪的结果。如果形状有 n 个点并且我希望它在线性时间内运行,则此方法的缺点是每次都必须从相同的起点绘制形状,如果 n^2 如果我想从任何起点绘制它,就像我一样必须比较每个形状上的每个点。

我正在研究新的算法来完成这项任务,因为我的方法不太奏效,我希望有一个相对简单的算法可以实时运行。如果必须的话,我非常希望不必安装像 OpenCV 这样的库,因为我在有限的环境中运行,如果有 100 个用户,每次用户绘制形状时运行它似乎不是很有效一个游戏。

java algorithm optimization game-development gesture-recognition
© www.soinside.com 2019 - 2024. All rights reserved.