热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Unity3D数学之向量

什么是向量一个数学列表,表示各个维度上有向位移一个有大小有方向的物理量--大小就是向量的模长。--方向描述了空间中向量的指向。可以表示物体的位置和方向。向量的形式

什么是向量


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

向量的形式


向量的大小(模) 


  • 向量各分量平方和的平方根。
  • ·公式:2\sqrt{}x²+y²+z²
  • API: float dis=vector.magnitude;
  • 模的平方vector.sqrMagnitude
  • 因为平方根的计算耗时长,所以效率高于magnitude。

void Demo1(){ Vector3 pos = t2.transform.position;//求模长 三种方法 float m01 = Mathf.Sqrt(Mathf.Pow(pos.x, 2) + Mathf.Pow(pos.y, 2) + Mathf.Pow(pos.z, 2));float m02 = pos.magnitude;float m03 = Vector3.Distance(Vector3.zero, pos);Debug.DrawLine(Vector3.zero, t2.transform.position);}

 


向量的方向


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

void Demo2(){Vector3 pos = t2.transform.position;//获取向量方向Vector3 n01 = pos / pos.magnitude;Vector3 n02 = pos.normalized;Debug.DrawLine(Vector3.zero, pos);Debug.DrawLine(Vector3.zero, n02,Color.red);}


向量相减 


  • ·等于各分量相加减
  • ·公式:[x₁,y₁,z₁]-[x₂,y₂,z₂]=[x₁-x₂,y₁-y₂,z₁-z₂]
  • 几何意义:向量a与向量b相减,结果理解为以b的终点为始点,以a的终点为终点的向量。方向由b指向a。
  • ·应用:计算两点之间的距离和相对方向。
  • 两条向量相减的结果向量方向指向被减,但是结果向量的起始点是Vector3.zero

 

void Demo3(){Vector3 relativeDirection = t1.transform.position - t2.transform.position;//方向 指向被减向量(前面的)//大小 两点间距//注意 实际位置要平移到Debug.DrawLine(Vector3.zero, relativeDirection);}

 

//t3沿着relativeDirection方向移动t3.transform.Translate(relativeDirection.normalized);//relativeDirection.normalized 获取方向,避免两个物体间距对速度造成影响

向量相加


  • 等于各分量相加和。
  • 公式:[x₁,y₁,z₁] +[x₂,y₂,z₂]=[x₁+x₂,y₁+y₂,z₁+z₂]
  • 几何意义:向量a与向量b相加,平移使b的始点与a的终点重合,结果为以a的始点为始点,以b的终点为终点的向量。
  • 应用:物体移动

 代码与相减同理


推荐阅读
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • 本文介绍了如何使用n3-charts绘制以日期为x轴的数据,并提供了相应的代码示例。通过设置x轴的类型为日期,可以实现对日期数据的正确显示和处理。同时,还介绍了如何设置y轴的类型和其他相关参数。通过本文的学习,读者可以掌握使用n3-charts绘制日期数据的方法。 ... [详细]
  • 本文讨论了在dva中引入antd组件table时没有显示样式的问题。提供了.roadhogrc文件的配置,包括环境和import的设置。同时介绍了extraBabelPlugins和transform-runtime的使用方法,并解释了libraryName和css的含义。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 关于如何快速定义自己的数据集,可以参考我的前一篇文章PyTorch中快速加载自定义数据(入门)_晨曦473的博客-CSDN博客刚开始学习P ... [详细]
  • LwebandStringTimeLimit:20001000MS(JavaOthers)MemoryLimit:6553665536K(JavaO ... [详细]
  • 本文整理了Java中org.apache.pig.backend.executionengine.ExecException.<init>()方法的一些代码 ... [详细]
  • RDD创建后就可以在RDD上进行数据处理。RDD支持两种操作:1.转换(transformation):即从现有的数据集创建一个新的数据集2.动作&#x ... [详细]
  • 项目需要实现弹幕,网上参考了各种方法,最后觉得transform+transition实现的效果在移动设备上性能最好,在iphone6和红米4上测试,看不到 ... [详细]
  • unigine中存在如下两个函数。mat4lookAt(vec3position,vec3target,vec3up)dmat4lookAt(dvec3position,dvec ... [详细]
  • 逻辑回归_训练二元分类器#训练一个二元分类器fromsklearn.linear_modelimportLogisticRegressionfromsklearnimport ... [详细]
author-avatar
兄弟465748208_279
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有