zoukankan      html  css  js  c++  java
  • 三维算法:任意凹凸多边形分割成若干个三角形网

    我把那个算法优化了一下,现在分割多边形的数量大大减少了
    具体算法如下:
    0) 初始化ma = pi
    1)将凹多边形放入凹多边形队列
    2)从队首取出一个多边形G
    3)遍历G每个顶点,找出其中一个凹顶点p。
    4)过p和另一个顶点q作这个多边形的一条弦(我想一定至少可以找到一个q能做一条弦,但是没有证明过),这条弦将原先的凹顶角分割成两个角a,b
    5)记 angle = min(a, b)
    6)如果弦的另一端点q也是凹顶点,且angle < pi/2,则令angle = angle - pi/2,(这是为了将凹多边形尽可能少地分割成凸多边形块)
    7)若ma > angle ,则令ma = angle,记分割弦 cd = line_segment(p,q)
    8)回到4)直到遍历过所有的顶点
    9)用分割弦分割多边形,判断分割出的两个子多边形是否为凹多边形,若是,放入队列
    10)回到2)直到队列为空
    
    算法的时间复杂度为O(n^2)
  • 相关阅读:
    tcp粘包解决
    socket网络编程
    logging模块
    异常处理
    hashlib configparser模块
    列表推导式和生成器表达式和内置函数
    迭代器与生成器
    装饰器
    函数
    文件操作
  • 原文地址:https://www.cnblogs.com/k5bg/p/15014605.html
Copyright © 2011-2022 走看看