Example #1
0
 public Area(string name, double latitude, double longitude, double radius, string tag)
 {
     this.name   = name;
     this.centre = new GeoLocCoordinates((float)latitude, (float)longitude);
     this.radius = radius;
     this.tag    = tag;
 }
Example #2
0
    public float EuclideanDistanceBetweenPoints(GeoLocCoordinates pointA, GeoLocCoordinates pointB)
    {
        float Ax = pointA.latitude;
        float Ay = pointA.longitude;
        float Bx = pointB.latitude;
        float By = pointB.longitude;

        return(Mathf.Sqrt(Mathf.Pow(Mathf.Abs(Ax - Bx), 2) + Mathf.Pow(Mathf.Abs(Ay - By), 2)));
    }
Example #3
0
    void InitialSetup()
    {
        Debug.Log("Initial Setup of GeoLocManager --> Default area");
        // Valores iniciales por defecto (area Default)
        defaultArea   = allAreas[0];
        currentArea   = defaultArea;
        currentCoords = new GeoLocCoordinates();

        Input.location.Start();
        UpdateCoods(); //Pone las coordenadas actuales al inicializarse y sitúa el juego
    }
Example #4
0
    /// <summary>
    /// Devuelve si un punto está dentro de un area. Si el parámetro de area es el por defecto, devuelve falso.
    /// </summary>
    /// <param name="point"></param>
    /// <param name="area"></param>
    /// <returns></returns>

    bool PointInsideArea(GeoLocCoordinates point, Area area)
    {
        //Debug.Log(point + "inside " + area);
        bool isInsideArea = false;

        if (!area.Equals(defaultArea))
        {
            isInsideArea = DistanceBetweenPoints(point, area.centre) <= area.radius;
        }
        // Un punto está dentro de un círculo si la distancia desde él hasta el centro es menor o igual que r (radio)

        return(isInsideArea);
    }
Example #5
0
    public float DistanceBetweenPoints(GeoLocCoordinates pointA, GeoLocCoordinates pointB)
    {
        var d1   = pointA.latitude * (Math.PI / 180.0);
        var num1 = pointA.longitude * (Math.PI / 180.0);
        var d2   = pointB.latitude * (Math.PI / 180.0);
        var num2 = pointB.longitude * (Math.PI / 180.0) - num1;
        var d3   = Math.Pow(Math.Sin((d2 - d1) / 2.0), 2.0) +
                   Math.Cos(d1) * Math.Cos(d2) * Math.Pow(Math.Sin(num2 / 2.0), 2.0);

        double doubleDistance = 6376500.0 * (2.0 * Math.Atan2(Math.Sqrt(d3), Math.Sqrt(1.0 - d3)));

        float distance = (float)doubleDistance;

        //Debug.Log("La distancia entre el punto " + pointA + " y el punto " + pointB + " es: " + distance);
        return(distance);
    }