Example #1
0
 public Float3 subFloat3() {
   Float3 v = new Float3();
   v.z = subF32();
   v.y = subF32();
   v.x = subF32();
   return v;
 }
Example #2
0
 private static void addSlices(World world, Float3 f) {
   int nx = f.getN3();
   int ny = f.getN2();
   int nz = f.getN1();
   double dx = 1.0;
   double dy = 1.0;
   double dz = 1.0;
   double fx = 0.0;
   double fy = 0.0;
   double fz = 0.0;
   double lx = fx + (nx - 1) * dx;
   double ly = fy + (ny - 1) * dy;
   double lz = fz + (nz - 1) * dz;
   Sampling sx = new Sampling(nx, dx, fx);
   Sampling sy = new Sampling(ny, dy, fy);
   Sampling sz = new Sampling(nz, dz, fz);
   Point3 qmin = new Point3(fx, fy, fz);
   Point3 qmax = new Point3(lx, ly, lz);
   Axis[] axes = new Axis[] {Axis.X, Axis.Y, Axis.Z};
   for (int iaxis = 0; iaxis < axes.length; ++iaxis) {
     AxisAlignedQuad aaq = new AxisAlignedQuad(axes[iaxis], qmin, qmax);
     AxisAlignedFrame aaf = aaq.getFrame();
     ImagePanel ip = new ImagePanel(sz, sy, sx, f);
     ip.setColorModel(ColorMap.GRAY);
     System.out.println("clip min=" + ip.getClipMin() + " max=" + ip.getClipMax());
     aaf.addChild(ip);
     world.addChild(aaq);
   }
 }
Example #3
0
  private void updateClips() {
    if (_clipsDirty && _usePercentiles) {
      boolean clipsComputed = false;

      // If we just need min and max values, ...
      if (_percMin == 0.0f && _percMax == 100.0f) {
        if (_f instanceof float[]) {
          float[] a = (float[]) _f;
          _clipMin = min(a);
          _clipMax = max(a);
          clipsComputed = true;
        } else if (_f instanceof float[][]) {
          float[][] a = (float[][]) _f;
          _clipMin = min(a);
          _clipMax = max(a);
          clipsComputed = true;
        } else if (_f instanceof float[][][]) {
          float[][][] a = (float[][][]) _f;
          _clipMin = min(a);
          _clipMax = max(a);
          clipsComputed = true;
        } else if (_f instanceof Float3) {
          Float3 f3 = (Float3) _f;
          int n1 = f3.getN1();
          int n2 = f3.getN2();
          int n3 = f3.getN3();
          float[][] a = new float[n2][n1];
          for (int i3 = 0; i3 < n3; ++i3) {
            f3.get12(n1, n2, 0, 0, i3, a);
            _clipMin = min(_clipMin, min(a));
            _clipMax = max(_clipMax, max(a));
          }
          clipsComputed = true;
        }
      }

      // Else if we must compute percentiles, ...
      else {
        float[] a = null;
        if (_f instanceof float[]) {
          a = copy((float[]) _f);
        } else if (_f instanceof float[][]) {
          a = flatten((float[][]) _f);
        } else if (_f instanceof float[][][]) {
          a = flatten((float[][][]) _f);
        } else if (_f instanceof Float3) {
          Float3 f3 = (Float3) _f;
          int n1 = f3.getN1();
          int n2 = f3.getN2();
          int n3 = f3.getN3();
          a = new float[n1 * n2 * n3];
          f3.get123(n1, n2, n3, 0, 0, 0, a);
        }
        if (a != null) {
          int n = a.length;
          int kmin = (int) rint(_percMin * 0.01 * (n - 1));
          if (kmin <= 0) {
            _clipMin = min(a);
          } else {
            quickPartialSort(kmin, a);
            _clipMin = a[kmin];
          }
          int kmax = (int) rint(_percMax * 0.01 * (n - 1));
          if (kmax >= n - 1) {
            _clipMax = max(a);
          } else {
            quickPartialSort(kmax, a);
            _clipMax = a[kmax];
          }
          clipsComputed = true;
        }
      }

      // If clips were computed, make them valid and not dirty.
      if (clipsComputed) {
        makeClipsValid();
        _clipsDirty = false;
      }
    }
  }