Algorithm 以任意角度弯曲一系列顶点的算法?

Algorithm 以任意角度弯曲一系列顶点的算法?,algorithm,math,graphics,geometry,Algorithm,Math,Graphics,Geometry,我想了解一些有关如何“弯曲”任意点/顶点列表的信息,这些点/顶点列表类似于典型三维建模程序中的“弯曲”修改器 我想提供一个点列表、一个旋转焦点和一个“最终角度”。出于我的目的,我将始终说“集合中最小y点不会改变,最大y点将以最大角度旋转,中间的一切都是插值的。” 给定90度旋转,启动配置和期望结果的示例图像: 有人能提供一个资源来解释如何进行这项工作吗?我准备编写它(C++),但我正在绞尽脑汁想一个能让它工作的概念。生成顶点是很容易的,但我为之编写的应用程序会接收用户创建的内容,需要对其进行弯

我想了解一些有关如何“弯曲”任意点/顶点列表的信息,这些点/顶点列表类似于典型三维建模程序中的“弯曲”修改器

我想提供一个点列表、一个旋转焦点和一个“最终角度”。出于我的目的,我将始终说“集合中最小y点不会改变,最大y点将以最大角度旋转,中间的一切都是插值的。”

给定90度旋转,启动配置和期望结果的示例图像:

有人能提供一个资源来解释如何进行这项工作吗?我准备编写它(C++),但我正在绞尽脑汁想一个能让它工作的概念。生成顶点是很容易的,但我为之编写的应用程序会接收用户创建的内容,需要对其进行弯曲

(编辑后添加:我不需要奇迹矩阵或深层方程解……如果你说“对于每个顶点,做这个”,这足以得到绿色复选标记)


谢谢

您似乎正在将直线转换为圆弧,以保持相邻点之间的距离

因此,如果点
A
是要保持不变的点,则选择另一点
B
作为该圆的中心。(距离
B
越近的是
A
,弯曲越严重。)现在对于要变换的任何点
C
,将向量
C-B
分解为平行于
A-B
的分量(称该分量
R
)和垂直于它的分量(称之为
k
)。
R
的大小将是映射到
C
的圆的半径,您可以将“k”的大小转换为沿该圆的距离:

theta = |k|/|R|
C` = B + R cos(theta) + k|R|/|k| sin(theta)

如果图片对问题至关重要,请在问题中发布图片,而不是链接。这看起来与此问题非常相似@Beta low rep用户缺乏这样做的能力,IIRC。@WillNess:真的吗?我没有在…@Beta上看到,我想我在评论中看到了这样的抱怨,尽管我不确定。。。。