あなたの評価とフィードバックをありがとう!
すでに評価しました。
AR Coreを使用せずに距離、面積、体積(DAV)を測定する
三角法とセンサーを用いた方法(幾何学)
これはARを使わずに距離を測定する最も一般的な方法です。ユーザーがスマートフォンを持つ高さ(h)と、加速度センサーで検出された傾斜角(θ)を利用します。
仕組み:
ユーザーがカメラを物体の底面に向けると、距離は次の式で計算されます。
d = h⋅tan(90 − θ)
アプリの主な手順:
SensorManagerを使用してSensor.TYPE_ACCELEROMETERとSensor.TYPE_MAGNETIC_FIELDにアクセスします。デバイスの傾斜角(θ)が計算されます。その前に、ユーザーはスマートフォンを持つ高さを選択します。
これは複雑な3D処理を必要とせずにソフトウェア計算を実行する最も簡単な方法ですが、ユーザーは特定の手順に従う必要があります。
この方法の問題点:
ユーザーが動かず、目の前の2点をマークするだけでは、アプリは距離だけでは2点間の角度を知ることができません。数学的に正確さを期すには、コンパスの方位角も考慮する必要があります。
角度を考慮した、より正確な面積計算のためのJavaコードは以下のとおりです。
ユーザーが同じ場所から2つの点をマークする場合、2つの測定の間でスマートフォンが回転した角度を計算する必要があります。
// onSensorChangedイベントで、方位角(orientation[0])も記録します。
float currentAzimuth;
// 点がキャプチャされたら、距離と角度を記録します。
double d1 = capturedDistances.get(0);
double d2 = capturedDistances.get(1);
double angleBetween = Math.abs(azimuth2 - azimuth1);
// 2辺とそれらの間の角度が与えられた三角形の面積の公式
// (現在位置から2点までの三角形の面積を測定する場合)
double area = 0.5 * d1 * d2 * Math.sin(Math.toRadians(angleBetween));
体積 (3点) の場合:
2点から底辺 (面積) が求められます。3点目は通常、高さの測定に使用されます。
ユーザーは壁の底辺を指さし (距離を記録)、
スマートフォンを天井に向かって持ち上げます。
傾斜の差を計算して垂直方向の高さ H を求めます。
体積 = 面積 × H
このアプリには、その他の特定の機能に加えて、位置追跡などの追加機能があります。計算された距離、面積、体積はメートル、センチメートル、インチ、フィートで測定でき、デバイスのカメラで測定する高さを選択することもできます。