贝塞尔曲线
贝塞尔曲线历史
由法国工程师皮埃尔·贝济埃所发表,他运用贝塞尔曲线来为汽车的主体进行设计。贝塞尔曲线最初由Paul de Casteljau于1959年运用de Casteljau算法开发,以稳定数值的方法求出贝塞尔曲线。
一阶贝塞尔曲线
一阶贝塞尔曲线主要是用来绘制一条线的,但是如果你想要绘制曲线,那就需要使用二阶或者三阶了。
对于下面的t值,我们假设t所在的位置为C,P0所在的点为A,P1所在的点为B,则t=AC:AB。
vec2 fun1(vec2 p0, vec2 p1, float t){
return p0*(1-t)+p1*t;
}
同样,我们也可以使用GLSL中的mix来计算。
vec2 fun1(vec2 p0, vec2 p1, float t){
return mix(p0, p1, t);
}
二阶贝塞尔曲线
这里的t=DF:DE=AD:AB=BE:BC
vec2 fun2(vec2 p0, vec2 p1, vec2 p2, float t){
vec2 q0 = mix(p0, p1, t);
vec2 q1 = mix(p1, p2, t);
vec2 b = mix(q0, q1, t);
return b;
}
三阶贝塞尔曲线
这里的t=AE:AB=BF:BC=CG:CD=EH:EF=FI:FG=HJ:HI
vec2 fun23(vec2 p0, vec2 p1, vec2 p2, vec2 p3, float t){
vec2 q0 = mix(p0, p1, t);
vec2 q1 = mix(p1, p2, t);
vec2 q2 = mix(p2, p3, t);
vec2 r0 = mix(q0, q1, t);
vec2 r1 = mix(q1, q2, t);
vec2 b = mix(r0, r1, t);
return b;
}