c++ - 布雷森汉姆线编码不画线
问题描述
我尝试使用以下代码Bresenham 线图,但通过 OpenGL GLUT 项目。我已成功运行代码,但没有结果。我正在尝试绘制两点 p1(5,8) 和 P2(9,11) 之间的点。但似乎我的 for 循环有问题。
int x1,x2,y1,y2;
void drawline(int x0, int y0, int x1, int y1)
{
int dx, dy, p;
int x,y;
dx=x1-x0;
dy=y1-y0;
//x=x0;
y=y0;
p=2*dy-dx;
for(x=x0; x<=x1; x++)
{
if(p>=0)
{
y=y+1;
p=p+2*dy-2*dx;
glBegin(GL_POINTS);
glVertex2i(x,y);
glPointSize(45);
glEnd();
}
else
{
p=p+2*dy;
glBegin(GL_POINTS);
glVertex2i(x,y);
glPointSize(45);
glEnd();
y=y0;
}
}
void myDisplay()
{
drawline(x1, x2, y1, y2);
glFlush();
}
int main(int argc, char** argv) {
printf("Enter the value of x1 : ");
scanf("%f",&x1);
printf("Enter the value of y1 : ");
scanf("%f",&y1);
printf("Enter the value of x2 : ");
scanf("%f",&x2);
printf("Enter the value of y2 : ");
scanf("%f",&y2);
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize (500, 500);
glutInitWindowPosition (100,100);
glutCreateWindow ("bresenham Line Algo");
// myInit();
glutDisplayFunc(myDisplay);
glutMainLoop();
return 0;
}
解决方案
我有两个我没有注意到的全局变量。谢谢大家的支持。
推荐阅读
- flutter - GoogleMap,如何在单击 Market en Flutter 时删除图标
- owasp - 当我使用小黄瓜脚本自动执行登录步骤时,Zap 扫描不起作用
- javascript - 为什么我的 if 语句在柏树中不起作用?
- reactjs - 未处理的拒绝 (TypeError):fs.createReadStream 不是函数。图片上传到 ipfs(pinata) 时出错
- powerbi - Power BI 使用报表上的字段将数据输入表中
- reactjs - Ag-Grid 在与下拉列表交互期间保持自定义过滤器打开
- jenkins - jenkins - 如何记录所有工作开始事件?
- logging - Elixir Logger 自定义元数据格式
- c++ - 在 OpenMP 中,如何指定不同类调用的函数之间的任务依赖关系?全局变量是唯一的解决方案吗?
- web-scraping - 无法让 Puppeteer 使用 click() 进行导航