我正在尝试制作一个显示POI信息的AR应用程序。这些POI来自不同的距离,由于距离的缘故,我想用渐变比例将它们制成不同的颜色。
我已经用Haversine公式计算了GPS坐标下POI的距离,并尝试根据距离更改颜色,但是即使在我看到POI时通过步行更改了距离,它也不会更新颜色。我将WorldScaleAr场景用于AR。以下代码仅适用于一个POI。
using System;
using static System.Math;
double[,] coords = new double[,] { { 39.870613, 32.73341 } }; // POI location
void Start()
{
// get poi Location
lat1 = Math.PI * coords[0, 0] / 180.0;
// lat2 = Math.PI * user[0, 0] / 180.0;
lon1 = Math.PI * coords[0, 1] / 180.0;
// lon2 = Math.PI * user[0, 1] / 180.0;
}
void Update()
{
// Get user location
// Latitude
x = getLocation.x1.ToString();
user_lat = Convert.ToDouble(x);
user_lat_rad = Math.PI * user_lat / 180.0; // Radian
// Longitude
y = getLocation.y1.ToString();
user_lon = Convert.ToDouble(y);
user_lon_rad = Math.PI * user_lon / 180.0; // Radian
// Change POIs sizes
distances = Convert.ToSingle(distance(user_lat_rad, user_lon_rad));
GetComponent<Renderer>().material.color = new Color((distances*255f/1000f)/255f, (distances*255f/1000f)/255f, (distances*255f/1000f)/255f);
public double distance(double lat2, double lon2)
{
// Haversine Formula
// Lat2,Lon2 = User Location
// Lat1,Lon1 = POI Location
double dist1 = Sqrt((Pow(Sin((lat2 - lat1) / 2), 2)) + Cos(lat2) * Cos(lat2) * (Pow(Sin((lon2 - lon1) / 2), 2)));
double distance = 2 * r * Asin(dist1);
return distance;
}
答案 0 :(得分:0)
距离函数返回什么值?我在问数值的数量级。这是:distances * 255f / 1000f)/ 255f等于distance / 1000,因此您也可能会获得接近零的值,或者如果它大于1000(不确定此处的单位),则该值> 1。