计算机图形学中贝塞尔曲线的绘制。使用的开发软件及版本为VS2015,以及 EasyX库。实现动态演示贝塞尔曲线实现的过程,且阶次不限!
源代码获取方式:1、添加微信(微信号:my_12581)获取。2、手机打开“闲鱼”APP;选择搜索用户,输入关键字“我是梦想家”(搜索时没有双引号哈);选择你所需要的宝贝即可。
// 绘制贝塞尔曲线,绘制 t [0 - end_t] 范围
void drawBezier(const vector<Point>& points, double end_t)
{
if (points.size() <= 1) return;
int n = points.size() - 1; // 阶次为点数 - 1
setfillcolor(RED);
for (double t = 0.0; t <= end_t; t += 0.001)
{
Point p{ 0 };
for (int k = 0; k <= n; k++)
p = p + C(n, k) * pow(t, k) * pow(1 - t, (double)n - k) * points[k];
// 位置四舍五入
p.x += 0.5;
p.y += 0.5;
solidcircle((int)p.x, (int)p.y, 3);
}
}
// 画点、画线
void drawControlLines(vector<vector<Point>>& levels)
{
int k = levels.size();
COLORREF color[8] = { YEL