Unity中叉乘意义与代码

devtools/2024/10/21 9:00:30/

Unity中叉乘意义与代码

 在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。 叉乘的结果是个向量,方向在z轴上,在二维空间里,让我们暂时忽略它的方向,将结果看成一个向量,那么这个结果类似于上述的点积  Vector3  D =axb = |a||b|sin(θ) 然而角度 θ和上面点乘的角度有一点点不同,他是有正负的,是指从a到b的角度

1. 定义

向量的叉乘(也称为向量积)是两个三维向量之间的运算,结果是一个新的向量。数学上,给定两个向量 a 和 b,它们的叉乘 a×b 是一个垂直于 a 和 b 所在平面的向量。

2. 几何意义

  • 方向:叉乘结果的方向由右手定则确定。将右手四指从 a 转向 b,拇指的方向即为叉乘结果的方向。Unity 中是左手!

  • 大小:叉乘结果的大小等于 a 和 b 所形成的平行四边形的面积

3. 物理意义

  • 力矩:在物理学中,力矩(Torque)可以通过力向量和力臂向量的叉乘来计算。力矩的方向表示旋转轴的方向,大小表示旋转效应的强度。

  • 磁场中的洛伦兹力:在电磁学中,洛伦兹力可以通过电荷速度向量和磁场向量的叉乘来计算。

4. 在Unity中的应用

  • 计算法线:在3D图形学中,计算表面法线时,可以使用两个不共线的表面向量的叉乘来得到法线向量。这在光照计算中非常重要。

  • 旋转轴:在旋转操作中,可以通过两个向量的叉乘来确定旋转轴。例如,在计算物体的旋转方向时,可以使用当前方向向量和目标方向向量的叉乘来确定旋转轴。

  • 碰撞检测:在碰撞检测中,叉乘可以用来计算碰撞法线和碰撞响应的方向。

Unity中可以用一个函数直接计算出两个向量的叉乘结果哦!

这个结果会得到两个向量构成的平面的垂直向量!

意义:

学习代码:

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class VectorCrossLraer2 : MonoBehaviour
{// 这个脚本实现演示向量的叉乘public GameObject A;public GameObject B;Vector3 one = new Vector3(2, 4, 0);void Update(){//计算两个向量构成的平面的法线向量-垂直向量Vector3 NormalVec= Vector3.Cross(A.transform.position, B.transform.position);Debug.DrawLine(Vector3.zero, A.transform.position, Color.red);//绘制原点到A坐标的方向向量Debug.DrawLine(Vector3.zero, B.transform.position, Color.red);//绘制原点到B坐标的方向向量Vector3 XIANGJIAN = A.transform.position + B.transform.position;//两个向量相加,构成对角线向量Debug.DrawLine(XIANGJIAN / 2, NormalVec, Color.green);float changdu= A.transform.position.magnitude;Debug.Log(changdu);//输出原点到A点连线向量的长度Debug.Log(one.normalized);//向量单位化Debug.Log(one.normalized.magnitude);//计算向量单位化以后的长度}
}


http://www.ppmy.cn/devtools/127521.html

相关文章

RabbitMQ系列学习笔记(一)--认识消息队列

文章目录 一、MQ的相关概念1、什么是MQ2、MQ应用场景1.应用解耦2.流量消峰3.异步处理 3、MQ的分类1.ActiveMQ2.Kafka3.RocketMQ4.RabbitMQ 4、MQ的比较5、AMQP和JMS 二、RabbitMQ简介1、四大组成部分2、RabbitMQ核心概念1.Producer2.Consumer3.Connection4.Channel5.Broker6.Qu…

删除node_modules文件夹

前言 当安装了较多模块后,node_modules目录下的文件会很多,直接删除整个目录会很慢,下面介绍些快速删除node_modules目录的方法。 方法一:使用rimraf模块的命令 在全局安装rimraf模块,然后通过其命令来快速删除node…

Docker 容器 数据卷 使用

目录 常用 命令 什么是数据卷以及特点 如何挂载数据卷 数据卷容器 数据覆盖问题 修改已经建立的数据卷关系 博主wx:yuanlai45_csdn 博主qq:2777137742 想要 深入学习 5GC IMS 等通信知识(加入 51学通信),或者想要 cpp 方向修改简历&…

二分查找算法(折半查找算法)

是一种在有序数组中查找特定元素的搜索算法。该算法通过将数组分成两半,逐步缩小查找范围来提高查找效率。具体来说,每次比较中间元素与目标值,根据比较结果决定是继续在左半部分还是右半部分进行查找,从而每次迭代都能排除一半的…

Java 输入与输出(I\O)之字节缓冲流【BufferedInputStream】【BufferedOutputStream】详解

缓冲流是Java I/O中的一个重要概念,它可以提高文件读写的性能。 由于磁盘的IO处理速度远低于内存的读写速度。 为了提高文件读写性能,我们可以使用缓冲流。缓冲流使用内存缓冲区,可以一次性读取或写入大量数据,从而减少与磁盘的交…

前端_007_Axios库

文章目录 配置响应结构拦截器 引入: 官网: https://www.axios-http.cn/ 一句话简介:浏览器里基于XmlHttpRequests,node.js里基于http模块封装的网络请求库,使用非常方便 //通用例子axios({method:post,url: request…

N9305高品质mp3音频语音芯片ic在早教故事机的应用方案

随着人们对教育的重视程度不断提高,儿童早教机已经成为了很多家庭的教育必备品。N9305音乐芯片在早教故事机中的应用,不仅为孩子们带来了丰富多彩的故事世界,还以其卓越的音质表现和功能,进一步提升了早教体验。 九芯电子N9305高品…

Java 多线程(四)—— 线程安全 与 volatile 与 单例模式

什么是线程安全 在进行多线程编程的时候,当我们编写出来的多线程的代码运行结果不符合我们的预期的时候,这时候就是 bug,这种 bug 是由于多线程的问题而产生出来的 bug 我们称之为 线程安全问题 当我们编写出来的多线程代码运行之后的结果符…