当前位置: 首页 > news >正文

Unity | Shader基础知识番外(向量数学知识速成)

目录

一、向量定义

二、计算向量

三、向量的加法(连续行走)

四、向量的长度

五、单位向量

六、向量的点积

1 计算

2 作用

七、向量的叉乘

1 承上启下

2 叉乘结论

3 叉乘的计算(这里看不懂就百度叉乘计算)

八、欢迎收看Shader专栏


一、向量定义

向量:从一个点到另一个点的箭头。

例:假如现在有两个点,A(0,0)和B点(4,5)。

假如从A走向B(如图1),箭头为:

图1 向量AB

假如从B走向A(如图2),箭头为:

图2 向量BA

我们会用A(0,0)表示点A,

我们会用B(4,5)表示点B,

问题,我们用什么表示和区分这两个箭头?

答:如果从A走向B,我们就写成\vec{AB},如果从B走向A,就写成\vec{BA}(是不是很形象)。

字母确定了,可数字怎么办?

答:因为横坐标x是向左为正,纵坐标y是向上为正。

我们从A(0,0)走向B(4,5)等于向右走4格,向上走5格,所以是\vec{AB}(4,5),

反之,如果从B(4,5)走向A(0,0)等于向左走4格,向下走5格,所以是\vec{BA}(-4,-5),

所以在表达向量时,写的是箭头起点到箭头终点是如何走过去。

二、计算向量

(如图3)如果我们随意画出两个点A(1,3),B(4,5)

图3 向量AB

通过数格子,我们可以得出\vec{AB}(3,2),但这个数字,我们也可以算出来,通过终点的B(4,5)中的x减去A(1,3)的x:4-1=3,通过终点的B(4,5)中的y减去A(1,3)的y:5-3=2

也可以得出:\vec{AB}(3,2)

所以:终点的坐标,减去起点的坐标,就是向量的数值

三、向量的加法(连续行走)

(如图4)我们画两个连着的向量\vec{AB}(1,3)和\vec{BC}(3,2)

如图4 向量由A到C

从图中(如图5)我们可以看出,我们从A走到B,又从B走到C,这种连着走的向量我们可以相加,实际上两个向量就是从A走到了C,横着向右走了4格,向上走了5格。

\vec{AB}(1,3)+\vec{BC}(3,2)=\vec{AC}(1+3,3+2)=\vec{AC}(4,5)

图5 向量AC

四、向量的长度

(如图6)假如我希望计算\vec{AC}(4,5)的长度,通过我们学过的勾股定理就得出

AC = \sqrt{4^{2}+5^{2}}

图6 向量AC

所以:向量的长度为\sqrt{x^{2}+y^{2}}

五、单位向量

单位向量:向量长度是1

把任何一个向量变成单位向量,只需要除以向量的长度。

例:向量(3,4),长度是5,希望长度变为1,就直接集体除以5。

所以,向量(3,4)的单位向量就是(3/5,4/5)。

六、向量的点积

1 计算

设向量a(1,2)和向量b(3,4)点乘

算法1:

\vec{a}\cdot \vec{b}=(x_{1}\times x_{2})+(y_{1}\times y_{2})=(1\times 3)+(2\times 4)=3+8=11

算法2:

\vec{a}\cdot \vec{b}=|\vec{a}||\vec{b}|cos\theta=\sqrt{1^{2}+2^{2}}\sqrt{3^{2}+4^{2}}cos\theta

算法2算到这一步就停了,因为不知道cosθ,

可是算法1和算法2的结果是相同的。

\sqrt{1^{2}+2^{2}}\sqrt{3^{2}+4^{2}}cos\theta=11

所以,可以算出cos\theta=\frac{11}{\sqrt{1^{2}+2^{2}}\sqrt{3^{2}+4^{2}}}=0.98

最后θ≈11.5°

2 作用

为啥要算点积?(我们把上面的向量a和向量b画出来)(如图7)

图7 向量A和向量B

我原本面向A(向量a),现在我想面向B,我应该旋转多少度?

答:刚才算过了:11.5°

备注(以下结论的推导过程自己百度):

\vec{a}\cdot \vec{b}>0        a和b的夹角0-90度之间

\vec{a}\cdot \vec{b}=0        a和b的夹角为90度

\vec{a}\cdot \vec{b}<0        a和b的夹角大于90度

七、向量的叉乘

1 承上启下

第六部分我们知道了旋转角度,不知道聪明的你有没有发现,其实,你只知道了角度,不知道是顺时针旋转还是逆时针旋转。叉乘就事帮助我们判断是哪个方向的旋转的。

2 叉乘结论

当叉乘结果<0        顺时针旋转

