精华内容
下载资源
问答
  • 多边形裁剪

    千次阅读 2019-10-30 13:56:58
    多边形裁剪算法的输出应该是裁剪后的多边 形边界的顶点序列! 需要构造能产生一个或多个封闭区域的多边 形裁剪算法 二、Sutherland-Hodgeman多边形裁剪 该算法的基本思想是将多边形边界作为一个整体, 每次用窗口的...

    一、多边形的裁剪

    如果按线段的方法裁剪,得到的是一系列线段。

    而实际上,应该得到的是下图所示的有边界的区域:

    多边形裁剪算法的输出应该是裁剪后的多边 形边界的顶点序列!

    需要构造能产生一个或多个封闭区域的多边 形裁剪算法

    二、Sutherland-Hodgeman多边形裁剪

    该算法的基本思想是将多边形边界作为一个整体,

    每次用窗口的一条边对要裁剪的多边形和中间结果多边形进行裁剪,

    体现一种分而治之的思想

    把平面分为两个区域:

    包含有窗口区域的一个域称为可见侧;

    不包含窗口区域的域为不可见侧

     

    裁剪得到的结果多边形的顶点有两部分组成:

    (1)落在可见一侧的原多边形顶点

    (2)多边形的边与裁剪窗口边界的交点

    根据多边形每一边与窗口边所形成的位置关系,沿着多边形 依次处理顶点会遇到四种情况:

    (1)第一点S在不可见  侧面,而第二点P在 可见侧

    交点I与点 P均被加入到输 出顶点表中。

     

    (2)是S和P都在可见侧

     则P被加入到输出顶点表中

    (3)S在可见侧,而P在不可见侧

    则交点I被加入到输出顶点表中

    (4)如果S和P都在不可见侧

    输出顶点表中不增加任何顶点

    在窗口的一条裁剪边界处理完所有顶 点后,其输出顶点表将用窗口的下一 条边界继续裁剪

     

     

     

    while对于每一个窗口边或面 do

      begin

        if P1 在窗口边的可见一侧 then 输出P1

        for i=1 to n do

        begin

         if P1 在窗口边的可见一侧 then

        if P1+1 在窗口边的可见一侧 then 输出 P1+1

         else 计算交点并输出交点

        else if Pi+1 在窗口可见一侧,then 计算交点

          并输出交点,同时输出Pi+1

        end

      end

    end

     

    Sutherland-Hodgeman算法不足之处

    利用Sutherland-Hodgeman裁剪算法对凸多边形进行裁剪可以 获得正确的裁剪结果,但是凹多边形不行。

     

    展开全文
  • 多边形裁剪 一、 若采用直线裁剪的方法裁剪多边形,则得到一系列不连续的直线段 应该得到这种图形: 多边形裁剪算法的输出应该是裁剪后的多边形边界的顶点序列! 二、SutherLand-Hodgeman多边形裁剪 1、...

    多边形裁剪

    一、

    若采用直线裁剪的方法裁剪多边形,则得到一系列不连续的直线段

     

    应该得到这种图形:

     

    多边形裁剪算法的输出应该是裁剪后的多边形边界的顶点序列!

    二、SutherLand-Hodgeman多边形裁剪

    1、基本思想是将多边形边界作为一个整体,每次用窗口的一条边对多边形进行裁剪,体现一种分而治之的思想。

    2、裁剪得到的结果多边形的顶点有两部分组成:

    (1)落在可见一侧的原多边形顶点

    (2)多边形的边与裁剪窗口边界的交点

    3、不足之处

    只能适用于凸多边形

     

    文字裁剪

    字符并不是由直线段组成的

    分为串精度裁剪、字符精度裁剪,笔画/像素精度裁剪

    转载于:https://www.cnblogs.com/keguniang/p/9688914.html

    展开全文
  • 多边形裁剪算法

    2020-02-17 10:28:00
    多边形裁剪算法 刚参加工作就跟多边形刚上了,对于多边形的裁剪做一些简单的总结。 多边形裁剪主要有四种算法 Greiner-Hormann裁剪算法 Sutherland-Hodgman算法 Vatti裁剪算法 Weiler-Atherton裁剪算法 作为一名想...

    多边形裁剪算法

    刚参加工作就跟多边形刚上了,对于多边形的裁剪做一些简单的总结。
    多边形裁剪主要有四种算法

    1. Greiner-Hormann裁剪算法
    2. Sutherland-Hodgman算法
    3. Vatti裁剪算法
    4. Weiler-Atherton裁剪算法

    作为一名想要成为优秀算法工程师的程序员,我们不能只会使用,而不知道其原理,倘若如此,我们无法做到应用于本身业务上的定制化的修改。

    Greiner–Hormann算法

    Greiner–Hormann算法的性能要比 Vatti裁剪算法的性能高,但无法处理退化问题,它可以处理自相交和非凸多边形。可以简单地推广计算多边形上的其他布尔运算,例如并集和差集。

    我们看如图4的实例,我们的任务是使用用虚线围成的多边形C裁剪我们的虚点围成的多边形S。

    我们首先确定S多边形边界的哪些部分位于C多边形内.如图5。

    我们可以通过考虑以下类比情况:想象一下沿着S多边形边界推动粉笔车。我们从S多边形的某个顶点开始,如果该顶点位于C多边形内,则在开始处用粉笔画。然后,我们沿着s多边形推动推车,每当我们穿过c多边形的边缘时,就会切换是否用粉笔画(打开/关闭)。当我们到达起始顶点时停止。然后,s多边形中位于c多边形内的部分将用粉笔标记。
    完美!

    我们使用相同的技术,但这次沿着c多边形运行粉笔车,以发现c多边形中位于s多边形内的那些部分(图6)。

    一旦我们找到了位于另一个多边形内的多边形边缘的所有部分,我们就合并这些部分以获得最后裁剪过的多边形(图7)。

    merge过程很容易,考虑到将在结果中的s多边形的每个部分都由s多边形和c多边形的两个交点限定。这些顶点也是在c多边形的一个相关部分的开始或结束。因此,如果您跟踪交叉点和它们来自的部位,那么以正确的顺序连接支撑部位很容易。

    Sutherland–Hodgman algorithm

    Sutherland-Hodgman算法也叫逐边裁剪法,该算法是萨瑟兰德(I.E.Sutherland)和霍德曼(Hodgman)在1974年提出的。这种算法采用了分割处理、逐边裁剪的方法。

    它的基本思想是什么呢,首先我们将c多边形的每一条边在两个方向上无限延伸,将整个空间一分为二。其中,空间中有一侧是我们要保留的可见侧,还有一侧是我们不需要的。

    如果s多边形的顶点位于c多边形边上线的可见侧,则保留他们,生成新的多边形。
    对每个c多边形边重复此过程,使用一个阶段的输出作为下一个阶段的输入。处理完c多边形的所有边后,最终生成的顶点列表将定义一个完全可见的多边形。请注意,如果s多边形在c多边形外的顶点处是凹形的,则新多边形可能有重合(即重叠)的边-这对于渲染是可以接受的,但对于其他应用程序(如计算阴影)则不是。

    Vatti裁剪算法

    与Sutherland-Hodgman和Weiler-Atherton多边形裁剪算法不同,Vatti算法不限制可用作s或c的多边形类型。甚至可以处理复杂(自相交)多边形和带孔的多边形。

    目前来说,我使用的三方库Clipper就是使用的Vatti算法。所以这个方法非常的重要。
    但是,文献要钱,网上找不到相关介绍,暂时算了,以后补上。

    Weiler-Atherton

    说实话,我本来就是要说剖析一下Clipper里用的布尔运算的算法,由于Vatti的原因,心情很沮丧,所以没心情了,放个链接把
    https://blog.csdn.net/yangxi_pekin/article/details/37738219/

    展开全文
  • 本资源包含了Cohen-Sutherland算法、Liang-Barsky算法实现直线段裁剪以及自创的多边形裁剪(老师都没查出BUG)的cpp源代码和实验报告。重点是多边形裁剪,400多行代码,最终实现了任意多边形裁剪,下载即可运行
  • 五、多边形裁剪多边形裁剪算法的输出应该是裁剪后的多边形边界的【定点序列】!5.1Sutherland—Hodgeman多边形裁剪——>【分而治之】基本思想:将多边形边界作为一个整体,每次用窗口的一条边对要裁剪的多边形和...

     

    五、多边形裁剪

    多边形裁剪算法的输出应该是裁剪后的多边形边界的【定点序列】

    5.1Sutherland—Hodgeman多边形裁剪——>【分而治之】
    基本思想:
    将多边形边界作为一个整体,每次用窗口的一条边对要裁剪的多边形和中间结果多边形进行裁剪。

    把平面分为两个区域:包含有窗口区域的一个域称为可见侧;不包含窗口区域的域为不可见侧。
    裁剪得到的结果多边形的顶点有两部分组成:
        (1)落在可见一侧的原多边形顶点;
        (2)多边形的边与裁剪窗口边界的交点。

    根据多边形每一边与窗口所形成的位置关系,沿着多边形依次处理顶点会遇到四种情况:
    (1)第一点S在不可见侧面,第二点P在可见侧面,则交点I与点P均被加入到输出顶点表中;

    (2)第一点S和第二点P都在可见侧,则点P被加入到输出顶点表中;

    (3)第一点S在可见侧,而第二点P在不可见侧,则交点I被加入到输出顶点表中;

    (4)第一点S和第二点P都在不可见侧,则输出顶点表中不增加任何顶点


    【不足之处】
    Sutherland—Hodgeman算法对凸多边形进行裁剪可以获得正确的裁剪结果,但是对凹多边形进行裁剪的结果可能存在问题。


    六、文字裁剪
    文字裁剪包括:串精度裁剪/字符精度裁剪/笔画/象素精度裁剪
    6.1串精度裁剪

    当字符串中的【所有】字符都在裁剪窗口内时,就全部保留它,否则舍弃整个字符串。

    6.2字符精度裁剪

    在进行裁剪时,任何与窗口有【重叠或落在窗口边界以外】的字符都被裁剪掉

    6.3笔画/象素精度裁剪

    将笔划分解成直线段对窗口坐裁剪,需要判断字符串中各字符的哪些象素、笔画的【哪一部分】在窗口内,保留窗口内部分,裁剪掉窗口外的部分。

    转载于:https://www.cnblogs.com/Penglimei/p/9690418.html

    展开全文
  • 计算机图形学 多边形裁剪

    千次阅读 2020-02-10 15:48:07
    多边形裁剪 Sutherland Hodgeman多边形裁剪算法、举例及其缺点
  • opengl 图形学 直线和多边形裁剪 C++
  • SutherlandHodgman多边形裁剪算法 C++ 有详细注释
  • 经典多边形裁剪算法 Sutherland-Hodgman的VC++实现 经典多边形裁剪算法 Sutherland-Hodgman的VC++实现
  • 在 pycharm 加 pyqt5环境中开发,python实现Sutherland-Hodge 逐次裁剪法(多边形裁剪)。 有优美的 UI界面
  • 能够采用各种算法实现直线裁剪、多边形裁剪
  • matlab开发-多边形裁剪和偏移。MEX包装器用于快速、健壮的C 库来剪切和偏移任意多边形。
  • Weiler Atherton 任意多边形裁剪 Sutherland Hodgeman 算法解决了裁剪窗口为凸多边形窗口的问题 但一些应用需要涉及 任意多边形窗口含凹多边形窗口的裁剪 Weiler-Atherton 多边形裁剪算法正是满足这种要 求的算法 一...
  • 逐边裁剪法实现多边形裁剪

    千次阅读 2019-07-22 16:18:57
    已经处理退化边的多边形裁剪算法 //编译环境:Visual C++ 6.0,EasyX_20190219(beta) #include<graphics.h> #include<conio.h> #include<iostream> #define max 30 using namespace std; //设置...
  • mfc 多边形裁剪算法

    千次阅读 2019-05-19 21:11:58
    多边形裁剪 效果截图: 1.头文件定义: enum Boundary{Left, Right, Bottom, Top}; int cj_line_x1;//裁剪直线时原直线的坐标 int cj_line_x2; int cj_line_y1; int cj_line_y2; CPoint cj_win1;//裁剪...
  • Sutherland-Hodgeman多边形裁剪

    千次阅读 2014-05-03 21:28:11
    Sutherland-Hodgeman多边形裁剪  Sutherland-Hodgman算法也叫逐边裁剪法,该算法是萨瑟兰德(I.E.Sutherland)和霍德曼(Hodgman)在1974年提出的。这种算法采用了分割处理、逐边裁剪的方法。  一、Sutherland-...
  • 使用VS 2017实现多边形裁剪算法,此资源包括完整的项目文件,可以直接使用。此代码仅供学习交流使用。
  • Sutherland-Hodgeman多边形裁剪算法思想:  每次用窗口的一条边界(包括延长线)对要裁剪的多边形进行裁剪,裁剪时,顺序地测试多边形各顶点,保留边界内侧的顶点,删除外侧的顶点,同时,适时地插入新的顶点:即...
  • 一.基本思想 采用了分割处理、逐边裁剪的方法。一次用窗口的一条边裁剪...Sutherland-Hodgeman多边形裁剪算法具有一般性,被裁剪多边形可以是任意凸多边形或凹多边形,裁剪窗口不局限于矩形,可以是任意凸多边形 ...
  • 和 mask 裁剪图片说拜拜,用上高性能的 mesh + shader 。文章底部获取完整代码!效果预览: 使用方法:创建一个空节点添加用户脚本组件 mesh-texture-mask添加图片添加修改多边形顶点坐标 实现原理创建 meshmesh 是...
  • 通过c++实现图形学多边形裁剪,简单有效。
  • 多边形裁剪,多边形缠绕方向,多边形区域,多边形质心,多个多边形的质心,线相交,点线距离,线段相交,多边形点包含,多边形三角剖分,多边形Voronoi图,多边形偏移,多边形轮廓,多边形缓冲区,多边形并集,...
  • 计算机图形学的多边形裁剪与填充 MFC实现代码,还有其他直线消隐等,需要的留言
  • 圆对多边形裁剪算法设计与实现Python3.5源码实现

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 844
精华内容 337
关键字:

多边形裁剪