Unity中向量的点乘、叉乘区别和作用以及经典案例

文章目录

      • 点乘(Dot Product)
      • 叉乘(Cross Product)
      • 向量归一化(Normalize)
      • 其他作用

unity开发中我们要计算角度,判断位置,常用点乘、叉乘、归一化等等,我们看看他们的使用案例

点乘(Dot Product)

在Unity中的Vector3类提供了Dot()方法来计算两个向量的点乘。点乘的结果是一个标量值,可以用于判断两个向量的方向关系或者计算投影长度等。

Vector3 vectorA = new Vector3(1, 2, 3);
Vector3 vectorB = new Vector3(4, 5, 6);float dotProduct = Vector3.Dot(vectorA, vectorB);// 如果dotProduct > 0,表示vectorA和vectorB大致指向同一方向;
// 如果dotProduct < 0,表示vectorA和vectorB大致指向相反方向;
// 如果dotProduct = 0,表示vectorA和vectorB互相垂直。

叉乘(Cross Product)

Unity中的Vector3类也提供了Cross()方法来计算两个三维向量的叉乘。叉乘结果是一个新的向量,其方向垂直于原两个向量所在的平面,并遵循右手定则。

Vector3 vectorA = new Vector3(1, 0, 0); // 假设是X轴正方向
Vector3 vectorB = new Vector3(0, 1, 0); // 假设是Y轴正方向Vector3 crossProduct = Vector3.Cross(vectorA, vectorB); // 结果应该是Z轴正方向的单位向量// 在Unity中,常利用叉乘来计算面法线、旋转轴等信息。

向量归一化(Normalize)

Normalize()方法用于将一个非零向量转换为单位向量,即模长为1但方向保持不变的向量。这对于描述方向而不关心大小的场合非常有用,如光源、观察方向、表面法线等。

Vector3 nonNormalizedVector = new Vector3(3, 4, 5); // 长度不为1的向量Vector3 normalizedVector = Vector3.Normalize(nonNormalizedVector); // 此时normalizedVector的长度为1// 在Unity中,例如我们想要获取某个物体朝向的方向,而不关心其速度或力的大小时,就会使用归一化向量。

其他作用

当然,向量的点乘、叉乘以及归一化在Unity和其他游戏引擎或计算机图形学领域中还有更多的应用:

点乘(Dot Product):

  1. 计算角度:通过点乘可以求出两个单位向量之间的夹角余弦值,进而得到角度。例如,在计算物体与光源的照射角度时会用到。
float angleInRadians = Mathf.Acos(Vector3.Dot(normalizedVectorA, normalizedVectorB));
  1. 投影长度:如果需要计算一个向量在另一个向量方向上的投影长度,也可以使用点乘。

  2. 光照模型:在Phong光照模型中,点乘用于计算表面法线与光线方向的夹角影响漫反射光强。

叉乘(Cross Product):

  1. 平面法线:在三维空间中,可以通过两个不共线的向量进行叉乘来获取所在平面的法线向量。

  2. 旋转轴:在旋转操作中,确定一个旋转轴通常需要通过两个非平行的方向向量叉乘得到。

  3. 力矩计算:在物理学模拟中,计算力对物体产生的力矩需要用到叉乘,即力矢量和力臂(从转动轴到力的作用点)的叉乘。

向量归一化(Normalize):

  1. 方向处理:在许多情况下,我们只关心物体的朝向而不关心其速度或大小,这时将速度或加速度向量归一化,就可以得到方向信息。

  2. 纹理坐标生成:在某些高级渲染技术如环境映射中,通过归一化的视线方向向量来查询立方体贴图等。

  3. 单位向量阵列构建:在构建球形或圆柱形的法线贴图时,需要创建一系列均匀分布的单位向量,这就要用到归一化操作。

总结来说,在Unity开发过程中,点乘、叉乘和归一化是非常基本且实用的操作,广泛应用于碰撞检测、物理模拟、光照计算、相机控制等多个领域。

python推荐学习汇总连接:
50个开发必备的Python经典脚本(1-10)

50个开发必备的Python经典脚本(11-20)

50个开发必备的Python经典脚本(21-30)

50个开发必备的Python经典脚本(31-40)

50个开发必备的Python经典脚本(41-50)
————————————————

​最后我们放松一下眼睛
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/339285.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt 窗口阴影边框

