最近在写一个动态箭头的功能时用到了垂足的计算。
知道空间三个点的坐标,计算一个点到另一条边的垂足坐标,通过这个垂足坐标确定和点的连线,计算出方向用来做动画效果。
如图就是计算点D的坐标。
先说下原理及步骤:
1、建立空间向量CA、CB向量
2、计算CB向量的单位向量。
3、计算向量的夹角。
4、计算CA向量在CB向量上投影的长度。
5、计算出D点坐标
具体代码如下:
// 计算垂足坐标
computeCZ: function (p1, p2, p3) {
var c1 = Cesium.Cartesian3.subtract(p2, p1, new Cesium.Cartesian3());
var c2 = Cesium.Cartesian3.subtract(p3, p1, new Cesium.Cartesian3());
var angle = Cesium.Cartesian3.angleBetween(c1, c2);
var dis = Cesium.Cartesian3.distance(p1, p3);
dis = dis * Math.cos(angle);
var nor = Cesium.Cartesian3.normalize(c1, new Cesium.Cartesian3());
var newC = Cesium.Cartesian3.multiplyByScalar(nor, dis, new Cesium.Cartesian3());
var res = Cesium.Cartesian3.add(newC, p1, new Cesium.Cartesian3());
return res;
}
很久没维护csdn了 先说个不好意思,大家有不懂的可以给我留言或者这几私信我、加我都行!