public Float3 subFloat3() { Float3 v = new Float3(); v.z = subF32(); v.y = subF32(); v.x = subF32(); return v; }
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); } }
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; } } }