NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 80267|回复: 56
打印 上一主题 下一主题

[心得体会] 拓展思路——纯gh的2维凸包算法

[复制链接]
跳转到指定楼层
m
发表于 2011-5-6 11:43:14 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
凸包也是个经典话题了吧。gh里的convex hull电池自从我在使用中遇到bug后,就对其失去了信任,后来便想尽各种办法绕开这个电池。其实自己动手做,锻炼思考的能力,不算是困难的事情。这个帖子也算是自己做个小小总结,并且我相信做法(纯gh)绝对不止我这一种。 那么如何用gh电池实现2维凸包?一步步来,我们先看一个简单的例子: 现在这里有六个点,顺序可能是随机乱点的,要用它们作控制点生成一个闭合曲线,不理好点序就不对了,也就是说,这里还没有“包”,只是“凸”的问题。 这些点本身顺序是不对的,似乎也难以找到内部的线索去整理它们,那么我可不可以利用外力?如果有一个外部的有序的对象作为参考,然后将这些点按照外部的顺序去整理一下,便该能达到目标。循此思路,我就着各点向外一些先作了一个相似的多段线图案: 以原始无序点向着外围有序点的最小距离为线索,找到离外围每个点最近的内部点,这样把得到的六组单个点再拍平一下顺序就可以得到整理,问题得到了初步解决。 然而,若是应对大量成组数据,手工画多边形就捉襟见肘了。但是从这个方法里得到了启发,我可以将手工画的多边形转为生成的外围圆,方法很简单,找到所有点的中心点,再指定一个能涵括所有点的半径即可: 我把每个原始点都投到了圆上,好处是可以得到一些t值,这些t值显然是有序的,用它们可以轻松为我的原始点排序,至此,“凸”的问题算是得到了较为满意的解答。 现在我们可以把问题上升到一般化,将“包”的问题也加进来。我任意点了24个点如下: 如果过两两点连线,可以得到一个线图,这个线图中最外围的多边形框就是我们想要的东西: 接下来怎么进行呢?简单地说,就是必须把复杂问题转化为简单问题,既然我已经知道了怎么做“包”,如果可以把包在多边形框内部的点都投到多边形框上,问题就能回到上一步: 于是就可以继续借助在外围做圆的方法,先把所有点都投到圆上,然后连接每个投影点与对应的原始点,得到24条切割线,用这些线切割此前两两点连线得到的线图中的线,得到的交点中,容易发现距离投影点最近的点就是我们需要的点: 在这24个交点里,如果是作为多边形框的原始角点得到的交点,很明显既是角点本身!这么一来就简单了,只需要通过布尔运算抽出原始点与交点里重合的点就能得到凸包多边形的角点: 然后就只要重复上一步“凸”的动作,再一次把角点投到圆上,拿到t值,整理点序,问题即告完满解决: 总之,这是很有意思的一次尝试,也应该可以作为深入学习代码前的热身运动吧。最后gh的文件见附件,象征性收费,不过相信帖子已经讲到如此详细坛友们也不用再看电路图了 (我其实很遗憾在论坛里这样细致的帖子少之又少,是各位高手觉得话讲穿了没意思吗?),分享学习心得,用诚意打动斑竹,呼唤加分加照度。

2d凸包.ghx

392.24 KB, 下载次数: 70, 下载积分: 照度 -1 lux

售价: 2 lux照度  [记录]

评分

参与人数 2强度 +5 照度 +51 收起 理由
pqwpqw12345 + 1 艾尔!我是爱德华啊!哈哈 感谢分享!
skywoolf + 5 + 50 感谢分享

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享
56m
发表于 2014-11-28 11:59:17 | 只看该作者
学习了~~~~~
55m
发表于 2014-4-20 18:56:24 | 只看该作者
支持,下来学习下
54m
发表于 2014-3-27 23:48:52 | 只看该作者
学习了!!!!!!!!!
53m
发表于 2014-2-15 14:20:34 | 只看该作者
相当的给力,感谢楼主分享!
52m
发表于 2013-5-15 03:03:30 | 只看该作者

菜鸟路过,学习了
51m
发表于 2013-5-11 21:12:14 | 只看该作者
谢谢LZ,学习了~
50m
发表于 2012-5-23 02:29:17 | 只看该作者
下来研究下 初学者 研究别人的方案就像拆解模型一样有趣
49m
发表于 2012-5-22 21:27:20 | 只看该作者
什么是凸包啊?
48m
发表于 2012-1-31 08:09:33 | 只看该作者
谢谢楼主分享。。。。
47m
发表于 2011-12-15 10:20:06 | 只看该作者
弱弱问一句,凸包的含义是……
46m
发表于 2011-12-15 09:34:02 | 只看该作者
什么东西,看不懂
45m
发表于 2011-12-14 23:49:30 | 只看该作者
好好学习一下
44m
发表于 2011-8-3 18:03:34 | 只看该作者
怎么看不见图呢
43m
发表于 2011-8-3 17:15:34 | 只看该作者
多谢共享多谢共享
42m
发表于 2011-8-2 12:02:17 | 只看该作者
这样的帖子确实挺少的
41m
发表于 2011-7-30 09:12:26 | 只看该作者
学习了,谢谢楼主
40m
发表于 2011-7-28 12:19:45 | 只看该作者
学习一下,谢谢楼主分享!!!!!
39m
发表于 2011-7-22 20:28:10 | 只看该作者
想说图挂了 先收藏 嘻嘻
38m
发表于 2011-7-22 13:53:46 | 只看该作者
辛苦了!感谢分享!
37m
发表于 2011-7-17 00:03:31 | 只看该作者
为啥看不到图片呢,郁闷

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-11-26 04:46 , Processed in 0.074083 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表