2016-08-04 30 views
1

Das Beispiel für die Ebenenanpassung passt einen Würfel auf eine Ebene, die aus der Punktwolke erstellt wurde, die basierend auf dem vom Benutzer ausgewählten Punkt abgerufen wird. Ich möchte feststellen, ob dieser Punkt ein Boden, eine Wand oder ein Dach ist. Was ich versuche, ist, das Beispiel so zu ändern, dass es nur den Würfel auf dem Boden und nicht auf der Wand oder dem Dach rendert.Projekt-Tango: Wie kann man feststellen, ob die Ebene, die in dem Fit-Beispiel Plane erstellt wurde, eine Ebene oder eine Wand in Java SDK ist?

Antwort

0

Die einfachste Lösung ist, die Ebene normal zu überprüfen. Normalerweise ist die Normale der Wand senkrecht zur Schwerkraft und der Boden ist parallel zur Schwerkraft.

+0

Ja, aber wie berechnet man die Amplitude zwischen zwei Vektoren im 3D-Raum? –

0

Etwas wie folgt aus:

Du hast die Normale der Ebene richtig getroffen?

 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