資源簡介
opengl動態顯示貝塞爾曲線,動畫展示貝塞爾曲線四個控制點對曲線的控制。
代碼片段和文件信息
#define?GLUT_DISABLE_ATEXIT_HACK
#include?
#include?
#include?
GLint?nNumPoints?=?4;
GLint?x1=-4?x2=-1?x3=-1?x4=4
??????y1=-4?y2=1?y3=-1?y4=4?
??z1=0?z2=0?z3=0?z4=0;
//4個控制點的3D坐標——z坐標全為0
GLfloat?ctrlPoints[4][3]?=?{
{?x1?y1?z1?}{?x2?y2?z2?}{?x3?y3?z3?}{?x4?y4?z4?}
};
void?init(void)
{
//背景色
glClearColor(0.0?0.0?0.0?1.0);
//建立一個一維求值器并啟動求值器
glMap1f(GL_MAP1_VERTEX_3 //?產生的數據類型
0.0f ????????//?參數最小值
100.0f //?參數最大值
3??????????????//控制點間的步幅(以GLfloat個數度量)
nNumPoints //?控制點數目
&ctrlPoints[0][0]); ?????????//?保存控制點的數組
glEnable(GL_MAP1_VERTEX_3);??//啟動求值器
glShadeModel(GL_FLAT);
//反走樣
glEnable(GL_BLEND);
glEnable(GL_LINE_SMOOTH);??//允許直線反走樣
glHint(GL_LINE_SMOOTH_HINT?GL_FASTEST);??//?Antialias?the?lines
glBlendFunc(GL_SRC_ALPHA?GL_ONE_MINUS_SRC_ALPHA);
}
void?display(void)
{
int?i;
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
glColor3f(1.0?1.0?0.0);
//映射曲線,選擇u并計算曲線上的點
glMapGrid1d(100?0.0?100.0);??//等分區間
glEvalMesh1(GL_LINE?0?100);??//用求值器計算曲線上點的值,并畫圖
???/*?顯示控制點?*/
glPointSize(5.0);
glBegin(GL_POINTS);
for?(i?=?0;?i?4;?i++)
glVertex3fv(&ctrlPoints[i][0]);
glEnd();
glutSwapBuffers();
}
void?vertexPoint(void)?{
- 上一篇:語音情感識別matlab源代碼.zip
- 下一篇:c語言tcp服務器端程序代碼
評論
共有 條評論