package com.isidroid.utils

import kotlin.math.cos
import kotlin.math.sin
import kotlin.random.Random

// Радиус Земли в километрах
private const val EARTH_RADIUS_KM = 6371.0

// Функция для генерации случайного числа в диапазоне
fun randomDouble(min: Double, max: Double): Double = min + (max - min) * Math.random()

// Функция для создания случайной точки в пределах радиуса от заданной координаты
fun generateRandomPoint(lat: Double, lng: Double, radiusKm: Double = 3.0): Pair<Double, Double> {
    // Создаем случайное расстояние от центра до точки в пределах радиуса
    val randomRadius = randomDouble(0.0, radiusKm) / EARTH_RADIUS_KM

    // Создаем случайный угол в радианах
    val randomAngle = randomDouble(0.0, 2 * Math.PI)

    // Вычисляем смещение по широте и долготе
    val deltaLat = randomRadius * cos(randomAngle)
    val deltaLng = randomRadius * sin(randomAngle) / cos(Math.toRadians(lat))

    // Новая координата
    val newLat = lat + Math.toDegrees(deltaLat)
    val newLng = lng + Math.toDegrees(deltaLng)

    return Pair(newLat, newLng)
}


fun generateFakeSpots(lat: Double, lng: Double): List<Pair<Double, Double>> {
    val max = Random.nextInt(1, 50)
    return buildList {
        repeat(max) {
            val (latitude, longitude) = generateRandomPoint(lat, lng)
            add(Pair(latitude, longitude))
        }
    }
}
