感谢您的评分和反馈!
您已经评分了。
无需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。
该应用除了其他特定功能外,还具有位置追踪等附加功能;计算出的距离、面积和体积可以以米、厘米、英寸和英尺为单位,并且您可以选择设备摄像头进行测量的高度。