使用计算机处理图形信息时,计算机内部存储的图形往往比较大,而屏幕显示的知识图形的一部分。因此需要确定图形哪些部分落在显示区内,哪些落在显示区外。这个选择的过程就称为裁剪

最简单的裁剪方法是把各种图形扫描转换为点之后,再判断点是否在窗口内。

要裁剪一条直线段,首先要判断(如下图所示):

  1. 它是否完全落在裁剪窗口内?
  2. 它是否完全在窗口外?
  3. 如果不满足以上两个条件,则计算它与一个或多个裁剪边界的交点(比如线段AB)。

常用的裁剪算法由三种,即 Cohen-Suther land、中点分割法、Liang-Barsky 裁剪算法。

直线裁剪算法:Cohen-Suther land(编码裁剪算法)

本算法又称为编码裁剪算法。

算法的基本思想是对每条直线段分三种情况处理

(1)若点p1和p2完全在裁剪窗口内,则保留该直线

若点p1(x1,y1)和 p2( x2,y2 ) 均在窗口外,且满足下列四个条件之一,就可以舍弃这条直线了:

如果直线段既不满足保留的条件,也不满足舍弃的条件?那么需要对直线段按交点进行分段,分段后判断直线是保留还是舍弃。(大部分直线都是这种情况)

好难啊。。。

计算机图形学 之 直线裁剪算法相关推荐

  1. 计算机图形学 Bresenham直线生成算法

    bresenham算法是一种光栅化的直线生成算法,是计算机图形学目前使用广泛的直线扫描转换算法,具体逻辑很简单,就是描点.所以bresenham的算法研究实际上是研究目标点的选择. 实验环境: ope ...

  2. 计算机图形学 学习笔记(四):直线裁剪算法:Cohen-Suther land,中点分割法,Liang-Barsky

    接上文 计算机图形学 学习笔记(三):多边形的区域填充算法,反走样算法 光栅图形学算法 本文主要讲解直线裁剪算法. 裁剪 使用计算机处理图形信息时,计算机内部存储的图形往往比较大,而屏幕显示的知识图形 ...

  3. 【计算机图形学 】Cohen-Sutherland 直线裁剪算法 | OpenGL+鼠标交互

    文章目录 其他计算机图形学实验 前言 代码借鉴 步骤 1.点的结构体 2. 创建用于裁剪的窗口并绘制 3.画点函数 4. Cohen-Sutherland 直线裁剪算法部分 4.1 判断点所在位置,生 ...

  4. 计算机图形学实验报告 裁剪,计算机图形学-实验报告三-图形裁剪算法

    <计算机图形学-实验报告三-图形裁剪算法>由会员分享,可在线阅读,更多相关<计算机图形学-实验报告三-图形裁剪算法(9页珍藏版)>请在人人文库网上搜索. 1.图形裁剪算法1. ...

  5. 图形学画直线c语言,002计算机图形学之直线画线算法

    002计算机图形学之直线画线算法 我们知道直线方程的斜截式是如下的样子: y = kx +b 在显示器上显示直线的话,如果使用如上的方程,每描一个点 需要进行一次浮点乘法,一次浮点加法,和取整操作. ...

  6. 计算机图形学---DDA直线画法c#实现

    计算机图形学-DDA直线画法c#实现 DDA直线画法,即数值微分法,是计算机图形学中直线段扫描转换的经典算法之一,本篇文章将简单介绍DDA算法,并给出c#实现的代码. 一.DDA直线画法 设直线的斜截 ...

  7. 计算机图形学五角星c语言,计算机图形学五角星的裁剪代码

    计算机图形学五角星的裁剪代码 import java.awt.*; import java.awt.event.*; import java.util.*; public class ClipLine ...

  8. 计算机图形学E2——OpenGL Bresenham算法画直线

    其他计算机图形学实验见 链接 要求 使用Bresemham算法画直线,并且通过鼠标可以实现交互操作 参考代码: 代码1 代码2 代码3(代码好理解) 代码4(讲解很全面) #include<io ...

  9. 计算机图形学——生成直线的DDA算法

    本博客计算机图形学系列文章索引: 地址:<计算机图形学系列相关文章索引(持续更新)> 数值微分法即DDA法(Digital Differential Analyzer),是一种基于直线的微 ...

  10. 计算机图形学-扫描转换直线段-直线方程法-DDA算法-中点算法-OPENGL实现-详解

    扫描转换直线段 说明与环境配置 环境配置 扫描转换直线段 方法一: 直线方程法 代码描述: 算法比较简单, 暂无代码. 方法二: 数字差分分析DDA算法 代码描述: 方法三: 中点算法 代码描述: 所 ...

最新文章

  1. 根据status信息对MySQL服务器进行优化-2
  2. Android应用程序线程消息循环模型分析(4)
  3. 剔除重复_微服务发生故障后,我是如何做到自动剔除异常的Server?
  4. C/C++中Static的作用详述 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。
  5. 1466C. Canine poetry
  6. MATLAB的GUI如何清空坐标轴的图像
  7. 怎样求信号中的RMS值?
  8. 电平转换电路_【电路】从电平角度理解数字电路
  9. java ab与ab的区别 a|b与a||b的区别 break、continue、return
  10. linux grub内核选择,UBUNTU GRUB没有内核选项,怎么回事啊?
  11. 为什么我tracert经过H3C设备的时候,老是*号,不回包
  12. Archlinux桌面配置指南
  13. 云服务器配置选择方法
  14. 【花雕体验】05 搭建行空板开发环境之SSH连接与Jupyter编程
  15. vlookup多项匹配_VLOOKUP函数一对多查找,就是这么简单!
  16. 7个适合设计小白学的平面设计软件
  17. CSP(内容安全策略)防运营商劫持
  18. 浩瀚的CAD/CAM软件 2021
  19. Scala 中的 Array 数组 详解
  20. kruskal java_Kruskal算法java版

热门文章

  1. 添加固态硬盘后系统迁移
  2. 图灵奖得主都写过哪些书?
  3. 剪辑师:入门级无水印无片头片尾免费视频剪辑工具
  4. python基础教程视频优酷_Python快速入门视频
  5. 全球所有科学家影响力排名第五!这位中国院士到底有多厉害?
  6. Mac如何创建快捷方式?
  7. 使用python语解决一个小学数学题----鸡兔同笼问题
  8. matlab中grid的用法
  9. 在线抢购平台_课程设计报告
  10. 2021宿州市地区高考成绩排名查询,2021年宿州所有小学名单及排名,宿州最好的小学有哪些...