Package ca.eandb.jmist.framework.color

Examples of ca.eandb.jmist.framework.color.ColorModel


   * @return A <code>Color</code> whose channel values represent the
   *     reflectances at the interface.
   * @see ca.eandb.jmist.math.Vector3#opposite()
   */
  public static Color reflectance(Vector3 in, Color n1, Color n2, Vector3 normal) {
    ColorModel colorModel = n1.getColorModel();
    WavelengthPacket lambda = n1.getWavelengthPacket();

    double[] n1d = n1.toArray();
    double[] n2d = n2.toArray();

    for (int i = 0; i < n1d.length; i++) {
      n1d[i] = Optics.reflectance(in, n1d[i], n2d[i], normal);
    }

    return colorModel.fromArray(n1d, lambda);
  }
View Full Code Here


   * @return A <code>Color</code> whose channel values represent the
   *     reflectances at the interface.
   * @see ca.eandb.jmist.math.Vector3#opposite()
   */
  public static Color reflectance(Vector3 in, Color n1, Color k1, Color n2, Color k2, Vector3 normal) {
    ColorModel colorModel = n1.getColorModel();
    WavelengthPacket lambda = n1.getWavelengthPacket();

    double[] n1d = n1.toArray();
    double[] k1d = k1 != null ? k1.toArray() : null;
    double[] n2d = n2.toArray();
    double[] k2d = k2 != null ? k2.toArray() : null;

    for (int i = 0; i < n1d.length; i++) {
      n1d[i] = Optics.reflectance(in,
          new Complex(n1d[i], k1d != null ? k1d[i] : 0.0),
          new Complex(n2d[i], k2d != null ? k2d[i] : 0.0),
          normal);
    }

    return colorModel.fromArray(n1d, lambda);
  }
