/** * Methode analysiert die Grundrissebenen und verwendet deren Normalenvektoren, um zu bestimmen, * welcher Koordinatenebene deren Ausrichtungen am naechsten kommen, indem die Komponente mit dem * groessten absoluten Wert des Normalenvektors ermittelt wird. Diese wird zurueckgereicht * * @param bucket Bucket mit Grundrissen, die innerhalb der Methode gemerged werden * @return Achse, die fuer eine Projektion ignoriert werden koennte */ private Axis findRelevantComponent(FootprintBucket bucket) { Footprint currentFootprint = null; MyVector3f planeNormal = null; List<Footprint> footprints = bucket.getFootprints(); Iterator<Footprint> footprintIter = footprints.iterator(); Axis relevantComponent = Axis.UNKNOWN; Axis resultComponent = Axis.UNKNOWN; while (footprintIter.hasNext()) { currentFootprint = footprintIter.next(); // hole die Normale und suche eine Komponente mit Wert 0 planeNormal = currentFootprint.getFootprintPoly().getNormal(); // bestimme die Koordinatenkomponente mit dem groessten absoluten // Wert relevantComponent = mMathHelper.getIgnorableAxis(planeNormal, false); // validiere, dass alle Grundrisse die gleiche Ausrichtung besitzen if (resultComponent != Axis.UNKNOWN && relevantComponent != resultComponent) { assert false : "Planes mit unterschiedlichen Ausrichtungen der Normalenvektoren im gleichen Bucket"; } else resultComponent = relevantComponent; } return resultComponent; }