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

OpenClaw极简开发:用nanobot镜像快速验证自动化脚本

OpenClaw极简开发&#xff1a;用nanobot镜像快速验证自动化脚本 1. 为什么选择nanobot镜像进行OpenClaw开发 作为一名长期在本地折腾AI自动化脚本的开发者&#xff0c;我深知环境配置的痛。每次换机器重装OpenClaw&#xff0c;总要在Node.js版本、Python依赖和模型部署之间反…...

绝地求生罗技鼠标宏配置全攻略:从零到精通的压枪优化指南

绝地求生罗技鼠标宏配置全攻略&#xff1a;从零到精通的压枪优化指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中的枪口…...

TranslateGemma部署避坑指南:常见问题与解决方案

TranslateGemma部署避坑指南&#xff1a;常见问题与解决方案 1. 部署前的硬件准备 1.1 显卡配置要求 TranslateGemma-12B-IT模型需要两张NVIDIA RTX 4090显卡协同工作&#xff0c;这是由模型并行技术决定的硬性要求。实际测试中发现&#xff1a; 单卡尝试运行会立即报错CUD…...

OpenCV图像预处理失效全解析,深度解读光照不均、反光伪影、亚像素抖动下的鲁棒代码实现

第一章&#xff1a;OpenCV图像预处理失效的典型工业场景综述在工业视觉检测系统中&#xff0c;OpenCV常被用作图像预处理的核心工具&#xff0c;但其默认参数与理想假设在真实产线环境中频繁失效。光照剧烈波动、镜头污损、金属反光、高速运动拖影以及低信噪比成像等物理约束&a…...

OpenClaw浏览器自动化:GLM-4.7-Flash驱动的智能搜索与数据采集

OpenClaw浏览器自动化&#xff1a;GLM-4.7-Flash驱动的智能搜索与数据采集 1. 为什么需要浏览器自动化助手 上周我需要做一个小型市场调研&#xff0c;收集20家竞品的产品定价和功能列表。手动打开每个网站、复制粘贴数据、整理成表格&#xff0c;花了整整一个下午。这种重复…...

从Excel到Python:数据分析师必学的对数坐标绘制技巧(含Seaborn美化)

从Excel到Python&#xff1a;数据分析师必学的对数坐标绘制技巧&#xff08;含Seaborn美化&#xff09; 当市场报告中的用户增长曲线从缓慢爬升突然变成陡峭上升&#xff0c;或是竞品分析中的订单量横跨三个数量级时&#xff0c;Excel的默认线性坐标往往会让图表失去可读性。对…...

效率飙升:用快马生成可复用的wsl环境配置脚本,告别重复劳动

最近在团队协作和更换设备时&#xff0c;经常需要重复配置WSL开发环境&#xff0c;每次都要手动执行一堆命令&#xff0c;不仅耗时还容易遗漏步骤。经过多次实践&#xff0c;我总结出一套用脚本自动化配置的方法&#xff0c;现在通过InsCode(快马)平台就能快速生成可复用的环境…...

python-flask-djangol框架的校园餐厅菜品自选系统

目录 技术选型核心功能模块数据库设计开发流程部署方案关键代码示例测试重点 项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 技术选型 使用Python的Flask或Django框架作为后端基础。Flask适合轻量级快速开发&#xff0c;Djan…...

嵌入式pRNG:基于WDT与LFSR的轻量级硬件熵随机数生成器

1. pRNG库概述&#xff1a;面向嵌入式系统的轻量级熵收集型伪随机数生成器pRNG&#xff08;Pseudo-Random Number Generator&#xff09;是一个专为资源受限微控制器设计的开源伪随机数生成库&#xff0c;其核心设计哲学是在极小内存开销下&#xff0c;通过硬件时序抖动提取物理…...

PUMA560轨迹规划踩坑记:DH参数选错,你的仿真结果还准吗?

PUMA560轨迹规划实战&#xff1a;从DH参数陷阱到精准运动控制 第一次在MATLAB中看到PUMA560机械臂的末端执行器画出诡异的"8"字轨迹时&#xff0c;我盯着屏幕足足愣了三分钟。按照教科书上的标准DH参数编写的代码&#xff0c;理论上应该生成完美的直线运动&#xff0…...