simplify formula to make it more numerically stable

This commit is contained in:
Tim Kuipers 2019-10-25 10:36:20 +02:00
parent 8a963a0c4e
commit 76a538322d

View file

@ -130,7 +130,7 @@ class ImageReader(MeshReader):
if use_transparency_model: if use_transparency_model:
p = 1.0 / math.log(transmittance_1mm / 100.0, 2) # base doesn't matter here. use base 2 for fast computation p = 1.0 / math.log(transmittance_1mm / 100.0, 2) # base doesn't matter here. use base 2 for fast computation
min_luminance = 2.0 ** ((peak_height - base_height) / p) min_luminance = (transmittance_1mm / 100.0) ** (peak_height - base_height)
for (y, x) in numpy.ndindex(height_data.shape): for (y, x) in numpy.ndindex(height_data.shape):
mapped_luminance = min_luminance + (1.0 - min_luminance) * height_data[y, x] mapped_luminance = min_luminance + (1.0 - min_luminance) * height_data[y, x]
height_data[y, x] = base_height + p * math.log(mapped_luminance, 2) # use same base as a couple lines above this height_data[y, x] = base_height + p * math.log(mapped_luminance, 2) # use same base as a couple lines above this