diff options
| author | Arne Dußin | 2020-11-01 20:48:05 +0100 |
|---|---|---|
| committer | Arne Dußin | 2020-11-01 20:48:05 +0100 |
| commit | 678406b21c14af2d1f1bd955368637f83f049011 (patch) | |
| tree | d9d9e46c61176fb6542aa4d4550f66877078c830 /src/transform.rs | |
| parent | 09ffb11f07e964fc1232a49047746afa3b92dd81 (diff) | |
| download | graf_karto-678406b21c14af2d1f1bd955368637f83f049011.tar.gz graf_karto-678406b21c14af2d1f1bd955368637f83f049011.zip | |
Make zoom-levels whole numbers to combat round-err
The grid was offset at certain zoom-levels and lower positions, so for
now I just made only whole zoom-levels possible, which removes the
offset. However, I consider this a band-aid-solution. Maybe change from
f32 to f64 and try out if that fixes it? Otherwise, a different
algorithm might work.
Diffstat (limited to 'src/transform.rs')
| -rw-r--r-- | src/transform.rs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/transform.rs b/src/transform.rs index f44888b..ca359f0 100644 --- a/src/transform.rs +++ b/src/transform.rs @@ -6,7 +6,7 @@ use crate::math::{Rect, Vec2}; const STANDARD_PIXELS_PER_M: f32 = 64.; -const MIN_PIXELS_PER_M: f32 = 0.5; +const MIN_PIXELS_PER_M: f32 = 5.; const MAX_PIXELS_PER_M: f32 = 10_000.; pub struct Transform { @@ -82,6 +82,11 @@ impl Transform { * pass the standard zoom factor. */ fn normalise_zoom(&mut self) { + self.pixels_per_m = self.pixels_per_m as u32 as f32; + if self.pixels_per_m < MIN_PIXELS_PER_M { + self.pixels_per_m = MIN_PIXELS_PER_M; + } + if self.pixels_per_m > STANDARD_PIXELS_PER_M - 5. && self.pixels_per_m < STANDARD_PIXELS_PER_M + 5. { |
