裁剪算法——中点分割算法/Liang-Barsky算法
三、中点分割法
首先对直线段的端点进行编码。
【核心思想:通过二分逼近来确定直线段与窗口的交点。】
具体方法:
1、若中点不在窗口内,则把【中点】和离窗口边界【最远点】构成的线段丢掉,以线段上的另一点和该中点再构成线段求其中点。
2、如果中点在窗口内,则又以中点和最远点构成线段,并求其中点,直到中点与窗口边界的坐标值在规定的误差范围内想等。
【问题】中点分割算法会不会无限循环二分下去?
由于屏幕像素是有限的而且会规定误差范围,一般计算次数不会太多。
四、Liang-Barsky裁剪算法——>【基本出发点:直线的参数方程】
Liang-Barsky算法是写进国内外主流《计算机图形学》教科书里唯一一个亿中国人命名的算法。
【主要思想】
(1)用参数方程表示一条直线;
(2)把被裁剪的红色直线段看成是一条**【有方向】的【线段】**,把窗口的四条边分成两类:入边和出边;
裁剪线段的起点是直线和两条入边的交点以及始端点三个点里最前面的一个点,即参数u【最大】的那个点;
裁剪线段的终点是直线和两条出边的交点以及端点最后面的一个点,即参数u【最小】的那个点;
【重大发现】如果用u1,u2分别表示线段(u1<=u2)可见部分的开始和结束——>
由直线的参数方程可知:
线段和窗口边界一共有四个交点,根据Pk的符号,可以知道那两个是入交点,那两个是出交点。:
【Liang-Barsky裁剪算法步骤】
(1)输入直线段的两端点坐标(x1,y1)、(x2,y2),以及窗口的四条边界坐标:wxl,wxr,wyb,wyt;
(2)若Δx=0,则p1=p2=0,此时进一步判断是否满足q1<0或q2<0,若满足,则直线段不在窗口内,算法转(7)结束,否则,进一步计算Umax=max(0,Uk|pk<0)和Umin=min(Uk|pk>0,1),其中,Uk=qk/pk;(pk≠0,k=3,4)算法转(5);
(3)若Δy=0,则p3=p4=0,此时进一步判断是否满足q3<0或q4<0,若满足,则直线段不在窗口内,算法转(7),否则,进一步计算Umax=max(0,Uk|pk<0)和Umin=min(Uk|pk>0,1),其中,Uk=qk/pk;(pk≠0,k=3,4)算法转(5);
(4)若上述两个条件均不满足,则有pk≠0(k=1,2,3,4),此时计算Umax=max(0,Uk|pk<0,Uk|pk<0)和Umin=min(Uk|pk>0,Uk|pk>0,1)其中,Uk=qk/pk;(pk≠0,k=1,2,3,4);
(5)求得Umax和Umin后,进行判断:若Umax>Umin,则直线段在窗口外,算法转(7)若Umax≤Umin,带入直线段参数方程;
(6)利用直线的扫描转换算法绘制在窗口内的直线段;
(7)算法结束。
【裁剪算法举例】
具体步骤如下:
对于直线EF,有:
P1=-2 q1=5 U1=-5/2
P2=2 q2=3 ——> U2=3/2
P3=-3 q3=4 U3=-4/3
P4=3 q4=2 U4=2/3
——>Umax=max(0,-5/2,-4/3)=0
Umin=min(1,3/2,2/3)=2/3
以,裁剪后的直线的两个端点是(6,6)和(7.3,8)
【Liang-Barsky算法小结】
1、直线段看成有方向的;
2、直线参数化;
3、判断线段上一点是否在窗口内,需满足下面两个不等式;
4、线段和窗口边界一共有四个交点;
【Cohen—Sutherland 和Liang—Barsky裁剪算法的比较】
1、Cohen—Sutherland算法的核心思想是编码;
2、如果被裁剪的图形大部分线段要么在窗口内或者要么完全在窗口外,很少有贯穿窗口的,Cohen—Sutherland算法效果非常好;
3、在一般情况下,Liang—Barsky裁剪算法的效率更优于Cohen—Sutherland算法;
4、Cohen—Sutherland和Liang—Barsky只能应用于**【矩形窗口】**。
转载连接:https://www.cnblogs.com/Penglimei/p/9690407.html
裁剪算法——中点分割算法/Liang-Barsky算法相关推荐
- 中点分割裁剪算法 c语言,裁剪算法——中点分割算法/Liang-Barsky算法
三.中点分割法 首先对直线段的端点进行编码. [核心思想:通过二分逼近来确定直线段与窗口的交点.] 具体方法: 1.若中点不在窗口内,则把[中点]和离窗口边界[最远点]构成的线段丢掉,以线段上的另一点 ...
- 分水岭算法--语义分割
分水岭算法–语义分割 一.分水岭算法:把图像中的低密度的区域(变化小)看成山谷,高密度的区域(变化大)看成山峰.开始向山谷中注入水知道不同的山谷中的水开始汇聚.为了阻止不同山谷中的水汇聚,可以设置一些 ...
- 计算机视觉算法——语义分割网络总结
计算机视觉算法--语义分割网络总结 计算机视觉算法--语义分割网络总结 1. FCN 1.1 关键知识点--网络结构及特点 1.2 关键知识点--转置卷积 1.3 关键知识点--语义分割评价指标 2. ...
- 计算机图形学 学习笔记(四):直线裁剪算法:Cohen-Suther land,中点分割法,Liang-Barsky
接上文 计算机图形学 学习笔记(三):多边形的区域填充算法,反走样算法 光栅图形学算法 本文主要讲解直线裁剪算法. 裁剪 使用计算机处理图形信息时,计算机内部存储的图形往往比较大,而屏幕显示的知识图形 ...
- 实验二 实现中点分割直线段裁剪算法
一.目的 1. 了解直线裁剪的基本原理和常用方法. 2. 掌握中点分割直线段裁剪算法的基本原理和步骤. 3. 使用C++.OpenGL编程实现如下内容:输入直线段的起始点和终止点坐标位置.用四边形模拟 ...
- 中点分割裁剪算法介绍 (简单易懂)
目录 一.算法介绍 二.算法描述 一.算法介绍 裁剪效果图: 中点分割裁剪算法的思想类似于二分思想,不断地在中点处将线段一分为二,对每段线段重复Cohen-Sutherland裁剪算法的线段可见性 ...
- 计算机图形学:Cohen-Sutherland直线段剪裁算法及梁友栋-Barsky裁剪算法(算法原理及代码实现)
一.算法实现原理 Cohen-Sutherland直线段剪裁算法: 算法原理: (1)判断线段两端是否都落在窗口内,如果是,则线段完全可见,否则进行下一步 (2)判断线段两端是否都落在窗口外,如果是, ...
- PCL 点云分割与分类 Segmentation RANSAC随机采样一致性 平面模型分割 欧氏距离分割 区域聚类分割算法 最小分割算法 超体聚类 渐进式形态学滤波器
点云分割 博文末尾支持二维码赞赏哦 _ 点云分割是根据空间,几何和纹理等特征对点云进行划分, 使得同一划分内的点云拥有相似的特征,点云的有效分割往往是许多应用的前提, 例如逆向工作,CAD领域对零件的 ...
- 4种基于像素分割的文本检测算法
摘要:文本检测是文本读取识别的第一步,对后续的文本识别有着重大的影响.一般场景下,可以通过对通用目标检测算法进行配置修改,来实现对文本行的检测定位.本文主要介绍基于像素分割的文本检测算法. 本文分享自 ...
- VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法]
VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] - tingya的专栏 - 博客频道 - CSDN.NET VI ...
最新文章
- linux网站配置文件,Linux网站服务器配置文件
- 使用jar命令查看搜索提取jar包中的文件
- 威海二职工业机器人专业_现在各大专开设的工业机器人专业前景如何?
- 【Modern OpenGL】前言
- 15.2. important
- opencv物品定位_如何使用OpenCV实现基于标记的定位
- java 拷贝大文件_java高效实现大文件拷贝功能
- SSIS高级转换任务—导出列
- 数据分析案例(6)淘宝电商数据客户价值分析
- 如何批量修改抖音视频的分辨率
- 03 在CentOS7中安装oracle11g
- 神舟笔记本键盘灯不亮驱动
- 【附源码】计算机毕业设计java校园食堂订餐系统设计与实现
- linux之pmap命令查看进程的地址空间和占用的内存
- Matlab画图如何去掉图形框右边和上边的刻度
- idea字体变成繁体
- LinkCloud谈云主机与主机托管主机租用的区别
- 记:freeswitch-1.10.7 aarch64交叉编译
- CSS自定义checkBox复选框- 对勾样式
- 手机Android平台“点九”的切图方法