我使用PHP和imagick绘制贝塞尔曲线。我有一个函数,它将采用3 x,y坐标并返回中间的XY点,以确保曲线通过这3个点。
我想创建一个同样功能的功能,但需要6分。我不知道从哪里开始。我假设有一种数学方法来计算6点贝塞尔曲线中的4个中点。
以下是3点代码如何工作的示例:
$s1 = array("x" => $var1, "y" => 0);//start
$s2 = array("x" => $var2, "y" => $var3);
$s3 = array("x" => $var4, "y" => $var5);//end
$smp = findControlPoint($s1, $s2, $s3);
$points = array
(
array( 'x' => $s1['x'], 'y' => $s1['y'] ),
array( 'x' => $smp['x'], 'y' => $smp['y'] ),
array( 'x' => $s3['x'], 'y' => $s3['y'] ),
);
$draw->bezier($points);
答案 0 :(得分:0)
你的问题有点令人困惑,因为你不清楚如何产生积分。然而,要使多个4点贝塞尔曲线连续超过它们的“连接”,您需要(来自Joining Multiple Bézier Curves):
让我们举一个例子,我们有两组积分(A1,A2,A3和& A4和B1,B2,B3和& B4)。为了这些点创建一个 顺畅的Bézier曲线,以下两个事实必须是真的:
- 他们必须在同一点(A4 == B1)
结束- A3,A4和B2必须是共线的(与A3,B1和B2必须共线相同)
你需要在每个“部分”中使用超过3个点来加入,因为3个点在每个部分的开头和结尾都没有足够的控制曲线的方向。