function draw(t) {
const view = camera.view();
drawGrid({ view });
const bPoints = [];
for (let points of curvePoints) {
drawCurve({
view,
count: points.length,
point: points,
color: [0.5, 0.5, 0.5, 0.8]
});
drawPoint({
view,
count: points.length,
point: points,
pointSize: 5.0
});
const [lastPoint] = drawBezier(points, n - 1, view, t);
bPoints.push(lastPoint);
}
const surface = [];
const num = 20;
const step = 1 / num;
for (let u = 0; u < 1; u += step) {
for (let v = 0; v < 1; v += step) {
const c = bezier_surface(curvePoints, [u, v]);
surface.push(c);
}
}
for (let i = 0; i < num; ++i) {
const color = [0.2, 0.2, 1, 0.8];
drawCurve({
view,
count: num,
point: surface.slice(i * num, i * num + num + 1),
color
});
drawCurve({
view,
count: num,
point: surface.filter((v, j) => j % num === i),
color
});
}
return bPoints;
}