环境&#xff1a;Qt 5.15 VS2019 方法一&#xff1a;QGraphicsDropShadowEffect 实现方法参考链接&#xff1a;https://blog.csdn.net/goforwardtostep/article/details/99549750 使用此方法添加窗口阴影&#xff0c;会出现警告信息&#xff1a; 且窗口最大化与还原切换时会…

pyqt treeWidget树生成

生成treeWidget树与获取treeWidget树节点的数据 # encodingUTF-8 import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QTreeWidgetItem, QLineEdit, QSpinBox, QComboBox from PyQt5.QtWidgets import QWidget from release_test import Ui_F…

既然所有ERP系统都很烂,那创业公司有没有机会?

既然所有ERP系统都烂,那创业公司有没机会? 得一点点把这问题捋顺了再回答—— 先说说“都很烂”这个判断是否准确谈谈国产ERP和国际ERP厂商&#xff0c;新创公司是否有优势&#xff1f;最后聊一下创业本身&#xff0c;如何创业、风险如何…… 一些人可能对传统的ERP系统感到…

基于ChatGPT4+Python近红外光谱数据分析及机器学习与深度学习建模

022年11月30日&#xff0c;可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT3.5&#xff0c;将人工智能的发展推向了一个新的高度。2023年4月&#xff0c;更强版本的ChatGPT4.0上线&#xff0c;文本、语音、图像等多模态交互方式使其在…

监测服务器硬件设备运行状况的软件 - wgcloud

WGCLOUD是一款开源免费的运维平台&#xff0c;具有轻量&#xff0c;高效&#xff0c;性能稳定&#xff0c;部署简单&#xff0c;上手容易等特点 WGCLOUD可以监测服务器的cpu&#xff0c;内存&#xff0c;磁盘&#xff0c;负载&#xff0c;磁盘&#xff0c;缓存&#xff0c;网络…

LeetCode刷题--- 地下城游戏

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述动…

Java研学-三层架构实现简单登录操作

一 登录流程 将服务器资源给有权限的人访问&#xff0c;只有登录的管理员可以访问员工信息进行 CRUD 二 三层架构 Web 开发中的最佳实践&#xff1a;分层开发模式将整个业务应用划分为&#xff1a;表现层、业务逻辑层、数据访问层。区分层次的目的即为了“高内聚低耦合”的思想…

计算机毕业设计-----SSH校园精品课程网前后台

项目介绍 本项目是很不错的一个校园精品课程网源码&#xff0c;前台和后台源码都有&#xff0c;分为管理员与学生两种角色&#xff1b; 前台功能&#xff1a;网站首页&#xff0c;校园新闻&#xff0c;课程中心&#xff0c;资源下载&#xff0c;互动交流&#xff0c;个人中心…

树状结构查询 - 华为OD统一考试

OD统一考试 分值&#xff1a; 200分 题解&#xff1a; Java / Python / C 题目描述 通常使用多行的节点、父节点表示一棵树&#xff0c;比如&#xff1a; 西安 陕西 陕西 中国 江西 中国 中国 亚洲 泰国 亚洲 输入一个节点之后&#xff0c;请打印出来树中他的所有下层节点。 …

删除sys_file表中的文件信息后同步操作表单中对应的文件字段信息

需求&#xff1a;由于系统的表单文件上传/删除操作与表单的保存操作不同时进行&#xff0c;所以需要调整 细节&#xff1a;&#xff08;某个表&#xff1a;A表&#xff09;表单的文件字段只是保存了上传文件的id&#xff0c;名称&#xff0c;真正的文件保存是保存在一个系统的文…

Retrieval-Augmented Generation for Large Language Models: A Survey

PS: 梳理该 Survey 的整体框架&#xff0c;后续补充相关参考文献的解析整理。本文的会从两个角度来分析总结&#xff0c;因此对于同一种技术可能在不同章节下都会有提及。第一个角度是从整体框架的迭代来看&#xff08;对应RAG框架章节&#xff09;&#xff0c;第二个是从RAG中…

转专业(UPC练习)

题目描述 根据教育部的规定&#xff0c;大学生进校后符合条件的可申请转专业。在校本科生在完成大学一年级课程&#xff0c;进入二年级之前&#xff0c;符合以下条件之一者&#xff0c;可以申请转专业&#xff1a;&#xff08;1&#xff09;在某一学科方面确有特长的学生&#…