当叉乘结果>0        逆时针旋转

叉乘结果=0            不用旋转

3 叉乘的计算(这里看不懂就百度叉乘计算)

我们还是计算向量a(1,2)和向量b(3,4)叉乘,因为叉乘需要x,y,z才能计算,此时相当于我们的z是0,所以我们的向量为a(1,2,0)和向量b(3,4,0)。

图8 叉乘的计算

此时是-2<0所以,我们只需要逆时针旋转11.5°,就可以从向量a的方向变成向量b的方向。

八、欢迎收看Shader专栏

https://blog.csdn.net/weixin_49427945/category_12525804.html

相关文章:

Unity | Shader基础知识番外(向量数学知识速成)

目录 一、向量定义 二、计算向量 三、向量的加法&#xff08;连续行走&#xff09; 四、向量的长度 五、单位向量 六、向量的点积 1 计算 2 作用 七、向量的叉乘 1 承上启下 2 叉乘结论 3 叉乘的计算&#xff08;这里看不懂就百度叉乘计算&#xff09; 八、欢迎收…...

一个小白的微不足道的见解关于未来

随着科技的不断发展&#xff0c;IT行业日益壮大&#xff0c;运维工程师在其中扮演着至关重要的角色。他们负责维护和管理企业的技术基础设施&#xff0c;确保系统的正常运行。然而&#xff0c;随着技术的进步和行业的变化&#xff0c;运维工程师的未来将面临着一系列挑战和机遇…...

图的遍历(搜索)算法(深度优先算法DFS和广度优先算法BFS)

一、图的遍历的定义&#xff1a; 从图的某个顶点出发访问遍图中所有顶点&#xff0c;且每个顶点仅被访问一次。&#xff08;连通图与非连通图&#xff09; 二、深度优先遍历&#xff08;DFS&#xff09;&#xff1b; 1、访问指定的起始顶点&#xff1b; 2、若当前访问的顶点…...

抖店做不起来?新手常见起店失败问题总结,看下你中了几条?

我是王路飞。 能看到这篇文章的&#xff0c;肯定是处境符合标题内容了。 抖店的门槛很低&#xff0c;运营思路其实也不算难&#xff0c;但就是很多新手做不起来。 这中间&#xff0c;可能跟平台、项目没什么关系&#xff0c;而是跟你自己有关系&#xff0c;走错了方向&#…...

【每日面试题】精选java面试题之redis

Redis是什么&#xff1f;为什么要使用Redis&#xff1f; Redis是一个开源的高性能键值对存储数据库。它提供了多种数据结构&#xff0c;包括字符串、列表、集合、有序集合、哈希表等。Redis具有快速、可扩展、持久化、支持多种数据结构等特点&#xff0c;适用于缓存、消息队列…...

OSCP 靶场 - Vault

端口扫描 nmap nmap -O 192.168.162.172 smb枚举 smbmap(kali自带) //枚举GUEST用户可以使用的目录 smbmap -u GUEST -H 192.168.162.172 NTLMrelay—smbrelay 1.制作钓鱼文件 使用GitHub - xct/hashgrab: generate payloads that force authentication against an attacker…...

uniapp子组件向父组件传值

目录 子组件向父组件传值子组件1子组件2 父组件最后 子组件向父组件传值 子组件1 <template><view class"content"><view v-for"(item,index) in list" :key"index">{{item}}</view></view> </template>&…...

过滤特殊 微信昵称

$nickName preg_replace(/[\xf0-\xf7].{3}/, , $userData[nickName]);...

LLM、AGI、多模态AI 篇一:开源大语言模型简记

文章目录 系列开源大模型LlamaChinese-LLaMA-AlpacaLlama2-ChineseLinlyYaYiChatGLMtransformersGPT-3(未完全开源)BERTT5QwenBELLEMossBaichuan...

微信小程序中获取用户当前位置的解决方案

微信小程序中获取用户当前位置的解决方案 1 概述 微信小程序有时需要获取用户当前位置&#xff0c;以便为用户提供基于位置信息的服务&#xff08;附近美食、出行方案等&#xff09;。 获取用户当前位置的前提是用户手机需要打开 GPS 定位开关&#xff1b;其次&#xff0c;微…...

Vue3-35-路由-路由守卫的简单认识

什么是路由守卫 路由守卫&#xff0c;就是在 路由跳转 的过程中&#xff0c; 可以进行一些拦截&#xff0c;做一些逻辑判断&#xff0c; 控制该路由是否可以正常跳转的函数。常用的路由守卫有三个 &#xff1a; beforeEach() : 前置守卫&#xff0c;在路由 跳转前 就会被拦截&…...

