On 2020/04/19 22:35:39, dak wrote: > On 2020/04/19 21:43:26, hanwenn wrote: > > (this still needs some work, but the speedup might be worth an early look) > > * Buildings store Y coordinate of the left edge, rather than the > intercept at x==0.0. This avoid excessive rounding problems when X > is large, and lets us compute building.height_at(x[LEFT]) cheaply. > > Since intercept computation order depends on the execution of the merge > algorithm and we use floating point arithmetic rather than fixed point, this > would make results a lot less reproducible.
Hmm, OK. You say "a lot less". Did we measure this, and is this an important characteristic of the code? > I understand the sentiment and thought about it as well, but it would only work > if the _original_ coordinates were retained even after intersection and > additional intersections still worked based on the original coordinates, making > the merge order (mostly) irrelevant with regard to error propagation. FWIW, I want to reduce the precision of the outlines anyway (because they are way more detailed than necessary), and that is going introduce much larger errors than propagated errors. https://codereview.appspot.com/547980044/