NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 20624|回复: 23
打印 上一主题 下一主题

[工作记录] 巨简单的hull工具

[复制链接]
跳转到指定楼层
1m
发表于 2011-3-4 15:19:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 panhao1 于 2011-3-4 15:32 编辑 如果一种工具能简单到这种地步 那么它就是这个hull工具了 案例也在里面 我稍稍改了下 貌似确实很好用 PeasyCam cam; QuickHull3D hull; Random rnd=new Random(); public void setup(){ size(600,400,OPENGL); cam = new PeasyCam(this, 200); cam.setMinimumDistance(50); cam.setMaximumDistance(5000); } public void draw(){ background(100); stroke(0,0,200); fill(255, 102); Point3d[] points = new Point3d[] { new Point3d (0.0, 0.0, 0.0), new Point3d (1.0, 0.5, 0.0), new Point3d (2.0, 0.0, 0.0), new Point3d (0.5, 0.5, 0.5), new Point3d (0.0, 0.0, 2.0), new Point3d (0.1, 0.2, 0.3), new Point3d (0.0, 2.0, 0.0), }; hull = new QuickHull3D(); hull.build (points); scale(100); Point3d[] vertices = hull.getVertices(); int[][] faceIndices = hull.getFaces(); for (int i = 0; i < vertices.length; i++) { beginShape(); for (int k = 0; k < faceIndices.length; k++){ vertex((float)vertices[faceIndices[k]].x, (float)vertices[faceIndices[k]].y,(float)vertices[faceIndices[k]].z); } endShape(CLOSE); } } ////////////////////////////////////////////////////

quickhull3d.zip

209.05 KB, 下载次数: 18, 下载积分: 照度 -1 lux

售价: 2 lux照度  [记录]

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
2m
 楼主| 发表于 2011-3-4 15:21:38 | 只看该作者
import java.util.Random; import quickhull3d.*; import peasy.PeasyCam; 掉了几行 呵呵 会processing的都知道怎么用吧 我一般用eclipse 如果是processing的平台 要稍稍改下代码
3m
发表于 2011-3-4 17:09:08 | 只看该作者
你这个hull是干吗的,就是球面填充?我的印象hull和凸包有关……也不是很懂,随便说说
4m
发表于 2011-3-4 20:00:18 | 只看该作者
vertex((float)vertices[faceIndices[k]].x, (float)vertices[faceIndices[k]].y,(float)vertices[faceIndices[k]].z); 这句在Processing里过不了,不是很清楚该怎么改,看看先~
5m
 楼主| 发表于 2011-3-4 23:10:14 | 只看该作者
4# czrwinner 这样子啊 因为eclipse默认的数是double 而processing里面是float 因此应该是只要把x,y,z都转化为float就行了 processing的转换你查下帮助
6m
 楼主| 发表于 2011-3-4 23:10:47 | 只看该作者
3# nixy 真聪明 就是凸包啊~ 三维的
7m
发表于 2011-3-5 00:01:13 | 只看该作者
本帖最后由 claudemit 于 2011-3-5 00:03 编辑 5# panhao1 大哥,我检查了下例子 漏字了。。。 QQ截图未命名.jpg (11.1 KB, 下载次数: 0)
8m
发表于 2011-3-5 01:19:45 | 只看该作者
想请教下,为啥设定个六面体就无法凸包成面呢 随便去掉个点都OK Point3d[] points = new Point3d[]{new Point3d(0,0,0),//new Point3d(1,0,0),new Point3d(0,1,0),new Point3d(1,1,0),new Point3d(0,0,1),new Point3d(1,0,1),new Point3d(0,1,1),new Point3d(1,1,1),}; 全存在就会报错 QQ截图未命名.jpg (18.77 KB, 下载次数: 0)
9m
发表于 2011-3-5 03:11:26 | 只看该作者
试了试,把输入点改成球状 为什么感觉在hull.build (points);过程中一些点没了 QQ截图未命名.jpg (27.04 KB, 下载次数: 0)
10m
发表于 2011-3-5 12:17:10 | 只看该作者
因为是第一次接触eclipse,所以问一下:附件是一个project吗?为什么加载不上?[img][/img]
11m
 楼主| 发表于 2011-3-5 16:15:29 | 只看该作者
8# claudemit 把上一行的vertices 改成 faceIndices for (int i = 0; i < faceIndices.length; i++){ 笔误
12m
 楼主| 发表于 2011-3-5 16:16:10 | 只看该作者
8# claudemit 把上一行的vertices 改成 faceIndices for (int i = 0; i < faceIndices.length; i++){ 笔误
13m
发表于 2011-3-6 07:38:28 | 只看该作者
谢谢指教,我也糊涂了
14m
 楼主| 发表于 2011-3-6 16:12:11 | 只看该作者
13# claudemit 我发的文件里面有帮助的 你只要看帮助就行了 生成面是用processing的命令 要自己写
15m
发表于 2011-3-6 20:49:59 | 只看该作者
恩,帮助很大,收到启发
16m
发表于 2011-3-8 15:00:10 | 只看该作者
天,看不懂。
17m
发表于 2011-3-10 16:49:01 | 只看该作者
高深啊 !!
18m
发表于 2011-3-11 06:48:02 | 只看该作者
如果都是拷贝别人的源码 那我们自己究竟能做什么啊 还用学习C语言吗
19m
发表于 2011-3-14 16:33:40 | 只看该作者
不错不错,一点意思
20m
发表于 2011-3-15 15:09:02 | 只看该作者
谢谢楼主分享,学习啦

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

GMT+8, 2024-4-25 19:28 , Processed in 0.149208 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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