如何缩放贝塞尔曲线(使用HTML5画布)?

时间:2012-07-04 21:57:45

标签: math canvas drawing bezier

我有一个Bezier路径存储为多个点的数组,每个点都是[cp1x,cp1y,cp2x,cp2y,x,y]形式的坐标数组。

我希望能够上下调整此路径以调整其大小,但我不知道这样做的数学。我尝试将系数应用于每个坐标值,但这似乎不起作用。

有人知道如何实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

在标准表示中,点 P 表示空间中的实际点,因此您可以像任何其他点一样移动它们。这是缩放它们,只是按比例缩放因子:它是a,所以它是[a*cp1x,a*cp1y,a*cp2x,a*cp2y,a*x,a*y],或者如果你想分别缩放xy ,您可以为xy组件使用不同的因素。

另请注意,这会缩放相对于原点(x=0, y=0)的内容,因此如果原点上没有任何曲线,则它看起来像一个移位。如果您想否定此转变的影响,您可以分别从PxPy值中减去xy,其中Px和{{1}缩放之前你想要不移动的点,在你进行缩放之前(如果你愿意,可以在多次之后再添加它)。但是如果你想要做的是缩放整个画布,比如从5x5英寸到7x7,那么你想要在没有任何移位的情况下进行乘法(在这种情况下,是7./5)。