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

问题描述 投票:0回答:2

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

image with points

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

computer-vision autocad cad nurbs opennurbs
2个回答
0
投票

当定义样条曲线时,还需要在端点处定义切线角度,当将点移动到中心时,您将确定边线的斜率,因此,如果切线角固定为wrt线,则它们将使曲线发生变化。如果您会仔细看到,两个图像的拐角角度相同。为了保持曲线形状,您需要根据边线的斜度改变这些角度。


0
投票

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

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

如果您真正想做的是偏移曲线,那么这是一个完全不同的故事。偏移曲线是通过更为复杂的算法(在此不再赘述)来实现的,我们将指定偏移距离(可以为正或负,以表示向外/向内偏移),而不是起点/终点的新位置。

© www.soinside.com 2019 - 2024. All rights reserved.