制药企业符合CSV验证需要注意什么?

在制药行业中&#xff0c;计算机化系统验证&#xff08;CSV&#xff09;是确保生产过程的合规性和数据完整性的关键要素。通过CSV验证&#xff0c;制药企业可以保证其计算机化系统的可靠性和合规性&#xff0c;从而确保产品质量和患者安全。然而&#xff0c;符合CSV验证并不是一…...

再谈动态SQL

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…...

【数据结构】树

一.二叉树的基本概念和性质&#xff1a; 1.二叉树的递归定义&#xff1a; 二叉树或为空树&#xff0c;或是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成 2.二叉树的特点&#xff1a; &#xff08;1&#xff09;每个结点最多只有两棵子树&#xff0…...

【Midjourney】AI绘画新手教程(一)登录和创建服务器,生成第一幅画作

一、登录Discord 1、访问Discord官网 使用柯學尚网&#xff08;亲测非必须&#xff0c;可加快响应速度&#xff09;访问Discord官方网址&#xff1a;https://discord.com 选择“在您的浏览器中打开Discord” 然后&#xff0c;注册帐号、购买套餐等&#xff0c;在此不做缀述。…...

对比 PyTorch 和 TensorFlow:选择适合你的深度学习框架

目录 引言 深度学习在各行业中的应用 PyTorch 和 TensorFlow 简介 PyTorch&#xff1a;简介与设计理念 发展历史和背景 主要特点和设计理念 TensorFlow&#xff1a;简介与设计理念 发展历史和背景 主要特点和设计理念 PyTorch 和 TensorFlow 的重要性 Pytorch对比Te…...

Oracle笔记-查看表已使用空间最大空间

目前以Oracle18c为例&#xff0c;主要是查这个表USER_SEGMENTS。 在 Oracle 18c 数据库中&#xff0c;USER_SEGMENTS 是一个系统表&#xff0c;用于存储当前用户&#xff08;当前会话&#xff09;拥有的所有段的信息。段是 Oracle 中分配存储空间的逻辑单位&#xff0c;用于存…...

大数据HCIE成神之路之特征工程——特征选择

特征选择 1.1 特征选择 - Filter方法1.1.1 实验任务1.1.1.1 实验背景1.1.1.2 实验目标1.1.1.3 实验数据解析1.1.1.4 实验思路 1.1.2 实验操作步骤 1.2 特征选择 - Wrapper方法1.2.1 实验任务1.2.1.1 实验背景1.2.1.2 实验目标1.2.1.3 实验数据解析1.2.1.4 实验思路 1.2.2 实验操…...

python 正则-常见题目

1、邮箱 print(re.findall(r[\w-][\w-]\.[\w-], weidianqq.com))2、身份证号 xxxxxx yyyy MM dd 375 0 十八位 print(re.findall(r(?:18|19|(?:[23]\d))\d{2}, 2010)) # 年print(re.findall(r(?:0[1-9])|10|11|12, 11)) # 月print(re.findall(r(?:[0-2][1-9])|10|20|30|3…...

解析:Eureka的工作原理

Eureka是Netflix开源的一个基于REST的的服务发现注册框架&#xff0c;它遵循了REST协议&#xff0c;提供了一套简单的API来完成服务的注册和发现。Eureka能够帮助分布式系统中的服务提供者自动将自身注册到注册中心&#xff0c;同时也能够让服务消费者从注册中心发现服务提供者…...

RecyclerView 与 ListView 区别和使用

前置知识&#xff1a;ListView基本用法与性能提升 RecyclerView 与 ListView 区别 RecyclerView 需要设置布局&#xff08;LinearLayoutManager、GridLayoutManager、StaggeredGridLayoutManager&#xff09; recyclerView?.layoutManager LinearLayoutManager(activity) …...

力扣232. 用栈实现队列

题目 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开…...

这个方法可以让你把图片无损放大

随着数字技术的不断发展&#xff0c;照片无损放大已经成为了摄影领域中的一项重要技术。照片无损放大能够让摄影师在不损失细节和画质的情况下&#xff0c;将照片放大到更大的尺寸&#xff0c;从而让观众能够更加清晰地欣赏到照片中的每一个细节。 今天推荐的这款软件主要是通…...

Springboot整合Elastic-job

一 概述 Elastic-Job 最开始只有一个 elastic-job-core 的项目&#xff0c;定位轻量级、无中心化&#xff0c;最核心的服务就是支持弹性扩容和数据分片&#xff01;从 2.X 版本以后&#xff0c;主要分为 Elastic-Job-Lite 和 Elastic-Job-Cloud 两个子项目。esjbo官网地址 Ela…...

