Hi Steve,

I thought 32 should be used without rounding.
If direct == path, we don't have to encode curve data,
so the ratio should always be < 32.

Anyhow, none of the formulas I tried shows no error
when using  NodCheck on Garmin maps.

Gerd

> From: steve@parabola.me.uk
> Date: Wed, 12 Feb 2014 16:40:27 +0000
> To: mkgmap-dev@lists.mkgmap.org.uk
> Subject: Re: [mkgmap-dev] [Patch v1] curve bytes
>
>
>
> .
> >How sure are you about these threshold values in NodCheck?
> > double v = 30.0;
> > int calcRatio = (int) Math.round(v * direct / path) & 0x1f;
> > if (calcRatio > 26)
> > calcRatio = 0;
>
> I found v=32 gave a good match and 30 a better one , but thinking about it, away from the computer, I guess that 31 is the logical value to use.
> The Max value of the ratio is 1, so 31 would never overflow the 5 bits.
>
> There does seem to be a cap on the Max value seen, although it may be variable. I suspect it doesn't matter that much.
>
> >
> >
> >Hi Steve,
> >
> >yes, I just found this as well. The remaining errors all have ratio =
> >7, looking at this now.
> >
> >Gerd
> >
> >> Date: Wed, 12 Feb 2014 13:37:43 +0000
> >> From: steve@parabola.me.uk
> >> To: mkgmap-dev@lists.mkgmap.org.uk
> >> Subject: Re: [mkgmap-dev] [Patch v1] curve bytes
> >>
> >> On 12/02/14 10:46, Gerd Petermann wrote:
> >> > @@ -80,22 +88,27 @@
> >> > this.roadDef = roadDef;
> >> > this.source = source;
> >> > this.dest = dest;
> >> > - this.initialHeading = initialHeading;
> >> > - this.finalHeading = finalHeading;
> >> > - this.length = convertMeters(length);
> >> > + this.initialHeading = (float) initialBearing;
> >> > + this.finalHeading = (float) finalBearing;
> >> > + this.directHeading = (float) directBearing;
> >> > + this.length = convertMeters(length);
> >> > this.curveEnabled = curveEnabled;
> >> > this.pointsHash = pointsHash;
> >> > + int encodedDirectLength =
> >convertMeters(source.getCoord().distance(dest.getCoord()));
> >> > +
> >> > + lengthRatio = (byte) ((int)Math.round(32.0 * encodedDirectLength
> >/ length) & 0x1f);
> >>
> >> This (above) should use this.length, not length
> >>
> >> > + haveCurve = curveEnabled && lengthRatio > 0;
> >> > }
> >>
> >> That fix makes leaves me with just a small number of ratio errors.
> >>
> >> ..Steve
> >> _______________________________________________
> >> mkgmap-dev mailing list
> >> mkgmap-dev@lists.mkgmap.org.uk
> >> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
> >
> >
> >_______________________________________________
> >mkgmap-dev mailing list
> >mkgmap-dev@lists.mkgmap.org.uk
> >http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
> >
> >------------------------------------------------------------------------
> >
> >_______________________________________________
> >mkgmap-dev mailing list
> >mkgmap-dev@lists.mkgmap.org.uk
> >http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev
>
> _______________________________________________
> mkgmap-dev mailing list
> mkgmap-dev@lists.mkgmap.org.uk
> http://www.mkgmap.org.uk/mailman/listinfo/mkgmap-dev