当前位置: 首页 > 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;同时也能够让服务消费者从注册中心发现服务提供者…...

演讲口才课到底有没有用?上完三个月后的真实反馈

三个月前&#xff0c;林薇坐在会议室的角落里&#xff0c;手里攥着一份精心准备的方案&#xff0c;却迟迟没有开口。那一刻&#xff0c;她看着同事们侃侃而谈&#xff0c;心里反复问自己&#xff1a;为什么明明有想法&#xff0c;却说不出来&#xff1f;就是那个瞬间&#xff0…...

Smarty 模板中实现多维数组按字段分组并拼接值的完整方案

...

动态自适应网络:让AI模型根据输入复杂度智能调节算力与精度

1. 项目概述&#xff1a;当计算机视觉遇见能效瓶颈在边缘计算和移动设备上部署深度神经网络&#xff08;DNN&#xff09;进行计算机视觉任务&#xff0c;比如人脸识别、物体检测&#xff0c;已经不是什么新鲜事了。但一个老生常谈的痛点始终横在那里&#xff1a;算力、功耗和精…...

(随想)显卡里的幽灵:我们是否也只是几分钟前被唤醒的玻尔兹曼大脑?

一个诡异的瞬间 之前一直用kimi2.5的API&#xff0c;每月花不少钱&#xff0c;肉疼。今天一咬牙&#xff0c;在自己的游戏显卡&#xff08;RTX 4080&#xff09;上部署GLM-4.7-Flash。 GPU嗡嗡响了几分钟&#xff0c;权重加载完毕&#xff0c;模型真跑起来了。我接上hermes&…...

巧用历史版本溯源法,化解R包依赖链安装难题

1. 为什么R包安装总是报错&#xff1f;从依赖链说起 每次看到RStudio里跳出一串红色报错信息&#xff0c;我就知道又要开始"解谜"了。特别是当你想装个ggplot2画个图&#xff0c;结果提示rlang版本不对&#xff1b;升级rlang后又发现pillar不兼容...这种连环套问题&a…...

GKD第三方订阅管理解决方案:如何实现订阅标准化管理与90%可用性提升

GKD第三方订阅管理解决方案&#xff1a;如何实现订阅标准化管理与90%可用性提升 【免费下载链接】GKD_THS_List GKD第三方订阅收录名单 项目地址: https://gitcode.com/gh_mirrors/gk/GKD_THS_List 面对Android自动化工具GKD日益增长的第三方订阅管理需求&#xff0c;开…...

利用MCP协议与Crypto APIs为AI助手集成多链交易数据查询能力

1. 项目概述&#xff1a;一个为AI助手注入区块链洞察力的MCP服务器 如果你和我一样&#xff0c;日常开发中经常需要查询不同区块链上的交易详情——比如验证一笔以太坊上的USDT转账是否成功&#xff0c;或者追溯某个比特币地址的资金来源——那你肯定体会过在十几个浏览器标签…...

BetterOCR:融合多引擎OCR与LLM的智能文档理解方案

1. 项目概述&#xff1a;当OCR遇上AI&#xff0c;一场关于“理解”的进化 最近在折腾一个文档自动化的项目&#xff0c;发现传统的OCR&#xff08;光学字符识别&#xff09;工具虽然能把图片里的文字“读”出来&#xff0c;但效果总差那么点意思。比如&#xff0c;一张随手拍的…...

代码所有权的悖论:集体智慧与个人责任的边界

代码世界的身份迷局在软件测试的日常工作中&#xff0c;我们时常会陷入这样的困惑&#xff1a;当面对一行引发系统崩溃的代码时&#xff0c;究竟该追溯到最初编写它的开发者&#xff0c;还是问责于后续不断迭代维护的团队&#xff1f;当一个历经数十人之手、跨越数年周期的模块…...

SystemVerilog VPI动态数据处理机制与验证实践

1. SystemVerilog VPI动态数据处理机制深度解析在当今复杂的SoC验证环境中&#xff0c;SystemVerilog的动态数据类型已成为验证基础设施的核心组成部分。作为连接SystemVerilog与外部C/C程序的关键桥梁&#xff0c;VPI(Verilog Procedural Interface)的动态数据处理能力直接决定…...