求教:如何确定最小凸四边形

yidichaxiang 2011-05-25 10:41:36
在第一象限里有许多无规则散布的点,
现在需要求出能把所有点圈到四边形里的最小四边形

只需考虑凸四边形的情况;

要求效率高,若是好算法,另加分,先谢谢啦
...全文
423 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
cosmo_sei 2011-06-02
  • 打赏
  • 举报
回复
1 找到包围所有点的最小凸多边形A
2 找到包围该多边形的最小凸四边形B

步骤1算法参考文档:
http://wenku.baidu.com/view/fcbf711efad6195f312ba64e.html
步骤2算法参考文档:
http://www.lw23.com/pdf_895366d9-703d-47ec-a820-f6cdf56786c9/lunwen.pdf

程序并非一时即可实现,我觉得这是个可以用来做计算机专业毕业论文的题目lol

PS:这贴和.net论坛分区里的一帖一样?
yidichaxiang 2011-05-26
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 zhenniubile 的回复:]

求出所有点坐标, 然后把(X,Y)数字最大的,前四个点求出.

进行连线,就最大了.
[/Quote]
要求的是最小凸四边形
ZHENNIUBILE 2011-05-26
  • 打赏
  • 举报
回复
求出所有点坐标, 然后把(X,Y)数字最大的,前四个点求出.

进行连线,就最大了.
yidichaxiang 2011-05-26
  • 打赏
  • 举报
回复
╮(╯▽╰)╭,期待牛人出现,
先说下目前的思路:
先以最左点为例,在XY坐标中,先找到最左点,然后找到第二最左点,两点连线,看有没有不满足的点,然后再连线,直到找到一条能把所有点划到左边的连线,
由于最左点Y值不定可以画出1或两条连线,以此类推就可以确定四边形的四条边,然后就是计算面积大小了
兔子-顾问 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yidichaxiang 的回复:]

引用 8 楼 wuyazhe 的回复:

先遍历,找到x,y的最大最小值的点,分别找到屏幕水平方向的上下左右4个点,
不论如何,总有一个对角点的连线是这个凸四边形的对角2顶点,选择对角线较长的那条,然后找到这条线最远的左右2侧的2个点,连起来。可以么?

找到x,y的最大最小值的点:是指实际点还是最大最小组合出来的四个新点(可能是实际点)
[/Quote]

就是边界的四个实际点。x最小的那个点,x最大的那个点,y最小的那个点,y最大的那个点。
yidichaxiang 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jayinit 的回复:]

又不是了!!引用 9 楼 zanfeng 的回复:

引用 3 楼 jayinit 的回复:

你发的帖子名称怎么是红色的??
9494

这个比较感兴趣。
[/Quote]
只是偶然,刚才我也再是了下,没出来;
yidichaxiang 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wuyazhe 的回复:]

先遍历,找到x,y的最大最小值的点,分别找到屏幕水平方向的上下左右4个点,
不论如何,总有一个对角点的连线是这个凸四边形的对角2顶点,选择对角线较长的那条,然后找到这条线最远的左右2侧的2个点,连起来。可以么?
[/Quote]
找到x,y的最大最小值的点:是指实际点还是最大最小组合出来的四个新点(可能是实际点)
  • 打赏
  • 举报
回复
又不是了!![Quote=引用 9 楼 zanfeng 的回复:]

引用 3 楼 jayinit 的回复:

你发的帖子名称怎么是红色的??
9494

这个比较感兴趣。
[/Quote]
足球中国 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jayinit 的回复:]

你发的帖子名称怎么是红色的??
[/Quote]9494

这个比较感兴趣。
兔子-顾问 2011-05-25
  • 打赏
  • 举报
回复
先遍历,找到x,y的最大最小值的点,分别找到屏幕水平方向的上下左右4个点,
不论如何,总有一个对角点的连线是这个凸四边形的对角2顶点,选择对角线较长的那条,然后找到这条线最远的左右2侧的2个点,连起来。可以么?
yidichaxiang 2011-05-25
  • 打赏
  • 举报
回复
可能,我没有表述清楚,散布点自身已呈现凸四边形,我想要求的是抱住所有点的最小四边形,
threenewbee 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyazhe 的回复:]
看错题目了。。。
那么
先建立包围盒,然后挑选4个点组成四边形。看是否是凸四边形,如果不是,将内角超过180,最小的那条边,一个顶点向内寻找,找到某个点使得内角<180。就ok。行不行?
[/Quote]
wuyazhe的办法不错。
兔子-顾问 2011-05-25
  • 打赏
  • 举报
回复
看错题目了。。。
那么
先建立包围盒,然后挑选4个点组成四边形。看是否是凸四边形,如果不是,将内角超过180,最小的那条边,一个顶点向内寻找,找到某个点使得内角<180。就ok。行不行?
threenewbee 2011-05-25
  • 打赏
  • 举报
回复
我想了一个办法,不知道是否可行。

首先用质心法求出一个最小的圆。然后找4个离圆最近的点,连起来。
  • 打赏
  • 举报
回复
你发的帖子名称怎么是红色的??
兔子-顾问 2011-05-25
  • 打赏
  • 举报
回复
a,b,c,d,e,f顶点
c在a->b的右侧
d在b->c的右侧
...
这样
兔子-顾问 2011-05-25
  • 打赏
  • 举报
回复
点在线的左侧还是右侧你会把。
随便多边形一个顶点开始,顺序走一圈,下一个点总在前2个点的同侧,就是凸多边形。
yidichaxiang 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wuyazhe 的回复:]

引用 11 楼 yidichaxiang 的回复:

引用 8 楼 wuyazhe 的回复:

先遍历,找到x,y的最大最小值的点,分别找到屏幕水平方向的上下左右4个点,
不论如何,总有一个对角点的连线是这个凸四边形的对角2顶点,选择对角线较长的那条,然后找到这条线最远的左右2侧的2个点,连起来。可以么?

找到x,y的最大最小值的点:是指实际点还是最大最小组合出来的四个新点(可能……
[/Quote]

想了下,不能,总有一个对角点的连线是这个凸四边形的对角2顶点,选择对角线较长的那条,然后找到这条线最远的左右2侧的2个点,连起来的话连被弃用的最大最小点都没包进去
bios8086 2011-05-25
  • 打赏
  • 举报
回复
多边形逼近
匈牙利科学院发明过一个算法
先找出最距离最长的两个点然后找出 点到直线距离最长的 依次递减

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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