原文地址:http://course.cug.edu.cn/cugFirst/computer_graphics/class/course/3-3-1-a.htm 时间: 2024-10-08 14:15:19
五.多边形裁剪 多边形裁剪算法的输出应该是裁剪后的多边形边界的[定点序列]! 5.1Sutherland-Hodgeman多边形裁剪-->[分而治之]基本思想:将多边形边界作为一个整体,每次用窗口的一条边对要裁剪的多边形和中间结果多边形进行裁剪.把平面分为两个区域:包含有窗口区域的一个域称为可见侧:不包含窗口区域的域为不可见侧.裁剪得到的结果多边形的顶点有两部分组成: (1)落在可见一侧的原多边形顶点: (2)多边形的边与裁剪窗口边界的交点. 根据多边形每一边与窗口所形成的位置关系,
CGA裁剪算法之Sutherland-Hodgman多边形裁剪算法 Sutherland-Hodgman算法也叫逐边裁剪法,该算法是萨瑟兰德(I.E.Sutherland)和霍德曼(Hodgman)在1974年提出的. 这种算法采用了分割处理.逐边裁剪的方法.这一算法,适合任何凸多边形窗口对任何“凸或者凹,或者平面或者非平面”多边形的裁剪处理. 逐边逐次裁剪特点:逐边是分别用裁剪平面的边界来处理,且裁剪各个边界的处理顺序无关紧要.逐次是每次的裁剪边界对多边形的每条边处理是依次进行的,有顺序要求.
一.Cohen-Sutherland剪裁算法 1.基本思想 对于每条线段P1P2分为三种情况处理: (1)若P1P2完全在窗口内,则显示该线段P1P2. (2)若P1P2明显在窗口外,则丢弃该线段. (3)若线段不满足(1)或(2)的条件,则在交点处把线段分为两段.其中一段完全在窗口外,可弃之.然后对另一段重复上述处理. 为快速判断,采用如下编码方法: 将窗口边线两边沿长,得到九个区域,每一个区域都用一个四位二进制数标识,直线的端点都按其所处区域赋予相应的区域码,用来标识出端点相对于裁剪矩形边界
还是其几天写的,这是最简单的一个直线裁剪算法了吧,它针对的是一个矩形和一条线段.并且还是边与坐标轴平行的矩形. 在实际应用上应该会经常用于屏幕对各种线段的裁剪吧.算法很简单效率也很高. 首先是算法的两种特例:平凡接受和平凡拒绝. (图片来自<计算机图形学(OpenGL)>第三版) 当线段的两个端点都在矩形内部,则平凡接受,不需要裁剪.如图中的AB.而当线段的两个端点都在某条边的外边时,平凡拒绝,也不需要裁剪.如图中的CD. 检测这两种情况的方法可以先形成两个端点的码字,如下: 那么可以得到如下
多边形裁剪 一. 若采用直线裁剪的方法裁剪多边形,则得到一系列不连续的直线段 应该得到这种图形: 多边形裁剪算法的输出应该是裁剪后的多边形边界的顶点序列! 二.SutherLand-Hodgeman多边形裁剪 1.基本思想是将多边形边界作为一个整体,每次用窗口的一条边对多边形进行裁剪,体现一种分而治之的思想. 2.裁剪得到的结果多边形的顶点有两部分组成: (1)落在可见一侧的原多边形顶点 (2)多边形的边与裁剪窗口边界的交点 3.不足之处 只能适用于凸多边形 文字裁剪 字符并不是由直线段组成的
2.求出一段圆弧的中点 (1)准备工作,对之前求得的圆与多边形的公共点进行排序,为了使公共点集于多边形顶点的给出方向一致,将交点在多边形的第几条边上作为排序的第一指标,将参数t作为第二指标.所以我的交点结构体要包括参数t和所在边信息. struct CrossoverPoint { double t; double x; double y; double a;//角度 int index;//属于哪条边 }; (2)准备工作,将公共点序列中值完全相同的点去除,避免在焦点获取中对
// 计算机图形学View.cpp : C计算机图形学View 类的实现// #include "stdafx.h"#include"math.h"// SHARED_HANDLERS 可以在实现预览.缩略图和搜索筛选器句柄的// ATL 项目中进行定义,并允许与该项目共享文档代码.#ifndef SHARED_HANDLERS#include "计算机图形学.h"#endif #include "计算机图形学Doc.h"#i
基本上又将近2个月没更新博客了,最近确实是很忙很累,基本上没时间整理自己知识,工作的重心几乎完全被三角网的相关算法完全所占据,还有mfc这个拖油瓶更是雪上加霜,记得使用过pcl显示的同志肯定对如下的场景深有体会. 估计基于pcl的显示做平台的人,估计此时此刻必定是身无可恋了,pcl这个库确实是让人既爱又恨,相当于vcg,cgal这些强大的算法确实容易上手,即使对于编程能力很弱的同学来说,pcl 库的使用也不会太难,同时也感谢其相对简单的底层设计,不太复杂的结构,让博主这种编程水平十分平庸的业余码
前言:由于我读了邹欣老师的<构建之法:现代软件工程(第二版)>,因此对敏捷软件开发有了比较大的兴趣.于是我在网上找了一些论文,比如Requirements Engineering and Agile Software Development.A decade of agile methodologies: Towards explaining agile software development.在读了这些论文之后,对敏捷软件开发有了大致的了解.这篇博文主要是简单介绍敏捷软件开发,重点集中在主