根据长度、倾角、方位计算三维坐标
根据长度、倾角、方位计算三维坐标
描述一下此问题:已知第一个点的坐标,在这个点基础上,衍生出去第二个点的长度、倾角、方位,求第二个点的坐标
算法基础
X0-当前钻杆起点坐标-在正东方向上的投影
Y0-当前钻杆起点坐标-在正北方向上的投影
Z0-当前钻杆起点坐标-垂深
第一颗钻杆的起点坐标为(0,0,0)
PipeLength-钻杆单杆长度
HoleINC-当前实测倾角
HoleAZI-当前实测方位
当前钻杆三个方向上的位移
- 垂直方向上的增量
dz:=(pipeLegth*Sin(p.HoleINC*Pi/180));
- 水平方向上的增量
HorizonLen-水平投影(斜)
HorizonLen:=pipeLegth*abs(Cos(p.HoleINC*Pi/180));
dx:=(HorizonLen*Sin(p.HoleAZI*Pi/180));
dy:=(HorizonLen*Cos(p.HoleAZI*Pi/180));
- 当前钻杆的实测终点坐标
x1:=x0+dx;
y1:=y0+dy;
z1:=z0+dz;
将当前钻杆的终点坐标作为下一颗钻杆的起点坐标,重复上述过程,依次计算每颗钻杆的实测终点坐标,至最后一点,即可得到钻孔在三个方向上实测总位移,即实测靶点坐标。
- 计算实际靶点的终点坐标计算
VerticalOff_Real-总的垂直位移(z1的最终值)
HorizenOff_Real-总的水平位移( \(\sqrt {x1^2+y1^2}\))
实际倾角:
HoleINC_Real:=Arctan(VerticalOff_Real/HorizenOff_Real)*180/Pi;
实际方位:
HoleAZI_Real:=Arctan(HorizenOff_Real_x/HorizenOff_Real_y)*180/Pi;
调整方位角--反正切函数的值,即将方位角映射到北零坐标中:
if(HoleHorizenOff_Real_x>0)And (HoleHorizenOff_Real_y<0) then
HoleAZI_Real=HoleAZI_Real+180;
if(HoleHorizenOff_Real_x<0) and (HoleHorizenOff_Real_y<0) then
HoleAZI_Real=HoleAZI_Real+180;
if(HoleHorizenOff_Real_x<0) and (HoleHorizenOff_Real_y>0) then
HoleAZI_Real=HoleAZI_Real+360;
设计钻孔的计算与单根钻杆的计算方法相同。
将设计孔深作为钻杆长度,按照上述公式可以计算出三个方向上的设计位移,然后与实测数据相比较(实测-设计)得到实钻和设计钻孔之间的距离误差和角度误差(参见文前示意图)。
JS代码实现
cp_zuobiao: function(qidian, zuan_cs){
// 根据如下条件算终点坐标
// 1:起点坐标
// 2:深度(钻杆长度、plenth、depth)、倾角(inc)、方位(azi)
var dz = zuan_cs.depth * Math.sin(zuan_cs.inc * Math.PI / 180);
var hzlen = zuan_cs.depth * Math.abs(Math.cos(zuan_cs.inc * Math.PI / 180));
var dx = hzlen * Math.sin(zuan_cs.azi * Math.PI / 180);
var dy = hzlen * Math.cos(zuan_cs.azi * Math.PI / 180);
var temp = {
x: qidian.x + dx,
y: qidian.y + dy,
z: qidian.z + dz
};
console.log(temp);
return temp;
},