Unity3D-----三维数学(向量)

2023-11-02

一、向量

1、什么是向量

  • 一个数字列表,表示各个维度上的有向位移
  • 一个有大小有方向的物理量
    – 大小就是向量的模长
    – 方向描述了空间中向量的指向
  • 可以表示物体的位置和方向

2、向量的形式

三维向量,例如(1,2,3)
二维向量,例如(4,2)
在这里插入图片描述

3、向量的大小

  • 向量的大小即为模

  • 三维向量模的大小计算公式:√(x2+y2+z2

  • API : float dis=vector.magnitude

  • 模的平方 vector.sqrMagnitude

  • 在编写脚本时,比较两向量的模长,推荐使用模的平方进行比较,因为平方根的计算耗时长

4、向量的方向

  • 获取向量的方向也称 “标准化向量” 或 “归一化向量”;即获取该向量的单位向量
  • 单位向量:大小为1的向量
  • 计算公式: V / |V|===(向量/模长)
  • 几何意义:将该向量拉长或者缩短,使模长等于1
  • API: Vector3 vector2=vector1.normalized
    – vector2为vector1的单位向量
    vector1.Normalize();将vector1自身设置为单位向量

二、向量运算

1、向量相减

  • 等于各分量相加减
  • 公式:[x1,y1,z1]-[x2,y2,z2] = [x1-x2,y1-y2,z1-z2]
  • 几何意义:向量a与向量b相减,结果理解为以b的终点为始点,以a的终点为终点的向量,方向由b指向a
  • 应用:计算两点之间的距离和相对方向
    在这里插入图片描述

2、向量相加

  • 等于各分量相加和
  • 公式: [x1,y1,z1] + [x2,y2,z2] = [x1+x2,y1+y2,z1+z2]
  • 几何意义:向量a与向量b相加,平移使b的始点与a的重点重合,结果为以a的始点为始点,以b的终点为终点的向量
  • 应用:物体移动

3、向量与标量的乘除法

  • 乘法 : 该向量的各分量与标量相乘 k[x,y,z] = [kx,ky,kz]
  • 除法 : 该向量的各分量与标量相除 [x,y,z]/k = [x/k,y/k,z/k]
  • 几何意义 : 缩放向量长度

4、点乘

  • 又称 “点积” 或 “内积”
  • 公式 :各分量乘积合
  • [x1,y1,z1] * [x2,y2,z2]=x1x2+y1y2+z1z2
  • 几何意义: a*b=|a| * |b| * cos<a,b>;两个向量的单位向量相乘后再乘以二者夹角的余弦值
  • API : float dot=Vector3.Dot(va,vb)
  • 应用
    对于标准化过的向量,点乘结果等于两向量夹角的余弦值
    计算两向量的夹角
    float dot = Vector3.Dot(a.normalized,b.normalized);
    float angle = Mathf.Acos(dot) * Mathf.Rad2Deg

5、叉乘

  • 叉乘又称 “叉积” 或 " 外积 "
  • 公式 : [x1,y1,z1] * [x2,y2,z2] = [y1z2-z1y2,z1x2-x1z2,x1y2-y1x2]
  • 几何意义 : 结果为两个向量锁组成面的垂直向量,模长为两向量模长乘积再乘夹角的正弦值
  • API : Vector3 vector=Vector3.Cross(a,b)
  • 应用
    创建垂直于平面的向量
    判断两条向量相对位置

三、三角函数

1、角的度量单位

  • 角度Degree与弧度Radian
    – 两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当弧长等于圆周长的360分之一时,夹角为1度。弧长等于圆的半径时,夹角为1弧度。
    在这里插入图片描述
  • 角度与弧度的换算:
    – PI=180度--------1弧度=180度/PI--------1角度=PI/180度
    – 角度=>弧度 : 弧度=角度数 * PI/180
    – API : 弧度=角度数 * Mathf.Deg2Rad
    弧度=>角度 : 角度=弧度数 * 180/PI
    角度=弧度数 * Mathf.Rad2Deg
  • 在三角函数中弧度制可以简化计算

2、三角函数

  • 建立了直角三角形中角与边长比值的关系
  • 可用于根据一边一角,计算另外一边长
  • 公式:
    – (1)、正弦 sinx=a/c
    – (2)、余弦 cosx=b/c
    – (3)、正切 tanx=a/b;
    在这里插入图片描述
  • API : Mathf.Sin(float radian)
  • API : Mathf.Cos(float radian)
  • API : Mathf.Tan(float radian)

3、反三角函数

  • API : Mathf.ASin(float radian)
  • API : Mathf.ACos(float radian)
  • API : Mathf.ATan(float radian)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity3D-----三维数学(向量) 的相关文章

  • Vuforia Virtual Button(虚拟按钮)使用技巧

    最近一直在摸索Vuforia的使用 Virtual Button算是一个比较容易吸引人眼球的功能 在经过一些测试后 我来总结下自己在探索过程中得到的一些经验 1 如何新建一个Virtual Button工程 导入Vuforia sdk 后把
  • Unity3D 碰撞器和触发器

    对于碰撞器和触发器经常忘记用法 这次主要记录下以便于能够复习用 1 碰撞器 发生条件 1 碰撞的双方中一定至少要有一个Rigidbody存在 并且碰撞双方必须都要有碰撞体组件 2 碰撞双方若只有一个有刚体 那么那个刚体一定要处于运动的状态下
  • 【unity3D】创建TextMeshPro(TMP)中文字体(解决输入中文乱码问题)

    未来的游戏开发程序媛 现在的努力学习菜鸡 本专栏是我关于游戏开发的学习笔记 本篇是unity的TMP中文输入显示乱码的解决方式 创建 TextMeshPro 中文字体 遇到的问题描述 解决方式 Font Asset Creator 面板扩展
  • 闲云:unity中不能识别monobehevior关键字的问题

    有时候一些小问题很恼人 如unity中新建脚本后不能识别monobehevior关键字 在vs2017右侧的解决方案中点击刷新图标 或者把不能识别的脚本添加到vs2017右侧的解决方案中的Assets中即可 还不行就点击 排除 然后再 添加
  • 游戏开发unity编辑器扩展知识系列:一个方法添加至多个MenuItem

    代码如下 用多个MenuItem标记方法就可以了 MenuItem GameObject 生成带图片的Image false 100 MenuItem Assets 生成带图片的Image static void GenImageGameO
  • 【Unity-学习-021】异步实现HTTP请求

    对Http访问操作 Unity中一般使用协程操作 但是协程有一个比较要命的要求就是所在Mono必须在场景中是激活的 所以一些操作就会被限制 所以我们就找办法替代掉协程做一些异步的操作 那就用异步方法 首先扩展一下AsyncOperation
  • unity3d 输入法相关API

    Input inputString 获取输入的文字 正在打的中文是接受不到的 只有在文字写到文本框才能获取 Input imeCompositionMode 是否是激活输入框状态 on 是 Input compositionString 空
  • ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial - UE5 Starter Course

    ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial UE5 Starter Course 教程大小解压后 4 96G 语言 英语 中英文字幕 机译 时长 4小时56分 1920X1080 mp4 虚
  • Unity3d Terrain地形制作系列(一)

    游戏简单地形 地形制作 地形制作 第一步在场景里加载一个地形对象 第二步 我们在属性面板里找到绘制地形 然后选择Set Height 绘制高度 应该我们要制作低凹的效果 所有先让他有个高度 不然是不能实现低凹的效果 如图 我们然后选择绘制地
  • Unity3D如何修改Button显示的文字以及深入了解Button组件

    在创建了一个Button后 结构如图 先仔细观察一下Button的Inspector视图 发现其中竟然有一个叫Button的脚本组件 新建脚本 代码如下 并将该脚本绑定给Canvas组件 using UnityEngine UI using
  • Unity使用spine动画

    Unity使用spine动画 在 Unity 中 常常使用 Spine 来制作一些动画 引擎本身并不能直接播放 Spine 动画 需要额外导入一个 RunTime 插件库才能支持 官网插件导入 当然 也可以到 Spine 官网关于 Unit
  • [Unity XLua]热更新XLua入门(一)-基础篇

    Aladdin XLua 前言 前段时间腾讯开源了一个内部热更框架XLua在Unity开发群里引起一阵热议 也受到广大开发者的热捧 然后我当然也抱着好奇的心去学习学习 后面也会将扩展之后的工程放在git上 大家一起学习交流 在此感谢XLua
  • 对Unity3D 静态批处理和动态批处理的理解

    Draw Call就是CPU调用图像编程接口 像OpenGL或者 DirectX 简单来说 Draw Call就是由CPU发起的一个命令 添加到一个命令缓冲区 当GPU完成了上一次的渲染任务之后 会从命令缓冲区的命令队列中再取出一个并执行
  • Unity3d 插件 系列——DoTweenPro介绍(图文详细+案例)

    Unity3d 插件 系列 DoTweenPro介绍 图文详细 案例 前言 一 DoTweenPro简介 二 DoTweenPro安装 三 DoTweenPro主要组件 1 DoTweenAnimation 2 DoTweenPath 3
  • Unity3d获得android和ios设备的唯一标识

    android为mac地址 ios为advertisingIdentifier 函数都比较简单 网上也搜得到 我也就不多说了 主要是对于我们没做过安卓和IOS开发的人来说 整合进工程有各种的问题 我也就直接上网盘了点击打开链接 代码包里看得
  • java中Keytool的使用总结

    java中Keytool的使用总结 2011 02 26 15 30 15 分类 在申请Android Map API Key的时候使用到了java中Keytool 下面转一篇介绍java中Keytool的文章 http blog csdn
  • Unity3D的四种坐标系

    1 World Space 世界坐标 我们在场景中添加物体 如 Cube 他们都是以世界坐标显示在场景中的 transform position可以获得该位置坐标 2 Screen Space 屏幕坐标 以像素来定义的 以屏幕的左下角为 0
  • Unity在UI界面上显示3D模型/物体,控制模型旋转

    https blog csdn net ChinarCSDN article details 81058773
  • 微信游戏如何开发

    中懿游游戏软件开发 微信游戏开发通常涉及使用微信小游戏平台进行开发 微信小游戏是一种在微信平台上运行的轻量级游戏 用户可以在微信中直接体验 无需下载安装 以下是在微信平台上开发小游戏的一般步骤 1 注册微信开发者账号 访问 微信开放平台 注
  • ‘DR-GAN: Automatic Radial Distortion RectificationUsing Conditional GAN in Real-Time‘条件GAN实时径向畸变自动矫正

    这篇文章在2020年发表在IEEE Transactions on Circuits and Systems for Video Technology上

随机推荐

  • InnoSetup制作Qt项目安装包

    1 安装Inno Setup InnoSetup官方网站 Inno Setup 说明 InnoSetup是免费软件 建议官网下载安装 下载位置示例如下 2 打包Qt项目 使用Qt windeployqt exe自动抽取项目Qt依赖库 备注
  • Sonar代码扫描常见规则总结

    Sonar代码扫描常见规则 最近公司项目交付 交付前集成 功能 性能 安全种种测试工作就来了 由于测试离职 被抓壮丁 兼职起测试修改工作 小公司 平时敲 ctrl c 代码 ctrl v 时 同事也不在意一些代码规范 以及一些常见的规约要求
  • 为啥海康摄像头网页无法预览

    最近在做IPC相关的业务 用谷歌 火狐都无法预览摄像头画面 即使装了插件也不行 后面发现了 要用IE打开 才能预览 转载于 https www cnblogs com 132818Creator p 10980880 html
  • python 面向对象编程(2)

    文章目录 前言 封装 多态 类属性和实例属性 定义以及访问类属性 修改类属性 实例属性 类方法 静态方法 前言 前面我们介绍了 python 类和对象以及继承 私有权限 那么今天我们将来介绍 python面向对象 剩下的两大特性封装 多态
  • 蓝桥杯Python->面向对象:类 and 方法 练习->成绩分析练习

    作者 芝士小熊饼干 系列专栏 数据结构 蓝桥杯 算法 坚持天数 3天 烤地瓜案例练习实现对面向对象的理解 抽象一个地瓜类 class SweetPotato object 实现初始化方法 初始地瓜的状态和总烧烤时间 def init sel
  • scala运行异常Could not locate executable null\bin\winutils.exe in the Hadoop binaries

    java io IOException Could not locate executable null bin winutils exe in the Hadoop binaries 出现这个问题的原因是我们在windows上模拟开发环境
  • 使用vuex实时更新右上角通知信息的红点数量

    需求如图 因为这两个不存在组件关系 所以我们使用Vuex来解决这个实时刷新 1 首先在vuex的state定义数据如下 state noticeCount 0 2 更改 Vuex 的 store 中的状态的唯一方法是提交 mutation
  • ensp usg6000v ping不通_华为USG6000V防火墙和VMWARE的联动

    快到周末了 来一篇技术类公众号文章 最近看一本很有意思的书 叫 华为防火墙技术漫谈 俗话说得好 理论结合实践才是王道 下面来简要描述一下本周做过的一个比较有意思的实验 在这个实验中使用到了ENSP模拟器 USG6000V防火墙 VMWARE
  • 【数模研赛】“华为杯”第十九届中国研究生数学建模竞赛C题分享——(四)问题二模型建立

    写在前面 第十九届数模研赛在22年10月6 10日开展 我和我的两名队友肝了5天 整出来一篇论文 因为不确定自己做的好不好 所以一直没写博客 前两天结果出来了 我们队拿了国二 在C题里排名88 1134 感觉结果还不错 以后应该也不会再有机
  • UE4 实现控制场景中所有物体透明度功能

    本文会讲解如何利用材质参数集简单的实现修改场景中所有物体透明度的功能 讲解地图为第三人称地图 1 创建材质变量集 这里面新建的变量可以在蓝图中控制 这样就能很方便的修改透明度 因为透明度是只有一个值的参数所以创建scalar参数 默认值为1
  • c语言的product,张永强:C语言中product是什么意思

    吴俊光的回答 product在C语言中不是关键字 C库中也没有这样的函数名 所以pruduct有两种可能 1是编程者自己定义的变量 2是编程者自定义的函数的名字 这里product是自定义函数的名字 功能就是返回a乘b的结果 实现一个乘法功
  • 【转载】Linux下用ls和du命令查看文件以及文件夹大小

    1 ls的用法 ls ll 列出当前目录下所有文件的大小以及所有文件大小的统计总和 显示成字节大小 ls lh 列出当前目录下所有文件的大小以及所有文件大小的统计总和 以KB MB等为单位进行显示 ls l grep wc l 或 find
  • 基于BCM53262交换芯片平台的Linux操作系统移植(四)之代码调试与驱动书写

    2018 05 09 10 49 zhoulinhua 2018 05 10 一 系统分区 name address size bootstrap 0x0 64k u boot 0x10000 640k env 0xb0000 192k d
  • 【C语言】练习题 - 菲姐游泳 - 附视频讲解

    游泳奥运冠军菲姐刻苦训练 从早上a时b分开始下水训练 直到当天的c时d分结束 请编程计算 菲姐当天一共训练多少小时多少分钟 本文引用自作者编写的下述图书 本文允许以个人学习 教学等目的引用 讲授或转载 但需要注明原作者 海洋饼干叔 叔 本文
  • 独立按键消抖与松手检测

    记录下最近独立按键消抖和松手检测 我对独立按键的处理思路是 1 获得键值 2 消抖处理 3 松手检测 4 键值解析 1 获得键值 这里把独立按键做个编号 例如有两个按键记为KEY0 KEY1 用一个变量来记录当前按键标记值 比如Cur Ke
  • npm install 编译时报“Cannot read properties of null (reading ‘pickAlgorithm‘)“

    先看报错 先说下网上大多数的解决方案 方案一 重新安装node解决 方案二 删了node models重新下 或者直接下载CNPM 淘宝镜像 进行安装 CNPM安装办法 npm install g cnpm registry https r
  • 解决STM32驱动0.96OLED不亮的问题

    问题描述 使用STM32无法驱动OLED 解决方案 1 检查硬件连接是否有误 OLED STM32 VCC 5V或3 3V SDA SDA SCL SCL GND GND 备注 最好接STM32最小系统版的3 3V 当连接STM32最小系统
  • Javaio流

    io流 关于Java的io流一般按照数据操作类型可以分为字节流与字符流 首先来说一下字节流 字节流 字节流的方法都是以stream结尾的 字节流的用途 转换图片为二进制 转换音频 视屏为二进制 字符串等也可以转为二进制 字节流常用于图片 音
  • 签到题【牛客算法周周练6E】【暴力枚举+线段树】

    题目链接 题目保证数据随机 数据随机真的是太强了 直接可以跑最坏时候是的复杂度 直接暴力建线段树 然后更新的时候更新到底 查询的时候也是查询到底 因为数据随机 所以其实被处理的次数是很少的 因为要刚好是set里有的 或者是set里没有的 这
  • Unity3D-----三维数学(向量)

    Unity3d gt 三维数学之向量 一 向量 1 什么是向量 2 向量的形式 3 向量的大小 4 向量的方向 二 向量运算 1 向量相减 2 向量相加 3 向量与标量的乘除法 4 点乘 5 叉乘 三 三角函数 1 角的度量单位 2 三角函