图形学实验三
除法问题
1/6=0
1.0000/6.0000=1.blablabla
bmp文件路径
1)codeblock中需读入的bmp文件
需要放在工程的bin/debug/里,和exe文件在一起
2)仍然找不到(使用单步执行发现问题)
注意fopen使用方法和f_open(codeblock里没有)使用方法
if ((file = fopen(file_name, "rb")) == NULL)
//if (NULL!= fopen(file_name, "rb"))
{
return 1;
}
改为
if ((file = fopen(file_name, "rb")) == NULL)
//if (NULL!= fopen(file_name, "rb"))
{
return 0;
}
3)将相对路径改为绝对路径(解决!
if (load_texture("ear.bmp", 128, 128, 3, GL_BGR_EXT, GL_NEAREST))
{
exit(1);
}
改为(注意写双划线不是单线**
if (load_texture("F:\\graphics\\太阳系\\bin\\Debug\\ear.bmp", 128, 128, 3, GL_BGR_EXT, GL_NEAREST))
{
exit(1);
}
尽可能将以确定参数写在循环外面
for(k=0;k<num-3;k++)
{
b0x=(-1)*line[k].x+3*line[k+1].x-3*line[k+2].x+line[k+3].x;
b1x=3*line[k].x-6*line[k+1].x+3*line[k+2].x;
b2x=(-3)*line[k].x+3*line[k+2].x;
b3x=line[k].x+4*line[k+1].x+line[k+2].x;
b0x=b0x*(1.0000/6.0000);
b1x=b1x*(1.0000/6.0000);
b2x=b2x*(1.0000/6.0000);
b3x=b3x*(1.0000/6.0000);
b0y=(-1)*line[k].y+3*line[k+1].y-3*line[k+2].y+line[k+3].y;
b1y=3*line[k].y-6*line[k+1].y+3*line[k+2].y;
b2y=(-3)*line[k].y+3*line[k+2].y;
b3y=line[k].y+4*line[k+1].y+line[k+2].y;
b0y=b0y*(1.0000/6.0000);
b1y=b1y*(1.0000/6.0000);
b2y=b2y*(1.0000/6.0000);
b3y=b3y*(1.0000/6.0000);
for(j=0;j<=m;j++)
{
t=(GLfloat)j/(GLfloat)m;
r=t*t*t*b0x+t*t*b1x+t*b2x+b3x;
q=t*t*t*b0y+t*t*b1y+t*b2y+b3y;
glBegin(GL_POINTS);
glColor3f(0.0,1.0,1.0);
glPointSize(3.0f);
glVertex2f(r,q);
}
}
而不是
for(k=0;k<num-3;k++)
{
for(j=0;j<=m;j++)
{
beyang((glfloat)j/(glfloat)m,line[k],linr[k+1],line[k+2],line[k+3]
}
}
b样条小测
p0,p0,p0,p1,p2…p9一共12个控制点,起点位于(p0),曲线段数=控制点数-b样条次数