91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 5.84MB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2023-11-07
  • 語言: 其他
  • 標簽: OpenGL??Bezier??遞推??

資源簡介

本程序主要通過調用OpenGL庫中的基礎函數(shù)實現(xiàn)了Bezier曲線的繪制,繪制原理是利用遞推公式求解Bernstein多項式,進而求解出Bezier曲線上對應點的坐標值,然后連接這些點繪制出Bezier曲線。點擊左鍵選擇頂點,點擊右鍵結束控制點的輸入,并繪制出Beizer曲線,繼續(xù)點擊左鍵,可以繼續(xù)添加控制點。

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
//定義控制點數(shù)目的最大值
#define?MAX_CPTX?25??
int?ncpts=0;//實際控制點個數(shù)
static?int?width=1024height=768;//窗口大小
typedef?struct
{
GLfloat?xy;
}?POINT;
POINT?cpts[MAX_CPTX];//存儲控制點坐標
//求n!
int?JieCheng(int?n)
{
if(n==1||n==0)
{
return?1;
}
else
{
return?n*JieCheng(n-1);
}
}
//求組合排列
double?C(int?nint?i)
{
return?((double)JieCheng(n))/((double)(JieCheng(i)*JieCheng(n-i)));
}
//求一個數(shù)u的num次方
double?N(double?uint?n)
{
double?sum=1.0;
if?(n==0)
{
return?1;
}
for(int?i=0;i {
sum*=u;
}
return?sum;
}

//繪制bezier曲線
void?drawBezier(POINT?*p)
{????
void?display();
if(ncpts<=0)?return;

POINT?*p1;
p1=new?POINT[1000];
GLfloat?u=0xy;
int?inum=1;
p1[0]=p[0];
for(u=0;u<=1;u=u+0.001)
{???
x=0;
y=0;
for(i=0;i {
??????x+=C(ncpts-1i)*N(ui)*N((1-u)(ncpts-1-i))*p[i].x;
??????y+=C(ncpts-1i)*N(ui)*N((1-u)(ncpts-1-i))*p[i].y;
}
p1[num].x=x;
p1[num].y=y;
num++;
}

????glPointSize(2.0);
????glColor3f(1.00.00.0);
????glBegin(GL_LINE_STRIP);
????for(int?k=0;k<1000;k++)
??glVertex2f(p1[k].xp1[k].y);
????glEnd();
????glFlush();
return;
}



//輸入新的控制點
static?void?mouse(int?button?int?stateint?xint?y)
{
void?display();
float?wxwy;
//鼠標未按下左鍵,不做響應
if(state!=GLUT_DOWN)
???return;
else?
{if(button==GLUT_LEFT_BUTTON)
{
//轉換坐標
wx=(2.0*x)/(float)(width-1)-1.0;
wy=(2.0*(height-1-y))/(float)(height-1)-1.0;
//判斷控制點數(shù)目是否超過最大值
if(ncpts==MAX_CPTX)
return;
//存儲控制點
cpts[ncpts].x=wx;
cpts[ncpts].y=wy;
ncpts++;
//繪制控制點
glColor3f(0.00.00.0);
glPointSize(5.0);
glBegin(GL_POINTS);
glVertex2f(wxwy);
glEnd();
glFlush();
}
if(button==GLUT_RIGHT_BUTTON)
{
display();
drawBezier(cpts);
}
}
}
void?display(void)
{
int?i;
????glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.00.00.0);
????glPointSize(5.0);
????glBegin(GL_POINTS);
????for?(i?=?0;?i?????????glVertex2f(cpts[i].xcpts[i].y);
????glEnd();
????glFlush();

}
//鍵盤回調函數(shù)
void?keyboard(unsigned?char?keyint?xint?y)
{
switch?(key)
????{
????????case?‘q‘:?case?‘Q‘:
????????????exit(0);
????????????break;
????????case?‘c‘:?case?‘C‘:
ncpts?=?0;
glutPostRedisplay();
????????????break;
????}
}

//重繪函數(shù)
void?reshape(int?wint?h)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1.01.0-1.01.0-1.01.0);
glMatrixMode(GL_MODELVIEW);
glViewport(00wh);//調整視口
width=w;
height=h;
}
int?main(int?argc?char?**argv)
{
//初始化
glutInit(&argcargv);
glutInitDisplayMode(GLUT_RGB);
glutInitWindowSize(widthheight);
glutCreateWindow(“bezier“);
//注冊回調函數(shù)
glutDisplayFunc(display);
glutMouseFunc(mouse);
glutKeyboardFunc(keyboard);
glutReshapeFunc(reshape);
glClearColor(1.01.01.01.0);
glColor3f(0.00.00.0);
glutMainLoop();
}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????3020??2014-03-09?02:38??bezier1\bezier1\bezier1.cpp

