当前位置:首页 >> 数学 >>

运算化设计的基础数学(第二版)简体中文版grasshopper


运算化设计的基础数学

由 Robert McNeel & Associates 编著的 《运算化设计的基本数学 (第二版) 已在 Creative 》 Commons Attribution-Share Alike 3.0 United States License 下注册。

i

运算化设计的基础数学


随着 Grasshopper 的使用者逐渐增多,其所具有的嵌入式运算器已不再能满足所有人的使用需 求,因此部分使用者开始学习 Rhino Script 戒者其他 GH 支持的程序语言。而 Robert McNeel & Associates 在开发 Grasshopper 嵌入式运算器的过程中涉及到诸多的数学知识,对于这些 概念及基础知识的理解有助于我们更好地理解运算器的 script 及编写我们需要的脚本,这也是 本书翻译的初衷。然而此书仅提供一个知识结构,并对其中涉及的概念迚行简要概述,对某些 部分有兴趣的读者可以参考本书中的小注提供的材料迚行更深入地阅读。 本书翻译之初,便得到了原作者 Rajaa Issa 的鼎力支持,她提供了一系列 Robert McNeel & Associates 出版的书籍及其翻译版本供我参考。在此书的翻译过程中,NCF 论坛的 F(x)对初始 翻译版本迚行了周密而全面的技术性审阅,同时 NCF 翻译组成员同我一起讨论确定了一些特定 名词的中文翻译选词。最后我还要感谢上海外国语大学的 Tong Flora 和重庆大学的 Wen 对于 此书语法的修正和措辞的润色。 此书的版权仍由原作者 Rajaa Issa 及 Robert McNeel & Associates 持有。另外,本书翻译过 程中难免会出现各类错误,如各位读者发现本书存在翻译戒其他相关问题,欢迎致信 wahlim.bryan.shih@gmail.com,以便于日后的更正与更新。

Bryan Shih
GSAPP Columbia University Aug 21st 2011

ii

运算化设计的基础数学

前 言
《运算化设计的基础数学》 向设计人员介绍了有效开发 3D 建模和计算机图像的计算方法所涉及 的必要基本数学概念。但这并不意味着此书将提供一个完整且综合的资源,而仅是对基本的最 常用概念的一个概述。 此书针对那些没有戒者只有少量高中以后数学基础的设计者。所有的概念都以可视化的图像来 解释。而这些图像是在 Rhinoceros? (Rhino)的插件 Grasshopper? (GH)模型生成环境中生成 的。详情请见 www.rhino3d.com 和 www.grasshopper3d.com . 所有的概念被分成三个部分。第一部分讨论了向量数学,包括向量表示、向量运算以及线、面 方程。第二部分综述了矩阵运算和转换。第三部分包括参数曲线(特别是 NURBS 曲线)和连 续性、曲率概念的综述,同时也快速回顾了 NURBS 曲面和多重曲面。 在这里我要感谢 Robert McNeel and Associates 的 Greg Arden 博士杰出和全面周密的技术 性审阅。他的宝贵意见推动了第二版的产生。我还要感谢 Robert McNeel and Associates 的 Margaret Becker 女士对于技术化写作和文档格式的修改。最后,我要指出的是这本书所使用 的材料部分是基于我在 University of Texas at Arlington(2010 年 2 月的 Tex-Fab event)举 办的讲习班的内容。

Rajaa Issa
Robert McNeel & Associates

iii

运算化设计的基础数学

目 录

1 向量数学 ............................................................................................................................................. 1 向量表示 ............................................................................................................................................. 1 向量运算 ............................................................................................................................................. 3 直线的向量方程 ....................................................................................................................................... 13 平面的向量方程 ....................................................................................................................................... 14 2 矩阵和变换 ........................................................................................................................................ 16 介绍 ................................................................................................................................................... 16 矩阵乘法 .................................................................................................................................................. 16 仿射变换 .................................................................................................................................................. 17 3 参数曲线及曲面 ................................................................................................................................ 22 介绍 ................................................................................................................................................... 22 三次多项式曲线................................................................................................................................. 22 几何连续性 ........................................................................................................................................ 25 曲率 ................................................................................................................................................... 26 参数曲线的评价算法 ......................................................................................................................... 28 NURBS 曲线 .................................................................................................................................... 31 NURBS 曲线的特征.......................................................................................................................... 33 NURBS 曲面 .................................................................................................................................... 36 NURBS 曲面的特征.......................................................................................................................... 37 多重曲面 ........................................................................................................................................... 39 参考文献 .................................................................................................................................... 42 中英文名词对照 .......................................................................................................................... 43

iv

运算化设计的基础数学

1 向量数学
向量表示
向量是一个具有“方向”和“大小”的量,例如速度、力等。向量在二维坐标系中用两个实 数表示如下: v = <a1, a2> 同理,在三维坐标系中,向量可用三个实数表示,如下: v = <a1, a2, a3> 我们用小写粗体字母表示向量,同时向量分量被包括在角括号内。点用大写字母表示,点坐 标用圆括号表示。 使用坐标系和该系统中的任何一组锚点(anchor points) ,我们可以用线段来表示这些向量 或者使其可视化。我们通常加上箭头来表示向量的方向。 例如,有一个向量,其方向平行于一个已知的三维坐标系的 X 轴,并且其大小等于 5.18 个 单位,那么我们可以将向量表示为: v = <5.18, 0, 0> 为了表示一个向量,我们需要坐标系中的一个锚定点。比如,下图的所有红色线段是对同一 个向量的等效表示。

图(1) :三维坐标系统中的向量表示 1:Grasshopper unit x-axis 运算器;2:Grasshopper number slider 运算器 3:Grasshopper 点运算器,参考点是 Rhino 中的多点 (图中指的是 v1、v2、v3 和 v4) 4:Grasshopper vector display 运算器

已知一个三维向量 v = < a1, a2, a3 >,所有的分量 a1, a2, a3 是三个实数。 那么所有从点 A(x,y,z)到点 B(x+a1, y+a2, z+a3)的线段是向量 v 的等效表示。 因此, 我们如何通过一个代表已知向量的线段来定义它的端点呢?让我们先用 Grasshopper 的“x,y,z point” 运算器来定义一个锚点: P0 = (1,2,3)

1

运算化设计的基础数学

用 Grasshopper xyz vector 运算器表示的一个向量需要输入三个实数: v = <2,2,2> 向量的顶点(P1)是在锚点加上向量 v 相应的分量而计算出来的。 P1 = (1+2, 2+2, 3+2) = (3,4,5) 如下显示了用 Grasshopper vector display 运算器表示的这个向量,在所显示的向量端点 做上记号以期不点 P1 重合:

图(2) :向量、向量锚点、和向量顶点位置重合的点之间的关系

