String getRotateXyzText() {
		StringBuffer sb = new StringBuffer();
		float m20 = matrixRotate.m20;
		float rY = -(float) Math.asin(m20) * degreesPerRadian;
		float rX, rZ;
		if (m20 > .999f || m20 < -.999f) {
			rX = -(float) Math.atan2(matrixRotate.m12, matrixRotate.m11) * degreesPerRadian;
			rZ = 0;
		}
		else {
			rX = (float) Math.atan2(matrixRotate.m21, matrixRotate.m22) * degreesPerRadian;
			rZ = (float) Math.atan2(matrixRotate.m10, matrixRotate.m00) * degreesPerRadian;
		}
		sb.append("reset");
		sb.append(";center " + getCenterText());
		if (rX != 0) {
			sb.append("; rotate x");
			truncate1(sb, rX);
		}
		if (rY != 0) {
			sb.append("; rotate y");
			truncate1(sb, rY);
		}
		if (rZ != 0) {
			sb.append("; rotate z");
			truncate1(sb, rZ);
		}
		sb.append(";");
		if (zoomPercent != 100) {
			sb.append(" zoom ");
			truncate1(sb, zoomPercent);
			sb.append(";");
		}
		float tX = getTranslationXPercent();
		if (tX != 0) {
			sb.append(" translate x ");
			sb.append(tX);
			sb.append(";");
		}
		float tY = getTranslationYPercent();
		if (tY != 0) {
			sb.append(" translate y ");
			sb.append(tY);
			sb.append(";");
		}
		return "" + sb;
	}