private void calcRotatedPoint(float t, int i, boolean isPrecision) {
    tRaster[i] = t;
    double tPI = t * Math.PI;
    double xT = Math.sin(tPI) * cosTheta;
    double yT = Math.cos(tPI);
    double xR = radius * (xT * cosPhi - yT * sinPhi);
    double yR = radius * (xT * sinPhi + yT * cosPhi);
    double z2 = radius2 - (xR * xR + yR * yR);
    double zR = (z2 > 0 ? Math.sqrt(z2) : 0);

    if (isPrecision) {
      txRaster[i] = (float) xR;
      tyRaster[i] = (float) yR;
      tzRaster[i] = (float) zR;
    } else if (tEvenDiameter) {
      xRaster[i] = (int) (xR - 0.5);
      yRaster[i] = (int) (yR - 0.5);
      zRaster[i] = (int) (zR + 0.5);
    } else {
      xRaster[i] = (int) (xR);
      yRaster[i] = (int) (yR);
      zRaster[i] = (int) (zR + 0.5);
    }
    fp8IntensityUp[i] = Shade3D.calcFp8Intensity((float) xR, (float) yR, (float) zR);
  }