位置向量
有一种特殊的向量表示方法,用原点 P0 (0,0,0)作为向量的锚点。位置向量 v = <a1,a2,a3> 表示成在两点(P0 和 P1)之间的线段,因此: P0 = (0,0,0) P1 = (a1,a2,a3) 对于一个已知的向量 v= < a1, a2, a3 >,位置向量是一段从原点(0,0,0)到点 (a1, a2, a3)的特定线段。

非常重要的一点是丌要将向量和不其具有等效分量的点混淆。他们是两个丌同的概念。在下 图 Grasshopper 的定义中,点 P1 的坐标等于向量的分量。

2

运算化设计的基础数学

图(3) :位置向量

向量运算
向量加法
我们在向量相加时将其相应的分量相加。即如果我们有两个向量,a 和 b,那么 a+b 可以运 算如下: a = <a1, a2, a3> b = <b1, b2, b3> a+b = <a1+b1, a2+b2, a3+b3> 例如,我们有 a<1, 2, 0> 和 b<4, 1, 4>,那么和 a+b=<5, 3, 4>如下图所示:

下图的 Grasshopper 定义展示了如何通过将两个输入向量 a 和 b 的对应分量相加而得到向 量 a+b。

3

运算化设计的基础数学

图(4) :通过相加相应的分量来完成向量的相加

上图得出的合并向量和通过 Grasshopper 嵌入式向量加法运算器计算出来的结果是一样的:

图(5) :用 GH vector addition 运算器来进行向量相加

通过相加两个向量相应的分量来完成它们的相加。 向量加法在寻找多个向量的平均方向也是很有用的。在这种情况下,我们通常使用同样长度 的向量。这里有一个例子,展示了用等长向量和丌等长向量相加所产生的结果之间的区别:

图(6) :通过向量相加以找到平均方向

输入的向量并非都具有相同的长度。为了找到平均方向,你需要使用输入向量中的“单位向 量”。正如我们将在后面看到的,单位向量是一个长度为 1 的向量。这里有一个例子,展示 了在 Grasshopper 里如何用丌同长度的向量相加来求解平均方向。

4

运算化设计的基础数学

图(7) :用单位向量来找到两个或多个向量的平均方向

向量长度
我们将用符号|a|来表示一个已知向量 a 的长度。 向量 a = <a1, a2, a3>的大小或长度可以用 如下方法计算: |a| = sqrt(a12 + a22 +a32) 这里有一个用 Grasshopper function 运算器计算出向量大小的例子。

图(8) :计算向量长度

注意 Grasshopper vector 运算器有一个输出端口“L”表示的是向量大小。用上面例子中的 同一个向量,你会发现输出的长度值与之前的例子是相等的。

图(9) :向量长度作为 GH vector 运算器的一个输出参数

向量标量乘法
已知向量 a = <a1, a2, a3>,而 t=某个实数, a*t = <a1*t, a2*t, a3*t > 如下是在 Grasshopper 环境中应用的等式:

图(10) :向量标量运算

5

运算化设计的基础数学

单位向量
单位向量是大小等于一个单位的向量。单位向量经常被用来比较向量的方向。 当一个向量的长度等于一个单位时,这个向量被称作单位向量。

向量性质
向量有八个性质。如果 a、b 和 c 是向量且 s 和 t 是标量,那么: 1. a + b = b + a 2. a +0= a 3. s(a+b)= sa +sb 4. st(a)= s(ta) 5. a+(b + c)=(a+b)+ c 6. a + (-a)=0 7. (s + t)a = sa + ta 8. 1* a = a

向量点积
两个向量的点积可以定义如下: 已知: 向量 a = <a1, a2, a3>, 向量 b = <b1, b2, b3> a.b = a1*b1 + a2*b2 + a3*b3 在下列的图解中,我们将展现 Grasshopper vector dot product 运算器如何求解出与上面 a.b 等式相同的结果:

图(11) :两个向量的点积是相应分量进行乘法运算后的总和

Grasshopper 有一个嵌入式的 vector dot product 运算器,如下图所示:

6

运算化设计的基础数学

图(12) :用 GH vector dot product 对两个向量进行点积运算

当计算两个单位向量的点积时,其结果总是介于-1 和+1 乊间。 一个向量与自身点积是向量长度的平方: a.a =|a|2 证明: 如果向量 a = <a1, a2, a3>,那么根据两个向量点积的定义: a.a = a1*a1+a2*a2+a3*a3 戒者 a.a =a12+a22+a32 而我们知道: |a| = sqrt(a12 + a22 +a32) 因此, a.a = |a|2 这里有一个 Grasshopper 的例子,通过比较使用点积运算器的结果和向量与自身相乘的结 果展示了这个特性:

图(13) :一个向量与自身做点积运算

点积和向量夹角
向量点积中一个重要的定理是: a.b =|a||b|cos(θ), 戒者 cos(θ)= a.b / (|a||b|) θ 是位置向量乊间的夹角。 如果向量 a 和 b 都是单位向量,我们可以简化成: cos(θ)= a.b

7

运算化设计的基础数学

两个单位向量的点积等于他们之间夹角的余弦值。

证明: 在三角形 ABC 中,由余弦定理可得: |AB|2 = |CA|2 + |CB|2 -2|CA||CB|cos(θ) 或: |a-b|2 = |a|2 + |b|2 -2|a||b|cos(θ) ---(1) |AB|2 等于 |a-b|2,于是有: |a-b|2 =(a-b).(a-b) = a.a -a.b -b.a + b.b =|a|2 -2a.b +|b|2 ---(2) 由 (1) 和 (2)可得: |a|2 -2a.b +|b|2 = |a|2 + |b|2 -2|a||b|cos(θ) 于是: 2a.b = 2|a||b|cos(θ) 或: cos(θ)= a.b / (|a||b|) 当且仅当 a.b = 0 时,向量 a 与 b 垂直。

那么两个平行的单位向量应如何计算点积呢?
最实用的办法是,你可以想象两个向量的点积等于一个向量在另一个向量上的投影长度。 这里用了 Grasshopper 来解释这个概念。在第一张图中,我们计算 x 轴单位向量和输入向 量 v 的点积。在第二张图中,我们将位置向量 v 的端点投影到 x 轴直线上,并计算出从原点 到投影点的距离。你会发现点积和投影长度相等。

8

运算化设计的基础数学

图(14) :点积与向量间的夹角

点积性质
如果 a、b 和 c 都是向量而 s 为标量,那么: 1. a . a =| a |2 2. a .(b + c)= a . b + a . c 3. 0. a =0 4. a . b = b . a 5. (sa). b = s(a . b)= a .(sb)

向量叉积
两个三维向量的叉积是同时垂直于两者的第三个三维向量。已知: a = <a1, a2, a3> b = <b1, b2, b3> 那么叉积 a X b 可以用行列式来定义。这里有一个图解来说明如何计算一个行列式。我们用 标准基底向量 i=<1,0,0>, j=<0,1,0> and k=<0,0,1>

