所有线段的交点-初级篇

所有线段的交点-初级篇

标签(空格分隔): 计算机视觉·图形学


  • 所有线段的交点-初级篇

参考:《计算几何 - 算法与应用》邓俊辉 译 清华大学出版社

本文以一个小例子介绍如何计算所有线段交点,不考虑利用水平x方向的位置关系减小复杂度,举例:
所有线段的交点-初级篇_第1张图片

状态结构S

  • (1)扫描线首先经过线段1的上端点,线段1进入S={1}
    所有线段的交点-初级篇_第2张图片
  • (2)扫描线经过线段2的上端点

    • 计算线段2与S中所有线段交点,得到A
    • 线段2进入S={1,2}
      所有线段的交点-初级篇_第3张图片
  • (3)扫描线经过线段4的上端点

    • 计算线段4与S中所有线段交点:无
    • 线段4进入S={1,2,4}
      所有线段的交点-初级篇_第4张图片
  • (4)扫描线经过线段3的上端点
    • 计算线段3与S中所有线段交点:B和C
    • 线段3进入S4={1,2,4,3}
      所有线段的交点-初级篇_第5张图片
  • (5)扫描线经过线段1的下端点
    • 线段1出状态结构,S={2,4,3}
      所有线段的交点-初级篇_第6张图片
  • (6)扫描线经过线段2的下端点
    • 线段2出状态结构,S={4,3}
      所有线段的交点-初级篇_第7张图片
  • (7)扫描线经过线段3的下端点
    • 线段3出状态结构,S={4}
      所有线段的交点-初级篇_第8张图片
  • (8)扫描线经过线段4的下端点
    • 线段4出状态结构,S={},即状态结构为空
      所有线段的交点-初级篇_第9张图片
  • (9)扫描线首先经过线段5的上端点
    • 线段5进入S={5}
      所有线段的交点-初级篇_第10张图片
  • (10)扫描线经过线段6的上端点
    • 计算线段6与S中所有线段的交点:D
    • 线段6进入S={5,6}
      所有线段的交点-初级篇_第11张图片
  • (11)扫描线经过线段7的上端点
    • 计算线段7与S中所有线段交点:无
    • 线段7进入S={5,6,7}
      所有线段的交点-初级篇_第12张图片
  • (12)扫描线经过线段8的上端点
    • 计算线段8与S中所有线段交点:E
    • 线段8进入S={5,6,7,8}
      所有线段的交点-初级篇_第13张图片
  • (13)扫描线经过线段5的下端点,线段5出,S={6,7,8}
    所有线段的交点-初级篇_第14张图片
  • (14)扫描线经过线段7的下端点,线段7出,S13={6,8}
    所有线段的交点-初级篇_第15张图片
  • (15)扫描线经过线段8的下端点,线段8出,S14={6}
    所有线段的交点-初级篇_第16张图片
  • (16)扫描线经过线段6的下端点,线段8出,S15={}
    所有线段的交点-初级篇_第17张图片
  • 至此,所有角点求解完毕,得到{A、B、C、D、E}

你可能感兴趣的:(计算机图形学)