@Override public void initShape() { super.initShape(); myType = "axes"; font3d = g3d.getFont3D(JmolConstants.AXES_DEFAULT_FONTSIZE); int axesMode = viewer.getAxesMode(); if (fixedOrigin == null) originPoint.set(0, 0, 0); else originPoint.set(fixedOrigin); if (axesMode == JmolConstants.AXES_MODE_UNITCELL && modelSet.getCellInfos() != null) { SymmetryInterface unitcell = viewer.getCurrentUnitCell(); if (unitcell != null && unitcell.haveUnitCell()) { Point3f[] vectors = unitcell.getUnitCellVertices(); Point3f offset = unitcell.getCartesianOffset(); if (fixedOrigin == null) { originPoint.set(offset); } else { offset = fixedOrigin; } scale = viewer.getAxesScale() / 2f; // We must divide by 2 because that is the default for ALL axis types. // Not great, but it will have to do. axisPoints[0].scaleAdd(scale, vectors[4], offset); axisPoints[1].scaleAdd(scale, vectors[2], offset); axisPoints[2].scaleAdd(scale, vectors[1], offset); return; } } else if (axesMode == JmolConstants.AXES_MODE_BOUNDBOX) { if (fixedOrigin == null) originPoint.set(viewer.getBoundBoxCenter()); } setScale(viewer.getAxesScale() / 2f); }