← Back to team overview

kicad-developers team mailing list archive

Re: Re: Metric and English grids sizes.

 

viking632 escreveu:
> 
>
> --- In kicad-devel@xxxxxxxxxxxxxxx
> <mailto:kicad-devel%40yahoogroups.com>, jean-pierre charras - INPG
> <jean-pierre.charras@...> wrote:
> >
> > Unfortunately, grid size cannot be handled in decimils.
> > In pcbnew grid is handled as double.
> > This is because for many grids values in mm, using a value rounded in
> > decimils creates a cummulative error that can be important
> > (some mm for a 300 mm board)
> >
> > So grid sizes must be given
> > - always in inches or decimils but using a floating point value, for
> non
> > integer values as needed for metric grids
> > - or as an integer in decimils or um units and give the used unit
> (um ou
> > decimil) as parameter
> > --
> > Jean-Pierre CHARRAS
> > Maître de conférences
> > Directeur d'études 2ieme année.
> > Génie Electrique et Informatique Industrielle 2
> > Institut Universitaire de Technologie 1 de Grenoble
> > BP 67, 38402 St Martin d'Heres Cedex
> >
> > Recherche :
> > Grenoble Image Parole Signal Automatique (GIPSA - INPG)
> > Grenoble France
>
> Actually, the best internal unit to use in pcbnew would be nanometers
> (1nm = 0.001um = 0.000001mm), because then both grid size and all
> coordinates, both metric and imperial, could be expressed with 100%
> accuracy with integers.
>
> And we don't even need 64bit integers either - a 32bit signed integer
> would be able to hold coords (and grids) ranging up to +/-2.15 meters
> or +/-84.5 inches, which I think is enough for kicad :-)
>
> If 4.6 m^2 (49.6 foot^2) of board space isn't enough, use 10nm
> (centimicrons or decananometers :-) to get a 21.5m/845" coord range
> (460 m^2 or 273 yard^2), which surely must be enough for everyone ?-)
>
> 1 mm = 393.700787401... dmil (ugly and inaccurate)
> 1 inch = 25.4 mm = 25400 um = 25400000 nm
> 1 mm = 1000 um = 1000000 nm
> 1 mil = 0.0254 mm = 25.4 um = 25400 nm
> 1 dmil = 0.00254 mm = 2.54 um = 2540 nm
>
> The first conversion is the one that requires floats, and it will
> never ever be 100% accurate.
> All the others are simple and 100% accurate integer conversions:
>
> mm2nm(x) = 1000000*x
> dmil2nm(x) = 2540*x
>
> So, any metric value, down to 1nm (or 10nm) of precision, and any
> imperial value with dmil precision can be converted to nm (or 10nm ==
> 1cu == 1danm (*1)) without _any_ loss of accuracy.
>
> (*1) The use of multiple SI prefixes isn't actually allowed, but let's
> just bend the rules a little :-)
>
> Øyvind.
>
> ******************************************
> Quidquid latine dictum sit, altum viditur.
>

Indeed, you don't need even to go that deep, 100 nanometers is a common
denominator for both mils and micrometers:
1 mil = 25.4 um, so 1mil would be 254 * 100 nm and 1um = 10 * 100nm.

We could even use 200nm, but then it would be needed a 2x scaling.

It's all fault of that dreaded prime number: 127

One thing that annoys me is when I set a track width in mm and it
appears in mm but rounded up to the next mil. I would prefer that the
internal native units be metric and the imperial units be rounded.

Best regards,

Isaac

__________________________________________________
Faça ligações para outros computadores com o novo Yahoo! Messenger 
http://br.beta.messenger.yahoo.com/

 




Follow ups

References