2016-08-04 1 views
1

Пример установки плоскости подходит для куба на плоскости, которую он создал из облака точек, который он извлекает на основе выбранной пользователем точки. Я хочу определить, является ли эта точка этажа, стены или крыши. То, что я пытаюсь достичь, - это изменить пример, чтобы он отображал куб на полу, а не на стене или крыше.Project Tango: Как определить, является ли плоскость, созданная на примере установки Plane, - это пол или стена в Java SDK?

ответ

0

Простейшим решением является проверка нормальной плоскости. Обычно нормальная стена является перпендикулярной к гравитации, а пол параллелен гравитации.

+0

Да, но как рассчитать угол между двумя векторами в 3d пространстве? –

0

Что-то вроде этого:

Вы получили нормаль плоскости удар правой?

 float surfaceAngle = Vector3.Angle(normal, new Vector3(0,1,0)); 

    float floorLimitAngle = 20; 
    float ceilingLimitAngle = 180 - 20; 

    if (surfaceAngle < floorLimitAngle) 
     // It's a floor 
    else if (surfaceAngle > ceilingLimitAngle) 
     // It's a ceiling 
    else 
     // It's a wall 
Смежные вопросы