找到与已知平面正交的平面

2024-06-05 23:34:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望能得到一些帮助。我是一个地质学家,所以我的数学背景没有它应有的强。我有一个地质断层,我已经在CAD程序中数字化了。我在断层面上放置了三个代表点,并提取了这些坐标点。我用下面的代码找到了平面的单位向量:

p1 = np.array([503562, 2811504, 1771], dtype='float64')
p2 = np.array([504122, 2810766, 1820], dtype='float64')
p3 = np.array([504325, 2811311, 1042], dtype='float64')

#  Calculate vectors
v1 = p3 - p1
v2 = p2 - p1

#  Find the cross product (vector normal to the plane)
cp = np.cross(v1, v2)

#  Assign to a, b and c for components of plane equation
a, b, c = cp

#  Calculate d component with a dot product and the following equation:
#    a*x3 + b*y3 + c*z3 = d
d = np.dot(cp, p3)

#  Find the unit vector
uv = cp / (cp**2).sum()**0.5

这个向量表示一个平面,它是我的最大连续方向(一个地质术语)。我需要得到两个与上面定义的平面成90度角的平面。我知道这对于线性代数来说可能很简单,但我现在不知所措。我最终需要这个来得到上面定义的三个连续平面的走向和倾角。你知道吗

编辑:为清晰起见添加了一张图片

蓝色特征是一个错误。绿色橄榄球是我的搜索椭圆。我需要找出由这个形状定义的平面。我用断层上数字化的绿点来计算第一个平面。我不知道怎么弄到另外两个

fault and search ellipse


Tags: the定义nparraycp平面calculatep2
2条回答

所以假设你对任何这样的飞机都满意:

已经有cp定义了“连续性平面”。 ortho1 = np.cross(v1, cp)将为您提供一个到cp的正交方向,即您可能请求的平面之一。 然后ortho2 = np.cross(cp, ortho1)会给你第二个对应的。你知道吗

根据你的描述,这就是我认为你想要的:

  • 对于走向,需要平面和水平面的交集(单位向量和(0,0,1)向量的叉积)。

  • 对于倾角,你需要平面单位向量和走向单位向量的叉积。

我同意其他评论者的观点-也许你可以自己解决这个问题。。。如果在Python中实现stackoverflow时遇到问题,那么可以使用stackoverflow:)

相关问题 更多 >