扫描线学习

Posted a-sc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扫描线学习相关的知识,希望对你有一定的参考价值。

对扫描线步骤的理解:

1:首先要保存所有的边,并按照x值从小到大排序,如果是左边,标记为1,如果是右边,标记为-1。
    struct line
    {
        double from,to,x;//边起点y坐标,终点y坐标,x坐标
        int flag;       //左右边标记
    }
2:扫描线从左往右扫描,每遇到一条边就停下来,将这条边投影到总区间上,“投影”其实就是执行在总区间中插入或者删除线段操作。
  >扫描到flag为1的边,为左边,往总区间加上这条线段,具体执行就是对应那一段值+1。
  >扫描到flag为-1的边,为右边,要从左区间中删除,那段值都-1。
3:每扫描一条边投影到总区间后,要计算总区间现在被覆盖的总长度;然后用下一条边的x值减当前边的x值,乘上区间被覆盖的长度,就能算出一部分面积,一直计算下去就能得到总面积
    


    参考资料:https://blog.csdn.net/ITcbd/article/details/37968599
     https://zhuanlan.zhihu.com/p/82104915
     https://oi-wiki.org/geometry/scanning/
 

以上是关于扫描线学习的主要内容,如果未能解决你的问题,请参考以下文章

片段创建的 Intent 不会触发 onNewIntent

Zxing QR扫描仪onActivityResult未在片段中调用[重复]

在 zxing 片段库中打开/关闭手电筒

IOS开发-OC学习-常用功能代码片段整理

java SpringRetry学习的代码片段

python 机器学习有用的代码片段