首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何移动缩放点并保持曲线的形状?

如何移动缩放点并保持曲线的形状?
EN

Stack Overflow用户
提问于 2020-05-28 10:38:31
回答 2查看 110关注 0票数 0

对于一条曲线,我想将起点和终点移动到新的位置,然后如何保持曲线的形状?

从黄色曲线上循环的点,移动到红色曲线上循环的红色曲线位置,如何保持红色曲线上曲线的形状?

EN

回答 2

Stack Overflow用户

发布于 2020-05-29 23:07:36

定义样条曲线时,还需要定义端点处的切线角度,当您将点移动到中心时,您正在改变边线的斜率,因此如果切线角度是固定的wrt线,则它们将使曲线发生变化。如果你仔细观察,你会发现两张图片上的角是一样的。为了保持曲线的形状,你需要根据侧线、坡度变化来改变这些角度。

票数 0
EN

Stack Overflow用户

发布于 2020-05-30 02:17:42

因此,让我在这里总结一下您要做的事情:给定一条Bezier曲线或一条B样条曲线,以及起点和终点的两个新位置,找到一条新的Bezier/B样条曲线,该曲线或多或少保持与原始曲线相同的形状。

实现这一点的一种方法是找到一个变换,将起点/终点变换到它们的新位置,然后可以将相同的变换应用于曲线的所有其他控制点。基本上,这与查找由曲线的起点P和终点Q定义的直线与由新点位置P*和Q*定义的另一条直线之间的转换是相同的。从P和P*,我们可以找到一个平移向量。从直线PQ和直线PQ,我们可以找到一个旋转角。从length |PO|和length |PQ|我们可以找到一个比例因子。因此,结合平移向量、旋转角和比例因子,我们将能够找到变换矩阵。将变换矩阵应用于所有其他控制点,那么您应该能够获得或多或少保持与原始曲线相同形状的新曲线。

如果你真正想要做的是抵消曲线,那么这是一个完全不同的故事。偏移曲线是通过一种复杂得多的算法实现的(我在这里不会详细说明),我们将指定偏移距离(可以是正数或负数,表示向外/向内偏移),而不是起点/终点的新位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62056077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档