MacPerspective translator

MacPerspective was a 3D perspective drawing program developed by Knick Drafting
for the Apple Macintosh computer in the mid-1980s. It featured an intuitive system for creating "wireframe" drawings by specifying the X, Y, and Z coordinates of lines to be drawn on the screen.

This MacPerspective Translator utility takes a native MacPerspective
model file and converts the geometric information into a file format
suitable for exporting to other 3D modelling packages.

Note: to transfer views of a model into a 2D package use the Copy to
Clipboard option inside MacPerspective. This is particularly useful for
transferring a 2D view of the model into ClarisCAD for plotting.

Operation

The basic way of translating a model is to open a MacPerspective file and
then "export" to the format of your choice. After opening a model you can
use this program to view it from various angles, this is useful for model
checking purposes. The export formats are selected under the option menu.

This program is continually being "touched up", and thus it is not
appropriate to comment on the exact contents of the options menu,
explore for yourself.

During the translation various parameters as well as the progress status
are displayed. Of particular interest are the number of duplicate edges
removed and the number of each type of geometric element saved which is
displayed at the end of the exporting process. The number of 3 and 4 point
facets are shown as well as the number of lone edges. Lone edges are the
number of edges which did not form part of a facet and give an indication of
how complete the specification of planes has been.

File format

The binary file is organised as follows.
There is a 2 byte header that gives the number of vertices as a short int. Actually
it is the number of vertices-1. There is a single byte footer that always seems to
have a value of 1.

The vertex data is split into three, first all the x coordinates, then the y, then
the z. The first three vertices are handled differently to the rest. The first is
the camera position, the second the focal point, and the third the current point.
Following these three are the vertices making up the model.

Each vertex is a long int (4 bytes) with the origin located at 200,000,000. A line
is drawn from the last vertex to the current vertex unless the value is negative, this
corresponds to a "pen up". The vertices are converted to floating point vertices
as follows:

newnumber = ( ABS(number) - 200,000,000 ) / scalingfactor

Typical scaling factor is 5000, I think this is close to making the units m.