守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 458|回复: 0

[算法/性能优化] potrace笔记

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    51788
    钢镚
    1422

    开源英雄守望者

    发表于 2015-1-20 10:35:33 | 显示全部楼层 |阅读模式
    原文地址:http://www.blogbus.com/linxinboy-logs/270323157.html
    以下是potrace算法2.2.1节笔记,  主要是对算法中calc_lon函数的解释,
    potrace的代码相当难阅读, 只有看过代码的同学才知道以下有何意义。

    笔记 potrace 2.2.1节
    原始像素点


    分解后的path   由于保证路径左边有一个黑色像素  所以路径 为 下 右 上 左



    数据



    加上pivot



    为了计算惩罚,我们将多边形的顶点 i 精确地放置于对应路径的点vi,即在坐标系有整型坐标的点。
    故 算法中用的仍然是整型坐标, 2.2.1节
    关键
    从点i 找到一个 点 k  使得 vi 到 vk 中间的 所有点  vj 到 此直线的距离 d(vj, w) 都 <=1 此距离 为 max(disx, disy);
    2.2.1节求的是  分解后的 path 每个节点  所能够到达的 最远 点k 仍满足d(vj, w) <=1 的  privot
    示例  当i = 6



    k = 0 方向 左 cur = (-4, 0)  constaint0 = (-3, 1) constaint1 = (-3, -1)
    k = 1 方向 下 cur = (-4, 1)  constaint0 = (-3, 1) constaint1 = (-5, 0)    new constaint0 = (-3, 2) 没有比旧constriant0更接近 cur  故舍弃
    k = 5 方向 右 cur = (0, 1) xprod(constraint[0], cur) < 0 break;  即超出constaint1 范围 故 break
    简单来说 求每个点i 能够最远到达的点k   即  求第一次 的 cur   在此 cur 上下 + -1(或左右) 范围内的点。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2019-11-18 22:40 , Processed in 0.043013 second(s), 32 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表