免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: jianjiandandan
打印 上一主题 下一主题

如何求四条直线所围成的四边形的顶点 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-09-29 08:18 |只看该作者
感谢楼上的回答,用网状图来描述这个确实很严谨,
目前感觉用C来做这样的事情不怎么顺手,要设计一
堆适合这个问题的数据结构吧,本人对数据结构不太
熟悉,有没有高人在这个方面指导下啊,谢谢!

论坛徽章:
0
12 [报告]
发表于 2007-09-29 10:44 |只看该作者
晕, 数据结构是算法的基础把。。。

论坛徽章:
0
13 [报告]
发表于 2007-09-29 11:36 |只看该作者
原帖由 NewCore 于 2007-9-28 18:59 发表
楼主,我觉得首先你的思路是通过判断4条直线的交点个数来检查4条直线是否围成4边形就是有漏洞的,漏掉的情况也不止2楼上提到的那种。
比如A,B,C,D四条直线,A与B平行,CD的交点在A和B中间,4条直线交点个数 ...


这个方法确实不错。

其实只要一个4*4的表即可,然后改问题就可以简化为旅商问题(两条直线相交,求出交点;如果平行,则表示不可到达),那么问题的本质就可以表达为:某一节点出发,经过4步,是否可以到达出发点的问题了。

数据结构也很容易构造

  1. struct sLineRela {
  2.           bool   bConjuction;
  3.           Point sCrossPoint;  
  4. };

  5. struct sLineRela aGraphic[4][4];
复制代码


四边形找出来以后,再判断是凸,还是凹,是梯形,还是平行四边形,就不难了。

论坛徽章:
0
14 [报告]
发表于 2007-09-29 14:58 |只看该作者
谢谢楼上的热心人,
不过感觉还是有点抽象,能不能写个详细点的伪代码呢?
再次谢谢!!!

论坛徽章:
39
2017金鸡报晓
日期:2017-02-08 10:39:4219周年集字徽章-周
日期:2023-04-15 12:02:2715-16赛季CBA联赛之深圳
日期:2023-02-16 14:39:0220周年集字徽章-年
日期:2022-08-31 14:25:28黑曼巴
日期:2022-08-17 18:57:0919周年集字徽章-年
日期:2022-04-25 13:02:5920周年集字徽章-20	
日期:2022-03-29 11:10:4620周年集字徽章-年
日期:2022-03-14 22:35:1820周年集字徽章-周	
日期:2022-03-09 12:51:3220周年集字徽章-年
日期:2022-02-10 13:13:4420周年集字徽章-周	
日期:2022-02-03 12:09:4420周年集字徽章-20	
日期:2022-01-25 20:14:27
15 [报告]
发表于 2007-09-29 20:50 |只看该作者
这个问题很容易。

每条直线必须且只能和另外两条相交。四条线都要满足这个条件,然后四个交点不要重合就行了。

补充一点:三维的话先求共面情况,同样也容易。

[ 本帖最后由 醉卧水云间 于 2007-9-29 20:51 编辑 ]

论坛徽章:
0
16 [报告]
发表于 2007-09-29 22:45 |只看该作者
回复楼上

如下情况,满足你的题设

比如A,B,C,D四条直线,A与B平行,CD的交点在A和B中间,4条直线交点个数是5个,但是也不能构成4边形。


能构成四边形吗?

[ 本帖最后由 NewCore 于 2007-9-29 22:46 编辑 ]

论坛徽章:
0
17 [报告]
发表于 2007-09-30 07:58 |只看该作者
感谢各位的回答,这类问题应该有个通用的解答方法,
哪位高人能搞个通用的算法,设计一个优雅的模块出来。
不知道这类问题属于哪个领域,想找个解决这类问题的
函数库,找了很久都没有找到,请大家指点啊!

论坛徽章:
0
18 [报告]
发表于 2007-09-30 09:02 |只看该作者
原帖由 醉卧水云间 于 2007-9-29 20:50 发表
这个问题很容易。

每条直线必须且只能和另外两条相交。四条线都要满足这个条件,然后四个交点不要重合就行了。

补充一点:三维的话先求共面情况,同样也容易。


感觉这种方法不行. 每条直线和另外三条直线都相交,仍有可能围成四边形.

论坛徽章:
0
19 [报告]
发表于 2007-09-30 09:04 |只看该作者
原帖由 jianjiandandan 于 2007-9-30 07:58 发表
感谢各位的回答,这类问题应该有个通用的解答方法,
哪位高人能搞个通用的算法,设计一个优雅的模块出来。
不知道这类问题属于哪个领域,想找个解决这类问题的
函数库,找了很久都没有找到,请大家指点啊!


大家都说这么多了。呵呵,楼主也要表达点诚意啊
我们可都等你优雅的模块呢

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
20 [报告]
发表于 2007-09-30 09:11 |只看该作者
期待实现的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP