I think that Pat Naughtin's four approaches are inadequate to describe the 
metrication of software. Here are some approaches I've seen or considered:
1. Store data internally in non-metric units, and don't have any way of 
dealing with metric units.
This is the approach used by my boss, who wrote his own surveying package in 
AutoCAD. Everything is in feet, and there is no way to specify a scale that's 
not a multiple of 12, enter a distance in meters, or label the drawing in 
meters.
2. Store data internally in non-metric units and let the user specify an 
arbitrary scale factor.
This is the approach used in PostScript. Everything is in points by default, 
but you can specify a scale, which has to be repeated on every page.
3. Store data internally in non-metric units and let the user specify the 
unit.
4. Store data internally in metric units, and don't have any way of dealing 
with non-metric units.
Programs like this aren't easy to use until metrication is completed.
5. Store data internally in metric units, and let the user specify an 
arbitrary scale factor.
6. Store data internally in metric units, and let the user specify the unit.
This is the way I do it. You enter 70 mm and it stores 0.07. You enter 5 in 
and it stores 0.127.
7. Store data internally in either unit, with no indication of what unit 
they're in.
This is the approach used in the CR5 file, a binary file containing 
coordinates of points measured in surveying. There is a number I didn't 
figure out the meaning of, but it's not the measuring unit. It tells the 
reader whether to expect that the points are consecutively numbered. This 
approach is guaranteed to cause errors and ought to be avoided.
8. Store data internally in either unit, along with an indication of what unit 
they're in.
This is the approach used in 3D Home Deluxe. You can design a house in inches 
or in millimeters, but there's no way to design a house with inch modules and 
see the dimensions in millimeters.

There are sub-approaches of these. In approach 6, you can use coherent units, 
or you can have conversion factors in the calculations. 0x3e8 is not a round 
number to a computer, so I use coherent units.

phma

Reply via email to