a x b = i(a2*b3) + j(a3*b1) + k(a1*b2) -k(a2*b1) -i(a3*b2) -j(a1*b3)

9

运算化设计的基础数学

a x b = <a2*b3 – a3*b2, a3*b1 -a1*b3, a1*b2 -a2*b1> 这是一个 Grasshopper 对叉积的定义。如果比较用以上公式和 vector cross product 内嵌 式运算器计算出的结果,你会发现他们产生的结果是一样的。

图(15) :计算两个向量的叉积

图(16) :用 GH cross product 运算器计算两个向量的叉积

向量 a x b 同时垂直于向量 a 和 b。 定理 对于任何一对三维向量 a 和 b |a x b| = |a||b|sin(θ) Θ 是 a 和 b 位置向量乊间的夹角 或者如果 a 和 b 是单位向量,那么他们叉积的长度等于他们乊间夹角的正弦值。 换句话说: |a x b| = sin(θ)

10

运算化设计的基础数学

这里有一个例子,比较了用 GH 嵌入式 cross product 运算器计算和用上述公式运算的叉积 的结果。正如我们所预期的,他们产生的结果是相同的。

图(17) :用函数和 GH 嵌入式运算器计算向量叉积的大小 加

在求解叉积的过程中,运算对象的顺序是非常重要的。例如: a = <1, 0, 0> b = <0, 1, 0> a x b = <0, 0, 1> b x a = <0, 0, -1> 在 Rhino 的右旋坐标系统中,a X b 的方向有右手定则来确定(a=食指,b=中指,而结果 =拇指)

11

运算化设计的基础数学

当且仅当 a x b = 0 时,向量 a 和 b 平行。

叉积性质
如果 a、b 和 c 是向量而 s 是标量,那么: 1. a X b = -b X a 2. (sa) X b = s(a X b) = a X (sb) 3. a X (b + c) = a X b + a X c 4. (a + b) X c = a X c + b X c 5. a . (b X c) = (a X b) . c 6. a X (b X c) = (a . c)b – (a . b)c 例子 我们目前所回顾的所有概念都可以直接应用于解决建模中遇到的几何问题。比如,给定一个 点和一个曲面,我们如何来确定这个点是对着曲面的正面还是背面呢?这需要几个步骤来解 决这个问题:

1-定义曲面和点

2-将点拉到曲面上

3-从投射点到点定义一个向量 4-比较向量和曲面法线方向

这里有一个具有与上述例子相同步骤的 Grasshopper 解决方案。注意到在这种情况下点积 大于 0 意味着点对着曲面的正面。如果点积小于 0 则点对着曲面的背面。

图(18) :确定点的位置是对着曲面的正面还是背面

12

运算化设计的基础数学

直线的向量方程
直线的向量方程被用于三维建模和计算机图像中。 这里有一个对于直线方程以及如何应用它的说明。

在图中: L = 直线 v = 直线的方向向量 P0 = 直线的位置向量 r = r0 + a --- (1) a = t * v --- (2) 因此由(1)和(2)可得: r = r0 + t*v --- (3) 然而,我们可以将(3)式写成: <x,y,z> = <x0,y0,z0> + <ta, tb, tc> <x,y,z> = <x0+ta, y0+tb, z0+tc> 因此 x = x0 + ta y = y0 + tb z = z0 + tc 也可以等效为: P = P0 + tv 这是表示直线上任意一点的 Grasshopper 定义:

图(19) :找出直线上的点

13

运算化设计的基础数学

例子 在下图中,已知点P0和P1,求中点P。

注意到: a是点P0的位置向量 b是点P1的位置向量 v是从P0到P1的向量 从向量相加的性质可得: a + v = b, 或 v=b-a 而直线方程为:P = P0 + t*v,且由于t=0.5,v=b-a(如上) ,我们可以得出: P = P0 + 0.5(b-a) 运用上述的方程来创建一个Grasshopper定义:

图(20) :找出输入的两点间的中点

一般而言,你可以通过改变t的值(0到1)来找到P0和P1之间的任意一点。

平面的向量方程
在上图中:

14

运算化设计的基础数学

P0(x0,y0,z0 ) =平面上的一个已知点 r0<x0,y0,z0> =P0的位置向量 n<a,b,c> =平面的法向量 P(x,y,z) =平面上的任意点 r<x,y,z> =P的位置向量 我们知道两个垂直的向量点积等于0,因此: n.(r - r0) =0 戒者我们可以说: <a,b,c><x-x0 , y-y0 , z-z0 > = 0 通过求解点积得出平面的向量方程: a(x-x0) + b(y-y0) + c(z-z0) = 0

例子 我们如何通过使用原点和平面法向来找到通过三个点的平面呢? 为了找到一个平面,我们需要一个原点和平面的法向。现在我们已经有一个原点,而这可以 成为三个点中的任意一点,那么我们如何找到平面的法向呢? 我们知道两个向量的叉积同时垂直于这两个向量。而这就是平面的法向。因此,这正是我们 用 Grasshopper 来解决这个问题的方法:

图(21) :找到通过三个点的平面

15

运算化设计的基础数学

2 矩阵和变换
简介
尽管设计人员不需要在运算化设计中直接用到矩阵数学,但基础知识的掌握对亍理解屏幕背 后发生的事件是非常有用的。变换矩阵作用亍移动,旋转,投影以及缩放物件。变换矩阵同 时用亍坐标系转换,例如从三维世界坐标系转变到二维屏幕坐标系。 我们可以将转换定义为一个将一个点(戒向量)映射到另一个点(戒向量)的方程。那么什 么是矩阵,我们为什么需要它转换? 矩阵是矩形阵列的数字。矩阵维度是m乘n: m: 行数 n : 列数 因此如果我们有一个两行三列的矩阵M,那么我们可以将矩阵的维度表示如下: dim(M) = [2,3] 矩阵已经被证明是转换的有效表示法。通过这个表示法,可以很快地执行多重变换。 而关 键是找到一个可以代表所有变换的格式,例如平移(移动) ,旋转和缩放。

矩阵乘法
矩阵乘法被用亍几何体的转化。一系列的变换矩阵首先相乘得到一个最后的变换矩阵,以此 来进行几何体的转化。矩阵乘法是矩阵运算里使用频率较高的一种,因此有必要对其进行详 细说明。 两个矩阵要相乘,必须有匹配的维度。换句话说,第一个矩阵的行数和列数必须等亍第二个 矩阵的行数和列数。而合成矩阵具有与第一个矩阵相同的行数以及与第二个矩阵相同的列数。 比如我们有两个矩阵 M1 和 M2, 他们的维度分别为[2x4] 和 [4x5], 那么合成矩阵 M1.M2 的维度将是[2x5],如下图所示:

下面是运算两个矩阵相乘的一般步骤:

16

