Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中获得由三个坐标定义的平面的倾斜角度?_Python_Numpy_Scipy_Coordinates - Fatal编程技术网

如何在python中获得由三个坐标定义的平面的倾斜角度?

如何在python中获得由三个坐标定义的平面的倾斜角度?,python,numpy,scipy,coordinates,Python,Numpy,Scipy,Coordinates,给定三个坐标(每个坐标都有x、y和z值),如何使用numpy和/或scipy计算生成平面的倾斜(或倾斜) a = np.array([32.49, -39.96,-3.86]) b = np.array([31.39, -39.28, -4.66]) c = np.array([31.14, -38.09,-4.49]) 我想使用此计算过滤屋顶段的激光雷达点云数据集。所以屋顶的角度在30到60度之间 我知道我必须旋转由三个坐标定义的平面来计算所需的角度,但我不知道如何使用numpy/sci

给定三个坐标(每个坐标都有x、y和z值),如何使用numpy和/或scipy计算生成平面的倾斜(或倾斜)

a = np.array([32.49, -39.96,-3.86])

b = np.array([31.39, -39.28, -4.66])

c = np.array([31.14, -38.09,-4.49])
我想使用此计算过滤屋顶段的激光雷达点云数据集。所以屋顶的角度在30到60度之间

我知道我必须旋转由三个坐标定义的平面来计算所需的角度,但我不知道如何使用numpy/scipy实现这一点。 我可能需要这样的旋转:

更新:


Paul Panzers的回答使计算平面与每个轴的角度成为可能。但是我怎样才能旋转平面,使多个三元组点集在一个轴上得到可比的角度呢?我的主要目标是:使用两个最近邻点为每个屋顶点构建三角形,并计算这些角度。例如,如果30到60度之间有50%的夹角,屋顶将被归类为山墙。

以三个向量的两个差的叉积为例

n = np.cross(b-a, c-a)
这将为你的平面提供一个法向量。其与任何坐标平面的角度与平面与同一坐标平面的角度之和将为pi/2

要计算法向量和坐标平面之间的角度,只需归一化并取相应分量的弧sin

nn = n / np.linalg.norm(n)
angles = np.abs(np.arcsin(nn))

通常,您需要确定轴/角度约定,通常使用几种

提取OP措辞中的“倾斜角度”对我来说意味着找到相对于地平线或(局部)Z(向上正)的角度

但我不懂装甲车的ans

正常情况下的叉积很好

将叉积标准化也很好

然而,下一步

标准化叉积向量的
nn
分量是具有各自单位基向量的点积

使用(标准化输入向量)点积查找“夹角”涉及arccos(),返回最小角度需要考虑叉积输入向量的顺序,可能给出法线的有符号方向(向上/向外vs向下/向内)

我从positiveZ获得(假设向上/向外指向)方位角的
angleZ=np.arccos(abs(nn[2])
,这是一种常见的球面坐标系约定,可能仍然需要进一步转换为OP需要的任何全局或局部坐标系,最简单的例子是使用补码
np.pi-angleZ
来获得屋顶相对于水平面的“倾斜”


需要第二个角度来描述屋顶平面片的方向-相对于lat或lon、北、东的角度-我认为您需要再次检测并纠正
nn
可能的符号模糊性,并使用
acrctan2()
对于全符号角度

您需要更具体地说明:相对于哪个尺寸的倾斜角度?在任何情况下,都可以计算平面的法向量,然后将其投影到所需尺寸的基向量上,以确定角度。投影是通过。也许,你可以试着计算倾斜前和倾斜后法线之间的角度?你认为“中性”是什么样的旋转?围绕z轴的那些?不清楚你指的是哪个角度。你指的是屋顶瓷砖本身的角度吗?这是个好问题。我想我指的是相对于x轴或z轴的角度。通常屋顶的角度与地平面有关。我只想做一些事情,让我可以比较不同方向的不同屋顶。在经过一些睡眠之后,我认为这不足以解决我找到一个可比较的倾斜角度的问题。据我所知,这给了我平面与每个轴形成的角度。更新了我的问题。