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

这篇具有很好参考价值的文章主要介绍了Unity中向量的点乘、叉乘区别和作用以及经典案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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)
————————————————

​最后我们放松一下眼睛
unity 点乘叉乘,unity,游戏引擎文章来源地址https://www.toymoban.com/news/detail-860434.html

到了这里,关于Unity中向量的点乘、叉乘区别和作用以及经典案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 向量的点乘、叉乘和混合积(三重积)

    设、、为三个向量,三重矢积公式 上述的两个公式也称为拉格朗日公式。  三重矢积的公式有三个特性: 1) 两个分项都带有三个向量( 、、); 2) 三重积一定是先做叉积的两向量之线性组合; 3) 中间的向量所带的系数一定为正(此处为向量)。 特别的: 逆交换律: 任意

    2024年02月11日
    浏览(34)
  • 矩阵的点乘与叉乘的区别

    矩阵点乘与叉乘是两种不同的运算。 矩阵点乘(也称为内积或数量积)是指两个相同维数的矩阵对应位置上元素的乘积之和。结果是一个标量(即一个实数或复数)。 矩阵叉乘(也称为向量积或外积)只能针对某些特定的对象进行,例如两个三维向量的叉乘。它的结果是一

    2023年04月15日
    浏览(49)
  • 【Unity每日一记】方位辨别—向量的叉乘点乘结合

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【unity本站最全系列】unity常用API大全

    2024年02月12日
    浏览(32)
  • 【Unity每日一记】Unity中的方位辨别—向量的叉乘点乘结合

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【unity本站最全系列】unity常用API大全

    2024年02月11日
    浏览(39)
  • 叉乘、向量积的计算以及推导

    几何图示: 设有 a = ( a x , a y , a z ) , b = ( b x , b y , b z ) mathbf{a}=left(a_{x}, a_{y}, a_{z}right), mathbf{b}=left(b_{x}, b_{y}, b_{z}right) a = ( a x ​ , a y ​ , a z ​ ) , b = ( b x ​ , b y ​ , b z ​ ) i , j , k 分别是 X , Y , Z 轴方向的单位向量,则: a × b = ( a y b z − a z b y ) i + ( a z b x − a

    2024年02月16日
    浏览(38)
  • 【Unity每日一记】关于物体(敌方)检测—(向量点乘相关)

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unity每日一记 ⭐【Unityc#专题篇】之c#系统化大礼包】 ⭐【unity数据持久化】数据管理类_PlayerPrfs ⭐【unity本站最全系列】unity常用API大全

    2024年02月13日
    浏览(47)
  • 【数理知识】矩阵普通乘积,哈达玛积,克罗内克积,点乘,点积,叉乘,matlab代码实现

    序号 内容 1 【数理知识】向量数乘,内积,外积,matlab代码实现 2 【数理知识】矩阵普通乘积,哈达玛积,克罗内克积,点乘,点积,叉乘,matlab代码实现 首先介绍矩阵 在数学中,矩阵是一个按照长方阵列排列的复数或实数集合。由 m × n m times n m × n 个数 a i j a_{ij} a ij ​

    2024年02月04日
    浏览(73)
  • 线性代数的学习和整理22:矩阵的点乘(草稿)

    4  矩阵乘法 A,B两个同阶同秩N阵,看上去结构一样,但两厢相乘,在做在右,地位差别巨大。 在左,你就是基,是空间的根本,是坐标系,是往哪去、能到哪的定海神针,是如来佛手;在右,你就只是乾坤已定后数量的选择,你是翻十个跟头,还是翻十一个(都出不了如来佛

    2024年02月09日
    浏览(52)
  • MATLAB中如何实现n个矩阵的点乘或相加

      - 如果你的矩阵都是同样的大小,你可以将它们存储在一个三维数组中,然后使用sum函数沿着第三个维度求和。例如,如果你有三个2×2的矩阵A、B和C,你可以这样做:   ```markdown M = cat(3,A,B,C); % 将A、B、C沿着第三个维度拼接成一个2×2×3的数组 S = sum(M,3); % 沿着第三个维度求

    2024年02月06日
    浏览(36)
  • R语言矩阵、向量操作(矩阵乘法,向量内积、外积(叉乘),矩阵转置,矩阵的逆)

    创建两个四维矩阵 A 与 B,A 按列填充,B 按行填充 : 创建两个 n 维向量 x 和 y : 使用 t(矩阵、向量名) 即可: 输出如下: 使用 %*% 符号即可: 输出如下: 在R语言中,两个矩阵、向量的内积并不只是简单的 * 号就完事了,而是有以下两种求法: 或者 其结果如下: (注意区分

    2024年02月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包