1、向量定义

·向量是有大小和方向的有向线段

·向量没有位置,只有大小和方向

·向量的箭头是向量的结束点,尾巴是向量的起始点

·向量描述的位移能被认为是与轴平行的位移序列

·向量表示:三维(ax,ay,az) 二维(ax,ay)

向量与标量

·向量:有大小和方向的有向线段

·标量:只有大小,没有方向的量

向量与点

·向量和点数学形式上相等,但几何意义完全不同

·点:有位置,没有实际大小或方向

·向量:无位置,有实际大小和方向

·联系:任何一个点都可以看作是从原点出发的向量

零向量

·零向量是唯一大小为零的向量

·零向量是唯一一个没有方向的量

·零向量不是一个点,疑问没有定义某个位置

·零向量表示的是没有位移,就像零标量表示的是没有数量一样

2、计算方法

标量与向量之间的计算

·不可加

·不可减

·可乘:将向量的每个分量与标量相乘即可 , 例 -2 *(2,-5)=(-4,10)

·可除:将向量的每个分量与标量的倒数相乘,例(6,-2,-4)/ 2 = (3,-1,-2)

·几何解释:向量乘以标量的效果是以标量的大小缩放向量的长度,负值则方向相反

·例子:-2 *(2,-5)=(-4,10) (6,-2,-4)/ 2 = (3,-1,-2)

向量的模长

·计算公式:||v|| = pow(pow(vx,2)+pow(vy,2),0.5);

·几何解释:当我们将所示向量作为斜边构建一个直角三角形,所示向量的大小(模长)即可通过扫侥幸勾股定 理推出

·例子:(-12,5)的模长为

        pow(pow(-12,2)+pow(5,2),0.5) = pow(144+25,0.5)= 13

标准化向量

·标准化向量(单位向量)就是大小为1的向量。(适用范围:仅需要知道方向而不关心其大小,例如法线)

·运算法则:将向量除以她的大小(模长)

Vnormal = v / ||v|| ,v ≠ 0 (API:normalize(Vector3))

·例子:标准化向量(12,-5),

        (12,-5)/ pow(pow(12,2)+pow(-5,2),0.5) = (0.923,-0.358)

向量之间的加减法计算

计算公式(ax,ay)+(bx,by) = (ax+bx,ay+by)

加法:对应位置相加 例:(1,-4)+(7,3)=(8,1)

减法:对应位置相减 例:(-3,6)-(-4,3)=(1,3)

几何解释:假设有向量(ax,ay)和(bx,by),a向量加b向量最后得到的是从a向量起点到b向量结束之间

形成的新的向量

计算两点间距离:距离公式

平面:设A(X1,Y1)、B(X2,Y2),   则∣AB∣=√[(X1-X2)^2+(Y1-Y2)^2]=√(1+k^2) (∣X1-X2∣)^2,

空间:设A(x1,y1,z1),B(x2,y2,z2), |AB|=√[(x2-x1)^2+(y2-y1)^2+(z2-z1)^2]

·应用范围:计算一个向量到另一个向量的距离(a 到 b 的位移向量为 b-a)

向量的点积计算

·乘法之点积(又称点乘,内积)

·计算公式:(ax,ay)·(bx,by) = (axbx + ayby)

·向量点乘就是分量乘积的和,结果是一个标量,并满足乘法交换律

向量点积的几何意义与向量的投影

·几何解释:点乘记过描述了两个向量方向的“相似”程度,点乘结果越大,夹角角度越小,两个向量越接近(反馈到渲染上就是面的明暗效果)

if 0 <= θ < 90° A·B > 0

if 90 < θ < 180 A·B < 0

if θ = 90° A·B = 0

·计算公式: a · b = |a||b|cosΘ

·投影的几何解释:假设有两个向量 V 和 N,将V分解为两个向量, V平行 和 V垂直 ,V平行 平行于 N,V垂直垂直于N,并满足 V = V平行 + V垂直 ,则称平行分量 V平行 为在 N 上的投影

兰伯特光照模型

