public Optional<EnumFacing> classify(Vector3f normalVec) { for (Pair<Vector3f, EnumFacing> e : sideOrder) { final Vector3f base = e.getKey(); if (normalVec.equals(base)) return Optional.of(e.getValue()); // cos > 0 only in 0..90 deg final double angleCos = base.dot(normalVec); if (angleCos > 0) return Optional.of(e.getValue()); } return Optional.empty(); } }
return false; if (this.boneHeadPos != other.boneHeadPos && (this.boneHeadPos == null || !this.boneHeadPos.equals(other.boneHeadPos))) { return false;
public void mouseClicked(final MouseEvent _evt) { if (SwingUtilities.isLeftMouseButton(_evt)) { final Vector3f old = new Vector3f(vecteur_); final int x = _evt.getX(); final int y = _evt.getY(); switch (((Carre) _evt.getSource()).getMode()) { case 0: vecteur_.x = x - centreX_; vecteur_.z = y - centreY_; break; case 1: vecteur_.y = x - centreX_; vecteur_.z = y - centreY_; break; case 2: vecteur_.z = x - centreX_; vecteur_.x = y - centreY_; break; default: // TODO ajouter des instructions au cas "default" } repaint(); if (!old.equals(vecteur_)) { final Vector3f v = new Vector3f(-vecteur_.x, vecteur_.y, vecteur_.z); v.normalize(); pcs_.firePropertyChange("direction", old, v); } } }