矩阵和矢量的点乘推导及其简单应用

推导

矩阵点乘

点乘的矩阵形式

  

 

实际应用

//求目标在主角的前方还是后方

//先求出来目标相对于主角的偏移矢量
v = target.position - transform.position;
//计算偏移和主角位置的点乘
d = Vector3.Dot(v, transform.position);
Debug.DrawLine(v,Vector3.zero);
Debug.DrawLine(Vector3.zero, transform.position);
if (d > 0)
{
	print("在前面");
}else if (d < 0)
{
	print("在后面");
}
else
{
	print("垂直");
}

-----------------------------------上面的应用有点错误,留作警醒----------------------------------下面正确解决方案

		//求目标在主角的前方还是后方
		
		//先求出来目标相对于主角的偏移矢量
		v = target.position - transform.position;
		//计算偏移和主角前方位置的点乘
		d = Vector3.Dot(v, transform.forward);
		Debug.DrawLine( transform.forward * 10, Vector3.zero);
		Debug.DrawLine(v, Vector3.zero);
		if (d < 0)
		{
			print("在后面");
		}else if (d > 0)
		{
			print("在前面");
		}
		else
		{
			print("垂直");
		}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章