Unity Math Vector3

本文详细介绍了3D向量与点的概念,包括常用向量的定义及其属性,如长度、单位向量等。同时,文章深入探讨了向量间的数学运算,如加减、点乘、叉乘、插值等操作,以及如何计算向量间的距离、角度和投影。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表示3D向量和点,3个分量分别为 x,y,z

定义了常用的向量:

静态常量
back0,0,-1
forward0,0,1
left-1,0,0
right1,0,0
up0,1,0
down0,-1,0
one1,1,1
zero0,0,0
negativeInfinityfloat.NegativeInfinity,float.NegativeInfinity,float.NegativeInfinity 负无穷大
positiveInfinityfloat.PositiveInfinity,float.PositiveInfinity,float.PositiveInfinity 正无穷大

属性

属性含义
magnitude向量长度,只读
sqrMagnitude长度的平方,只读
normalized长度为1的单位向量,只读

向量的数学运算,大多数作为静态方法定义的

方法功能
Anglefloat Angle(Vector3 from, Vector3 to);
计算两个向量之间的角度
SignedAnglefloat SignedAngle(Vector3 from, Vector3 to, Vector3 axis);
两个向量之间的有符号角度。值域为-180到180度。from-to顺时针为正,逆时针为负。3D向量的方向是任意的,所以需要指定旋转轴来确定角度符号,根据叉乘向量和旋转轴的角度确定符号,大于90度说明反了。计算方法:
Vector3 cross = Vector3.Cross(from,to);
float sign = Mathf.Sign(90 - Vector3.Angle(cross,axis));
ClampMagnitudeVector3 ClampMagnitude(Vector3 vector, float maxLength);
返回限定最大长度的向量,如果超过maxLength,返回maxLength
CrossVector3 Cross(Vector3 lhs, Vector3 rhs);
向量叉乘,返回垂直于lhs和rhs的向量
Distancefloat Distance(Vector3 a, Vector3 b);返回两个向量的距离
Dotfloat Dot(Vector3 lhs, Vector3 rhs);
向量点乘。如果rhs是单位向量,则返回结果是lhs在rhs投影的向量的长度。
LerpVector3 Lerp(Vector3 a, Vector3 b, float t);
2个点线性插值,t>1时,t=1
LerpUnclampedVector3 LerpUnclamped(Vector3 a, Vector3 b, float t);
2个向量线性插值。如果t>1,则继续向a->b的方向插值
SlerpVector3 Slerp(Vector3 a, Vector3 b, float t);
球面插值,可以处理方向插值
SlerpUnclampedVector3 SlerpUnclamped(Vector3 a, Vector3 b, float t);
球面插值,同上,只是允许t>1,且有效
Maxpublic static Vector3 Max(Vector3 lhs, Vector3 rhs);
返回2个向量中较大的那个
Minpublic static Vector3 Min(Vector3 lhs, Vector3 rhs);
返回2个向量中较小的那个
MoveTowardsVector3 MoveTowards(Vector3 current, Vector3 target, float maxDistanceDelta);
从current移动到target,每次调用,移动距离不超过maxDistanceDelta。
NormalizeVector3 Normalize(Vector3 value);
向量单位化,并返回单位化后的向量
OrthoNormalizevoid OrthoNormalize(ref Vector3 normal, ref Vector3 tangent);
将2个向量单位化,并且正交(夹角90度)
ProjectVector3 Project(Vector3 vector, Vector3 onNormal);
求vector投影到onNormal的向量
ProjectOnPlaneVector3 ProjectOnPlane(Vector3 vector, Vector3 planeNormal);
将向量投影到planeNormal作为面法线的平面上
ReflectVector3 Reflect(Vector3 inDirection, Vector3 inNormal);
根据入射向量和给定的法线,计算反射向量
RotateTowardsVector3 RotateTowards(Vector3 current, Vector3 target, float maxRadiansDelta, float maxMagnitudeDelta);
基本功能同Slerp,但是插值过程中,角度变化和长度变化不会超过maxRadiansDelta和maxMagnituedDelta
ScaleVector3 Scale(Vector3 a, Vector3 b);
向量分量分别相乘,也可以理解为用b对a 进行缩放
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值