NCF参数化建筑论坛

标题: P5画圈圈 [打印本页]

作者: panhao1    时间: 2011-7-4 13:53
标题: P5画圈圈
这是我画的 [attach]19782[/attach] 下面是德国一本书上的图 我们这边P5老师在德国买的书 [attach]19783[/attach] [attach]19784[/attach] 别人的代码也发上来 里面附了版权说明和下载地址
作者: panhao1    时间: 2011-7-4 13:55
其实我是根据gh代码改的 ArrayList L=new ArrayList (); //PeasyCam cam; int total=400; float x[]=new float[total]; OnCircle c1; OnCircle c2; PFont font; public void setup() { // // cam = new PeasyCam(this, 200); // cam.setMinimumDistance(50); //cam.setMaximumDistance(5000); size(600,400); noLoop(); ellipseMode(CENTER); background(255); font= createFont("FFScala", 10); textFont(font); for(int i=0;i3){x[i]= random(15,30);} else {x[i]= random(8,14);} } c1=new OnCircle(new On3dPoint(width/2,height/2,0), x[0]); c2=new OnCircle(new On3dPoint(x[1]+width/2 + x[0],height/2,0), x[1]); L.add(c1);L.add(c2); line(c1.Center.x,c1.Center.y,c2.Center.x,c2.Center.y); ///* for(int i=2;i=0;j-=1){ if (L.get(j).Center.DistanceTo(c3.Center)*1.02 < (L.get(j).radius + c3.radius)){ c1 =(OnCircle)L.get(j); sign = false; break; } } count += 1; } while(count<20 && sign == false); if (sign){ L.add(c3); line(c3.Center.x,c3.Center.y,c2.Center.x,c2.Center.y); c2 = c3 ; line(c1.Center.x,c1.Center.y,c2.Center.x,c2.Center.y); } } //*/ } public OnCircle circle(OnCircle c1, OnCircle c2, float r ) { float l1 = c1.Center.DistanceTo(c2.Center); float l2 = c1.radius + r; float l3 = c2.radius + r; float n = (float) Math.acos((l1 *l1 + l2 *l2 - l3 *l3) / (2 * l1 * l2)); On3dVector v =new On3dVector(c2.Center.x - c1.Center.x, c2.Center.y - c1.Center.y, c2.Center.z - c1.Center.z); v.Rotate(n, new On3dVector(0, 0, 1)); v.Unitize(); v .mul(l2); On3dPoint p =new On3dPoint(c1.Center.x + v.x, c1.Center.y + v.y, c1.Center.z + v.z); return new OnCircle(p, r); } public void draw(){ for(int i=0;i 作者: panhao1    时间: 2011-7-4 13:56
要问我为啥能用On3dPoint和On3dVector类 哎呀 那是因为我用java重写了opennurbs的部分类嘛
作者: kexitai    时间: 2011-7-4 14:36
再次看到PANHAO大的东西 虽然看不懂 沙发我占啦
作者: Cosmic.Nova    时间: 2011-7-4 14:43
此贴不错,学习了1
作者: holonking    时间: 2011-7-4 14:51
你用java重写了opennurbs啊!如此贡献, 严重申请潘大哥按grasshopper方程格式写好整套openNurb译成binary DLL让大家下载享用!!!!
作者: zlgdgzl    时间: 2011-7-4 16:56
不知道其中深意
作者: panhao1    时间: 2011-7-4 17:23
6# holonking 还是师傅您识货 我只是重写了一部分 主要是按方案需要多少就重写多少 慢慢加上去的 OpenNurbs的C++代码网上是可以下载的 可以通过两种方式重写 第一是源代码的翻写 这也是我做的 第二种是写出Java接口,再通过JavaNative替换Cpp文件的函数,网上有。net的例子,可以参考
作者: wawa    时间: 2011-7-4 17:30
quite good!
作者: darklight    时间: 2011-7-4 20:52
重写opennurbs?! 大牛啊,敬仰中。。。。
作者: panhao1    时间: 2011-7-4 23:03
10# darklight 只是一小部分啊 不要曲解啊~~~
作者: x5115x    时间: 2011-7-5 07:56
嗯,不错,值得深入~
作者: 守约    时间: 2011-7-5 14:12
只能感叹……{:3_55:}
作者: hyl2099    时间: 2011-7-6 09:39
楼主太牛了,敬仰中。。
作者: qeqe123    时间: 2011-7-7 19:12
楼主很厉害~学习借鉴一下~
作者: guodeqiang    时间: 2011-7-8 11:31
这是processing吗
作者: x5115x    时间: 2011-7-8 19:48
16# guodeqiang 是啊,如假包换,怎么现在还会有这问题?
作者: lanyetianshi    时间: 2011-7-11 23:26
不错 。。。。
作者: cat_coo    时间: 2011-7-12 09:40
看不懂 {:3_62:}
作者: pezyl    时间: 2017-7-27 08:41
这圈圈有点头晕




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