根据长度、倾角、方位计算三维坐标

根据长度、倾角、方位计算三维坐标

描述一下此问题:已知第一个点的坐标,在这个点基础上,衍生出去第二个点的长度、倾角、方位,求第二个点的坐标

算法基础

alt

X0-当前钻杆起点坐标-在正东方向上的投影
Y0-当前钻杆起点坐标-在正北方向上的投影
Z0-当前钻杆起点坐标-垂深
第一颗钻杆的起点坐标为(0,0,0)
PipeLength-钻杆单杆长度
HoleINC-当前实测倾角
HoleAZI-当前实测方位
当前钻杆三个方向上的位移

  1. 垂直方向上的增量
    dz:=(pipeLegth*Sin(p.HoleINC*Pi/180));
  2. 水平方向上的增量
HorizonLen-水平投影(斜)
HorizonLen:=pipeLegth*abs(Cos(p.HoleINC*Pi/180));       
dx:=(HorizonLen*Sin(p.HoleAZI*Pi/180));
dy:=(HorizonLen*Cos(p.HoleAZI*Pi/180));
  1. 当前钻杆的实测终点坐标
x1:=x0+dx;
y1:=y0+dy;
z1:=z0+dz;

将当前钻杆的终点坐标作为下一颗钻杆的起点坐标,重复上述过程,依次计算每颗钻杆的实测终点坐标,至最后一点,即可得到钻孔在三个方向上实测总位移,即实测靶点坐标。

  1. 计算实际靶点的终点坐标计算
    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;
},
posted @ 2022-05-21 11:39  陆敏技  阅读(1154)  评论(0编辑  收藏  举报
Web Counter
Coupon for Contacts