VsCode的介绍和入门

目录 ​编辑 介绍 我应该切换到 VS Code 吗&#xff1f;为什么&#xff1f; 入门 Explorer 搜索 源代码控制 调试器 扩展 终点站 命令面板 主题 定制化 不错的配置选项 最适合编码的字体 工作空间 编辑 智能感知 代码格式化 错误和警告 键盘快捷键 键位图…...

C++:自创小游戏

欢迎来玩&#xff0c;每次都有不一样的结果。 长达142行。 #include<bits/stdc.h> #include<windows.h> #define random(a,b) (rand()%(b-a1)a) using namespace std; int main(){int n;cout<<"输1~10,越小越好,不告诉你有什么用&#xff0c;当然也可…...

AIGC带给开发者的冲击

未来会有两种开发者&#xff0c;一种是会使用AIGC工具的开发者另一种是不会使用AIGC的开发者&#xff0c;AIGC的出现提高了开发效率和代码质量&#xff0c;对开发者意味着需要不断学习和适应新的技术和工作范式&#xff0c;开发者可以把更多的精力放在高级抽象的定义以及更高维…...

利用蚁剑钓鱼上线CS

前言 中国蚁剑使用Electron构建客户端软件&#xff0c;Electron实现上用的是Node.js&#xff0c;并且Node.js能执行系统命令&#xff0c;故可以利用蚁剑的webshell页面嵌入js来直接执行命令&#xff0c;进而钓鱼来上线CS。&#xff08;类似Goby&#xff0c;Goby也是使用Electr…...

宣传照(私密)勿转发

精美的海报通常都是由UI进行精心设计的&#xff0c;现在有100 件商品需要进行宣传推广&#xff0c;如果每个商品都出一张图显然是不合理的&#xff0c;且商品信息各异。因此需要通过代码的形式生成海报。对此&#xff0c;我也对我宣传一波&#xff0c;企图实现我一夜暴富的伟大…...

【Spring】19 AOP介绍及实例详解

文章目录 1. 定义1&#xff09;什么意思呢&#xff1f;2&#xff09;如何解决呢&#xff1f; 2. 基本概念1&#xff09;切面&#xff08;Aspect&#xff09;2&#xff09;切点&#xff08;Pointcut&#xff09;3&#xff09;通知&#xff08;Advice&#xff09;4&#xff09;连…...

网站的中英文切换怎么做/百度热榜

主要用到两个注解&#xff1a; PostMapping(value{"/xxx"},produces MediaType.APPLICATION_JSON_VALUE) producesMediaType.APPLICATION_JSON_VALUE&#xff1a;表示将生产json格式的数据&#xff0c;此时根据请求头中的Accept进行匹配&#xff0c;如请求头“Acce…...

制作网站开发/电脑培训班零基础网课

知名企业家、同时也是 NBA 小牛队的老板马克库班&#xff08;Mark Cuban&#xff09;曾说过一句话&#xff1a;人工智能&#xff0c;深度学习和机器学习&#xff0c;不论你现在是否能够理解这些概念&#xff0c;你都应该学习。否则三年内&#xff0c;你就会像灭绝的恐龙一样被社…...

东莞企业营销型网站策划/成人营销管理培训班

大家小学初中都有这样的经历: 一篇复杂的文章划分段和层 然后层层归纳 段段归纳 得出中心思想 也读结构复杂的标签代码要想快速清晰 也是这种办法: 向下分解结构 归纳出经典的文章结构 就可以顺利的往里套了 记住以下五个标签结构:将理解的标签代码往里套 你会发现你阅读的速度…...

泰州市网站建设/seo薪资

flex里的[Inspectable]标签用于为as类的属性定义一些可供flex代码提示等使用的信息&#xff0c;比如属性的类型啦合法值啦默认值啦之类的&#xff0c;[Inspectable]标签可以用在属性上&#xff0c;也可以用在getter/setter方法上&#xff0c;写法如下&#xff1a; [Inspectable…...

廉政网站建设/互联网营销师含金量

http://www.lenky.info/archives/category/nix%E6%8A%80%E6%9C%AF/%E8%B7%9F%E8%B8%AA%E8%B0%83%E8%AF%95转载于:https://www.cnblogs.com/zengkefu/p/6372280.html...

网站做下载功能/郑州技术支持seo

前言函数系统定义函数聚合函数数学函数字符串函数时间日期函数 自定义函数标量值函数表值函数 后语 前言 学习数据库视频的时候&#xff0c;感觉函数的使用非常重要&#xff0c;所以对数据库函数进行了总结和分类&#xff01;加深一下自己的理解&#xff0c;也能让同学和自己在…...