NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 96175|回复: 73
打印 上一主题 下一主题

[个人作品] Rhinoscript三维形态球谐函数

  [复制链接]
跳转到指定楼层
1m
发表于 2011-1-27 16:42:25 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wdc63 于 2011-1-27 17:07 编辑


                               
登录/注册后可看大图
  球谐函数是近代数学的一个著名函数,目前被广泛用于计算机图形学,渲染光照处理以及球面映射等方面,球谐函数在形态方面也有极强的表现能力,西澳大学的Paul Bourke的球谐函数三维形态公式:r = sin(m0*phi)^m1 +
cos(m2*phi)^m3 +
sin(m4*theta)^m5 +
cos(m6*theta)^m7
是其中著名的算法之一。该公式提供8个基本参数m0-m7,使得最终形态具有无数种变化,这两天我据此写出了rhinoscript的三维球谐函数程序。感谢NCF上海-杯具兄在算法写作当中的讨论和帮助。



对于此公式的核心函数算法代码如下:
Function mainfunction(u,v,m,radius)

Dim r,collect(2)


r=0


r=r+(sin(m(0)*v))^m(1)


r=r+(cos(m(2)*v))^m(3)


r=r+(sin(m(4)*u))^m(5)


r=r+(cos(m(6)*u))^m(7)


r=r*radius


collect(0)=r*sin(v)*cos(u)


collect(1)=r*cos(v)


collect(2)=r*sin(v)*sin(u)


mainfunction=collect

End Function
Collect()数组从此公式中取得点坐标。

后面有两个源文件下载,其中之一为定义好参数的样本代码,另一文件为用户自定义参数,参数如何设置请参看提示和源代码。

运行过程如下:
先求得所有点


                               
登录/注册后可看大图

再根据之前的点索引对点进行嵌面(这里使用rhino.addsrfpt函数使得文件增大,希望有人能提供rhinoscript四点建立poly面的方法)


                               
登录/注册后可看大图



最后手动删除点得到三维形态:


                               
登录/注册后可看大图


选取不同参数可以获得十分丰富的变化,请自行尝试。

                               
登录/注册后可看大图

                               
登录/注册后可看大图

                               
登录/注册后可看大图
  

评分

参与人数 8强度 +16 照度 +246 收起 理由
cloudone + 1
戏水云烟 + 2 + 5
denghua + 2 + 5
ALan.飓 + 1
没碗 + 3 + 100
tony_tsang + 3 + 100
Line + 2 很有启发
panhao1 + 35

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享分享
2m
 楼主| 发表于 2011-1-27 16:47:00 | 显示全部楼层
嗯,修改8个参数可以获得无限种可能,希望看看各位的结果
3m
 楼主| 发表于 2011-1-27 22:02:13 | 显示全部楼层
9# channelfei
跑点 成型 好啊~这个球开谐函数有什么讲头么?  跑点成面挺讲究的~请问阁下是怎么成面的~
没碗 发表于 2011-1-27 21:46

a=x+y*pphi
                                b=(x+1)+y*pphi
                                c=((x + 1) + ((y + 1) * pphi))Mod pnum
                                d=(x + (y + 1) * pphi) Mod pnum
注意之前点的索引是按点生成顺序,点每圈数量固定,因此用这四个参数找到相邻四点进行成面,呵呵这个方法从http://www.tedngai.net/上的脚本学到的。
4m
 楼主| 发表于 2011-2-5 15:19:35 | 显示全部楼层
大川怎么会想到研究这个函数呢   建模过程中又怎么推进呢   全靠wiki?
archizool 发表于 2011-2-2 13:20

才看到您的问题,前面研究了一些计算机图形学方面的东西,这个程序是之前在同学MAC上看到的一个power shape生成奇怪三维形体软件中的一个小部分,便去研究相关算法自己写了个,知识已经远远跟不上近代的一些几何数学了,但往下还有很多相关有趣的算法打算尝试,例如分形几何等等。

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

GMT+8, 2024-5-10 11:22 , Processed in 0.066896 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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