save all mesh coordinates as mm-ints to avoid floating point errors

This commit is contained in:
Laura Klünder 2017-11-14 02:49:02 +01:00
parent dd8d160a10
commit 73f27300ca
5 changed files with 54 additions and 46 deletions

View file

@ -83,8 +83,8 @@ class MapRenderer:
else:
levels = self.level_render_data.levels
min_altitude = float(min(chain(*(tuple(area.altitude for area in geoms.altitudeareas)
for geoms in levels)))) - 0.7
min_altitude = min(chain(*(tuple(area.altitude for area in geoms.altitudeareas)
for geoms in levels))) - int(0.7*1000)
for geoms in levels:
if not bbox.intersects(geoms.affected_area):
@ -105,8 +105,8 @@ class MapRenderer:
offset=min_altitude),
fill=FillAttribs('#aaaaaa'))
for altitudearea in geoms.altitudeareas:
bottom = float(altitudearea.altitude) - 0.7
scale = (bottom - min_altitude) / 0.7
bottom = altitudearea.altitude - int(0.7 * 1000)
scale = (bottom - min_altitude) / int(0.7 * 1000)
offset = min_altitude - bottom * scale
engine.add_geometry(altitudearea.geometry.fit(scale=scale, offset=offset).filter(top=False),
fill=FillAttribs('#aaaaaa'))