Algorithm 以任意角度弯曲一系列顶点的算法?
我想了解一些有关如何“弯曲”任意点/顶点列表的信息,这些点/顶点列表类似于典型三维建模程序中的“弯曲”修改器 我想提供一个点列表、一个旋转焦点和一个“最终角度”。出于我的目的,我将始终说“集合中最小y点不会改变,最大y点将以最大角度旋转,中间的一切都是插值的。” 给定90度旋转,启动配置和期望结果的示例图像: 有人能提供一个资源来解释如何进行这项工作吗?我准备编写它(C++),但我正在绞尽脑汁想一个能让它工作的概念。生成顶点是很容易的,但我为之编写的应用程序会接收用户创建的内容,需要对其进行弯曲 (编辑后添加:我不需要奇迹矩阵或深层方程解……如果你说“对于每个顶点,做这个”,这足以得到绿色复选标记)Algorithm 以任意角度弯曲一系列顶点的算法?,algorithm,math,graphics,geometry,Algorithm,Math,Graphics,Geometry,我想了解一些有关如何“弯曲”任意点/顶点列表的信息,这些点/顶点列表类似于典型三维建模程序中的“弯曲”修改器 我想提供一个点列表、一个旋转焦点和一个“最终角度”。出于我的目的,我将始终说“集合中最小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上看到,我想我在评论中看到了这样的抱怨,尽管我不确定。。。。