数学之美--不规则多边形重叠计算(2)

  数学之美--不规则多边形重叠计算

补充
 
我的上一篇 blog 中忽略了一种关系 , 这种忽略也同样发生在我最初接手这个项目的时候 . 也就是效果 3: 一个图完全包含另外一个图 , 在这种情况下两个多边行是没有交点的 . 如下图所示 :
 
 
我很感谢 nile black”,” 恋花蝶 和其他朋友的回复 . 不过 , 他们的方案都存在一些问题 . 我同样也和他们一样的思路 .
 
( 回过头来看 , 这篇 blog 应该改名成 , 数学之美 --” 多边形是否重叠计算 ”)
 
最初的想法 : 计算线段相交 , 在思考这种方法的同时我忽略掉了 效果三 这种可能 , 我当时认为虽然使用 线段相交 算法逐个比较的计算次数可能较大 , 但是我还是绝定采用 . 在我看来能够解决问题才是最重要的 .
 
但是我的希望破灭了 , 有人提醒了我 : 还有 效果三 的产生 . 我一下子突然发现最初的思路解决不了这种情况 . 一时之间 , 我尝试了很多思路 , 甚至想做图象使用比例尺后来计算 异或 ”, 但是这种方法也不可行 .
 
如何办呢 ? 如何办呢 ? 如何办呢 ? 如何解决包含这种情况呢 ?
 
当时我开始拼命回忆自己初中 , 高中以及大学的数学知识 , 想看看 : 过去学习过的知识中是否有可以解决这一问题的情况 .
 
但是没有 !!!
 
Google ,Google. 最后的结果是惊喜的 , 在我 Google 了大量的网页后 , 呵呵 , 我甚至去访问过小学的几何教学网站 .
 
 
解决方案
 
我来卖卖关子 : 最后解决多变形是否有重叠区域还是靠的计算线段相交 . 各位在看下去之前是否还给自己一些思考的机会呢 ???
 
 
 
等不及了 ? 我们继续 … …
 
很幸运 , Google 出了一个理论 , 为了方便大家理解我把这个理论分割了一下 :
 
1.        理论一 : 如果多边形相交 ( 包含 ), 那么任意一个多边行至少有一个 顶点 在另一个多边形怀抱中 . 给一个简单而咸湿的比喻 : 男女 XXX, 一定有某样东西在对方体内 . 如下图所示 :
 
 
 
2.        理论二 : 从上图中 1” 的顶点向任意一边做平行射线 , 那么平行射线和多边形图 2 的至少有一个交点 ( 由于是任意多变形 , 所以射线可能不只和一条边相交 ), 如下图所示 :
 
 
3.        理论三 ( 这个理论最关键 , 前面的都是废话 ): 如果存在一条射线 L 和图 2 的线段交点个数为奇数 , 那么这两个图形必有重叠 .
 
对于理论 3, 我就不画图了 , 这里需要大家发挥自己的平面构思能力来思考这一问题 . 等大家想明白这个理论的时候或许会突然发觉 : 原来是这样 , 原来可以这样 , 原来这么简单我都没有注意到 .
 
( 需要提醒的是这个理论还是有一个瑕疵 , 不过这个瑕疵还是可以解决的 , 我就故意留下来给大家思考 )
 
如果你想通了以上理论的话 , 接下来就简单了 , 就是直线方程的计算机化了 . 但是千万不要高兴太早 : 你记得什么是直线方程吗 ???
 
很汗颜的是 , 当时的我确实是忘记了什么是直线方程 :y=kx+b, 或者 ax+by+c=0. 如果你都还没有忘记 , 而且还知道如何求解直线方程的话 , 恭喜您 !
 
我打算把这篇 blog 就写到这里 , 我认为不必把整个算法代码贴在这里 . 大家如果有兴趣不妨自己动动手 .
 
再次感谢回复我上篇 blog 的朋友 !
 
附记:之所以用了"数学之美"这个词语,一方面是模仿Google's Blog;另外一方面在我看来:解决这个"多边形是否重叠"问题的最后思路确确实实给了我一种很奇妙的感觉"原来可以这样"
Sean.Pu 2006.08.17 补充:
感谢phoenixsh提醒了我,我确实又以点概面了,本文的理论一确实是有问题的,所以在目前我能提供的解决多边形重叠的问题的方法是:
1,线段相交计算;
2,射线和线段交点计算,至于射线和多变形顶点的交点问题很好解决:
    1),由于是原始数据是地理数据,产生射线和多边形顶点相交的概率非常小, 
    2),如果出现上面说的情况下,在直线方程中变换K的值,重新方程,上文只是为了方便才说"平行射线"
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值