0

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

带点的图像

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

4

2 回答 2

0

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

于 2020-05-29T15:07:36.307 回答
0

所以,让我总结一下你想在这里做什么:给定一条贝塞尔曲线或一条 B 样条曲线以及起点和终点的两个新位置,找到一条或多或少保持相同的新贝塞尔曲线/B 样条曲线形状为原始曲线。

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

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

于 2020-05-29T18:17:42.037 回答