gpt4 book ai didi

algorithm - 弹性/蛇线算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:32:15 28 4
gpt4 key购买 nike

我正在制作一个图形应用程序,我可以在其中通过拖动多段线的控制点来编辑多段线。但是,我想通过使其具有弹性来使其更易于使用;拖动控制点时,不是移动单个点,我希望也移动该点一定距离内的点,具体取决于“拉”控制点的力度。

有人知道一个简单的算法吗?它可能非常初级,因为主要要求是速度。

其实知道怎么调用这样的行为也很好,可以google一下。我试过“蛇形”线,但这似乎指的是事件轮廓,这不是我要找的。

谢谢

最佳答案

在简单的层面上,您可以通过胡克定律的一点帮助来实现这一点。您基本上可以将多段线视为一个字符串,由大量由 Spring 连接的顶点组成:

o-o-o-o-o-o-o-o-o-o

每个顶点都通过 Spring 连接到另一个顶点, Spring 会在拉伸(stretch)时收缩,在压扁时排斥。

因此,当控制点移动时,连接的 Spring 会膨胀(拉伸(stretch))或收缩(收缩)。这反过来又对共享该 Spring 的任何顶点施加力。因此,如果我将第一个顶点向上和向左拉, Spring 会对向右的顶点施加一个力,将其拉近。这一直持续到下一个(消耗一些能量),直到所有 Spring 都“舒适”。

这是它的基础知识,每次移动控制点时,您都​​需要求解所有顶点/ Spring 的方程,这些点将为您“蛇行”。

如果您需要更多示例,请在谷歌上搜索“绳索物理学”或“布料物理学”(因为绳索是一维布料)。显然,为了您的目的忽略重力。

关于algorithm - 弹性/蛇线算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3004822/

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