我正在开发一个Python库,用于在Python中管理点云。在
我写了一个函数来计算存储在一个numpy结构数组中的每个法线的方向,但是我对最后一个函数不太满意(认为它能工作而且速度很快),我想知道是否有另一种更高效的python方法来计算大型点云中的方向。在
点云的结构如下:
esfera = PyntCloud.from_ply('Sphere.ply')
esfera.vertex
Out[3]:
array([ (0.2515081465244293, 0.05602749437093735, 1.9830318689346313, 0.12660565972328186, 0.02801010198891163, 0.9915575981140137, 7.450349807739258, 77.52488708496094),
(0.09723527729511261, 0.02066999115049839, 1.9934484958648682, 0.048643846064805984, 0.011384730227291584, 0.9987513422966003, 2.863548517227173, 76.82744598388672),
(0.17640848457813263, 0.028193067759275436, 1.9881943464279175, 0.08916780352592468, 0.01611466333270073, 0.9958862066268921, 5.198856830596924, 79.75591278076172),
...,
(0.17817874252796173, -0.046098098158836365, -1.9879237413406372, 0.08992616087198257, -0.02275240235030651, -0.9956884980201721, 5.322407245635986, 284.19854736328125),
(0.2002459168434143, -0.002330917865037918, -1.986855149269104, 0.09960971027612686, -0.0010710721835494041, -0.9950260519981384, 5.717002868652344, 270.6160583496094),
(0.12885123491287231, -0.03245270624756813, -1.9912745952606201, 0.06637085974216461, -0.01580258458852768, -0.9976698756217957, 3.912114381790161, 283.3924865722656)],
dtype=[('x', '<f4'), ('y', '<f4'), ('z', '<f4'), ('nx', '<f4'), ('ny', '<f4'), ('nz', '<f4'), ('scalar_Dip_(degrees)', '<f4'), ('scalar_Dip_direction_(degrees)', '<f4')])
esfera.vertex['nx']
Out[4]:
array([ 0.12660566, 0.04864385, 0.0891678 , ..., 0.08992616,
0.09960971, 0.06637086], dtype=float32)
esfera.vertex[-1]['nx']
Out[5]: 0.06637086
这是方向函数:
^{pr2}$结果显示在CloudCompare中(post images没有正确的代表):
谢谢你的帮助。在
嗯,我为自己感到羞耻。xD公司
那些numpy内置的功能正是我想要的。在
谢谢@Dan。在
新功能如下:
它更简单快捷。在
^{pr2}$现在我既高兴又羞愧。在
下一次我会在发帖前更深入地看一下numpy文档。在
谢谢。在
相关问题 更多 >
编程相关推荐