设万维读者为首页 广告服务 联系我们 关于万维
简体 繁体 手机版
分类广告
版主:
万维读者网 > 灵机一动 > 帖子
算法问题的一个基本方法(修改版)
送交者: 高玉宝 2012年07月04日11:02:26 于 [灵机一动] 发送悄悄话
A polygon, either convex or concave.

A point, in the same plane of the polygon, either inside or outside the 

polygon.
From this point, find a direction which cuts most sides of the polygon.


先算出点与多边形各接点连线的角度,然后把多边形各接点根据其角度从小到大

排列,然后从最小的那接点开始,依次检查各接点。为了方便叙述,就称角度小

的一方位左方,角度大的一方为右方。

设x为点与所检查那接点的射线所经过的边线数,m为点的射线能经过的最多射线

数,d为点的射线能经过的最多射线数的那方向,即角度(也就是要找的答案)。

d的初始值为角度最小的接点角度。x和m的初始值根据左边第一接点的情况而定。

1。左边第一接点的两连线(每个接点有两连线)的另一端全在射线的右边,则设

x和m为2。

2。如全在射线的左边,则设x和m为0。

3。一端在左一端在右,则设x和m为1。


然后检查下面的各点(从第二接点开始),如

1。接点两线的另一端全在右边,则x加2。

2。全在左边,则x减2。x减2后,如x小于0,则使x为0。

3。一端在左一端在右,如x是0,则使x为1,否则x不变。

然后比较m和x。如x大于m,则使m=x,使d为这接点的角度。


这样每个点都检查下来后,d(稍偏右一点)就是所要的结果。
0%(0)
0%(0)
标 题 (必选项):
内 容 (选填项):
实用资讯
回国机票$360起 | 商务舱省$200 | 全球最佳航空公司出炉:海航获五星
海外华人福利!在线看陈建斌《三叉戟》热血归回 豪情筑梦 高清免费看 无地区限制
一周点击热帖 更多>>
一周回复热帖
历史上的今天:回复热帖
2011: 从刑侦的角度分析桑兰案