【问题标题】:Potree/Three.js measuring questionsPotree/Three.js 测量问题
【发布时间】:2016-05-17 22:01:03
【问题描述】:

首先,我是新手,非英语母语,对不起。

此时,我使用很棒的 Potree 1.4RC 在同一页面中加载多个(和不同的)点云,但我想自动读取点云的高度,我的意思是,读取所有点云并检测最大尺寸。我曾与:

Var Potree.Measure areaMeasurement = new ( ) ;
areaMeasurement.addMarker (new THREE.Vector3 (0, 0 , 0)) ;
areaMeasurement.addMarker (new THREE.Vector3 ( -10 , 0 , 0 ) ) ;
viewer.measuringTool.addMeasurement ( areaMeasurement ) ;

但是我的点是预定义的...我的问题是如何获得 PointCloud 的最大高度或宽度(不是边界框)?

否则,当我在 Potree 或 Three.js 中给其他人(p.e.:X 和 Y)时,如何获得空间坐标(p.e:Z)?是否有可能自动检测到这个最大值并获取她的坐标?

非常感谢, 最好的问候。

【问题讨论】:

  • 为什么点的边界框不可接受?
  • 因为在某些情况下,点云相对于边界框的方向不匹配。 P.e.:如果我想用很少的旋转来测量立方体的宽度,边界框是用对角顶点创建的(不好的测量),而不是横向点(好的边界框测量)。
  • 边界框提供了一个合理的近似值。如果边界球也不可接受,您对“最大宽度”的定义是什么。
  • 假设你想测量一个矩形表的宽度,我需要检测一个极右点。为此,我使用边界框 (viewer.getBoundingBoxGeo()),我有 X、Y 和 Z 最小值和最大值。然后(我有一个问题)我会检测到左垂直点。在这种情况下,边界框只有在矩形表格与边界框的空间坐标匹配时才有效。我认为...
  • 正确...您可以通过计算每对 ( x, z ) 点之间的平方距离并选择最大值的平方根来获得最大宽度... 最大高度只是点中最大的 y 坐标。 (y 在三个.js 中)。

标签: javascript three.js point-clouds


【解决方案1】:

您可以通过计算点云中每对 ( x, z ) 点之间的平方距离来获得最大宽度

distanceSquared = ( v1.x - v2.x ) * ( v1.x - v2.x ) + ( v1.z - v2.z ) * ( v1.z - v2.z );

然后选择最大值的平方根。

最大高度只是点的最大 y 坐标。

【讨论】:

  • 是的,但在您的示例中,我们知道所有点坐标、“v1”和“v2”。在我的真实过程中,所有的点云都是不同的。我的意思是,我不知道任何一点,Three.js 或 Potree 中有一些函数可以让在一个条件的函数中获取点坐标? P.e.: if 'v1.y = v2.y = 0' 让我们获得极端点('v1.x', 'v1.z' and 'v2.x', 'v2.z')。
  • 遍历你的点,只计算v1.y = v2.y = 0的点对子集的距离。
猜你喜欢
  • 1970-01-01
  • 2014-03-29
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 2016-06-14
  • 2016-06-05
  • 2022-01-19
  • 1970-01-01
相关资源
最近更新 更多