标签:Rhinoscript

Rhinoscript三维形态球谐函数

球谐函数是近代数学的一个著名函数,目前被广泛用于计算机图形学,渲染光照处理以及球面映射等方面,球谐函数在形态方面也有极强的表现能力,西澳大学的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面的方法)最后手动删除点得到三维形态:选取不同参数可以获得十分丰富的变化,请自行尝试。 由于家里电脑配置问题,模型精度不是太高,使用100,可以在自行使用时尝试更高精度。代码下载:球谐函数带参数范例球谐函数用户自定义参数   ... Read More | Share it now!