x
with type
equal to responsivity.material
.
The set of all possible material reflectance functions (or transmittance functions)
is convex, closed, and bounded (in any reasonable function space),
and this implies that the set of all possible output responses
from x
is also convex, closed, and bounded.
The latter set is called the object-color solid or Rösch Farbkörper for x
.
A color on the boundary of the object-color solid is called an optimal color.
The special points W (the response to the perfect reflecting diffuser)
and 0 are on the boundary of this set.
The interior of the line segment of neutrals joining 0 to W is in the interior of the
object-color solid.
It is natural to parameterize this segment from 0 to 1 (from 0 to W).
A ray $r$ that is based at a point on the interior of the neutral line segment
must intersect the boundary of the object-color solid in a unique optimal color.
The purpose of the function probeOptimalColors()
is to compute that intersection point.
The function only works as stated if:
x
is 3 (e.g. RGB or XYZ)x
is convex and well-ordered (no reversals)probeOptimalColors()
computes Schrödinger object colors.## S3 method for class 'colorSpec':
probeOptimalColors( x, gray, direction, tol=1.e-6, aux=FALSE )
type
equal to responsivity.material
and 3 spectraprobeOptimalColors
returns a data.frame
with a row for each traced ray.
There are length(gray)
* ncol(direction)
rays.
The columns in the output are:delta
and omega
- the Logvinenko parameters $(\delta,\omega)$ for optimal colors, plus lambda
in nm.
$\omega$ is the reparameterization of $\lambda$ ; see Referencestol
NA
in appropriate columns.
In case of global error, the function returns NULL
.length(gray)
* ncol(direction)
.
The intersection problem is reduced to a 2-dimension root finding problem
which is solved using Newton's Method.
The initial estimate is found by precomputing a fine quadrilateral mesh
over the optimal colors.
The responsivity functions may be negative,
but may not all simultaneously vanish at any wavelength.
In that case the mapping from the $\omega$ and $\delta$ sphere
to the output response space is not injective.type
,
vignette optimals