【转】[专题学习][计算几何]

原文地址:http://www.cnblogs.com/ch3656468/archive/2011/03/02/1969303.html

 

 

基本的叉积、点积和凸包等东西就不多说什么了,网上一搜一大堆,切一些题目基本熟悉了就差不多了。

  一些基本的题目可以自己搜索,比如这个blog:http://blog.sina.com.cn/s/blog_49c5866c0100f3om.html

  接下来,研究了半平面交,思想方法看07年朱泽园的国家队论文,模板代码参考自我校大牛韬哥:

http://www.owent.net/2010/10/acm-%E8%AE%A1%E7%AE%97%E5%87%A0%E4%BD%95-%E4%B8%AA%E4%BA%BA%E6%A8%A1%E6%9D%BF.html

  一些半平面交的题目:

  POJ 3335 Rotating Scoreboard
  http://acm.pku.edu.cn/JudgeOnline/problem?id=3335


  POJ 3130 How I Mathematician Wonder What You Are!
  http://acm.pku.edu.cn/JudgeOnline/problem?id=3130


  POJ 1474 Video Surveillance
  http://acm.pku.edu.cn/JudgeOnline/problem?id=1474
  知识点:半平面交求多边形的核,存在性判断

 

  POJ 1279 Art Gallery
  http://acm.pku.edu.cn/JudgeOnline/problem?id=1279
  半平面交求多边形的核,求核的面积

 

  POJ 3525 Most Distant Point from the Sea (推荐)
  http://acm.pku.edu.cn/JudgeOnline/problem?id=3525
  给出一个多边形,求里面的一个点,其距离离多边形的边界最远,也就是多边形中最大半径圆。
  解法:可以使用半平面交+二分法解。二分这个距离,边向内逼近,直到达到精度。

 

  POJ 3384 Feng Shui (推荐)
  http://acm.pku.edu.cn/JudgeOnline/problem?id=3384
  半平面交实际应用,用两个圆覆盖一个多边形,问最多能覆盖多边形的面积。
  解法:用半平面交将多边形的每条边一起向“内”推进R,得到新的多边形,然后求多边形的最远两点。

 

  POJ 1755 Triathlon (推荐)
  http://acm.pku.edu.cn/JudgeOnline/problem?id=1755
  半平面交判断不等式是否有解。注意不等式在转化时正负号的选择,这直接影响到半平面交的方向。

 

  POJ 2540 Hotter Colder
  http://acm.pku.edu.cn/JudgeOnline/problem?id=2540
  半平面交求线性规划可行区域的面积。

 

  POJ 2451 Uyuw’s Concert
  http://acm.pku.edu.cn/JudgeOnline/problem?id=2451
  Zzy专为他那篇nlogn算法解决半平面交问题的论文而出的题目。

 

  (以上题目来自别人的blog,后面还有几题是我自己找到的)

  POJ 1271 Nice Milk
  http://poj.org/problem?id=1271
  黑书习题
 
 
  UVA 11722 Joining with Friend
  http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=117&page=show_problem&problem=2769
  概率问题,这个规模用半平面交有点浪费,不过就当练习了
 
 
  USACO 2010 MARCH GOLD StarCowraft
  http://61.187.179.132:8080/JudgeOnline/showproblem?problem_id=1829
 
  

 

 
 
 
 
 
 
 
 

  接下来稍微弄了一下坐标旋转的问题,具体可以参考武汉大牛的博文http://dumbear.com/blog/?p=143

  坐标旋转题目切得不多

  HDU 1700 Points on Cycle
  http://acm.hdu.edu.cn/showproblem.php?pid=1700
  比较基础的一道题
 
  POJ 3845 Fractal
  http://poj.org/problem?id=3845
  注意eps的取值
 
  POJ 1133 Stars
  http://poj.org/problem?id=1133
 
  Harbin Online Contest 2010
  http://acm.hrbeu.edu.cn/index.php?act=problem&id=1006&cid=16
  三维坐标旋转。这个要有账号才能提交,还有就是Sample Input 中第二个Sample的“275”改成“270”
 
  HDU 3623 Covering Points (2010天津网络赛C题)
  http://acm.hdu.edu.cn/showproblem.php?pid=3623 (航电没有这题了)
  http://acm.tju.edu.cn/toj/showp3740.html 
 
  FZU 2002 Shade of Hallelujah Mountain (2010福州regional)
  http://acm.fzu.edu.cn/problem.php?pid=2002

  HDU 4087 ALetter to Programmers (2011 北京现场赛)
  http://acm.hdu.edu.cn/showproblem.php?pid=4087
  三维旋转矩阵 + 矩阵加速

 



 

 

  然后是旋转卡壳,一个很好的学习网站http://cgm.cs.mcgill.ca/~orm/rotcal.html(不过是英文的),后来找到一个大牛的blog里有部分翻译http://blog.youkuaiyun.com/ACMaker,综合起来看了一下,收益良多啊。

  一些旋转卡壳的题目

  POJ 2187 Beauty Contest
  http://acm.pku.edu.cn/JudgeOnline/problem?id=2187
  凸包求最远点对。可以暴力枚举,也可以使用旋转卡壳。

 

  POJ 3608 Bridge Across Islands
  http://acm.pku.edu.cn/JudgeOnline/problem?id=3608
  两个凸包的最近距离。

  上面两题可以参考blog:http://www.cppblog.com/staryjy/archive/2009/11/19/101412.html(上面代码很不错)

 

  POJ 2079 Triangle
  http://poj.org/problem?id=2079
  这题以为O(N^2)的复杂度会超时,结果就是O(N^2)复杂度
 
 
  UVA 10173
  http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=13&problem=1114&mosmsg=Submission+received+with+ID+8029560
  给定点集S,求S的最小覆盖矩形
 
  
 

 

 

 

 

  然后看了一些扫描线之类的东西。

  推荐几道比不错的题目:

  POJ 2932 Coneology
  http://poj.org/problem?id=2932
 
  HDU 3124 Moonmist
  http://acm.hdu.edu.cn/showproblem.php?pid=3124
  最近圆对问题(二分 + 扫描线)
 
  HDU 3867 Light and Shadow
  http://acm.hdu.edu.cn/showproblem.php?pid=3867
  (按极角扫描)注意-PI和PI的位置分割

 

 

 

  下面看了一些随机算法:(08年顾研论文-《浅谈随机化思想在几何问题中的应用》)

     (1)随机增量法:这个算法很犀利啊,把一些计算几何的问题降了一个n复杂度。(典型的有最小圆覆盖)

        网上找了最小圆覆盖的随机增量算法,里面代码倒是不错,就是解释的不是很清楚,推荐看《计算几何算法与应用(第3版)》(邓俊辉译,清华大学出版社出版)中第91页“4.7最小包围圆”这个章节中的内容,比较详细也很清楚,代码我参考了这个blog的http://blog.youkuaiyun.com/pvpishard/archive/2011/01/27/6167262.aspx

    (2)模拟退火:参考顾研论文

      模拟退火的题目:

      POJ 1379 Run Away
      http://poj.org/problem?id=1379
 
      POJ 2420 A Star not a Tree?
      http://poj.org/problem?id=2420
 
      URAL 1520 Empire Strikes Back(推荐)
      http://acm.timus.ru/problem.aspx?space=1&num=1520
      顾研论文例题,不错的题目
 
      POJ 2069 Super Star
      http://poj.org/problem?id=2069
      此题我WA和TLE了很多次
 
      POJ 3301 Texas Trip
      http://poj.org/problem?id=3301
      这题也可以用三分
      
      SPOJ 4409 Circle vs Triangle
      https://www.spoj.pl/problems/AREA1/
      模拟退火 + 解析几何
 
      POJ 3285 Point of view in Flatland
      http://poj.org/problem?id=3285
      这题的难点在于找到合适的评估函数,当然这题也可以通过解方程组来做
 
      POJ 2600 Geometrical dreams
      http://poj.org/problem?id=2600
      这题不是模拟退火的题,但是可以用模拟退火过。非模拟退火的方法也不难
 
 
 
 
 

 

 

 

  解析几何平面最近点对,。。。这些搞得也不是很深入。

 
 

 

  

  折纸问题 参见大牛dumbear的blog http://dumbear.com/blog/?p=249

  两道题目

  POJ 1921 Paper Cut
  http://poj.org/problem?id=1921
  这题相对下一题还算比较好做
 
  POJ 3806 Origami Through-Hole
  http://poj.org/problem?id=3806
  这题处理有点麻烦,我调试了很久才过
 
 
 
 
 
 
 
 
 

  圆的面积并和交,详细可以看AekdyCoin大牛的blog

  圆的面积并:http://hi.baidu.com/aekdycoin/blog/item/c1b28e3711246b3f0b55a95e.html

  圆的面积交:http://hi.baidu.com/aekdycoin/blog/item/12267a4e9476153bafc3abbd.html

  题目:

  SPOJ 8073 The area of the union of circles
  https://www.spoj.pl/problems/CIRU/
 
  SPOJ 3863 Area of circles
  https://www.spoj.pl/problems/VCIRCLES/
 
  SPOJ 8119 CIRU2
  https://www.spoj.pl/problems/CIRUT/
  圆面积并的拓展
 
  HDU 3467 Song of the Siren
  http://acm.hdu.edu.cn/showproblem.php?pid=3467
 
  HDU 3239 Jiajia's Robot (推荐)
  http://acm.hdu.edu.cn/showproblem.php?pid=3239
  很巧妙的一道题,我是看了AC大牛blog中的留言才知道到方法的。
    方法见AC大牛blog中的一条留言:http://hi.baidu.com/aekdycoin/blog/item/12267a4e9476153bafc3abbd.html
 
 
  
 
 
 

  凸多边形的面积并

  先看了AC大牛的blog学会了O(N^3)的方法,后来在做Codeforces的时候发现有O(N^2*logN)的方法,而且也不繁琐

  AC大牛的博文:http://hi.baidu.com/aekdycoin/blog/item/fbe5a03232c71952ad4b5fcc.html

  Codeforces Round #83 DIV1 的 E题用O(N^3)的方法过不掉第49组数据,然后研究了其他大牛的凸多边形交的代码

  http://codeforces.com/contest/107/status/E

  先是看了dagon的代码发现其实他的代码有问题,Codeforces的数据居然没有查出来。然后看了syntax_error的代码,

  发现他是用类似梯形剖分的方法做的,复杂度O(N^2*logN),果断就学习了

  题目:http://codeforces.com/contest/107/problem/E

  有关细节:http://www.cnblogs.com/ch3656468/archive/2011/10/17/2215551.html

 
 
 
 
  
 
 

  有一类题目是给出一些点,并告诉你哪些点之间有连线,并且这些连线段之间除端点之外没有其他交点(有时候这些线段是要自己处理出来的)。

   然后题目要你求

    1 每小块多边形的面积

    2 有多少个K多边形内部不含点和线段

    3 这些线段围成的图形的轮廓线

  这类题目的方法都差不多,在很多大牛的blog里都可以找到类似的方法。

  比如: gccfeli大牛的blog:http://gccfeli.cn/2007/09/%E8%AE%A1%E7%AE%97%E5%87%A0%E4%BD%95-pku1092-%E5%A5%87%E7%89%B9%E7%9A%84%E6%8A%80%E5%B7%A7.html

      watashi大牛的blog:http://watashi.ws/blog/970/andrew-stankevich-3-solution/

      Isun大牛的blog:http://hi.baidu.com/xh176233756/blog/item/29652646f0e870006a63e5cb.html

  题目:

  POJ 1092 Farmland
  http://poj.org/problem?id=1092
 
  ZOJ 2361 Areas / SGU 209
  http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2361
  不错的一题,watashi的blog里有解题报告
 
  POJ 3743 LL’s cake
  http://poj.org/problem?id=3743
 
  POJ 2164 Find the Border
  http://poj.org/problem?id=2164
 
 
 
 
 
 

  三维几何

  网上有关三维几何的内容很少阿,代码和题目基本都不怎么能搜到,我也就切了不多的几题

  前面坐标旋转里的两到题:

 

    Harbin Online Contest 2010
    http://acm.hrbeu.edu.cn/index.php?act=problem&id=1006&cid=16
    三维坐标旋转。这个要有账号才能提交,还有就是Sample Input 中第二个Sample的“275”改成“270”
 
    FZU 2002 Shade of Hallelujah Mountain (2010福州regional)
    http://acm.fzu.edu.cn/problem.php?pid=2002
 

  SGU 110 Dungeon
  http://acm.sgu.ru/problem.php?contest=0&problem=110
  三维光线反射
 
  FZU 1981 Three kingdoms (2010福州网络赛)
  http://acm.fzu.edu.cn/problem.php?pid=1981
  坐标映射,我一开始用map一直TLE,只好改成不用map的代码 
 
  UVA 11275 3D Triangles
  http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=2250
  HDU 4042是这题的加强版,我使用同样的代码AC的
  对于这题题目中诡异的精度0.000001我并没有特别处理
 
  HDU 4042 Fireworks (2011北京网络赛)
  http://acm.hdu.edu.cn/showproblem.php?pid=4042
  很不错的题目 (解题报告:http://hi.baidu.com/%D0%A1%CE%E4rj/blog/item/0114bb2dcd4cdef78b13991d.html)
 
  HDU 4087 ALetter to Programmers (2011 北京现场赛)
  http://acm.hdu.edu.cn/showproblem.php?pid=4087
  三维旋转矩阵 + 矩阵加速
 

 

 
 

  其他一些题目:

  EOJ 283 Target Practice
  http://202.120.106.94/onlinejudge/problemshow.php?pro_id=283
  搜索 + 几何
 
  POJ 1688 Dolphin Pool
  http://poj.org/problem?id=1688
  这题有好几种做法
 
  POJ 1981 Circle and Points
  http://poj.org/problem?id=1981
  很经典的一道题目
 
  POJ 3675 Telescope
  http://poj.org/problem?id=3675
  圆和多边形的公共面积
 
  POJ 1259 The Picnic
  http://poj.org/problem?id=1259
  最大凸洞,计算几何 + DP
 
  POJ 1586 Three Sides Make a Triangle
  http://poj.org/problem?id=1586
  题目内容很简单,方法也很明显,不过想AC可不容易,精度很恶心的一题,我是看了discuss才过的
  
  HDU 3629 Convex (推荐)
  http://acm.hdu.edu.cn/showproblem.php?pid=3629
  一道不错的题目,这题有两种思路:
    1)http://apps.topcoder.com/wiki/display/tc/TCO%2710+Online+Round+4
    2)http://www.owent.net/2010/09/the-35th-acmicpc-asia-regional-tianjin-site-%E2%80%94%E2%80%94-online-contest-1009-convex-%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A.html
 
 
  HDU 3644 A Chocolate Manufacturer's Problem (2010杭州网络赛)
  http://acm.hdu.edu.cn/showproblem.php?pid=3644
  本来想用模拟退火水一下的,结果徘徊于WA和TLE之间无法AC
 
  FZU 1973 How many stars (推荐) (2010福州网络赛)
  http://acm.fzu.edu.cn/problem.php?pid=1973
  比较经典的一道题目
 
  POI2007 对称轴osi
  http://www.zybbs.org/JudgeOnline/problem.php?id=1100
  很犀利的一道题目,题意是判多边形的对称轴个数,原来做的这种题目都是用O(N^2)的复杂度来解的,
  这次O(N^2)果断不行,加随机化也过不了,最后在解题报告的指导下才搞定这题。第一次发现计算几何
  的问题居然还能用字符串的方法解。
  网上搜到的解题报告:http://hi.baidu.com/nplusnplusnplu/blog/item/d260baef2e9e9c5879f055cb.html

