NCF参数化建筑论坛

标题: 巨简单的hull工具 [打印本页]

作者: panhao1    时间: 2011-3-4 15:19
标题: 巨简单的hull工具
本帖最后由 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); } } ////////////////////////////////////////////////////
作者: panhao1    时间: 2011-3-4 15:21
import java.util.Random; import quickhull3d.*; import peasy.PeasyCam; 掉了几行 呵呵 会processing的都知道怎么用吧 我一般用eclipse 如果是processing的平台 要稍稍改下代码
作者: nixy    时间: 2011-3-4 17:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: czrwinner    时间: 2011-3-4 20:00
vertex((float)vertices[faceIndices[k]].x, (float)vertices[faceIndices[k]].y,(float)vertices[faceIndices[k]].z); 这句在Processing里过不了,不是很清楚该怎么改,看看先~
作者: panhao1    时间: 2011-3-4 23:10
4# czrwinner 这样子啊 因为eclipse默认的数是double 而processing里面是float 因此应该是只要把x,y,z都转化为float就行了 processing的转换你查下帮助
作者: panhao1    时间: 2011-3-4 23:10
3# nixy 真聪明 就是凸包啊~ 三维的
作者: claudemit    时间: 2011-3-5 00:01
本帖最后由 claudemit 于 2011-3-5 00:03 编辑 5# panhao1 大哥,我检查了下例子 漏字了。。。 [attach]15374[/attach] 这样就正常了 也许是复制过程中出来问题,我试过了i会自动漏掉
作者: claudemit    时间: 2011-3-5 01:19
想请教下,为啥设定个六面体就无法凸包成面呢 随便去掉个点都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),}; 全存在就会报错 [attach]15377[/attach]
作者: claudemit    时间: 2011-3-5 03:11
试了试,把输入点改成球状 为什么感觉在hull.build (points);过程中一些点没了 [attach]15381[/attach]
作者: darklight    时间: 2011-3-5 12:17
因为是第一次接触eclipse,所以问一下:附件是一个project吗?为什么加载不上?[img][/img]
作者: panhao1    时间: 2011-3-5 16:15
8# claudemit 把上一行的vertices 改成 faceIndices for (int i = 0; i < faceIndices.length; i++){ 笔误
作者: panhao1    时间: 2011-3-5 16:16
8# claudemit 把上一行的vertices 改成 faceIndices for (int i = 0; i < faceIndices.length; i++){ 笔误
作者: claudemit    时间: 2011-3-6 07:38
谢谢指教,我也糊涂了 [attach]15410[/attach] 请问下输出面的颜色设定,是有类库可以用还是自己写的class啊
作者: panhao1    时间: 2011-3-6 16:12
13# claudemit 我发的文件里面有帮助的 你只要看帮助就行了 生成面是用processing的命令 要自己写
作者: 饼干笨笨    时间: 2011-3-6 20:49
恩,帮助很大,收到启发
作者: ayan13    时间: 2011-3-8 15:00
天,看不懂。
作者: kebu    时间: 2011-3-10 16:49
高深啊 !!
作者: miaomiao    时间: 2011-3-11 06:48
如果都是拷贝别人的源码 那我们自己究竟能做什么啊 还用学习C语言吗
作者: minfish2005    时间: 2011-3-14 16:33
不错不错,一点意思
作者: gezengxin    时间: 2011-3-15 15:09
谢谢楼主分享,学习啦
作者: x5115x    时间: 2011-7-3 08:35
这个不错,但我还是没弄明白hull工具具体指的什么。
作者: 周佳看    时间: 2011-7-5 12:40
起名字的好软件,诸葛专业起名
作者: www.sxski.com    时间: 2011-8-22 13:42
大家好我是新来的请大家多关照啊
作者: caojian    时间: 2011-9-7 13:07
好像不怎么简单咯




欢迎光临 NCF参数化建筑论坛 (http://ncf-china.com/) Powered by Discuz! X3.2