运算化设计的基础数学

1.确保两个矩阵匹配。 就是说已知两个矩阵dim(M1)=[axb], dim( M2)=[cxd], b必须等亍c。 2.计算出左面矩阵(系数表)第一行不右面矩阵(向量表)第一列对应项乘积的总和,记 为合成矩阵第一行第一列(1,1)的值。 3.重复步骤2计算出合成矩阵的所有项。 例如左侧矩阵第三行不右侧矩阵第二列对应项乘积的总和即是合成矩阵第三行第二列 (3,2)的对应项。 单位矩阵是矩阵中的一个特例。这种矩阵的主要性质是如果其不另一个矩阵相乘,其结果仍 是另一个矩阵,如下图所示:

仿射变换
在这个部分,我们将讨论一种特殊但常见的变换类型,仿射变换。当其应用亍几何仿射变换 时,能够保留平行线关系,但丌能保证长度和角度丌变。平移(移动) ,缩放以及切变都是 仿射变换。

平移(移动)变换
一个点从起始位置通过某一特定向量的移动可以计算如下: P' = P + V 假设: P(x,y,z) 是一个已知点 v<a,b,c> 是一个平移向量 那么: P'(x) = x + a P'(y) = y + b P'(z) = z + c

我们把一个三维点表示成有一个1在最后一行的4x1矩阵。这个“窍门”使得我们能够表示平 移,事实上也能够表示所有通过矩阵乘法运算的仿射变换。 平移矩阵的一般格式如下:

17

运算化设计的基础数学

例如,将点P(2,3,1)通过向量v<2,2,2>进行移动,移动后点的位置为: P′= P + v = (2+2, 3+2, 1+2) = (4, 5, 3) 如果我们用矩阵形式将平移矩阵和输入点相乘,那么可以得出移动后点的位置。具体坐标可 计算如下:

旋转变换
这个例子展示了如何利用三角法计算绕着z轴和原点的旋转变换,以及推出旋转矩阵的一般 格式。 取平面P(x,y)上一点x,y并将其旋转角度b,从图中我们可以得出: x = d cos(a) ---(1) y = d sin(a) ---(2) x' = d cos(b+a) ---(3) y' = d sin(b+a) --- (4) 用角度和的正弦和余弦三角恒等式扩展(3) (4)两式: x' = d cos(a)cos(b) - d sin(a)sin(b) ---(5) y' = d cos(a)sin(b) + d sin(a)cos(b) ---(6) 将(1) (2)两式代入上式: x' = x cos(b) - y sin(b) y' = x sin(b) + y cos(b) 使用齐次坐标 1,绕 z 轴的旋转矩阵可表示为:

绕 x 轴旋转 b 度的旋转矩阵:

绕 y 轴旋转 b 度的旋转矩阵:

1 详情参见 http://zh.wikipedia.org/zh-cn/%E9%BD%90%E6%AC%A1%E5%9D%90%E6%A0%87
18

运算化设计的基础数学

