/**
* @description 获取在AB两点连线上,以AB为方向,距离A点,L处的点的坐标
* @param A:{x,z} 点A
* @param B:{x,z} 点B
* @param L 距A点L处
* @return D: {Dx,Dz} 点D坐标
* */
function getLengtnPoint(A,B,L) {
//求直线斜率
if(B.x==A.x&&B.x==0) {
let Dz=A.z+L;
let Dx=0;
return {Dx,Dz}
}
let k=(B.z-A.z)*1.0/(B.x-A.x);
let b=B.z-k*B.x;
// 第二步:求得在直线y=kx+b上,距离当前坐标距离为L的某点
let H = Math.pow(k, 2) + 1;// A=k^2+1;
let I = 2 * ((b - A.z) * k - A.x);// B=2[(b-y0)k-x0];
let J = Math.pow(b - A.z, 2) + Math.pow(A.x, 2)- Math.pow(L, 2);
let Dx1 = (-I + Math.sqrt(Math.pow(I, 2) - 4 * H * J)) / (2 * H);
let Dx2 = (-I - Math.sqrt(Math.pow(I, 2) - 4 * H * J)) / (2 * H);
let Dx = 0;// 最后确定是在已知两点之间的某点
// 在向量AB方向上的D点
if((B.x-A.x>0&&Dx1-A.x>0)||(B.x-A.x>0&&Dx1-A.x>0)) {
Dx=Dx1;
}else {
Dx=Dx2;
}
let Dz=k * Dx + b;
return {Dx,Dz}
}
js 计算在AB两点连线上,距离A点一定距离的点的坐标
最新推荐文章于 2024-12-27 09:10:18 发布