Detectando planos verticais

Eu queria saber se alguém conseguiu identificar planos verticais à frente do dispositivo em tempo real usando o ARCore SDK.

Consegui alcançar um resultado decente definindo uma parede usando uma equação de linha:

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

com o comentário "para cada y", quis dizer que ignoro o eixo y (olhando a parede de cima como no mapeamento 2D de uma sala) para calcular uma linha que define a parede.

o multiplicador é a rotação entre os pontos:

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

Todo o cálculo é:

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
}

Agora, aciono esse cálculo enquanto o usuário está andando e mostra muitos pontos da nuvem de pontos.

Os resultados são bons, mas não tão precisos quanto a detecção do plano horizontal do ARCore.

questionAnswers(2)

yourAnswerToTheQuestion