由于AR应用程序中的距离而更改游戏对象的(渐变)颜色



我正在尝试制作一个显示POI的AR应用程序。这些 POI 来自不同的距离,由于距离,我想用渐变比例使它们具有不同的颜色。

我已经使用Haversine公式计算了POI与GPS坐标的距离,并尝试由于距离而更改颜色,但是即使当我看到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;
}

距离函数返回哪些值?我问的是数值的数量级。这:distances*255f/1000f(/255f 等于 distance/1000,所以你也可以得到接近零的值,或者如果它超过 1000(不确定这里的单位是什么(,一个>1 的值。

最新更新