Алгоритм трилатерации маяков каждый раз дает один и тот же результат. iOS Свифт

Я пытаюсь создать функцию внутреннего позиционирования в своем приложении. Итак, я сделал следующие вещи

1: Взял одно изображение карты этажа и на основе метра я установил пиксель для изображения, чтобы я мог получить правильное местоположение маяка, размещенного на карте.

2: теперь по значению RSSI маяков я получаю расстояние в метрах между BLE и iPhone

3: теперь я пытаюсь использовать алгоритм трилатерации, чтобы получить правильное местоположение пользователя.

Теперь я правильно получаю расстояние от устройства до телефона, но когда я пытаюсь найти местоположение телефона, я использую алгоритм трилатерации, но каждый раз, когда я получаю один и тот же ответ, погодное расстояние высокое или низкое

Итак, вот мой код для алгоритма трилатерации.

func getCoordinateWithBeaconA(_ a: CGPoint, beaconB b: CGPoint, beaconC c: CGPoint, distanceA dA: CGFloat, distanceB dB: CGFloat, distanceC dC: CGFloat) -> CGPoint {
    var W: CGFloat
    var Z: CGFloat
    var x: CGFloat
    var y: CGFloat
    var y2: CGFloat
    W = dA * dA - dB * dB - a.x * a.x - a.y * a.y + b.x * b.x + b.y * b.y
    Z = dB * dB - dC * dC - b.x * b.x - b.y * b.y + c.x * c.x + c.y * c.y

    x = (W * (c.y - b.y) - Z * (b.y - a.y)) / (2 * ((b.x - a.x) * (c.y - b.y) - (c.x - b.x) * (b.y - a.y)))
    y = (W - 2 * x * (b.x - a.x)) / (2 * (b.y - a.y))
    //y2 is a second measure of y to mitigate errors
    y2 = (Z - 2 * x * (c.x - b.x)) / (2 * (c.y - b.y))

    y = (y + y2) / 2

    let roundedX : Float = Float(String(format: "%.6f", x)) ?? 0.0
    let xValue : CGFloat = CGFloat(roundedX)

    let roundedY : Float = Float(String(format: "%.6f", y)) ?? 0.0
    let yValue : CGFloat = CGFloat(roundedY)
    return CGPoint(x: xValue, y: yValue)
}

Пожалуйста, дайте мне знать, если я делаю что-то не так.


person Govind Rakholiya    schedule 23.11.2019    source источник
comment
Пожалуйста, попробуйте приведенное ниже решение от @Vishnu Prabhu по ссылке ниже. stackoverflow.com/questions/20332856/   -  person Kalpesh Pipaliya    schedule 25.11.2019
comment
Хорошо @KalpeshPipaliya, спасибо, сэр, я посмотрю на это   -  person Govind Rakholiya    schedule 25.11.2019