当前课程知识点:Grasshopper参数化设计与建模 > 第五章 Nurbs曲线与曲面建模 > 5.5 Nurbs与向量 > 5.5.1
返回《Grasshopper参数化设计与建模》慕课在线视频课程列表
返回《Grasshopper参数化设计与建模》慕课在线视频列表
在这一节我们将给大家介绍
与NURBS曲线曲面相关的向量操作
以及向量点积、叉积的概念
对于Nurbs曲线这样的空间物体
它有很多的几何属性
下面我们就来讲一讲
Nurbs曲线上面的一些跟向量
或者叫矢量有关的一些属性
这里我们已经输入了五个点
我们可以把它连接成一条Nurbs曲线
输入nurbs
然后在这里选择让它是true
就是让它周期性是true
然后在这里选择让它是true
就是让它周期性是true
那么这样的话它形成一个连续封闭的曲线
对这条曲线我们可以用前面用过的
叫evaluate
evaluate curve
evaluate curve的这个运算器
然后我们把这里得到的curve给它
在这里做一个reparameterize
然后在t这里输入一个slider
那么我们就可以遍历这条曲线上的所有点
那么这个运算器evaluate curve
除了输出点以外
还输出了在这个点上它的切线方向
就是tangent
这是一个向量
我们可以把这个向量把它可视化出来
我们用这个向量可视化的运算器
输入P 输入向量
那么这样的话我们就得到了
这个点所对应的向量的一个可视化
在这里我们看到
这个点所对应的向量的一个可视化
在这里我们看到
当我们拖动这个滑动条的时候
那么点和它所对应的那个位置上的切线
都被绘制了出来
我们说除了对一条曲线
我们可以做它的切线方向
同时我们还可以去求
它在某个点上的曲率
比如说我们输入curvature
我们就会有这个运算器
把curve同样接进来
然后把这个t
把curve同样接进来
然后把这个t
就是它的参数同样的输入进来
在右边就会得到输出
我们可以看到它画了一个圆
这个圆是什么呢
其实在这里输出的叫作
curvature circle
就是一个曲率的一个圆
一般意义上我们说曲率是有
对应的一个曲率半径
那么按照这个曲率半径画一个圆
经过这个点
就会得到这个曲率的这个圆
那么除了输出曲率的圆以外
在这里还输出了curvature
那么除了输出曲率的圆以外
在这里还输出了curvature
就是它的曲率
以及point就是这个点
和这里的输出是一样的
这个曲率
我们看到其实它是一个矢量的形式
这个曲率
我们看到其实它是一个矢量的形式
是三个数字组成的
所以我们也可以同样用
这样一种可视化的方法
把这个向量给它可视化出来
就是这个曲率的向量把它可视化出来
我们拖动一下滑动条看一下它的效果
那么实际上就是这个曲率向量的大小
跟曲率半径是倒数的关系
我们同样输入curvature
我们看到其实有不同的curvature
比如说对于curve curvature
我们看到其实有不同的curvature
比如说对于curve curvature
这里还有一个叫curvature graph
比如说对于curve curvature
这里还有一个叫curvature graph
用一下这个运算器
那么输入一条curve
那么我们看到这里就已经出现了变化
在这条曲线的外面
它画出了一个示意图
这个示意图表示的是
它画出了一个示意图
这个示意图表示的是
这条曲线在任意一个点
它的曲率的大小和它的方向
那我们说这里的曲率大小跟它不一致
看起来好像不一致
是因为在这里有一个叫
scale的这样一个输入
所以我们在这里输入100%
100%的话就会看到
我们得到的这个曲率的向量
跟curvature graph
显示出来的曲率的大小是一样的
我们拖动一下滑动条看一下
是不是这样的效果
当这边点曲率变大的时候
那么curvature graph
和curvature的向量
它都是对应的 大小是对应的
我们进入perspective视图
现在这条曲线是一个平面的曲线
因为这五个点都在平面上
我们选中这两个点然后把它拖高
那么这个时候我们说
这条曲线就变成了一条空间曲线
因为成为了空间曲线
所以当我们去拨动这个滑动条的时候
大家注意这个曲率 这个圆
它变成了一个空间中的圆
它不断变化它的大小和它的方向
或者我们也可以把这个曲率圆
先把它预览关掉
然后我们看一下在这里
实际上这个curvature graph
所显示的这个曲率的方向
也是空间中的不是平面上的
为了在后面进一步介绍
关于Nurbs建模的一些方法
我们需要在这里先讲解一下
一些关于向量的高级的应用
我们在这里看到
我们输入了三个点
然后生成了两个向量
在这里已经有编好的程序
接下来我们可以对这两个向量
做一个加法的运算
接下来我们可以对这两个向量
做一个加法的运算
这个我们在前面的课程里头学习过
这样我们就在这里得到了一个
相加以后得到的向量
这样我们就在这里得到了一个
相加以后得到的向量
我们把这个向量
把它通过这个vector display
来把它显示出来
这是新的vector
我们给它一个新的颜色
那么它是绿色的
那么这个vector
实际上就是前面两个vector相加
或者说用平行四边形法则
得到的一个新的结果
那么两个向量之间除了相加之外
我们还可以有什么样的操作呢
在vector里面我们看到
有这两个运算非常重要
在vector里面我们看到
有这两个运算非常重要
一个是dot product
还有一个是cross product
一个叫作点积一个叫作叉积
我们切换到PPT
看一下向量的点积和叉积的定义
向量的点积就是用这个电池来实现的
英文叫作dot product
那么点积它的计算公式是什么呢
如果我们有a和b两个向量
a和b点积在一起
实际上就是x为a0和b0乘在一起
加上y方向的分量
a1和b1乘在一起
加上z方向的分量
a2和b2乘在一起
然后再把它们加和在一起
a2和b2乘在一起
然后再把它们加和在一起
用∑把它们加和在一起
这个就是点积的定义
更进一步的我们也可以说
看这个公式
a和b两个向量点积
它的值等于向量a的长度
乘上向量b的长度
再乘上两个向量之间的夹角
我们看到乘上两个向量之间的夹角
所以a和b点积得到一个标量
或者说得到一个实数
那么这个实数是
a的长度和b的长度乘积
在乘上它们的夹角的cos值
我们回到grasshopper的界面
当我们把a和b两个向量点积在一起以后
我们看到这里的结果是一个实数
这个实数是2.479
当然这个数对于我们来讲
好像看起来意义不大
所以我们可以在这里做一个unitize
把它标准化
标准化的结果是
a和b在这里输入后都变成标准长度
也就是长度为1的向量
所以经过标准化以后
根据我们前面的公式
这个输出的结果
实际上就是a和b
两个向量夹角的cos值
我们回到PPT
又可以看到这里还有一个说明
如果一个向量a
它与单位长度向量作点积
比如说我们说这个b呢
是一个单位长度的向量
那么最后得到的结果
是a这个向量在b上面投影的长度
就是这个是a乘上cosθ
因为b的长度已经等于1了
所以按照这个公式
最后得到的是a乘上cosθ的值
得到这个投影的长度
我们回到grasshopper
也就是说
如果我们做一个dot product 点积
我们对后面这个红色的向量
如果我们用vector
去和一个单位长度的x向量
作点积的话
那么最后得到的结果
实际上是这个红色长度
在x方向的投影长度
我们把这个投影长度表示一下
也就是说把这样一个长度
用它去定义一个x方向的向量
并且把它展示出来
把这两个运算器复制一下
我们把这个vector替换掉
所以这样就得到了
红色这个向量在x方向的一个投影
同样我们可以去做它在y方向的投影
我们只需要在这里用y去替换它
同时在这里
刚才没有复制下来
同时在这里
刚才没有复制下来
所以我们在这里替换一下
这样我们就得到了
在y方向的一个投影
大家看一下这个空间关系
所以当我去挪动这个顶点的位置时
我们看到两个方向投影的向量
都在相应的发生变化
那么这个应用其实是我们说
dot product 点积
在grasshopper里面非常常见的一种应用
也就是求一个向量在某个方向投影的长度
在grasshopper里面非常常见的一种应用
也就是求一个向量在某个方向投影的长度
关于向量的运算另外一种是叉积
那么叉积比点积要更复杂一些
因为我们通过叉积
也就是cross product
因为我们通过叉积
也就是cross product
得到的是一个vector
也就是既有大小又有方向的一个量
那么这个vector的量
是怎么计算得到的呢
那么叉积要做的事情是
有时候我们会把a和b两个向量
用叉积叉在一起
那么就会得到一个a叉b的
这样一个向量在这个紫色的向量
也就是说这个方向
这样一个向量在这个紫色的向量
也就是说这个方向
那么这个向量它的特点是
首先它和a和b都垂直
它是这样一个向量
它和a和b都垂直
它是这样一个向量
它和a和b都垂直
其次它的大小等于a和b
所定义的这个平行四边形的面积的大小
是a叉b这个向量的长度
我们说如果和a b都垂直的向量
其实有这个紫色向量
或反过来的这个紫色向量都可以
哪一个是它真正的结果呢
我们要用到右手法则
大家看到当你伸出你的右手
拇指 食指和中指分别指向的方向
就确定了a和b作叉积得到的结果
你的食指指的方向是a的方向
中指指的是b的方向
那么这时候大拇指指的方向
就是a和b做叉积的方向
我们在Grasshopper里面做一个演示
如果我们把a和b
做一个叉积连在一起的话
那么我们来演示一下它的这个结果
这个时候把v接过来
我们转一下视图就会看到在这里
这边可以先隐藏一下
这样的话我们看到
a向量和b向量叉积的结果
根据右手螺旋法则
它是向上的
所以在这里我们得到一个
和a和b都垂直的向量
-1.1 参数化设计简介
--1.1
--模型文件
-2.1 Grasshopper简介
--2.1
-2.2 Grasshopper界面与基本操作
--2.2
-2.3 Bake与Internalize Data操作
--2.3
-第二章习题--作业
-3.1 Math运算器
--3.1.1
-3.2 点与向量
--3.2.1
--3.2.2
-3.3 Grasshopper曲线运算器
--3.3.1
--3.3.2
-3.4 Grasshopper曲面运算器
--3.4.1
--3.4.2
-3.5 案例:水波
--3.5
-3.6 案例:螺旋曲面
--3.6
-第三章习题--作业
-4.1 Grasshopper数据结构基础
--4.1
-4.2 数据流匹配
--4.2
-4.3 Dispatch运算器
--4.3.1
--4.3.2
-4.4 案例:项链
--4.4.1
--4.4.2
--4.4.3
-第四章 Grasshopper数据结构(一)--第四章习题
-5.1 Nurbs原理简介
--5.1
-5.2 Nurbs建模演示
--5.2
-5.3 Evaluate操作
--5.3
-5.4 由点建立曲线
--5.4
-5.5 Nurbs与向量
--5.5.1
--5.5.2
-5.6 案例:凤凰中心曲线环廊
--5.6.1
--5.6.2
-5.7 案例:鸟巢表皮钢结构
--5.7.1
--5.7.2
-第五章习题(一)--作业
-第五章 Nurbs曲线与曲面建模-- 第五章习题(二)
-期中作业:工艺品设计
--期中作业
-6.1 Grasshopper树状数据结构(1)
--6.1.1
--6.1.2
--6.1.3
-6.2 案例:2016年BIG事务所蛇形画廊
--6.2.1
--6.2.2
-6.3 Grasshopper参数化表皮
--6.3.1
--6.3.2
-6.4 案例:凤凰中心表皮结构
--6.4.1
--6.4.2
-第六章 Grasshopper数据结构(二)--第六章习题
-7.1 Image Sampler
--7.1.1
--7.1.2
-7.2 案例:望京soho表皮
--7.2
-7.3 Vironoi运算器
--7.3
-7.4 Metaball运算器
--7.4
-7.5 参数化设计在大型项目中的应用案例-“红飘带”景观装置
--7.5
--第七章 Grasshopper建模技巧--第七章习题
-8.1 Mesh原理
--8.1
-8.2 SubDivision与银河Soho案例
--8.2
-8.3 地形建模
--8.3
-8.4 面板划分:以银河soho为例
--8.4.1
--8.4.2
-第八章 Mesh建模基础--第八章习题
-9.1 Kangaroo插件简介
--9.1
-9.2 悬链线
--9.2.1
--9.2.2
--9.2.3
--9.2.4
-9.3 张拉膜,充气膜与可受弯面
--9.3.1
--9.3.2
-9.4 CirclePacking
--9.4
-结语
--9.5
-第九章 Kangaroo物理模拟--第九章习题
-期末作业: 综合运用
--期末大作业