首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )

文章目录 一、设置线宽度 二、绘制单条线段 GL_LINES 三、绘制多条线段 GL_LINES 四、绘制依次连接的点组成的线 GL_LINE_STRIP 五、绘制圈 GL_LINE_LOOP ( 偶数个点...方法设置 ; 下面的代码将线的宽度设置为 2 像素 ; // 设置线的宽度 glLineWidth(2.0f); 二、绘制单条线段 GL_LINES ---- 绘制线时, 会将从 glBegin..., 最后一个点会被舍弃 ; 三、绘制多条线段 GL_LINES ---- 绘制线段时 , glBegin(GL_LINES) 方法传入的参数是 GL_LINES ; 在 glBegin(GL_LINES...2 条线段 , 线段 1 端点分别是 (0,0,-10) 和 (-5,0,-10) , 线段 2 端点分别是 (-5,0,-10) 和 (-5, -2, -10) ; // 渲染场景 //...// 绘制点结束 glEnd(); // 将后缓冲区绘制到前台 SwapBuffers(dc); 绘制效果 : 最后一个点与第一个点连成线段 , 组成一个闭合的三角形

4.4K00

canvas学习总结三:绘制路径-线段

绘制一条线段 Canvas绘图环境中,线段也是基于路径绘制的,称为线性路径,创建线性路径的方法:moveTO()与lineTo(),在创建路径之后调用stroke()方法,才能在Canvas中画出线段出来...如果你在某2个像素的边界处绘制一条1像素宽的线段,那么该线段实际会占据2个像素的宽度; 因为当你在像素边界处绘制一条1像素宽度的垂直线段时,canvas的绘图环境对象会试着将半个像素画在边界中线的右边...另外一方面,绘制在两个像素之间,这样的话,中线左右两端的那半个像素就不会延伸,它们结合起来恰好占据1个像素的宽度。所以说,如果要绘制一条真正1像素宽度的线段,你必须将该线段绘制在某两个像素之间 ?...上面例子中我们将线段绘制在两个像素之间的像素上,而且绘制出来的线段仅有0.5像素宽, 虽说canvas规范没有明文规定,不过所有浏览器的Canvas实现都使用了“抗锯齿”技术,以便创建出“亚像素”线段绘制效果来...绘制线段时我们可以使用 lineWidth改变线段的宽度,strokeStyle改变线段的颜色。 弄清楚线段的像素边界,这样我们才能绘制出真正的1像素线宽的线段

75410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    冷知识 | OpenCV绘制带箭头方向的线段

    点击上方蓝字关注我们 微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识 引子 我根据一个矩形进行了各种角度旋转,就想通过绘制一个带方向的线段表示它,通过旋转矩阵很容易的获取了两个点坐标...,但是很快遇到了一个新问题,怎么绘制那个箭头,就是带箭头的线段,OpenCV中的cv.line函数只支持绘制不带箭头的线段,于是我决定重复造轮子 手动版实现带箭头的线段绘制 因为我知道opencv有个函数是...line无法支持绘制带箭头的直线,于是网上一通猛搜,发现一个哥们博客写OpenCV3如何绘制带箭头的线段,C++的代码!... image) cv.waitKey(0) cv.destroyAllWindows() 改完运行一下,发现可以啦: 其实没那么复杂 后来我又搜索了一波,发现其实OpenCV还有另外一个函数可以直接绘制带箭头的线段的...OpenCV中的函数是: void cv::arrowedLine(         InputOutputArray img, # 输入图像     Point pt1, # 线段端点     Point

    97530

    OpenCV绘制箭头线段---函数arrowedLine()使用(C++ Python)

    OpenCV不仅提供了绘制线段、矩形、圆等方法,还提供了一个绘制箭头线段的函数arrowedLine(),OpenCV官方文档介绍: https://docs.opencv.org/4.4.0.../d6/d6e/group__imgproc__draw.html#ga0a165a3ca093fd488ac709fdf10c05b2 ?..., pt2:绘制箭头线段的起点和终点坐标 color: 绘制箭头线段的颜色 thickness: 箭头线段的线宽(线的粗细) line_type: 绘制线的类型参考定义LineTypes shitf:...tipLength=0.3) cv2.imshow('LineArrows', img) cv2.waitKey(0) cv2.destroyAllWindows() 这里有一个优化版的C++ OpenCV绘制带箭头线段的函数...,可以设置箭头的角度,OpenCV绘制的箭头角度看起来都是45°有些呆板,调用实例: //自定义函数绘制 drawArrow(img, Point(10, 30), Point(200, 30), 30

    5.7K40

    Canvas绘制圆点线段 思路二 setLineDash方法+lineCap设置扩展

    是 Canvas 2D API 指定如何绘制每一条线段末端的属性。...可以看出 “round”和“square”都是在原本绘制线段之外扩展了一个半圆和一个矩形,这点在后面会用到。...一组描述交替绘制线段和间距(坐标空间单位)长 //度的数字。 如果数组元素的数量是奇数, 数组的元素会被复制并重 //复。...` 绘制圆点线原理 有了上面两个知识点,只需要把两者结合起来,就可以绘制出圆点线,我们首先使用ctx.setLineDash方法把线段分成一段一段得虚线。...其实也很简单,就是把同一条线段用不同得lineDash和lineCap绘制两次即可,代码如下: // 绘制圆点 ctx.save(); ctx.beginPath(); ctx.lineCap

    1.6K30

    LintCode 线段树系列问题(线段树的构造,线段树的构造||,线段树的查询,线段树的查询II,线段树的修改)线段树的构造线段树的构造 II线段树的查询线段树查询 II线段树的修改

    线段树(又称区间树), 是一种高级数据结构,他可以支持这样的一些操作: 查找给定的点包含在了哪些区间内 查找给定的区间包含了哪些点 线段树的构造 题目 线段树是一棵二叉树,他的每个节点包含了两个额外的属性...实现一个 build 方法,接受 start 和 end 作为参数, 然后构造一个代表区间 [start, end] 的线段树,返回这棵线段树的根。...样例 对于数组 [0, 空,2, 3], 对应的线段树为: ?...该方法将 root 为跟的线段树中 [start, end] = [index, index] 的节点修改为了新的 value ,并确保在修改后,线段树的每个节点的 max 属性仍然具有正确的值。...样例 对于线段树: ?

    51330

    线段

    线段树 (有关线段树的定义来自LintCode网站的相关题目) 描述 线段树是一棵二叉树,他的每个节点包含了两个额外的属性start和end用于表示该节点所代表的区间。...说明 线段树(又称区间树), 是一种高级数据结构,他可以支持这样的一些操作: 查找给定的点包含在了哪些区间内 查找给定的区间包含了哪些点 样例 比如给定start=1, end=6,对应的线段树为:...最大线段树 纯粹的线段树并不能应用于太多的实际问题,一般来说线段树的节点除了start和end之外,还会有一个额外的属性值,我们以最大线段树为例,最大线段树的每一个节点还有一个代表区间中最大值的max...线段树的修改方法modify,接受三个参数root、index和value。...该方法将root为根的线段树中 [start,end] = [index,index] 的节点修改为了新的value,并确保在修改后,线段树的每个节点的max属性仍然具有正确的值。

    3.9K91

    Quartz2D复习(一)--- 基础知识 绘制线段圆弧 图片水印 截图

    1、Quartz 2D是一个二维绘图引擎,同时支持ios和Mac系统; Quart2D的API是纯C语言的,API来自于Core  Graphics框架: 2、Quartz 2D可以绘制图形(线段/三角形...) drawRect: (CGRect)rect;  方法,然后在这个方法中,可以去的跟当前view相关联的图形上下文; 绘制相应的图形内容(绘制时产生的线条称为路径,路径由一个或多个线段或曲线段组成)...,  100, 100);  //线段绘制到坐标(100, 100)      3)绘制路径(渲染): CGContextStrokePath(ctx);   //CGContextFillPath(ctx...affects performance during animation. 48 - (void)drawRect:(CGRect)rect { 49 [self drawOne]; //绘制多根线段...50 [self drawTwo]; //绘制带宽度的线段 51 [self drawThree]; //绘制实体三角形 52 [self drawFour]; /

    2.6K10

    图解线段

    线段树 ----   线段树是算法竞赛中常用的用来维护 区间信息 的数据结构。线段树可以在 O(\log_{2}{N}) 的时间复杂度内实现单点修改、区间修改、区间查询等操作。...线段树的基本结构 ---- 为数组(假设下标从 1 开始): a[5] = [{1,2,3,4,5}] 构造线段树如下图(采用堆式存储): 上述数组 D 用来保存线段树,由于采用的是堆式存储...线段树的建立 由于树树递归定义的,因此其建立也是递归的: void buildST(int left, int right, int p, vector& D, vector &...mid, p*2, D, a); build(mid+1, right, p*2+1, D, a); D[p] = D[p * 2] + D[p * 2 + 1]; } ---- 线段树的区间查询...---- 区间和: // [left,right] 为待查区间,[cl,cr] 为当前区间,p 为当前节点编号,D 为线段树的存储数组 int getSum(int left, int right

    58130
    领券