Javier Gonzalez-Sanchez | SER431 | Fall 2018 | 12
jgs
Step 2
// blending functions
float BezierLinear(float a, float b, float t) { return a * (1.0f - t) + b * t; }
float BezierQuadratic(float A, float B, float C, float t){
float AB = BezierLinear(A, B, t); float BC = BezierLinear(B, C, t);
return BezierLinear(AB, BC, t);
}
float BezierCubic(float A, float B, float C, float D, float t) {
float ABC = BezierQuadratic(A, B, C, t); float BCD = BezierQuadratic(B, C, D, t);
return BezierLinear(ABC, BCD, t);
}
float BezierQuartic(float A, float B, float C, float D, float E, float t) {
float ABCD = BezierCubic(A, B, C, D, t); float BCDE = BezierCubic(B, C, D, E, t);
return BezierLinear(ABCD, BCDE, t);
}
float BezierQuintic(float A, float B, float C, float D, float E, float F, float t) {
float ABCDE = BezierQuartic(A, B, C, D, E, t); float BCDEF = BezierQuartic(B, C, D, E, F, t);
return BezierLinear(ABCDE, BCDEF, t);
}
float BezierSextic(float A, float B, float C, float D, float E, float F, float G, float t) {
float ABCDEF = BezierQuintic(A, B, C, D, E, F, t); float BCDEFG = BezierQuintic(B, C, D, E, F, G, t);
return BezierLinear(ABCDEF, BCDEFG, t);
}