?????文件???????3920??2014-03-06?23:46??bezier1\bezier1\bezier1.vcxproj

?????文件????????945??2014-03-06?23:46??bezier1\bezier1\bezier1.vcxproj.filters

?????文件????????143??2014-03-06?22:27??bezier1\bezier1\bezier1.vcxproj.user

?????文件????????406??2014-03-06?23:56??bezier1\bezier1\Debug\bezier1.exe.embed.manifest

?????文件????????472??2014-03-06?23:56??bezier1\bezier1\Debug\bezier1.exe.embed.manifest.res

?????文件????????381??2014-03-08?01:30??bezier1\bezier1\Debug\bezier1.exe.intermediate.manifest

?????文件?????????49??2014-03-08?01:30??bezier1\bezier1\Debug\bezier1.lastbuildstate

?????文件???????2051??2014-03-08?01:30??bezier1\bezier1\Debug\bezier1.log

?????文件??????18491??2014-03-08?01:30??bezier1\bezier1\Debug\bezier1.obj

?????文件????????707??2014-03-06?23:46??bezier1\bezier1\Debug\bezier1.vcxprojResolveAssemblyReference.cache

?????文件??????????0??2014-03-06?23:46??bezier1\bezier1\Debug\bezier1.write.1.tlog

?????文件????????204??2014-03-06?23:56??bezier1\bezier1\Debug\bezier1_manifest.rc

?????文件????????618??2014-03-08?01:30??bezier1\bezier1\Debug\cl.command.1.tlog

?????文件???????2232??2014-03-08?01:30??bezier1\bezier1\Debug\CL.read.1.tlog

?????文件????????282??2014-03-08?01:30??bezier1\bezier1\Debug\CL.write.1.tlog

?????文件??????????2??2014-03-08?01:30??bezier1\bezier1\Debug\link-cvtres.read.1.tlog

?????文件??????????2??2014-03-08?01:30??bezier1\bezier1\Debug\link-cvtres.write.1.tlog

?????文件??????????2??2014-03-08?01:30??bezier1\bezier1\Debug\link.20220-cvtres.read.1.tlog

?????文件??????????2??2014-03-08?01:30??bezier1\bezier1\Debug\link.20220-cvtres.write.1.tlog

?????文件??????????2??2014-03-08?01:30??bezier1\bezier1\Debug\link.20220.read.1.tlog

?????文件??????????2??2014-03-08?01:30??bezier1\bezier1\Debug\link.20220.write.1.tlog

?????文件??????????2??2014-03-08?01:30??bezier1\bezier1\Debug\link.5380-cvtres.read.1.tlog

?????文件??????????2??2014-03-08?01:30??bezier1\bezier1\Debug\link.5380-cvtres.write.1.tlog

?????文件??????????2??2014-03-08?01:30??bezier1\bezier1\Debug\link.5380.read.1.tlog

?????文件??????????2??2014-03-08?01:30??bezier1\bezier1\Debug\link.5380.write.1.tlog

?????文件??????????2??2014-03-08?01:30??bezier1\bezier1\Debug\link.6088-cvtres.read.1.tlog

?????文件??????????2??2014-03-08?01:30??bezier1\bezier1\Debug\link.6088-cvtres.write.1.tlog

?????文件??????????2??2014-03-08?01:30??bezier1\bezier1\Debug\link.6088.read.1.tlog

?????文件??????????2??2014-03-08?01:30??bezier1\bezier1\Debug\link.6088.write.1.tlog

............此處省略35個文件信息

評論

共有 條評論