·兰伯特光照模型是目前最简单通用的模拟漫发射的光照模型

·使光照方向的反方向为 L 向量,法线方向为 N 向量,则有:

L 与 N 方向相同,则Normal · Light = 1(纯亮)

L 与 N 方向相反,则Normal · Light = -1(纯黑)

L 与 N 方向垂直,则Normal · Light = 0(纯黑)

向量的叉积计算

·乘法之叉积(又称叉乘,叉积) 仅运用于3D向量

·计算公式: 不满足交换律,a x b ≠ b x a,满足逆交换律:a x b = -(b x a)

·向量叉乘就是分量交叉相乘再相减,结果是一个向量且不满足交换律

·几何解释:叉乘得到的向量垂直于原来的两个向量

向量叉积的大小与方向判断

计算公式

小作业

兰伯特

Shader Forge节点

unity shader CG语言


Shader "VS/VS_lambert" {Properties {}SubShader {Tags {"RenderType"="Opaque"}Pass {Name "FORWARD"Tags {"LightMode"="ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma target 3.0#include "UnityCG.cginc"struct VertexInput {float4 vertex   : POSITION;   // 顶点信息float4 normal   : NORMAL;     // 法线信息 };struct VertexOutput {float4 pos : SV_POSITION;     // 屏幕顶点位置float3 nDirWS   : TEXCOORD2;  // 世界空间法线方向};VertexOutput vert (VertexInput v) {VertexOutput o;o.pos = UnityObjectToClipPos( v.vertex );o.nDirWS = UnityObjectToWorldNormal(v.normal); return o;}float4 frag(VertexOutput i) : COLOR {float3 lDirWS = _WorldSpaceLightPos0.xyz; //光方向float ndotl = dot(i.nDirWS, lDirWS);      //法线点乘光return ndotl;}ENDCG}}FallBack "Diffuse"}

半兰伯特

Shader Forge节点

unity shader CG语言

Shader "VS/VS_lambert" {Properties {}SubShader {Tags {"RenderType"="Opaque"}Pass {Name "FORWARD"Tags {"LightMode"="ForwardBase"}CGPROGRAM#pragma vertex vert#pragma fragment frag#pragma target 3.0#include "UnityCG.cginc"struct VertexInput {float4 vertex   : POSITION;   // 顶点信息float4 normal   : NORMAL;     // 法线信息 };struct VertexOutput {float4 pos : SV_POSITION;     // 屏幕顶点位置float3 nDirWS   : TEXCOORD2;  // 世界空间法线方向};VertexOutput vert (VertexInput v) {VertexOutput o;o.pos = UnityObjectToClipPos( v.vertex );o.nDirWS = UnityObjectToWorldNormal(v.normal); return o;}float4 frag(VertexOutput i) : COLOR {float3 lDirWS = _WorldSpaceLightPos0.xyz; //光方向float ndotl = dot(i.nDirWS, lDirWS);      //法线点乘光float Hlambert = ndotl * 0.5 + 0.5;return Hlambert;}ENDCG}}FallBack "Diffuse"}

图形 1.2.1 向量基础相关推荐

  1. 「技美之路」图形 1.2.1 向量基础

    这一节的大部分其实都是初高中数学基础,虽是基础,但通过向量(也可称为矢量),我们可以做出想要的效果.比如获取相机到物体的距离用于判断并剔除不可见的物体,获取光照到物体的距离,调节物体的受光照效果等等- ...

  2. 百人计划学习 图形 1.2.1 向量基础

    百人计划学习 图形 1.2.1 向量基础 这是个人学习笔记,有错欢迎指出 基本定义 向量:有大小有方向的有向线段 没有位置,只有大小和方向 箭头是向量的结束,尾是向量的开始 表示:三维(ax,ay,a ...

  3. HDLBits答案(2)_Verilog向量基础

    HDLBits_Verilog向量基础知识 HDLBits链接 向量 在Verilog中,对向量维度的声明在向量名之前,这点与C语言有所差异,但使用向量的时候维度信息仍在向量名后. wire [99: ...

  4. 【TA-霜狼_may-《百人计划》】图形4.5 DoF景深基础

    [TA-霜狼_may-<百人计划>]图形4.5 Dof景深基础 @[TOC]([TA-霜狼_may-<百人计划>]图形4.5 Dof景深基础 4.5.1 景深 离散圈 4.5. ...

  5. 【QT 5 学习笔记-学习绘图相关+画图形图片等+绘图设备+基础学习(2)】

    [QT 5 学习笔记-学习绘图相关+画图形图片等+绘图设备+基础学习(2)] 1.说明 2.实验环境 3.参照连接 4.自己的学习与理解 5.学习与实践代码 (1)移动图片测试实验 (1)继续之前的工 ...

  6. [资料] [转载] 图形加速卡技术 [专业的基础技术文章]

    图形加速卡技术论坛:1.入门篇--图形加速之 图形 (发表于GZeasy.com: Jul 20 2003, 04:14 PM) 来了这么久,也对这里的朋友有了一个大概的了解. 恕我罗索一两句,这里的 ...

  7. 图形加速卡技术 [专业的基础技术文章]

    最后,感谢下本文的作者,HeavenPR,原文发表在GZ论坛. --------------------------- 图形加速卡技术论坛:1.入门篇--图形加速之 图形 (发表于GZeasy.com ...

  8. 高中数学向量——基础概念篇

    <数学>本就是我们原本掌握却又遗忘的知识 一.知识纲要 1.向量的相关概念 (1)向量: 既有大小又又方向的量叫做向量,记为 AB→\overrightarrow{AB}AB 或者 a→\ ...

  9. html5绘制基本图形代码,一波HTML5Canvas基础绘图实例代码集合

    CSS中p.art #p2和p#p2比较,那个的特殊性更高 html5 两个canvas重叠放在一个div里面,每个canvas 将图片素材引入网页,定义canvas标签,获取canvas的上下文.定 ...

最新文章

  1. 构建企业级业务高可用的延时消息中台
  2. java如何定义一个字符栈_Java性能优化之字符串优化处理
  3. |9 其他(linux特定的), 用来存放内核例行程序的文档.,Linux下的帮助命令
  4. Spark笔记:RDD基本操作(上)
  5. 真诚推荐这7个大佬的公众号,碎片化学习
  6. 浅谈“==”、equals和hashcode,以及map的遍历方法(可用作上一篇k-means博文参考)
  7. POJ2718【DFS】
  8. 习题总结(一)——硬链接,locate,chmod,家目录
  9. python使用try语句捕获处理异常_Python使用try except处理程序异常的三种常用方法分析...
  10. mysql分组去掉重复记录_MYSQL中GROUP分组去除重复数据
  11. php粉层,thinkphp 模型分层
  12. 勒索病毒最新变种for linux,Satan勒索病毒新变种卷土重来 安全狗提醒您注意
  13. Leetcode--用两个栈实现一个队列
  14. android so文件脱壳,安卓逆向ida脱dex so壳内存脱壳教程
  15. 互联网+脑科学,中国脑计划的机会
  16. 报告解读下载 | 7月《中国数据库行业分析报告》重磅发布!精彩抢先看!
  17. Cheat Engine(CE)的下载和安装指南以及相关教程
  18. Android亮度自动调节
  19. 403forbidden提示没有权限
  20. android 虚拟按键源码流程分析

热门文章

  1. 接口需求文档的书写总结
  2. 【管理研习社】给CEO们推荐一些书
  3. 电脑计算机系统无法打开,电脑系统打不开了怎么办
  4. OpenGL坐标系转换
  5. 3.1 项目立项管理
  6. 重新理解CEO的学习能力----HHR计划----以太入门课
  7. 从全球券 RWC 聊起,区块链项目也许可以这样落地
  8. 4款堪称神器的必备高效率办公工具!
  9. android 小米imei 空,【报Bug】小米9获取imei为空
  10. 复习-OKhttp-Gson-glide(一)