难题:求任意多边形的最大内切圆

forestrygis 2006-11-21 05:41:13
一个多边形的各顶点坐标:
1. X= 556.7058 Y= 758.3251
2. X= 936.7326 Y=1031.4554
3. X=1474.5482 Y= 904.8828
4. X=1621.2252 Y= 245.3731
5. X=1010.0711 Y= 145.4474
6. X=1178.9718 Y= 627.3114
7. X=1127.8571 Y= 760.5457
8. X= 643.3786 Y= 645.0760
求该多边形的最大内切圆的半径,该圆应完全被包含在多边形中.
...全文
1851 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxqcn 2006-11-22
  • 打赏
  • 举报
回复 1
其实,题目的“内切圆”说法是不贴切的,比如说并不是任意四边形均存在“内切圆”;
而后修改成“求任意多边形内的最大圆的圆心坐标及半径”则比较好。

这个问题,也许可以用图像处理的“形态学”中的“膨胀原理”去解决:将各边等速向内膨胀,直至膨胀后的某一内边沿由一线段退化成一点为止,则此时的“膨胀”幅度即为所求半径,此时的内边沿则为可用的圆心点集(极端情况下,可退化为一个点,或一条线段)。

至于编程处理,我没有具体想太多;但通过上述动态思索,可能对问题的解决有所帮助。
mathe 2006-11-22
  • 打赏
  • 举报
回复
其实最简单的算法就是对任意三条边(及其延长线)构成的三角形计算其内接圆,判断这个内接圆是否在多边形内部,穷举所有情况。
而一种显然可以优化的方案是
i)任取三条边X,Y,Z(组成三角形完全包含这个多边形)
ii)计算X,Y,Z构成三角形的内接圆K
iii)检查多边形所有边W1,W2,...,Wn是否同K相交(如果是凸多边形,否则还要判断是否在某条边的外面)
iv)如果检查全部通过,那么结果就已经是了,不然必然有某条边Wi同圆相交(不包含相切), 用这条边替换原先三条边中一条,使得新的三角形同样包含这个多边形(三种淘汰方案中总有一种满足),然后返回ii)
forestrygis 2006-11-22
  • 打赏
  • 举报
回复
感谢LI的回复!我还是不大理解你说的,可以详细说一下吗?
我再把问题说一下:求任意多边形内的最大圆的圆心坐标及半径,求高手出来分享,一直关注!!!
forestrygis 2006-11-22
  • 打赏
  • 举报
回复
按照gxqcn的提示,我在cad中测试了一下:
大多数的多边形(正多边形不行)向内偏移最后可形成若干个三角形,选择面积最大的三角形求其内接圆的圆心及为我要的答案!


继续期待好的算法!
forestrygis 2006-11-22
  • 打赏
  • 举报
回复
我第一次发帖就有那么多大师来解答,非常感谢!
特别感谢mathe和gxqcn的点拨!
其实我的问题是有现实意义的,比如要在很多个不规则的多边形上分别标注一定大小的文字串(其轮廓近似正方形),当这个多边形既不规则又比较小时,同时要使文字串尽量标在多边形内,解决上面的问题显得很有必要!
最后我要说明的是,我该如何给你们分,我也不晓得我有没有分可给,如果有的话我一定给,我想你们这些大师也不在乎这点小分的!


我问题的原意就是“gxqcn”所理解的那样,发帖的时候理解有误,后来更正了!
继续期待好的算法!
LiChenYue 2006-11-21
  • 打赏
  • 举报
回复
如果是凹多边形,怎么办呢?
凸的话就是解点到直线距离的方程组吧?

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