• 裁剪算法——多边形裁剪/文字裁剪


    五、多边形裁剪

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

    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笔画/象素精度裁剪

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

  • 相关阅读:
    leetcode 13. Roman to Integer
    python 判断是否为有效域名
    leetcode 169. Majority Element
    leetcode 733. Flood Fill
    最大信息系数——检测变量之间非线性相关性
    leetcode 453. Minimum Moves to Equal Array Elements
    leetcode 492. Construct the Rectangle
    leetcode 598. Range Addition II
    leetcode 349. Intersection of Two Arrays
    leetcode 171. Excel Sheet Column Number
  • 原文地址:https://www.cnblogs.com/Penglimei/p/9690418.html
Copyright © 2020-2023  润新知