热门标签 | 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;
},


推荐阅读
  • 在学习网页爬虫时,使用Selenium进行自动化操作。初次安装selenium模块后,第二天运行代码时遇到了ImportError:无法从'selenium'导入名称'webdriver'。本文将详细解释该问题的原因及解决方案。 ... [详细]
  • 本文介绍如何使用 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)以及手动文件安装,并提供了每种方法的具体操作步骤和适用场景。 ... [详细]
  • 解决Anaconda安装TensorFlow时遇到的TensorBoard版本问题
    本文介绍了在使用Anaconda安装TensorFlow时遇到的“Could not find a version that satisfies the requirement tensorboard”错误,并提供详细的解决方案,包括创建虚拟环境和配置PyCharm项目。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • 本文详细介绍了如何通过现代化工具快速、高效地安装Python第三方模块,帮助开发者简化安装流程并提高开发效率。 ... [详细]
  • 深入理解 .NET 中的中间件
    中间件是插入到应用程序请求处理管道中的组件,用于处理传入的HTTP请求和响应。它在ASP.NET Core中扮演着至关重要的角色,能够灵活地扩展和自定义应用程序的行为。 ... [详细]
  • 本文详细介绍了如何将 Python 3.6.3 程序转换为 Windows 可执行文件(.exe),并解决了使用 py2exe 和 cx_Freeze 时遇到的问题。推荐使用 PyInstaller 进行打包,提供完整的安装和打包步骤。 ... [详细]
  • 本文介绍了如何利用Python进行批量图片尺寸调整,包括放大和等比例缩放。文中提供了详细的代码示例,并解释了每个步骤的具体实现方法。 ... [详细]
  • 解决TensorFlow CPU版本安装中的依赖问题
    本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ... [详细]
  • Python Django大学生心理健康管理系统开发(含源码、文档)
    本项目包含完整的源代码、设计文档、数据库结构以及详细的安装指南,旨在为计算机专业的学生提供一个全面的心理健康管理系统解决方案。 ... [详细]
  • Python包管理工具pip的使用指南
    本文详细介绍了如何使用pip进行Python包的安装、管理和常见问题的解决方法,特别针对国内用户提供了优化建议。 ... [详细]
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社区 版权所有