protected void updateLabel() { // draw numbers GeoAxis3D axis = (GeoAxis3D) getGeoElement(); NumberFormat numberFormat = axis.getNumberFormat(); double distance = axis.getNumbersDistance(); // Application.debug("drawMinMax="+getDrawMin()+","+getDrawMax()); double[] minmax = getDrawMinMax(); int iMin = (int) (minmax[0] / distance); int iMax = (int) (minmax[1] / distance); int nb = iMax - iMin + 1; // Application.debug("iMinMax="+iMin+","+iMax); if (nb < 1) { Application.debug("nb=" + nb); // labels = null; return; } // sets all already existing labels not visible for (DrawLabel3D label : labels.values()) label.setIsVisible(false); for (int i = iMin; i <= iMax; i++) { double val = i * distance; Coords origin = ((GeoCoordSys1D) getGeoElement()).getPoint(val); // draw numbers String strNum = getView3D().getKernel().formatPiE(val, numberFormat); // check if the label already exists DrawLabel3D label = labels.get(strNum); if (label != null) { // sets the label visible label.setIsVisible(true); label.update( strNum, 10, getGeoElement().getObjectColor(), origin.copyVector(), axis.getNumbersXOffset(), axis.getNumbersYOffset()); // TODO optimize this } else { // creates new label label = new DrawLabel3D(getView3D()); label.setAnchor(true); label.update( strNum, 10, getGeoElement().getObjectColor(), origin.copyVector(), axis.getNumbersXOffset(), axis.getNumbersYOffset()); labels.put(strNum, label); } } // update end of axis label label.update( ((GeoAxis3D) getGeoElement()).getAxisLabel(), 10, getGeoElement().getObjectColor(), ((GeoCoordSys1D) getGeoElement()).getPoint(minmax[1]), axis.labelOffsetX - 4, axis.labelOffsetY - 6); }