转载于:https://www.cnblogs.com/wangdongkai/p/5551603.html

### 光流法C++源代码解析与应用 #### 光流法原理 光流法是一种在计算机视觉领域中用于追踪视频序列中运动物体的方法。它基于亮度不变性假设,即场景中的点在时间上保持相同的灰度值,从而通过分析连续帧之间的像素变化来估计运动方向和速度。在数学上,光流场可以表示为像素位置和时间的一阶导数,即Ex、Ey(空间梯度)和Et(时间梯度),它们共同构成光流方程的基础。 #### C++实现细节 在给定的C++源代码片段中,`calculate`函数负责计算光流场。该函数接收一个图像缓冲区`buf`作为输入,并初始化了几个关键变量:`Ex`、`Ey`和`Et`分别代表沿x轴、y轴和时间轴的像素强度变化;`gray1`和`gray2`用于存储当前帧和前一帧的平均灰度值;`u`则表示计算出的光流矢量大小。 #### 图像处理流程 1. **初始化和预处理**:`memset`函数被用来清零`opticalflow`数组,它将保存计算出的光流数据。同时,`output`数组被填充为白色,这通常用于可视化结果。 2. **灰度计算**:对每一像素点进行处理,计算其灰度值。这里采用的是RGB通道平均值的计算方法,将每个像素的R、G、B值相加后除以3,得到一个近似灰度值。此步骤确保了计算过程的鲁棒性和效率。 3. **光流向量计算**:通过比较当前帧和前一帧的灰度值,计算出每个像素点的Ex、Ey和Et值。这里值得注意的是,光流向量的大小`u`是通过`Et`除以`sqrt(Ex^2 + Ey^2)`得到的,再乘以10进行量化处理,以减少计算复杂度。 4. **结果存储与阈值处理**:计算出的光流值被存储在`opticalflow`数组中。如果`u`的绝对值超过10,则认为该点存在显著运动,因此在`output`数组中将对应位置标记为黑色,形成运动区域的可视化效果。 5. **状态更新**:通过`memcpy`函数将当前帧复制到`prevframe`中,为下一次迭代做准备。 #### 扩展应用:Lukas-Kanade算法 除了上述基础的光流计算外,代码还提到了Lukas-Kanade算法的应用。这是一种更高级的光流计算方法,能够提供更精确的运动估计。在`ImgOpticalFlow`函数中,通过调用`cvCalcOpticalFlowLK`函数实现了这一算法,该函数接受前一帧和当前帧的灰度图,以及窗口大小等参数,返回像素级别的光流场信息。 在实际应用中,光流法常用于目标跟踪、运动检测、视频压缩等领域。通过深入理解和优化光流算法,可以进一步提升视频分析的准确性和实时性能。 光流法及其C++实现是计算机视觉领域的一个重要组成部分,通过对连续帧间像素变化的精细分析,能够有效捕捉和理解动态场景中的运动信息
微信小程序作为腾讯推出的一种轻型应用形式,因其便捷性与高效性,已广泛应用于日常生活中。以下为该平台的主要特性及配套资源说明: 特性方面: 操作便捷,即开即用:用户通过微信内搜索或扫描二维码即可直接使用,无需额外下载安装,减少了对手机存储空间的占用,也简化了使用流程。 多端兼容,统一开发:该平台支持在多种操作系统与设备上运行,开发者无需针对不同平台进行重复适配,可在一个统一的环境中完成开发工作。 功能丰富,接口完善:平台提供了多样化的API接口,便于开发者实现如支付功能、用户身份验证及消息通知等多样化需求。 社交整合,传播高效:小程序深度嵌入微信生态,能有效利用社交关系链,促进用户之间的互动与传播。 开发成本低,周期短:相比传统应用程序,小程序的开发投入更少,开发周期更短,有助于企业快速实现产品上线。 资源内容: “微信小程序-项目源码-原生开发框架-含效果截图示例”这一资料包,提供了完整的项目源码,并基于原生开发方式构建,确保了代码的稳定性与可维护性。内容涵盖项目结构、页面设计、功能模块等关键部分,配有详细说明与注释,便于使用者迅速理解并掌握开发方法。此外,还附有多个实际运行效果的截图,帮助用户直观了解功能实现情况,评估其在实际应用中的表现与价值。该资源适用于前端开发人员、技术爱好者及希望拓展业务的机构,具有较高的参考与使用价值。欢迎查阅,助力小程序开发实践。资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值