示例#1
0
  public void set(Point2f pixel, Spectrum spectrum) {
    // update maximum
    if (!Helper.CLAMPING) {
      if (spectrum.r > max.r) max.r = spectrum.r;
      if (spectrum.g > max.g) max.g = spectrum.g;
      if (spectrum.b > max.b) max.b = spectrum.b;
    }
    // no values smaller than 0
    if (spectrum.r < 0) spectrum.r = 0;
    if (spectrum.g < 0) spectrum.g = 0;
    if (spectrum.b < 0) spectrum.b = 0;
    if (Helper.CLAMPING) {
      if (spectrum.r > 1) spectrum.r = 1;
      if (spectrum.g > 1) spectrum.g = 1;
      if (spectrum.b > 1) spectrum.b = 1;
    }
    this.image[(int) pixel.getX() - 1][(int) pixel.getY() - 1] = spectrum;

    if (Helper.SHOW_PROGRESS) {
      int i = (int) pixel.getX() - 1;
      int j = (int) pixel.getY() - 1;
      if (Helper.CLAMPING)
        this.img.setRGB(
            i,
            height - 1 - j,
            ((int) (255.f * this.image[i][j].r) << 16)
                | ((int) (255.f * this.image[i][j].g) << 8)
                | ((int) (255.f * this.image[i][j].b)));
      else
        this.img.setRGB(
            i,
            height - 1 - j,
            ((int) (255.f * this.image[i][j].r / max.r) << 16)
                | ((int) (255.f * this.image[i][j].g / max.g) << 8)
                | ((int) (255.f * this.image[i][j].b / max.b)));
    }
  }