Detectando planos verticales

Me preguntaba si alguien pudo identificar planos verticales delante del dispositivo en tiempo real usando el SDK de ARCore.

Me las arreglé para lograr un resultado decente definiendo un muro usando una ecuación de línea:

z = Multiplier * x + Constant (For every y)

por "para cada y" comentario quise decir que ignoro el eje y (mirando la pared desde arriba como en el mapeo 2D de una habitación) para calcular una línea que define la pared.

el multiplicador es la rotación entre los puntos:

let angleDeg = Float((360 - angle + 360) % 360) * Float.pi / 180.0;

Todo el cálculo es:

let angle: Int = Int((atan2(pointA.z - pointB.z, pointA.x - pointB.x) * 180) / Float.pi) % 360
     yRotation = Float((360 - angle + 360) % 360) * Float.pi / 180.0

    if pointA.x == pointB.x {
         multiplier = Float.infinity
    } else {
         multiplier = (pointA.z - pointB.z) / (pointA.x - pointB.x)
    }
    constant = pointA.z - multiplier * pointA.x
}

Ahora disparo ese cálculo mientras el usuario camina y toma muestras de muchos puntos de la nube de puntos.

Los resultados son buenos pero no tan precisos como la detección del plano horizontal del ARCore.

Respuestas a la pregunta(2)

Su respuesta a la pregunta