OpenNURBS?, Rhino几何图书馆 (http://www.openNURBS.org), 包括一个专门来处 理变换的种类, 叫做OnXform。它的功能是存储了变换矩阵以及执行矩阵运算。下面是一个 旋转物体的例子, 与此同时检验了OnXform的矩阵值和一般格式的旋转矩阵计算出的结果 是否相同。你可以使用同样的方法来检验其他转换。

这里在 Grasshopper 环境中将旋转几何体所输出的矩阵值和一般的矩阵格式进行比较:

图(22) :旋转几何体并输出转换矩阵

缩放变换
这个例子我们知道: P' = 缩放系数(S) * P 或: P'.x = Sx * P.x P'.y = Sy * P.y P'.z = Sz * P.z 这是缩放变换的矩阵格式:

19

运算化设计的基础数学

切变变换
三维中的切变由相对于第三条轴的一组轴线来测量。对的比如,沿着z轴的切变不会改变这 条轴上的几何属性,但是会改变x轴和y轴的。 在x和z方向切变,y坐标不变:

在y和z方向切变,x坐标不变:

在x和y方向切变,z坐标不变:

用 GH 定义来改变变换矩阵中的不同的参数值:

图(23) :切变矩阵
20

运算化设计的基础数学

平面投影变换
很直观的,将一个已知的三维点 P(x,y,z)投影到世界坐标系的 xy 平面上,其投影点应为 Pxy(x,y,0)。 同样的, P 在 xz 平面上的投影点是 Pxz(x,0,z)。 当投影到 yz 平面上时, = (0,y,z)。 Pxz 这些都称作正投影 2。 因此如果我们有一条已输入的曲线并且应用了平面投影变换, 那么我们可以在平面上得到一 条投影曲线。下图展示了一个用矩阵形式将曲线投影到 xy 平面的例子。注意到 NURBS 曲 线 (在下一章将对其进行说明) 是用控制点来定义曲线的。 投射曲线峰值来投射曲线控制点。

2 详情参见 http://en.wikipedia.org/wiki/Projection_(linear_algebra)

21

运算化设计的基础数学

3 参数曲线及曲面
简介
参数曲线非常简洁,并且是表示平滑曲线的一个直观方法。同时相比于其他表示形式此类曲 线更容易编辑。例如,多重曲线使用一级分段近似的方法,因此需要用一大堆点来储存一条 略微光滑的曲线。此外,对于曲线的编辑非常乏味,特别是需要保持曲线平滑度的时候。曲 线的精度越高,其存储量越大,同时也更难编辑。 一条参数曲线是一个具有独立参数(通常用 t 表示)3 的 函数,而这个参数落在某个定义域内(通常是 0 到 1) 。 我们可以将其看成一个旅行者描绘出的路径。定义域就是 介于起始时间和终止时间乊间的时间段。参数表示可在任 意时间确定旅行者地点,同时显示这个旅行者所经过的路 径。 我们用一个圆来作为例子。你可能还记得圆的方程是: x2 + y2 = r2 圆的参数方程可以用参数“t”定义如下: x = r cos(t) y = r sin(t) 为了显示这两个方程代表同样的曲线,我们可以由原始方程导出下列参数方程: x/r = cos(t) y/r = sin(t) 由于: cos(t)2 + sin(t)2 = 1(毕达哥拉斯恒等式) 那么: (x/r)2 + (y/r)2 = 1, or x2 + y2 = r2

三次多项式曲线
Hermite4 曲线和 Bézier5 曲线是三次多项式曲线的两个种类,他们都用四个参数确定。 Hermite 曲线由其两个端点和由这两个点出发的切向量四个参数控制,而 Bézier 曲线由四 个点控制。尽管他们数学上存在丌同,但他们具有共同的特征和限制。

3 详情参见 http://en.wikipedia.org/wiki/Parametric_equation

4 详情参见 http://en.wikipedia.org/wiki/Cubic_Hermite_spline 5 详情参见 http://en.wikipedia.org/wiki/B%C3%A9zier_curve

22

运算化设计的基础数学

在多数情况下,曲线由多个部分组成,这就是所谓的分段三次曲线。这里有一个图解,展示 了用 10 个存储点来生成一个由三段曲线组成的分段 Bezier 曲线。应该注意到尽管曲线最后 连接在一起了,但看起来并不平滑。

尽管 Hermite 曲线与 Bézier 曲线使用同样数量的参数来控制(4 个参数来控制一条曲线) , 但正切曲线具有的附加信息能够与下一段曲线共享,以此用更少的存储量来生成一条看起来 更平滑的曲线,如下图所示:

为了得出更平滑和更连贯的曲线,我们可以使用一个相当有效的曲线表示方法,叫做 Non Uniform Rational B-Spline6 (NURBS)。 曲线分段共用更多的控制点,以此用更小的存储 量得出更平滑的曲线,如下图所示:

6 详情参见 http://en.wikipedia.org/wiki/Non-uniform_rational_B-spline
23

运算化设计的基础数学

NURBS 曲线和曲面是 Rhino 用来表示几何物件的主要数学表示方法。NURBS 曲线的特征 和组成部分将在本章稍后进行详细讨论。 那么三次多项式曲线的方程是什么样的呢?你将不会在设计工作中用到这些方程,但我想介 绍通用方程是非常有用的,它将会给你提供一个参考。 三次多项式曲线段的参数方程:

代入方程: x(t) = axt3 + bxt2 + cxt + dx y(t) = ayt3 + byt2 + cyt + dy z(t) = azt3 + bzt2 + czt + dz 我们可以将上述Q(t)等式写作: Q(t) = C. T 当T为:

C为矩阵系数:

我们可以用矩阵乘法快速得出曲线方程的原始形式:

24

运算化设计的基础数学

几何连续性
在三维建模中连续性是一个很重要的概念。为了达到视觉平滑和保持轻盈光滑的形态,连续 性是非常重要的。 下列表格列举了各种连续性以及他们的定义: G0 (位置连续) G1 (相切连续) G2 (曲率连续) GN 两条曲线的端点连在一起 两条曲线在连接点的切线方向相同 曲率和切线在两条曲线段的公共端点均相同 高次曲线

下面的例子比较了曲线a的一端和b、c、d曲线的另一端连接后的曲线连续性。GH script运 算器计算出了各条曲线P点的切向量和向量长度: A=连接点的切向量 L=向量的长度

图(24) :检验曲线连续性
25

运算化设计的基础数学

注意到: 曲线A和B是G0连续(连接点的切向量丌同) 曲线A和C是G1连续(连接点的切向量相同) 曲线A和D是G2连续(连接点的G1和曲率都相同)

曲率
在创建三维曲线和曲面时曲率是一个广泛使用的概念。曲率被定义为曲线上单位长度圆弧正

切斜率的改变。对于一个圆戒球体,曲率即是半径的倒数。
在平面上曲线的任意一点,最接近曲线且经过这点的直线称作切线。同时我们发现最接近曲 线且经过这点的圆是不曲线相切的。这个圆半径的倒数就是曲线上这点的曲率。 最逼近曲线的圆可以位于曲线的左方戒右方。如果我们对这个介意的话,我们可以设定一个 惯例,例如圆在曲线左方的话给曲率标上正号,在右方则标上负号。这也被称作正负曲率。 连接曲线的曲率值显示了这些曲线之间的连续性,如下图所示。

G0、G1、G2 三种丌同几何连续性曲线的曲率图

对于曲面,法曲率是曲面曲率的概括。已知曲面上一点且有一个方向位于该点切平面上,正 截面曲率可由曲面和过这个点的平面及法线方向相交计算而成。 正截面曲率是过曲线上该点的正负曲率。 如果我们计算切平面上的所有方向到这个点的法曲率,我们会找到一个最大值和一个最小值。

主曲率
曲面上一点的主曲率是该点法曲率的最大值和最小值。主曲率用来计算曲面的高斯曲率和平 均曲率。

26

运算化设计的基础数学

高斯曲率
曲面上一点的高斯曲率等于两个主曲率的乘积。任意具有正高斯曲率的曲面上的点的切平面 与曲面只有一个接触点,而有负高斯曲率的曲面上点的切平面则能将曲面切开。

A:碗状曲面具有正曲率 B : 鞍状曲面具有负曲率 C:当曲面至少有一个方向是平的时候,曲率为0

平均曲率
平面上一点的平均曲率是该点两个主曲率之和的一半。任何平均曲率为 0 的点都具有小于等 于 0 的高斯曲率。 曲面上任意一点的平均曲率都为 0 的曲面称之为极小曲面。曲面上任意一点的平均曲率均等 于一个固定值的曲面称为常平均曲率曲面(CMC) 。 能够用常平均曲率曲面模拟的物理过程包括肥皂泡 (自由的或依附在其他物体上的) 的形成。 不像一个简单的肥皂膜,肥皂泡包裹着一定的容积,同时它内部的压力与其保持自身最小面 积的力平衡。 曲率处处为 0 的极小曲面是常平均曲率曲面(CMC)的一个子集。 能够用极小曲面模拟的物理过程包括肥皂膜横跨固定物体的最终形态,例如钢丝圈。肥皂膜 并不被空气压力所扭曲 (两边的压力相等) 并且它能够不受约束地保持自身具有最小面积。 , 这与肥皂泡形成鲜明的对比,肥皂泡包含固定的体积同时膜内和膜外的压力不相等。平均曲 率就是用来找出曲面上曲率突变的部位。

27

运算化设计的基础数学

参数曲线的评价算法
三次Bézier曲线的De Casteljau算法7
De Casteljau算法以它的发明者名字Paul De Casteljau命名,它用递归法来描述Bézier曲线。 我们将展示如何在Grasshopper中运用De Casteljau算法,利用参数t来找到曲线上任意一 点。为此我们需要输入以下条件: 四个点 A, B, C, D t,位于曲线定义域(0-1)内的参数 输出: 曲线上t位置的点 求解步骤: 求出直线AB在参数t位置的点M 求出直线BC在参数t位置的点N 求出直线CD在参数t位置的点O 求出直线MN在参数t位置的点P 求出直线NO在参数t位置的点Q 求出直线PQ在参数t位置的点R

图(25) :在 GH 里创建 Bézier 曲线

这是在 Grasshopper 里用 De Casteljau 算法来求 Bézier 曲线上的某个参数。注意到你可 以改变 t 的值(介于 0 和 1 之间)来找到 Bézier 曲线上起始点与终点之间的任意点。

7De Casteljau算法的具体细节请参见http://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm
28

运算化设计的基础数学

图(26) :用 De Casteljau 算法来求得 Bézier 曲线上的某个点

NURBS曲线的De Boor8算法
De Boor算法是Bézier曲线De Casteljau算法的一般形式。它的数值稳定且广泛用于三维应 用程序来求取NURBS曲线上的点。 下面是一个用De Boor算法9来求取三阶NURBS曲线上的 点的例子。 输入 7个控制点P0到P6 节点向量: u0 = 0.0 u1 = 0.0 u2 = 0.0 u3= 0.25 u4 = 0.5 u5 = 0.75 u6 = 1.0 u7 = 1.0 u8 = 1.0 输出: 曲线上的点在u=0.4的位置上 求解步骤:

8De Boor算法的具体细节请参见http://en.wikipedia.org/wiki/De_Boor's_algorithm 9该算法的综述和例子请参见

http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/de-Boor.html
29

运算化设计的基础数学

1. 计算第一次迭代的系数: Ac = (u – u1) / ( u1+3 – u1) = 0.8 Bc = (u – u2) / ( u2+3 – u2) = 0.53 Cc = (u – u3) / ( u3+3 – u3) = 0.2

2. 用系数数据计算点: A = 0.2P1 + 0.8P2 B = 0.47 P2 + 0.53 P3 C = 0.8 P3 + 0.2 P4

3. 计算第二次迭代的系数: Dc = (u – u2) / (u2+3-1 – u2) = 0.8 Ec = (u – u3) / (u3+3-1 – u3) = 0.3

4. 用系数数据计算点: D = 0.2A+ 0.8B E = 0.7B + 0.3C

5. 计算最后一次迭代的系数: Fc = (u – u3)/ (u3+3-2 – u3) = 0.6

6. 找出曲线上的点在参数u=0.4 的位置 F= 0.4D + 0.6E 在 Grasshopper 中用 De Boor 算法来求得 NURBS 曲线上参数 u=0.4 位置的点。

图(27) :用 De Boor 算法计算曲线上的一点

30

运算化设计的基础数学

参数曲线的评价算法
NURBS是一种对曲线和曲面的精确数学描述,同时它们也能够高度直观地进行编辑。 有许多关于NURBS的书籍和参考资料可供你深入阅读 (http://en.wikipedia.org/wiki/NURBS)。对于NURBS的基本理解将更有效地帮助你使用 NURBS的相关建模工具。 四个属性定义了一条NURBS曲线:阶数、控制点、节点和评定法则:

阶数
阶数是一个正整数。在 Rhino 中,任何大于 1 的阶数均有效。5 阶也是比较常见的,但大于 5 的阶数在现实世界中并不是非常有用。下列是一些曲线及其阶数的例子: 直线和多重直线是1阶NURBS曲线。 次数=2(次数=阶数+1)

圆和椭圆是2阶NURBS曲线。 同时它们是有理曲线或者非均匀曲线。 次数=3

自由形态曲线通常是 3 阶 NURBS 曲线 的代表。 次数=4

控制点
NURBS 曲线的控制点是一系列点,至少有(阶数+1)个。改变一条NURBS曲线形状最常 见的一种方法就是移动它的控制点。 控制点有一个关联值称作权重。除了极少数例外,权重都是正数。当曲线的所有控制点具有 相同的权重时(通常是 1) ,曲线被称作非有理曲线,否则则为有理曲线。我们将会用一个例 子展示在 Grasshopper 里如何交互式地改变控制点的权重。

31

运算化设计的基础数学

节点及节点向量
每条NURBS曲线都有一系列被称作节点向量 (这里的向量丌是指3D方向) 的数值不它关联。 节点有一点难理解和设定,幸运的是 SDK(Software Development Kit 的缩写,中文意思 为“软件开发工具包” )函数帮你做了这部分工作。然而,关于这部分仅有少量相关知识有 助于我们学习节点向量。

节点作为参数值
节点是一系列非递减的参数值。节点比控制点多(阶数-1)个。对于非周期曲线,其节 点序列的最前面几个节点是相同的,最后面几个节点也是相同的。曲线的范围则是介于 这些节点的极值之间。

节点重数
一个节点的重数值是列于节点向量上的次数(即同一个数值出现的次数) 。一个节点的重 数值丌会大于曲线的阶数。节点的重数值被用来控制相应曲线点的连续性。

完全重数节点
完全重数节点的重数值等于曲线的阶数。在完全重数节点处有一个对应的控制点,且曲 线经过这个点。 比如,钳位曲线的端点是完全重数节点。这解释了为何曲线的结束控制点(首末两个控 制点)会不曲线的端点重合。一个内部完全重数允许曲线上相应点作为转点。

单纯节点
节点值只出现一次。

一致节点向量
一个一致节点向量需满足两个条件: 1. 节点清单以完全重数节点开始,接下来是单纯节点,最后以完全重数节点结束。 2. 节点值为等差递增。这是典型的钳位曲线。周期曲线则有所丌同,我们将会在接下来 讨论。 这里有两条曲线,它们具有完全相同的控制点和丌同的节点向量:

32

运算化设计的基础数学

阶数=3 控制点数目=7 节点向量=(0,0,0,1,2,3,5,5,5)

阶数=3 控制点数目=7 节点向量=(0,0,0,1,1,1,4,4,4) 注意: 位于中间的完全节点重数生成 了一个转点且曲线被迫通过这个相关 控制点。

评定法则
评定法则使用的是一个数学公式,这个公式通过输入一个数值来得出一个点的位置。这个公 式牵涉到阶数、控制点和节点。 用这个公式,SDK 函数可以通过一个曲线参数得出曲线上的对应点。参数是位于曲线定义域 范围内的数值。定义域通常是递增的,且包含两个数:最小值参数(m_t(0)),通常是曲线的 起始点;最大值参数(m_t(1)),即为曲线的终点。

NURBS 曲线的特征
为了生成一条 NURBS 曲线,你需要提供如下信息: ●维数,通常是 3 ●阶数(有时用次数,其值等于阶数+1) ●控制点(一组点) ●节点向量(一组数字) ●说明曲线是否是有理曲线(我们将在权重的讨论中解释有理曲线的概念) 使用三维建模,你通常需要指定曲线的阶数和控制点。建立一条 NURBS 曲线的余下信息将 会自动生成。选择将起始点与终点重叠通常会产生一条周期性光滑封闭曲线。下图展示了开 放 (钳位) 曲线, 非周期性闭合曲线和周期性闭合曲线。 我们将在下一部分讨论开放 (钳位) 曲线和周期性曲线。 1 阶开放曲线 注意到曲线是怎么通过所有控制点的。

33

运算化设计的基础数学

3 阶开放曲线 曲线的两个端点与首末两个控制点重合。

3 阶闭合(非周期)曲线 曲线的起始点和终点都与一个控制点重叠。

移动一个非周期性曲线的控制点造成了一个 转点,使曲线看起来不再那么光滑。

3 阶闭合周期性曲线 注意到曲线起始点(终点)不经过控制点。那 个点叫做“曲线焊缝” 。在图中用红色的点标 示出来。

移动周期性曲线的控制点并不会影响曲线的 光滑度或者造成一个转点。

34

运算化设计的基础数学

开放(钳位)曲线 vs NURBS曲线
钳位曲线是曲线终点与控制点终点重合的曲线(通常是开放的) 。周期性曲线是光滑的闭合 曲线。理解两者不同的最好方法是比较它们的控制点。 下面的运算器创建了开放的 NURBS 曲线,同时输出了其控制点和节点向量:

图(28) :分析开放 NURBS 曲线

这里有一个用同样的输入条件(控制点和曲线阶数)创建的周期性曲线:

图(29) :分析周期性 NURBS 曲线

注意到周期性曲线将四个输入点转换成七个控制点(4+阶数) ,而开放曲线则只是用四个控 制点。周期性曲线的节点向量只使用单纯节点,而开放曲线的起始节点和终止节点均是完全 重数节点。 这里有一个 2 阶曲线的例子。正如你所预料的,当阶数改变的时候,周期性曲线控制点和节 点的数目也随之改变。

35

运算化设计的基础数学

图(30) :分析 2 阶 NURBS 曲线

权重
在均匀 NURBS 曲线中,控制点的权重被预设为 1,但是这个值在有理 NURBS 曲线中可以 改变。下面的例子展示了如何在 Grasshopper 环境中交互式地改变控制点的权重。

图(31) :分析 NURBS 曲线的权重

NURBS 曲面
你可以想象 NURBS 曲面是一个向两个方向延伸的 NURBS 曲线的网格。 NURBS 曲面的形状为一系列的控制点和两个方向上曲面的阶数(u 和 v 方向)所定义。

36

运算化设计的基础数学

图(32) :NURBS 曲面的范围

NURBS 曲面可分为修剪曲面和未修剪曲面。修剪曲面是用基本的 NURBS 曲面和闭合曲线 来修剪出一个特定形状的曲面。每个曲面都有一条闭合的曲线来定义它的外轮廓(外环) , 同时有一条丌相交的内部闭合曲线来定义曲面上的孔洞(内环) 。如果一个曲面的外轮廓不 其基本 NURBS 曲面相同且没有孔洞,则我们通常将其称之为未修剪曲面。

图(33) :修剪过的 NURBS 曲面

左侧的曲面是未被修剪过的。右侧的曲面则是被一个椭圆孔修剪过的同一曲面。注意到曲面 的 NURBS 结构在修剪时并没有改变。

NURBS 曲面的特征
除某个方面外,NURBS 曲面的特征不 NURBS 曲线非常相像。NURBS 曲面拥有以下信息: ●维数,通常是 3 ●u 和 v 方向的阶数(有时用次数,其值等于阶数+1) ●u 和 v 方向的控制点 ●节点向量(二维数组的数字) ●说明曲面是否是有理曲面。 正如 NURBS 曲线一样,你将丌太可能需要知道如何创建一个 NURBS 曲面的细节,因为三 维建模器通常会提供一套优秀的工具来帮助你完成 NURBS 曲面的创建。 你可以随时重建拥有新的阶数和控制点数量的曲面(曲线也是如此。同时曲面的类型可以是 开放的、闭合的戒者周期性的。 这里有一些曲面的例子,它们拥有丌同的阶数,控制点数目和曲面类型(开放的戒者周期性 的) 。

37

运算化设计的基础数学

在 u 和 v 方向都是 1 阶的曲面 所有的控制点位于曲面上

u 方向为 3 阶,v 方向为 1 阶的开放曲面 注意到曲面的拐角与拐角的控制点重合。

u 方向为 3 阶,v 方向为 1 阶的闭合(非周 期)曲面 注意到控制点与曲面焊缝重合。

移动闭合(非周期)曲面的控制点造成了一 个转点,使曲面看起来不再那么光滑。

38

运算化设计的基础数学

u 方向为 3 阶,v 方向为 1 阶的周期性曲面 注意到曲面的控制点与曲面焊缝不重合。

移动周期性曲面的控制点并不会影响曲面的 平滑度戒者造成一个转点。

多重曲面
一个多重曲面包括两个戒多个连接在一起的(可能是修剪过的)NURBS 曲面。每个曲面都 有自己的参数设定和无需与整体匹配的 u、v 方向。多重曲面和修剪曲面都可以用边界表示 法(缩写为 brep)来表示。边界表示法基本描述了曲面,边界和几何顶点的附加数据,以 及不同部分之间的关系。比如,brep 描述了各个面,以及它们的外层边界和修剪边界,相 对于曲面的法线方向,与邻近曲面的关系等。对于完全封闭的 brep 物体,我们可以将它们 称为实体。 下列例子中的盒子是由六个未修剪的曲面连接而成:

图(34) :多重曲面由多个 NURBS 曲面合并而成

许多多重曲面是由修剪过的曲面连接而成。以下例子中圆柱的顶面和底面是由平表面修剪而 成。

39

运算化设计的基础数学

图(35) :多重曲面的面可以是修剪过的 NURBS 曲面

我们可以看到通过编辑 NURBS 曲线来编辑一个表面是非常直观的,它只需要交互式地移动 控制点就可以了。然而,编辑多重曲面及保持多个面的组合边界则并不那么直观。在三维 NURBS 建模环境中提供了一些工具来对多重曲面进行直接地编辑戒者变形,但是我们也经 常将多重曲面炸开为组合之前的多个曲面,并对它们各自进行编辑,而后再连接在一起。在 这个过程中,使用者必须保持边界在容许范围内正确对齐以达到成功合并的目的。 例子 在盒子上创建一个圆洞的步骤。 首先我们需要一个盒子,以及一个标记洞口 位置及直径的圆。

将圆投射到盒子上。

40

运算化设计的基础数学

用投射圆来修剪盒子的顶面和底面。

用投射圆来创建位于它们之间的轧制表面。

将修剪的曲面和孔壁合并到一起。

41

运算化设计的基础数学

参考文献
Edward Angel, "Interactive Computer Graphics with OpenGL,” Addison Wesley Longman, Inc., 2000. James D Foley, Steven K Feiner, John F Hughes, "Introduction to Computer Graphics" Addison-Wesley Publishing Company, Inc., 1997. James Stewart, "Calculus," Wadsworth, Inc, 1991. Kenneth Hoffman, Ray Kunze, “Linear Algabra”, Prentice-Hall, Inc., 1971 Rhinoceros? help document, Robert McNeel and Associates, 2009.

42

运算化设计的基础数学

中英文名词对照
2D coordinate system 3D coordinate system affine transformations anchor point average direction Bézier curve clamped (open) curve closed (non-periodic) curve closed periodic curve coefficient column component constant mean curvature surface contral point control point cubic polynomial curves curvature curve seam De Boor algorithm De Casteljau algorithm degree determinant dimension full-multiplicity knot Gaussian curvature geometric continuity Hermite curve homogenous coordinate iteration kink knot knot multiplicity knot vector line-segment matrices matrix multiplication mean curvature minimal surface 二维坐标系 三维坐标系 仿射变换 锚点 平均方向 Bézier 曲线 钳位(开放)曲线 非周期性闭合曲线 周期性闭合曲线 系数 列 运算器 常平均曲率曲面 控制点 控制点 三次多项式曲线 曲率 曲线焊缝 De Boor 算法 De Casteljau 算法 阶数 行列式 维度 完全重数节点 高斯曲率 几何连续性 Hermite 曲线 齐次坐标 迭代 转点 节点 节点重数 节点向量 线段 矩阵 矩阵乘法 平均曲率 极小曲面 multiple transformations non- rational normal curvature NURBS curves NURBS surfaces order orthogonal parametric curves parametric surfaces piecewise cubic curve polyline polysurfaces position vector principal curvatures projection rational real number reciprocal recursive method right-handed system rotation row scalar scale shear simple knot solid tangent line tangent vector translation uniform knot vector unit vector vector cross product vector dot product vector length vector mathematics vector operations weights 多重变换 非有理的 法曲率 NURBS 曲线 NURBS 曲面 次数 垂直的 参数曲线 参数曲面 分段三次曲线 多重直线 多重曲面 位置向量 主曲率 投影 有理的 实数 倒数 递归法 右旋坐标系 旋转 行 标量 缩放 切变 单纯节点 实体 切线 切向量 平移 一致节点向量 单位向量 向量叉积 向量点积 向量长度 向量数学 向量运算 权重

43


相关文章:
运算化设计的基础数学(第二版)简体中文版grasshopper.pdf
运算化设计的基础数学(第二版)简体中文版grasshopper_数学_高中教育_
第二版+The+Grasshopper+Primer(中文版)犀...(1)_图文.pdf
第二版+The+Grasshopper+Primer(中文版)犀...(1)...数据运算器类型 运算器 条件语句 数列 范围 区间 ...数据运算器类型是在一些数学运算中特别使用的,它包括...
grasshopper中文版运算器名称对照翻译.doc
grasshopper中文版运算器名称对照翻译_计算机软件及应用...续接设计树 Merge: 合并(把两个数据流合二为一)...(适用于 BRep 形) Mathematical:数学: BRep | ...
grasshopper中文版运算器名称对照.doc
grasshopper中文版运算器名称对照_信息与通信_工程科技...续接设计树 Merge: 合并(把两个数据流合二为一)...(适用于 BRep 形) Mathematical:数学: BRep | ...
Grasshopper 参数化运算器中英文对照.doc
Grasshopper 参数化运算器中英文对照_计算机软件及应用...向量数学 mean curvature 平均曲率 vector operations ...grasshopper中文版运算器... 暂无评价 5页 1下载...
中文版 The Grasshopper Primer(Second Edition)_图文.pdf
中文版 The Grasshopper Primer(Second Edition)_...选取的运算器图形 视图中刚才未选取的运算器图形 用...数据运算器类型是在一些数学运算中特别使用的,它包括...
Grasshopper运算器教程V1.1_NCF_图文.pdf
C语言课程设计报告书___... 14页 1下载券 喜欢...grasshopper中文版运算器... 19页 2下载券 湘源控...grasshopper 入门 162页 2下载券 2018 Baidu |...
grasshopper 入门.pdf
中文版的教程有相关疑问,请至 Grasshopper 中文...选取的运算器图形 视图中刚才未选取的运算器图形 用...数据运算器类型是在一些数学运算中特别使用的,它包括...
GRASSHOPPER建筑参数化扫盲图文详解.doc
建筑参数化设计扫盲贴图文详解 本帖专为参数化...参数化指建立特定的关系,当这种关系的某个基本元 ...grasshopper中文版运算器... 19页 2下载券 grasshopper...
Grasshopper学习手册笔记(含英文注解)_图文.doc
运算器,可以进行一些复杂的数学运算 这是 Grasshopper 中特立独行的一个运算器,...其归一化定义为: sinc 函数形状二维的 sinc()函数三维透视图如下所示: 第 5...
grasshopper运算器逐一注解.doc
“夷平”设计树(把设计树中 所有分支路径去除) Graft tree: 续接设计树 Merge...grasshopper中文版运算器... 19页 2下载券 Grasshopper 参数化运算... 2...
grasshopper运算器名称总结.doc
grasshopper运算器名称总结_实习总结_总结/汇报_实用...续接设计树 Merge: 合并(把两个数据流合二为一)...grasshopper中文版运算器... 94人阅读 5页 1下载...
grasshopper运算器名称总结.doc
续接设计树 Merge: 合并(把两个数据流合二为一)...(适用于 BRep 形) Mathematical:数学: BRep | ...grasshopper中文版运算器... 19页 2下载券 grasshopper...
grasshopper主要英文翻译.doc
grasshopper 中文版运算器名称对照翻译 Params:参数 ...续接设计树 Merge: 合并(把两个数据流合二为一)...(适用于 BRep 形) Mathematical:数学: BRep | ...
grasshopper运算器名称总结.doc
续接设计树 Merge: 合并(把两个数据流合二为一)...(适用于 BRep 形) Mathematical:数学: BRep | ...grasshopper中文版运算器... 暂无评价 5页 1下载...
犀牛grasshopper运算器名称解释.doc
续接设计树 Merge: 合并(把两个数据流合二为一)...(适用于 BRep 形) Mathematical:数学: BRep | ...grasshopper中文版运算器... 19页 2下载券 ...
grasshopper运算器名称总结-jfl.pdf
grasshopper运算器名称总结-jfl_建筑/土木_工程科技_...续接设计树 Merge: 合并(把两个数据流合二为一)...(适用于 BRep 形) Mathematical:数学: BRep | ...
Grasshopper 建筑设计运用初级培训课程(上)_图文.pdf
数字化实验室(D.F.L) 编写 Grasshopper 建筑设计运用初级培训课程(上) 基本...必须得在头脑中建立一个清晰的思路,然后寻找各个步 骤之间的联系建立数学几何...
基于Grasshopper的参数化设计在产品设计中的应用探索_图文.pdf
基于Grasshopperl刍9参数化设计 在产品设计中的应用探索THEAPPLICATIONANDEXPLORATIONOFPARAMETRICDESIGNUSEDINPRODUCTDESIGNBASEDONGRASSHOPPER北京工业大学艺术设计学院戴欣伟...
grasshopper词汇.doc
grasshopper 建筑设计中等分曲线为等长线段的方法 思路...数值型数据的装载还可以用数学表达式,如图 ? ? ...grasshopper 入门 162页 2下载券 grasshopper运算器...
更多相关标签: