protected void selectPoint(double[] point) {

    if (!isSet || (this.dim != 2 && this.dim != 3)) {
      logger.info("Point was picked with no useable Fundamental Region.");
      return;
    }

    logger.info("Selected Point (" + point[0] + "," + point[1] +
        (this.dim == 3 ? "," + point[2] : "") + ")");

    if (!isSet) return;

    // Maybe the view is translated or smt
    // point = Rotate * point - translation

    // Recalculate to Unitsphere on dim+1 dimensions
    // Only take the first dim components
    double[] selComp = viewerPointToFundamentalPoint(point);
    double[] resP = this.fundamental.revertPoint(selComp);
    
    resP = PointUtil.mult(this.scale, resP);

    logger.fine("Scale: " + this.scale + ", point : " +
        PointUtil.showPoint(resP));
    
    // Fire Event, that the coordinate changed
    if (dim == 2) {
      this.dispatcher.fireEvent(new ChangeCoordinate3DPointEvent(
          JRealityUtility.asPoint3D(resP), this));
      // if (responsive)
      this.dispatcher.fireEvent(new Schlegel3DComputeEvent(
          lastSymmetry3DChooseEvent, JRealityUtility.asPoint3D(resP)));
    }
    else if (dim == 3) {
      this.dispatcher.fireEvent(new ChangeCoordinate4DPointEvent(
          JRealityUtility.asPoint4D(resP), this));
      // if (responsive)
      this.dispatcher.fireEvent(new Schlegel4DComputeEvent(
          lastSymmetry4DChooseEvent, JRealityUtility.asPoint4D(resP)));

    }
  }