菜鸟自学计算机图形学,关于setPixel 55
电子工业大学的计算机图形学(第三版)把书上的两个程序都无法编译,原因是setPixel未定义书上对这个函数的说明是:我们使用一个底层函数setPixel(x,y);该函数...
电子工业大学的计算机图形学(第三版)
把书上的两个程序都无法编译,原因是setPixel未定义
书上对这个函数的说明是:我们使用一个底层函数setPixel(x,y);该函数将当前颜色庙宇值存入帧缓存的整数坐标位置(x,y)处
以下是DDA算法的代码:
#include<stdlib.h>
#include<math.h>
inline int round(const float a) //四舍五入
{
return int(a+0.5);
}
void lineDDA(int x0,int y0,int xEnd,int yEnd) //DDA算法
{
int dx=xEnd-x0,dy=yEnd-y0; //总步长
int steps;
float xIncrement,yIncrement; //x,y分量上步长
float x=x0,y=y0;
if(fabs(dx)>fabs(dy)) //哪个变化快,哪个为步长
steps=fabs(dx);
else steps=fabs(dy);
xIncrement=(float)dx/(float)steps; //x上的增量
yIncrement=(float)dy/(float)steps; //y上的增量
setPixel(x,y); //绘制颜色
for(int i=0;i<steps;i++) //绘线
{
x=x+xIncrement;
y=y+yIncrement;
setPixel(round(x),round(y));
}
不关大小写的事!!! 展开
把书上的两个程序都无法编译,原因是setPixel未定义
书上对这个函数的说明是:我们使用一个底层函数setPixel(x,y);该函数将当前颜色庙宇值存入帧缓存的整数坐标位置(x,y)处
以下是DDA算法的代码:
#include<stdlib.h>
#include<math.h>
inline int round(const float a) //四舍五入
{
return int(a+0.5);
}
void lineDDA(int x0,int y0,int xEnd,int yEnd) //DDA算法
{
int dx=xEnd-x0,dy=yEnd-y0; //总步长
int steps;
float xIncrement,yIncrement; //x,y分量上步长
float x=x0,y=y0;
if(fabs(dx)>fabs(dy)) //哪个变化快,哪个为步长
steps=fabs(dx);
else steps=fabs(dy);
xIncrement=(float)dx/(float)steps; //x上的增量
yIncrement=(float)dy/(float)steps; //y上的增量
setPixel(x,y); //绘制颜色
for(int i=0;i<steps;i++) //绘线
{
x=x+xIncrement;
y=y+yIncrement;
setPixel(round(x),round(y));
}
不关大小写的事!!! 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询