那么,知道了原理,我们就能绘制出曲线了,在这里,由于没办法直接绘制曲线,我使用的是原始绘制函数使用多段直线连接的方式绘制出近似曲线
draw_primitive_begin(kind) //开始一个原始显示类型。
draw_vertex(x,y) //增加顶点 (x,y)到原始表中,使用之前设定的颜色和透明度 。pr_linestrip //一组连续线,从第一个点到第二个点,再到第三个点,等等。最后一个没有 和第一个点连接。你需要指定一个额外的第一顶点拷贝。 draw_primitive_end() //结束描述原始绘制,这个函数是马上绘制它。用以上代码即可完成连续线的绘制,使用原始绘制直线也比直接用draw_line()+for循环绘制直线要快
我们将他写成一个脚本以便于绘制:
///draw_bezier_cubic(x1,y1,x2,y2,x3,y3,x4,y4,complexity);
//画一条三阶贝塞尔曲线 两个控制点(x2,y2,x3,y3) 两个起始点和中间点(x1,y1,x4,y4) 精度(complexity)
var point_x,point_y;
draw_primitive_begin(pr_linestrip)
for(i = 0; i <= 1; i+= 1/argument8)
{
point_x = power(1-i,3)*argument0 + 3*power(1-i,2)*i*argument2+3*(1-i)*power(i,2)*argument4+power(i,3)*argument6;
point_y = power(1-i,3)*argument1 + 3*power(1-i,2)*i*argument3+3*(1-i)*power(i,2)*argument5+power(i,3)*argument7;
//由曲线函数得出当t==i时的点坐标
draw_vertex(point_x,point_y);
//插入原始绘制顶点,意在将曲线拟合到指定点上
}
draw_primitive_end();
//结束原始绘制,绘制出直线化后的曲线(如果精度足够高,是能达到曲线的效果的)

这是精度为100时的曲线,没有直线化的特征

精度为10的曲线,看上去很有意思