View Full Code Here

   * @see ca.eandb.jmist.framework.material.AbstractMaterial#scatter(ca.eandb.jmist.framework.SurfacePoint, ca.eandb.jmist.math.Vector3, ca.eandb.jmist.framework.color.WavelengthPacket, ca.eandb.jmist.framework.Random, ca.eandb.jmist.framework.ScatteredRayRecorder)
   */
  @Override
  public ScatteredRay scatter(SurfacePoint x, Vector3 v, boolean adjoint, WavelengthPacket lambda, double ru, double rv, double rj) {

    ColorModel  cm      = lambda.getColorModel();
    Point3    p      = x.getPosition();
    Medium    medium    = x.getAmbientMedium();
    Color    n1      = medium.refractiveIndex(p, lambda);
    Color    k1      = medium.extinctionIndex(p, lambda);
    Color    n2      = n.sample(lambda);
    Color    k2      = k.sample(lambda);
    Vector3    normal    = x.getShadingNormal();
    boolean    fromSide  = x.getNormal().dot(v) < 0.0;
    Color    R      = MaterialUtil.reflectance(v, n1, k1, n2, k2, normal);
    Color    T      = cm.getWhite(lambda).minus(R);
    double    r      = ColorUtil.getMeanChannelValue(R);

    if (RandomUtil.bernoulli(r, rj)) {
      Vector3    out    = Optics.reflect(v, normal);
      boolean    toSide  = x.getNormal().dot(out) >= 0.0;
View Full Code Here

   * @see ca.eandb.jmist.framework.Shader#shade(ca.eandb.jmist.framework.ShadingContext)
   */
  public Color shade(ShadingContext sc) {

    WavelengthPacket lambda = sc.getWavelengthPacket();
    ColorModel cm = sc.getColorModel();

    Color kd = diffuse.getColor(sc, lambda);
    Color ks = specular.getColor(sc, lambda);
    Color ka = ambient.getColor(sc, lambda);
    Color n = exponent.getColor(sc, lambda);

    Vector3 N = sc.getShadingNormal();
    Vector3 V = sc.getIncident().opposite();

    Color d = cm.getBlack(lambda);
    Color s = d;
    Color a = sc.getAmbientLight();

    for (LightSample sample : sc.getLightSamples()) {
      Vector3 L = sample.getDirToLight();
      Vector3 H = L.plus(V).unit();
      Color I = sample.getRadiantIntensity();

      d = d.plus(I.times(N.dot(L)));
      s = s.plus(I.times(cm.getGray(N.dot(H), lambda).pow(n)));
    }

    d = d.times(kd);
    s = s.times(ks);
    a = a.times(ka);
View Full Code Here

  /* (non-Javadoc)
   * @see ca.eandb.jmist.framework.ShadingContext#getAmbientLight()
   */
  public Color getAmbientLight() {
    WavelengthPacket lambda = getWavelengthPacket();
    ColorModel colorModel = lambda.getColorModel();
    return colorModel.getBlack(lambda);
  }
View Full Code Here

  /* (non-Javadoc)
   * @see ca.eandb.jmist.framework.RayShader#shadeRay(ca.eandb.jmist.math.Ray3, ca.eandb.jmist.framework.color.WavelengthPacket)
   */
  public Color shadeRay(Ray3 ray, WavelengthPacket lambda) {
    Intersection x = NearestIntersectionRecorder.computeNearestIntersection(ray, root);
    ColorModel cm = lambda.getColorModel();

    return (x != null) ? cm.getGray(x.getDistance(), lambda) : (missValue != null) ? missValue.sample(lambda) : cm.getBlack(lambda);
  }
View Full Code Here

   * @see ca.eandb.jmist.framework.material.AbstractMaterial#scatter(ca.eandb.jmist.framework.SurfacePoint, ca.eandb.jmist.math.Vector3, boolean, ca.eandb.jmist.framework.color.WavelengthPacket, double, double, double)
   */
  @Override
  public ScatteredRay scatter(SurfacePoint x, Vector3 v, boolean adjoint, WavelengthPacket lambda, double ru, double rv, double rj) {

    ColorModel  cm      = lambda.getColorModel();
    Point3    p      = x.getPosition();
    Medium    medium    = x.getAmbientMedium();
    Color    n1      = medium.refractiveIndex(p, lambda);
    Color    k1      = medium.extinctionIndex(p, lambda);
    Color    n2      = refractiveIndex.sample(lambda);
    Vector3    normal    = x.getShadingNormal();
    boolean    fromSide  = x.getNormal().dot(v) < 0.0;
    Color    R      = MaterialUtil.reflectance(v, n1, k1, n2, null, normal);
    Color    T      = cm.getWhite(lambda).minus(R);
    double    r      = ColorUtil.getMeanChannelValue(R);

    if (RandomUtil.bernoulli(r, rj)) {
      Vector3    out    = Optics.reflect(v, normal);
      boolean    toSide  = x.getNormal().dot(out) >= 0.0;
View Full Code Here

  /* (non-Javadoc)
   * @see ca.eandb.jmist.framework.Texture2#evaluate(ca.eandb.jmist.math.Point2, ca.eandb.jmist.framework.color.WavelengthPacket)
   */
  @Override
  public Color evaluate(Point2 p, WavelengthPacket lambda) {
    ColorModel cm = lambda.getColorModel();
    if (gamutMask.opacity(p) > 0.5) {
      CIEXYZ xyz = new CIExyY(p.x(), p.y(), p.y()).toXYZ();
      return cm.fromXYZ(xyz).sample(lambda);
    } else {
      return cm.getBlack(lambda);
    }
  }
View Full Code Here

    double    v    = 1.0 - (p.y() - Math.floor(p.y()));
    int      w    = picture.getSizeX();
    int      h    = picture.getSizeY();
    int      x    = MathUtil.clamp((int) Math.floor(u * (double) w), 0, w - 1);
    int      y    = MathUtil.clamp((int) Math.floor(v * (double) h), 0, h - 1);
    ColorModel  cm    = lambda.getColorModel();

    switch (picture.getFormat()) {
      case RGBE:
        return cm.fromRGB(picture.getPixelRGB(x, y)).sample(lambda);
      case XYZE:
        return cm.fromXYZ(picture.getPixelXYZ(x, y)).sample(lambda);
      default:
        return cm.getBlack(lambda);
    }

  }
View Full Code Here

   */
  @Override
  public void initialize() {
    this.results = new ColorSensorArray[wavelengths.length * incidentAngles.length * specimens.length];
    for (int i = 0; i < this.results.length; i++) {
      ColorModel colorModel = this.getWavelength(i).getColorModel();
      this.results[i] = new ColorSensorArray(worker.collector.sensors(), colorModel);
      maxChannels = Math.max(maxChannels, colorModel.getNumChannels());
    }
  }
View Full Code Here

TOP

Related Classes of ca.eandb.jmist.framework.color.ColorModel

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.