热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

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

根据长度、倾角、方位计算三维坐标描述一下此问题:已知第一个点的坐标,在这个点基础上,衍生出去第二个点的长度、倾角、方位,求第二个点的坐标算法基础X0-当前钻杆起点坐标-在正东方向上

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

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


算法基础

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;
},


推荐阅读
  • 本文详细探讨了KMP算法中next数组的构建及其应用,重点分析了未改良和改良后的next数组在字符串匹配中的作用。通过具体实例和代码实现,帮助读者更好地理解KMP算法的核心原理。 ... [详细]
  • 离线环境下的Python及其第三方库安装指南
    在项目开发中,有时会遇到电脑只能连接内网或完全无法联网的情况。本文将详细介绍如何在这种环境下安装Python及其所需的第三方库,确保开发工作的顺利进行。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • Babylon.js 实例展示
    探索 Babylon.js 的强大功能,通过全屏演示体验其卓越性能。本文提供在线文档链接和默认渲染管线的源码调试地址,帮助您深入了解 Babylon.js 的工作原理。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 本文详细介绍了Python编程语言的学习路径,涵盖基础语法、常用组件、开发工具、数据库管理、Web服务开发、大数据分析、人工智能、爬虫开发及办公自动化等多个方向。通过系统化的学习计划,帮助初学者快速掌握Python的核心技能。 ... [详细]
  • 在Python开发过程中,随着项目数量的增加,不同项目依赖于不同版本的库,容易引发依赖冲突。为了避免这些问题,并保持开发环境的整洁,可以使用Virtualenv和Virtualenvwrapper来创建和管理多个隔离的Python虚拟环境。 ... [详细]
  • 在学习网页爬虫时,使用Selenium进行自动化操作。初次安装selenium模块后,第二天运行代码时遇到了ImportError:无法从'selenium'导入名称'webdriver'。本文将详细解释该问题的原因及解决方案。 ... [详细]
  • Python入门:第一天准备与安装
    本文详细介绍了Python编程语言的基础知识和安装步骤,帮助初学者快速上手。涵盖Python的特点、应用场景以及Windows环境下Python和PyCharm的安装方法。 ... [详细]
  • 本文介绍如何使用 Python 的 xlrd 库读取 Excel 文件,并将其数据处理后存储到数据库中。通过实际案例,详细讲解了文件路径、合并单元格处理等常见问题。 ... [详细]
  • Python 异步编程:ASGI 服务器与框架详解
    自 Python 3.5 引入 async/await 语法以来,异步编程迅速崛起,吸引了大量开发者的关注。本文将深入探讨 ASGI(异步服务器网关接口)及其在现代 Python Web 开发中的应用,介绍主流的 ASGI 服务器和框架。 ... [详细]
  • 华为USG基于源地址的多出口策略路由配置
    网络拓扑如下:组网情况:企业用户主要有技术部(VLAN10)和行政部(VLAN20),通过汇聚交换机连接到USG。企业分别通过两个不同运营商(ISP1和ISP2)连接到 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • Python第三方库安装的多种途径及注意事项
    本文详细介绍了Python第三方库的几种常见安装方法,包括使用pip命令、集成开发环境(如Anaconda)以及手动文件安装,并提供了每种方法的具体操作步骤和适用场景。 ... [详细]
author-avatar
夕祈文_279
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有