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
