感謝您的評分和反饋!
您已經評分了。
無需AR核心即可測量距離、面積和體積(DAV)
使用三角函數和感測器(幾何)的方法
這是最常用的無需擴增實境 (AR) 即可測量距離的方法。它利用使用者握持手機的高度 (h) 和加速度計偵測到的傾斜角度 (θ)。
工作原理:
如果使用者將相機對準物體底部,則使用以下公式計算距離:
d = h⋅tan(90 − θ)
應用程式中的關鍵步驟:
使用 SensorManager 存取 Sensor.TYPE_ACCELEROMETER 和 Sensor.TYPE_MAGNETIC_FIELD。計算設備的俯仰角 (θ)。在此之前,用戶需要選擇握持手機的高度。
這是無需複雜 3D 處理即可進行軟體計算的最簡單方法,但需要使用者按照特定步驟操作。
此方法的不足之處:
如果使用者保持靜止,只是在前方標記兩個點,則應用無法僅根據距離計算出這兩個點之間的角度。為了確保數學上的精確性,我們還必須使用指南針提供的方位角。
更精確的 Java 面積(附角度)程式碼:
如果您希望使用者從同一位置標記兩個點,則需要計算手機在兩次測量之間旋轉的角度。
// 在 onSensorChanged 中,我們也會記錄方位角 (orientation[0])
float currentAzimuth;
// 當捕捉到一個點時,我們會記錄距離和角度
double d1 = capturedDistances.get(0);
double d2 = capturedDistances.get(1);
double angleBetween = Math.abs(azimuth2 - azimuth1);
// 已知三角形兩邊及其夾角,求三角形面積公式
//(假設我們測量的是從目前位置到兩點的三角形面積)
double area = 0.5 * d1 * d2 * Math.sin(Math.toRadians(angleBetween));
體積計算(3個點):
已知兩點,我們得到底邊(面積)。第三個點通常用於測量高度。
使用者指向牆底(記錄距離)。
用戶將手機舉向天花板。
我們計算斜率差,求垂直高度 H。
體積 = 面積 × H。
該應用程式除了其他特定功能外,還具有位置追蹤等附加功能;計算出的距離、面積和體積可以以米、厘米、英寸和英尺為單位,並且您可以選擇設備攝影機進行測量的高度。