2016-05-17 22 views
1

最初は、初心者で母国語でない人が英語を話します。Potree/Three.js測定の質問

この時点では、私は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)を得ることができますか?この最大値を自動的に検出し、彼女の座標を得ることは可能でしょうか?

ありがとうございました。 よろしくお願いいたします。

+0

ポイントの境界ボックスが受け入れられないのはなぜですか? – WestLangley

+0

場合によっては、点群はバウンディングボックスに対してディストピックの向きを持つためです。 P.e .:ほんの少し回転させてキューブの幅を測定したい場合は、斜めの頂点(悪い尺度)、横のポイント(良いバウンディングボックスの尺度)で境界ボックスを作成しました。 –

+0

バウンディングボックスは、妥当な近似値を提供します。境界の球も受け入れられない場合、 "最大幅"の定義は何ですか? – WestLangley

答えて

0

あなたはあなたのポイントクラウド

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

でのポイントのすべてのペア(X、Z)の間の二乗距離を計算して、最大値の平方根を選択することで、最大の幅を取得することができます。

最大高さはポイントの最大y座標です。

+0

はい、あなたの例では、すべてのポイント座標「v1」と「v2」を認識しています。実際のプロセスでは、すべてのポイントクラウドが異なります。つまり、私は何のことも知らないのですが、Three.jsやPotreeにはある条件の関数で点座標を得る関数がありますか? P.e .: 'v1.y = v2.y = 0'の場合、極端な点( 'v1.x'、 'v1.z'、 'v2.x'、 'v2.z')を取得できます。 –

+0

ポイントをループし、 'v1.y = v2.y = 0'のポイントペアのサブセットの距離だけを計算します。 – WestLangley