`
落花虽有意
  • 浏览: 185710 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

关于直线

阅读更多

直线的绘制也很简单,与绘制点差不多,只不过两点绘制一条直线而已。

 

绘制直线需要向 glBegin() 函数传递绘制直线的参数:GL_LINES,该参数是绘制实线,如果需要绘制 点画线 或 折线 等等则需要传递其他参数,后面将介绍到。

 

既然我们能控制点在屏幕上显示的大小,那么对于直线是不是也应该能控制些什么呢,最容易想到也就是线宽了吧,的确我们是可以控制线宽的,呵呵,感觉像在自言自语,不过这种感觉挺好,我喜欢,不过为什么喜欢用“我们”呢,想知道为什么么,那你换成“我”再读读就知道了。。。

 

(一)下面介绍如何设置直线的宽度,其实与设置点的大小是一样的,所以不详细说了,我还没笨到那程度,你也是吧,不过你是谁。

                GLfloat fLineWidth[2];
	// 得到直线宽度范围
	glGetFloatv(GL_LINE_WIDTH_RANGE , fLineWidth);
	// 定义直线的宽度, 这里设置为 2 个象素宽
	glLineWidth(2.0f);

 

如上述代码显示的,我们是利用 glLineWidth() 函数来设置直线的宽度的,这种设置对后面介绍的 点画线 等等都是起到一样的作用的。

 

(二)点画线:

点画线 我们是通过设置直线的 线型 来实现的,假如我们把直线划分成很多小的基本直线段,每个基本直线段由 16 个连续的点组成,而这 16 个连续的点如果我们用 16 个二进制位来表示,如果对应的二进制位值为 0 则表示对应的点将不显示在屏幕即造成了空白段,如果对应的二进制位值为 1 则表示对应的点将显示,这样我们并能随自己意愿通过这 16 个二进制数来定义自己的 点画线基本直线段,而整条直线只不过是该基本直线段的不断重复而已。

可喜的是,opengl 里的线型确实是用 16 个二进制位来表示的,一般我们用 4 个 16 进制数写起来更方便些。不过有什么可喜的呢,只不过我是已经知道了 opengl 里面是这样表示的才象上面那段解释而已。。。

比如我们可以构造如下线型:

0000 0000 1111 1111  表示空白线和长折线

0000 0001 0000 0001  表示点

 

下面我将具体介绍如何绘制一条点画线:

为了对所定义的线型获得 opengl 的支持,必须事先启动改变线型的机制,如下:

// 启动改变线型的机制,使我们能自己改变线型 ,传入不同的参数可以启动很多不同的特定功能
glEnable(GL_LINE_STIPPLE);

 

然后我们就可以设置自己想要的线型了,如下设置为上面说过的 空白线与长折线 0000 0000 1111 1111:

	// 设置线型,线型是通过二进制值来表示的,可以自己设定此二进制值
	glLineStipple(1 , 0x00ff);

 

函数 glLineStipple() 的第一个参数数据类型为 GLint , 表示线型模式重复因子,重复因子说明了二进制表示的点的重复次数,比如如果重复因子是 2 ,一个 01010101 的线型事实上被当成 0011001100110011 线型来处理。第二个参数数据类型是 GLushort , 表示所定义的线型。

这样我们设置后若再绘制直线则为点画线而不是实线了,当然这样设置对后面所有的直线绘制都起到作用了,一般绘制完后应将线型再设置回实线,如: 

glLineStipple(1 , 0xffff);

 

点画线就说到这,下面简单介绍下 折线 和 闭合折线 的绘制

 

(三)折线,闭合折线:

我们绘制直线时是两点绘制一条直线,且这两点是不能重用的。当我们绘制折线时则不同了,只要是连续的两点都将绘制出一条直线,这样多条直线的首尾相接并形成折线了,不要在话上跟我钻没必要的空子,不然你做人一定挺累的。

 

绘制折线时向 glBegin() 函数传递参数 GL_LINE_STRIP 即可,

绘制闭合折线向 glBegin() 函数传递参数 GL_LINE_LOOP 即可,它将自动闭合,不用你多余操心了

分享到:
评论

相关推荐

    求点关于直线对称点坐标的一种简便方法

    ### 求点关于直线对称点坐标的一种简便方法 #### 背景与意义 在平面几何中,求解一个点关于某直线的对称点是一个常见的问题。传统的方法通常涉及通过解方程组来找到对称点的坐标,但这往往较为复杂,尤其是在高中...

    数学必修二关于直线与方程的PPT学习教案.pptx

    数学必修二关于直线与方程的PPT学习教案.pptx

    数学必修二关于直线与方程的课件PPT学习教案.pptx

    数学必修二关于直线与方程的课件PPT学习教案.pptx

    hough变换-关于直线检测

    **霍夫变换(Hough变换)**是一种在图像处理中用于检测特定形状,尤其是直线的算法。该方法通过创建一个参数空间(在这里是ρ-θ坐标系),将图像中的每个像素映射到这个空间的一个点,然后对这些点进行累加,形成...

    996346任意多边形关于任意直线的对称变换.rar

    2. 确定点的新坐标:对于多边形上的每个点(x, y),我们可以利用对称性质找出关于直线的对称点(x', y')。对称点的坐标可以通过解以下方程得到:(y - y') / (x - x') = -1/m,结合直线方程y = mx + b解出x'和y'。 3. ...

    直线编码裁剪算法VC6.0Dlg

    文件`www.pudn.com.txt`可能是从网络资源www.pudn.com下载的文档,可能包含了关于直线编码裁剪算法的更多细节或代码示例。而`编码算法剪裁直线`可能是一个源代码文件,包含了实际的算法实现。为了进一步理解并实现这...

    基于VC6.0的Bresenham直线算法

    《基于VC6.0的Bresenham直线算法详解》 在计算机图形学领域,Bresenham直线算法是一项至关重要的技术,它被广泛应用于2D图形绘制,尤其是在低分辨率的屏幕上快速绘制像素精确的直线。这个算法由John E. Bresenham于...

    2021_2022学年高中数学第三章直线与方程3.3.3_3.3.4点到直线的距离两条平行直线间的距离课件新人教A版必修2202

    点到直线的距离与两条平行直线间的距离是高中数学中关于直线与方程的重要知识点,主要涉及平面直角坐标系中的几何性质和代数方法。在本课件中,重点介绍了如何计算点到直线的距离以及两条平行直线之间的距离。 点到...

    VC 演示一种直线生成的算法.rar

    VC 6.0 演示一种直线生成的算法,演示了三种直线生成算法 :1、中点算法生成直线;2、bresenham算法生成直线;3、DDA算法 生成直线。在运行的实例窗口中,单击“直线生成算法”菜单,可通过弹出的菜单,选择不同的...

    图形学课件关于直线生成算法 圆生成算法 边界标志算法 扫描线种子填充算法

    计算机图形学中,直线生成算法是基础且关键的一部分,它涉及到如何在像素级别的二维空间上精确地描绘出直线。在不考虑线宽的情况下,直线是由像素集合构成的,因此算法的目标是在有限的像素网格中找到最接近实际直线...

    直线振动筛CAD.rar

    "直线振动筛CAD.rar" 文件很可能是包含了一系列关于直线振动筛的CAD设计图纸和技术资料的压缩包。 在工程领域,CAD软件如AutoCAD、SolidWorks等,被广泛用于设计和分析机械设备。直线振动筛的CAD设计通常包括以下几...

    与直线相关的最值问题归类解析

    假设存在一个点 \(P'\) 关于直线 \(l\) 对称于 \(P\),那么 \(PA + PB\) 可以转化为 \(PA + P'B\),即点 \(A\) 到点 \(B'\) 的距离,其中 \(B'\) 是 \(B\) 关于直线 \(l\) 的对称点。因此,问题转化为找到点 \(A\) ...

    (完整版)中职直线与圆的方程单元测试题.pdf

    【标题】和【描述】提及的是一个中职教育阶段关于直线与圆的方程的单元测试题,而【标签】中的"数据库"可能是一个误标,因为内容显然与数据库技术无关。下面,我将详细解释试卷中涉及的数学知识点。 1. 直线的斜率...

    计算机图形学编程关于直线远的生成

    关于计算机图形的一些编程,其中包括直线的生成,远的是温暖工程山东省分行

    人教高中数学必修二直线与平面平行的性质PPT课件.pptx

    《直线与平面平行的性质》 在高中数学的必修二课程中,直线与平面平行的性质是一个重要的知识点,它涉及到空间几何的概念...掌握这些性质和定理,可以解决关于直线与平面平行的问题,为后续学习空间几何打下坚实基础。

    新教材2020-2021学年高中数学第二册素养检测 8.5.1 直线与直线平行 含解析.doc

    【知识点详解】 1. **直线平行的定义与性质** ...这些知识点都是高中数学中关于直线平行的重要内容,对于理解和解决问题至关重要。通过这样的练习,学生能够加深对平行线的理解,提高空间想象能力和逻辑推理能力。

    定位图像上的直线-软件

    ".ini"文件,如"FindLine.ini",通常用于存储配置设置或用户偏好,可能包含了关于直线检测阈值、精度或其他相关参数的信息。 在实际应用中,这样的直线定位软件可以大大提高自动化流程的效率。例如,在文档扫描中,...

    高三数学3直线和直线平行试题

    - 最后,给出了四个关于直线和平面平行或垂直的命题,通过分析和推理,正确答案是②和④,说明了垂直于同一平面的两条直线平行,以及一条直线垂直于平面则与平面内所有直线垂直的性质。 这些知识点在解决高三数学...

Global site tag (gtag.js) - Google Analytics