向量使用小结——Vector3的使用
常用方法与实现
向量基本运算
加减法:a±b=(ax±bx,ay±by,az±bz)
数乘:ka=(kax,kay,kaz)
Vector3中实现:
加法:Vector3.Add(Vector3, Vector3);
减法:Vector3.Subtract(Vector3, Vector3)
乘法:Vector3.Multiply(Single, Vector3) / Multiply(Vector3, Single)
模长
|a|=√(x⋅x+y⋅y+z⋅z)
Vector3中实现:Vector3.Length()
点积(内积)
定义:a⋅b=axbx+ayby+azbz=|a|⋅|b|⋅cosθ
性质:
- 交换律:a⋅b=b⋅a
- 投影:投影长度=a⋅b÷|b|
Vector3中实现:Vector3.Dot(Vector3, Vector3)
用途:计算投影;判断是否正交(夹角为90度时: a⋅b=|a|⋅|b|⋅cosθ=0)
叉积(外积,仅限三维)
定义:a×b=(aybz−azby,azbx−axbz,axby−aybx)
模长:|a×b|=|a|⋅|b|⋅sinθ
方向:垂直于 a 和 b 所在平面,符合右手定则。
Vector3中实现:Vector3.Cross(Vector3, Vector3)
用途:
- 叉积的结果是一个 新的向量,其方向垂直于参与运算的两个向量 AA 和 BB 所在的平面;
- 面积=∣A×B∣ A 和 B是4平形4边形的两条相邻边向量
-
判断点与直线的位置关系
- 在二维空间中,叉积可判断点 P 在直线 AB 的左侧还是右侧:计算向量 AB×AP
- 结果为正:P 在左侧。
- 结果为负:P 在右侧。
- 为零:P 在直线上。
- 在二维空间中,叉积可判断点 P 在直线 AB 的左侧还是右侧:计算向量 AB×AP
- 计算点到线的距离
若A点到C点的向量为a, A点到B点的向量为b, 那么求B点到AC直线的距离d: d=|a×b| ÷|a|
运算符重载
Vector3对运算符进行了重载,也就是说对于Vector3的加、减、乘、除等可以直接用类似于a+b这样的操作。
参考链接:
MSDN:Vector3 结构 (System.Numerics) | Microsoft Learn
Vector3源码 于github
以上先记之以备忘,后续常用再添加。