def add_gaussian(self, location, width, height):
r"""Add a Gaussian distribution to the transfer function.
Typically, when rendering isocontours, a Gaussian distribution is the
easiest way to draw out features. The spread provides a softness.
The values are calculated as :math:`f(x) = h \exp{-(x-x_0)^2 / w}`.
Parameters
----------
location : float
The centroid of the Gaussian (:math:`x_0` in the above equation.)
width : float
The relative width (:math:`w` in the above equation.)
height : float
The peak height (:math:`h` in the above equation.) Note that while
values greater 1.0 will be accepted, the values of the transmission
function are clipped at 1.0.
Examples
--------
>>> tf = TransferFunction( (-10.0, -5.0) )
>>> tf.add_gaussian(-9.0, 0.01, 1.0)
"""
vals = height * np.exp(-(self.x - location)**2.0/width)
self.y = np.clip(np.maximum(vals, self.y), 0.0, np.inf)
self.features.append(('gaussian', "location(x):%3.2g" % location,
"width(x):%3.2g" % width, "height(y):%3.2g" % height))
评论列表
文章目录