OpenGL实现Bezier曲线的方法示例

今天小编就为大家分享一篇关于OpenGL实现Bezier曲线的方法示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

Bezier曲线的形状是通过一组多边折线(特征多边形)的各顶点唯一地定义出来的。在这组顶点中:

(1)只有第一个顶点和最后一个顶点在曲线上;

(2)其余的顶点则用于定义曲线的导数、阶次和形状;

(3)第一条边和最后一条边则表示了曲线在两端点处的切线方向。

 // BezierCurve.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h"
  • #include <gl/glut.h>
  • #include <gl/GL.h>
  • #define DIMENSION 2//定义维度为2维
  • typedef GLfloat VECTOR [DIMENSION];
  • VECTOR points[4]= {{-1.0,-1.0},{0.0,2.0},{1.0,2.0},{2.0,1.0}};//四个控制点
  • GLint count =10000;//绘制10000个点
  • int ww,hh;
  • void display()
  • {
  • VECTOR c[4];//此矩阵是P和M的积,就是控制点阵和Bezier基矩阵的乘积
  • for (int i =0;i<DIMENSION;i++)
  • {
  • c[3][i] = (0-points[0][i])+3*points[1][i]-3*points[2][i]+points[3][i];
  • c[2][i] = 3*points[0][i]-6*points[1][i]+3*points[2][i];
  • c[1][i] = (0-3*points[0][i])+3*points[1][i];
  • c[0][i] = points[0][i];