zoukankan      html  css  js  c++  java
  • 2.4.2 遇见多边形

    遇见多边形

    几种表示方法:顶点表示、边界表示、内点表示

    输入:多边形顶点序列P1到Pn

    输出:最佳逼近这个多边形的像素点集

    x-扫描线算法

    几个问题:

    1.当扫描线与多边形顶点相交时,焦点的取舍问题?算几个

    策略:交点个数=构成这个定点的两条边位于扫描线上方的条数

    2.左闭右开,下闭上开

    中心会偏移

    3.算法的效率问题。

    改进思路:

    对于一条扫描线,需要与所有的边求交吗?

    扫描线而直线在y方向上都有连贯性,那么交点可以怎么求?(增量计算)

    每次都需要排序吗?重新排序的时机:新边加入时

    改进后得到的算法叫做:Y向连贯性算法。

    Y向连贯性算法

    算法的数据结构

    • 边表
      • 多边形所在位置的纵坐标范围。每个数据项存储的是两个节点中靠下节点坐标与该数据项表示的纵坐标相同的边结点组成的链表。
      • 每个结点的数据依次包括:该边靠下节点的横坐标,该边靠上节点的纵坐标(可能需要-1),该边的斜率,指向下一个结点的指针
    • 有效边
      • 与当前扫描线相交的多边形的彼岸,也称为活性边
    • 有效边表
      • 把有效边按与扫描线交点x坐标递增的顺序放在一个链表中,此表称为有效边表。
    • 有效边表的每个结点

    算法过程

     

     

     算法分析:

    优点:

    采用增量计算的方法进行交点计算

    仅仅在新边加入时排序(边数远小于扫描线数的情况下使用)

    缺点:

    桶表、链表的维护开销

    边标志算法

     奇妙想法

     

  • 相关阅读:
    射频系统架构
    Tensorflow 2.0 mnist
    Lintcode 32. 最小子串覆盖 && Leetcode 76. Minimum Window Substring
    内存管理之智能指针unique_ptr&weak_ptr
    内存管理之智能指针shared_ptr
    内存管理之直接内存管理
    c++ 三大特性之继承
    稀疏矩阵乘法
    Linux环境下mysql常用命令
    字符串的查找删除
  • 原文地址:https://www.cnblogs.com/BoysCryToo/p/15740781.html
Copyright © 2011-2022 走看看