赞
踩
如题:求向量A在平面L上的投影向量(图左) 即求
其实等价于求向量,那在中,,所以只需要求即可
而就是在平面L的法向量的投影,所以代码就是
- /// <summary>
- /// 求向量A在平面B上的投影向量
- /// </summary>
- /// <param name="target">目标向量A</param>
- /// <param name="normal">平面B的法向量的单位向量</param>
- /// <returns></returns>
- private Vector3 ProjectVectorOnPlane(Vector3 target, Vector3 normal)
- {
- // 使用向量的点积和法线向量,得到在平面上的投影
- return target - Vector3.Dot(target, normal) * normal;
- }
注意normal是单位向量,如果不是单位向量可以通过normal.normalized获得
当然Unity里面有自带的API:Vector3.ProjectOnPlane(Vector3 vector, Vector3 planeNormal)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。