如何解决使用AR
首先,我知道启动AR会话时的位置。 所以我对我的观点很满意。我走了几米,我希望不使用GPS或其他技术,而仅使用ARCore,将其定位在B点。 我已经尝试过使用姿势作为角度和距离,但是我有一个很大的错误...
错误进行20米的路径运动后,就像5.3815米。 我不知道这是正常现象还是我的代码中有一些错误。
initialBearingAR = LocationScene.deviceOrientation.azimuth;
这是使用传感器计算出的方向
double distanceAR = Math.sqrt(Math.pow((camPose1.tx() - camPose2.tx()),2)/ 2.0 +
Math.pow((camPose1.ty() - camPose2.ty()),2) / 2.0 +
Math.pow((camPose1.tz() - camPose2.tz()),2) / 2.0);
camPose1是在A点计算出的姿势,而camPose2是在B点计算出的姿势。两者都是相机的姿势
double[] latLonEnd = travel(latStartAR,lonStartAR,initialBearingAR,distanceAR);
latEndAR = latLonEnd[0];lonEndAR = latLonEnd[1]
旅行方式:
public double[] travel(double qrLat,double qrLon,double initialBearing,double distance) {
double bR = Math.toRadians(initialBearing);
distance = distance/1000;
double lat1R = Math.toRadians(qrLat);
double lon1R = Math.toRadians(qrLon);
double dR = distance/6371.01; //Mettere diviso radius earth
double a = Math.sin(dR) * Math.cos(lat1R);
double lat2 = Math.asin(Math.sin(lat1R) * Math.cos(dR) + a * Math.cos(bR));
double lon2 = lon1R
+ Math.atan2(Math.sin(bR) * a,Math.cos(dR) - Math.sin(lat1R) * Math.sin(lat2));
double[] latlon = new double[2];
latlon[0] = Math.toDegrees(lat2);
latlon[1] = Math.toDegrees(lon2);
return latlon;
}
还有其他想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。