加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 将3d钻孔轨迹转换为笛卡尔坐标并使用matplotlib绘制它

发布时间:2020-12-20 11:32:16 所属栏目:Python 来源:网络整理
导读:我希望能够使用方向和距离绘制两条线.这是一个Drillhole跟踪,所以我现在有这种格式的数据, 深度实际上是距离孔的距离,而不是垂直深度.方位角来自磁北. Dip基于0是水平的.我想从同一点绘制两条线(0,0很好)并根据这种信息看看它们是如何不同的. 我没有使用Matp
我希望能够使用方向和距离绘制两条线.这是一个Drillhole跟踪,所以我现在有这种格式的数据,

深度实际上是距离孔的距离,而不是垂直深度.方位角来自磁北. Dip基于0是水平的.我想从同一点绘制两条线(0,0很好)并根据这种信息看看它们是如何不同的.

我没有使用Matplotlib的经验,但我对Python感到满意,并希望了解这个绘图工具.我找到了this page并且它有助于理解框架,但我仍然无法弄清楚如何使用3d向量绘制线条.有人可以给我一些关于如何做到这一点或在哪里找到我需要的指示的指示?谢谢

解决方法

将坐标转换为笛卡尔坐标并使用matplotlib绘制的脚本,其中包含以下注释:

import numpy as np
import matplotlib.pyplot as plt
# import for 3d plot
from mpl_toolkits.mplot3d import Axes3D
# initializing 3d plot
fig = plt.figure()
ax = fig.add_subplot(111,projection = '3d')
# several data points 
r = np.array([0,14,64,114])
# get lengths of the separate segments 
r[1:] = r[1:] - r[:-1]
phi = np.array([255.6,255.6,261.7,267.4])
theta = np.array([-79.5,-79.5,-79.4,-78.8])
# convert to radians
phi = phi * 2 * np.pi / 360.
# in spherical coordinates theta is measured from zenith down; you are measuring it from horizontal plane up 
theta = (90. - theta) * 2 * np.pi / 360.
# get x,y,z from known formulae
x = r*np.cos(phi)*np.sin(theta)
y = r*np.sin(phi)*np.sin(theta)
z = r*np.cos(theta)
# np.cumsum is employed to gradually sum resultant vectors 
ax.plot(np.cumsum(x),np.cumsum(y),np.cumsum(z))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读