OpenGL实现中点划线法

 更新时间:2020年02月20日 09:24:41   作者:BradyF  
这篇文章主要为大家详细介绍了OpenGL实现中点划线法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了OpenGL实现中点划线法的具体代码,供大家参考,具体内容如下

#include "GL/glut.h"
#include "stdio.h"
#include "math.h"
 
int xs, ys, xe, ye;
 
void MidpointLine(int x0, int y0, int x1, int y1)
{
 if((x0 != x1) && (y0 != y1))
 {
 int a, b, deltal, delta2, d, x, y;
 a = y0 - y1;
 b = x1 - x0;
 d = 2 * a + b;
 deltal = 2 * a;
 delta2 = 2 * (a + b);
 x = x0;
 y = y0;
 glVertex2i(x, y);
 while(x < x1)
 {
 if(d < 0)
 {
 x++;
 y++;
 d += delta2;
 }
 else
 {
 x++;
 d += deltal;
 }
 glVertex2i(x, y);
 }
 }
 else
 {
 int min, d;
 if(x0 == x1)
 {
 int x = x0, y;
 y = (y0<=y1) ? y0 : y1;
 d = fabs((double)(y0 - y1));
 while (d <= 0)
 {
 glVertex2i(x, y);
 y++;
 d--;
 }
 }
 }
}
 
void lineSegment()
{
 glClear(GL_COLOR_BUFFER_BIT);
 glColor3f(0.0, 0.0, 0.0);
 glBegin(GL_POINTS);
 MidpointLine(xs, ys, xe, ye);
 glEnd();
 glFlush();
}
 
void main(int argc, char * argv[])
{
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
 printf("输入线段起始和终止点坐标(范围为0-500,0-500)");
 scanf("%d, %d, %d, %d", &xs, &ys, &xe, &ye);
 glutInitWindowPosition(50, 100);
 glutInitWindowSize(500, 500);
 glutCreateWindow("中点划线法");
 glClearColor(1.0, 1.0, 1.0, 0.0);
 glMatrixMode(GL_PROJECTION);
 gluOrtho2D(0.0, 500.0, 0.0, 500.0);
 glutDisplayFunc(lineSegment);
 glutMainLoop();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

相关文章

  • C++ 位图及位图的实现原理

    C++ 位图及位图的实现原理

    位图实际上就是一个数组,因为数组有随机访问的功能,比较方便查找,这个数组一般是整形,今天通过本文给大家分享c++位图的实现原理及实现代码,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • 解析Linux下的时间函数:设置以及获取时间的方法

    解析Linux下的时间函数:设置以及获取时间的方法

    本篇文章是对Linux下的时间函数:设置以及获取时间的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言实现通用数据结构之通用链表

    C语言实现通用数据结构之通用链表

    这篇文章主要为大家详细介绍了c语言实现通用数据结构之通用链表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • C++实现LeetCode(190.颠倒二进制位)

    C++实现LeetCode(190.颠倒二进制位)

    这篇文章主要介绍了C++实现LeetCode(190.颠倒二进制位),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • VS2019配置OpenCV时找不到Microsoft.Cpp.x64.user的解决方法

    VS2019配置OpenCV时找不到Microsoft.Cpp.x64.user的解决方法

    这篇文章主要介绍了VS2019配置OpenCV时找不到Microsoft.Cpp.x64.user的解决方法,需要的朋友可以参考下
    2020-02-02
  • C++ Qt开发之使用QHostInfo查询主机地址

    C++ Qt开发之使用QHostInfo查询主机地址

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,本文将重点介绍如何运用QHostInfo组件实现对主机地址查询功能,希望对大家有所帮助
    2024-03-03
  • C++基于对话框的程序的框架实例

    C++基于对话框的程序的框架实例

    这篇文章主要介绍了C++基于对话框的程序的框架,以实例形式讲述了C++对话框程序框架,有助于深入理解基于C++的Windows程序设计,需要的朋友可以参考下
    2014-10-10
  • C 语言简单加减乘除运算

    C 语言简单加减乘除运算

    本篇文章主要介绍了C语言的基本运算方法,这里对加法,减法,乘法,除法,求余数,做了详细讲解,有需要的朋友可以参考下
    2016-07-07
  • C++实现屏幕截图(全屏截图)

    C++实现屏幕截图(全屏截图)

    屏幕截图已经成为了所有IM即时通讯软件的必备模块,也是日常办公中使用最频繁的功能之一。今天我们从C++开发的角度,来看看屏幕截图的主要功能点是如何实现的,感兴趣的可以了解一下
    2021-11-11
  • 一道超经典的C++结构体的题目

    一道超经典的C++结构体的题目

    以下小编就为大家介绍一道超经典的关于C++结构体的题目。需要的朋友可以过来参考下
    2013-09-09

最新评论