Algorithm 弹性/蛇行算法
我正在制作一个图形应用程序,在其中我可以通过拖动多段线的控制点来编辑多段线。 然而,我想让它更容易使用,使它有弹性;当拖动一个控制点时,我不想移动一个点,而是希望在距离该点一定距离内的点也被移动,这取决于控制点“拉动”的力度 有人知道一个简单的算法吗?这可能是相当初级的,因为首要的要求是速度 事实上,知道如何称呼这种行为也很好,所以我可以在谷歌上查到。我尝试了“蛇行”线,但这似乎是指活动轮廓,这不是我要找的Algorithm 弹性/蛇行算法,algorithm,graphics,Algorithm,Graphics,我正在制作一个图形应用程序,在其中我可以通过拖动多段线的控制点来编辑多段线。 然而,我想让它更容易使用,使它有弹性;当拖动一个控制点时,我不想移动一个点,而是希望在距离该点一定距离内的点也被移动,这取决于控制点“拉动”的力度 有人知道一个简单的算法吗?这可能是相当初级的,因为首要的要求是速度 事实上,知道如何称呼这种行为也很好,所以我可以在谷歌上查到。我尝试了“蛇行”线,但这似乎是指活动轮廓,这不是我要找的 谢谢在一个简单的层面上,你可以通过胡克定律的一点帮助来实现这一点。基本上,您可以将多段线
谢谢在一个简单的层面上,你可以通过胡克定律的一点帮助来实现这一点。基本上,您可以将多段线视为字符串,由弹簧连接的顶点组成: o-o-o-o-o-o-o-o-o-o-o 每个顶点通过弹簧连接到另一个顶点,弹簧拉伸时收缩,挤压时排斥 因此,当移动控制点时,连接的弹簧将展开(拉伸)或收缩(收缩)。这反过来会对共享该弹簧的任何顶点施加力。因此,如果我向上向左拉动第一个顶点,弹簧会对右侧的顶点施加一个力,将其拉近。这会持续到下一个(消耗一些能量),直到所有弹簧都“舒适” 这是它的基础,每次控制点移动时,您都需要求解所有顶点/弹簧的方程,这些点将为您“蛇形”
如果你想在谷歌上找到更多关于“绳子物理”或“布料物理”的例子(因为绳子是一维布料)。显然,出于你的目的,忽略重力 基本上,您正在寻找移动(变形/变换)多个点的方法 假设你已经给出了移动的方向和强度,这将导致点x,y的dx,dy 您的转换将至少再包含两个参数
这是用于线性插值的dx[i]=dx-r[i]/r非常感谢,这正是我需要的。@vhirk/davbryn,我怀疑这是你需要的;胡克定律无法模拟多段线的控制点将如何移动,您甚至无法建立一组方程来求解,而无需进一步的条件(这将决定实际行为)。绳索物理和布料物理也更多地是关于重力场和/或施加外力的不可拉伸材料(更多关于其形成的形状)和(imo)太复杂了。谢谢,在阅读了有关绳索物理的内容后,a得出了与您一样的结论;这显然不是我想要的:)然而,你建议的方法是正确的。我用一个可变半径(移动强度的两倍)实现了它,看起来效果很好。