home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C!T ROM 2
/
ctrom_ii_b.zip
/
ctrom_ii_b
/
PROGRAM
/
PASCAL
/
3DLIB20
/
3DLIB.DOC
< prev
next >
Wrap
Text File
|
1993-06-03
|
23KB
|
447 lines
╔══════════════════════════════════════════════════════════════════════════╗
║ ║
║ ISoft D&M ║
║ POB. 5517 ║
║ Coralville IA 52241 ║
║ U.S.A ║
║ ║
╚══════════════════════════════════════════════════════════════════════════╝
*******************************************************************************
* 3dLIB *
* 3dLIB - 3D Graphic objects library for Turbo-Pascal Programmers. V2.0 *
* Last Update : Jun. 03, 1992. *
*******************************************************************************
*******************************************************************************
* FILE - LIST *
*******************************************************************************
The distribution package contains the following files :
* .PAS - Pascal sources :
CTM3D .PAS - Current Transformation Matrix definition.
PROJECT3.PAS - Projection (3D -> 2D) unit.
HDR3D .PAS - Header to 3D structures.
RTOBJ .PAS - 3D Wire-Mesh objects.
DEMO3D .PAS - A demo program - Dos.
DEMO3DW .PAS - A demo program - Windows.
* .3D2 - Demo OBJ3D Type object files :
3 .3D2 - A 3 dimensional "3" character.
BOX .3D2 - A 3D box.
D .3D2 - A 3 dimensional "d" character.
PROP .3D2 - A 3D Propeller.
PYR .3D2 - A Pyramid.
SUPROP .3D2 - Another 3D Propeller.
TRAP .3D2 - A 3D Trapeze.
TWOLAYER.3D2 - Demo 3DO defined object.
* .3DS - Demo ComplexObj type object files.
BIMBO .3DS
HOUSE .3DS - A Very bad example of a house.
INMID .3DS
MASHPECH.3DS
MYTEST .3DS
TWOBOX .3DS - 2 Boxes Object.
TWOEDGE .3DS
TWOPYR .3DS - 2 Pyramids.
* .3DD - Demo object definition files.
TWOLAYER.3DD - Two Layers - one above the other.
TWOPYR .3DD - The Two Pyramids Complex Object Src.
3DLIB .DOC - This file.
3DC .EXE - M3D to PAS source file translator. (DOS).
3DCW .EXE - Windows Hosted MDI M3D to PAS generator, and animator.
3DC .DOC - 3dC translator documentation.
3DA .EXE - 3dA Macro Animator (Interpreter) for the Dos environment.
3DO .EXE - 3dO object compiler - Dos.
3DO .DOC - 3dO object compiler documentation.
* .M3D - Sample macro programs.
3DEMO .M3D - Rotating '3' and 'D' objects.
BOX3MV .M3D - Spirale Box.
BUG .M3D - An old macro that once helped me to
debug some of the 3D code.
CLC .M3D
FOXTROT .M3D - Named after the Genesis album (Why?)
INTEGV .M3D - A Nice macro.
KUKU .M3D
NEWDEMO .M3D - A Long macro.
PYR3MV .M3D - Same as BOX3MV but with a pyramid.
PYRMOV .M3D
PYRTYP .M3D
R2D2 .M3D
SUPERBOX.M3D - A box that "moves" in space..
TST .M3D
TWOBOXMV.M3D - A ComplexObject animated.
ZOOZO .M3D
DEMO3D .EXE - Demo 3d animation program - Dos.
DEMO3DW .EXE - Demo 3d animation program - Windows.
PROGRAMS.TXT - ISoft D&M shareware products description.
3DLIB .REG - 3dLIB registration file.
3DLIB .RES - 3dLIB resource file for windows programs.
3DCW .HLP - 3dCW online windows help file.
EGAVGA .BGI - BGI driver for EGA/VGA.
3DLIB .TPH - A BP IDE/THELP 3dLib online help.
BWCC .DLL - Borland Windows Custom Controls DLL, Used by 3dCW
*******************************************************************************
* Why Register *
*******************************************************************************
3dLIB is a shareware product, if you find this product valuable,
please register it. This section describes the reasons you should register.
By registering you will receive a diskette with the latest 3dLIB version,
the 3d environment program, for WYSIWYG object creation, the complete source
code for the 3d environment program, and - you will help us to create the next
version of 3dLIB - that will include even more features than the features that
are currently available!, we might even add YOUR enhancement requests!
*******************************************************************************
* What's New *
*******************************************************************************
Version 2.0 -
Added the Animate button to the 3dCW program toolbar.
Added the Background BMP toggle option to the 3dCW Options menu.
Added the floating Tools child window to macro editor windows, just click
on the desired tool to get a command dialog box that will be inserted into
the source text. (And you thought it can't be easier .. ).
The 3d simple object was updated to use Collections, so the number of points
and lines is not limited to the size that was decided when the library was
compiled. Please notice - the format of the .3d2 and .3ds files was not
changed in order to maintain compatiablity with older objects. It should
be noted that the objects API (Methods calling conventions) was not
changed as well. The only difference is in the implementation of the
3d objects. (It does pay to play by the OOPS rules after all ..).
Becasue of this change the 3d library can support large and small objects
at the same time with no practical overhead.
Added the 3DLIB.TPH online file, use this file from within the BP IDE or
THELP for 3dLib online help.
====
In version 1.7 the help facility of the 3dCW program can be activated from
the menu, not just from the toolbar.
From this version the extremly important feature of having the author's
picture in the background of the 3dCW program is added. In this picture the
author is seen in his Alfa-Romeo Spider 2000. Admit it - this is a feature
no other 3d graphic library (how many are there?) can offer you.
The Options|Text Color option in the 3dCW program now works properly.
The help database was extended, and received usefull titles in this
version.
The 3dCW program was converted to work with Borland's BWCC DLL.
Added Help|Using help option in the 3dCW program.
The 3dO object compiler now supports the creation of complex objects, as
well as simple objects. (Added a complexObject statement to the 3DD langauge).
The SimpleObject statement of the 3DD langauge (3dO object compiler..) now has
a new optional parameter - NOGEN.
====
In version 1.6 3dCW users can set the font of the edit window.
The Dos and Windows source library files are combined, and only the
different parts are seperated by {$ifdef}s (conditional compiles).
Added support for BP7, and upgraded the utilities to BP7.
3dCW was converted to be a MDI program, with the goodies of a toolbar, etc.
The 'w' and 'b' are handled as they should be in the 3dCW animator from
this version. (A bug fix).
Added the 3dO object compiler program, that helps with the creation of
3d objects from object definition files described in the new object
definition language. (please refer to 3DO.DOC).
====
In version 1.5 the 3dC and 3dCW programs generate a getClassName function
for the generated windows.
Added Animate Command to the 3dCW program, this way macros can be prototyped
before they are translated into source code.
====
Version 1.4 adds the 3dA program - an animator for .M3D macro programs,
in the dos Environment.
Version 1.4 also adds the Windows Hosted 3dCW program - A macro translator
that runs in the Windows environment.
This version was tested with Turbo Pascal for Windows V1.5 .
====
Version 1.3 adds the 3dLIB.RES resource file for use in Windows programs
generated by the 3DC program.
3dC generated programs include a menu that allows them to be re-animated and
closed.
====
Version 1.2 adds support for Turbo Pascal for Windows programmers by including
a second set of pascal code sources for this compiler.
The supplied 3dC macro compiler has been enhanced to produce code for both
compilers, by using a switch on the command line. Please notice - The
same macro source files can be translated into Turbo Pascal 6.0 and
Turbo Pascal for Windows code, with no change in the macro definition!
The supplied 3dC macro compiler implemented the z, b and w commands that
were omitted from version 1.1 because of time constraints.
*******************************************************************************
* INTRODUCTION *
*******************************************************************************
3dLIB is a library of pascal units that allows Turbo Pascal programmers to
write applications that display and animate 3D wire-mesh objects. The
library is based on a project developed since 1984 on different platforms.
This package supports both Turbo Pascal for DOS and Turbo Pascal for Windows.
(Or BP 7.0 with objects for dos real/protected and windows targets).
A package called 3D120 is distributed by ISoft D&M that
includes a graphic editor, macro interpreter and pascal translator to
create and use 3D objects. It is highly recommended that any programmer
trying to use this library will use the 3D program to create
objects, and understand the animation abilities of the library.
The 3dCW program is a MDI IDE for 3d macro programs (.M3D files).
For more help - please consult the provided on-line help database, from
within the 3dCW program.
*******************************************************************************
* OBJECTS *
*******************************************************************************
The 3D objects are defined as the following TP object-structures :
*******************************************************************************
* BaseObject *
*******************************************************************************
baseObject - defined in the RTOBJ.PAS file, this is the "dummy"
ancestor object class of the 3D-objects, such an object has a CTM (called
myCTM), a color, a center of gravity 3D point (location), and other display
attributes, in order to achieve better animation results, a scrPntUpdt
boolean variable is used to indicate if the screen 2D points of the
object has to be re-calculated from the 3D representation.
The object uses a 4X4 "transformation matrix" to represent itself in the
3D universe, the move, translate, scale, allScale, rotate, goto3dPos,
setToOrigin, calcLocation and deleteTransform methods are used to update
that matrix (the Current Transformation Matrix).
The load, save, writeMe, and readMe methods are used to store and retrieve
a 3D object from a storage device (a disk..), and the open and close methods
are used to construct, and destruct the object. The show, hide and paint
methods display, or erase the object on the 2D screen. One more interesting
method is the updateScreenPoints method, that transforms the 3D object
representation to the 2D screen.
*******************************************************************************
* obj3D *
*******************************************************************************
obj3D is a descendant object of the baseObject class, this is a simple
wire-mesh object, that is built from a Collection of 3D points
in the 3D universe, a collection of 3d lines (a line is a segment in the
3D universe that connects 2 3D points), another collection holds the 2D screen
points of the object, calculated from its 3D representation, and the CTM.
Another interesting aspect of this object is the use of 2 more matrices,
the reverseRot, and unReverseRot CTM objects, that are used to hold only the
reverse, and counter reverse of the rotation transformations, these are used
by complex objects that contain several obj3D objects, where some of them
has to be rotated, scaled and translated around an arbitrary point in the
3D universe, which is not their center of gravity (frame - reference).
This object is refered as simple object in some places in the provided
documentation.
*******************************************************************************
* complexObj *
*******************************************************************************
The RTOBJ.PAS file contains the definition of the complexObj 3D object,
this is an object that contains a maxSubObjects (defined in that file)
array of simple wire-mesh obj3D objects. This object class sometimes
referred to as the "super - object", allows the user to create complex 3D
objects that has a common frame - reference (center of gravity), an example
of such an object might be a Robot, that has a center of gravity, and is
built of some sub objects that must be able to be transformed both with the
frame - reference, and by themselves.
The RTOBJ.PAS (for - RunTime object) unit file contains the definition of
the baseObj, obj3D and the complexObj classes.
*******************************************************************************
* PROJECTIONS *
*******************************************************************************
The PROJECT3.PAS file contain the code that transforms objects and points
from the 3D universe, to the 2D coordinates.
Two 3D -> 2D transformations are supported, axonometric projection, and
perspective projection. This is a short explanation of the difference
between these 2 projections :
A : axonometric projections, no perspective due to
distance is performed, the general way
we can look at the coordinate system is as
follows :
| z axis
|
/ \
x axis / \ y axis
B : perspective projections : the normal eye perspective
projection is performed, we can look at the 3d
universe we are referring to as a cube of
1000 x 1000 x 1000 integer locations, with
the x axis, and y axis parallel to the screen
x, y axis respectively, and the z axis going into
the screen.
we will look at the coordinate system as follows :
│ Y axis
│
Z axis x------ X axis
These units contain a calcPoint procedure that receives a 3D point, and
transforms it to a 2D screen coordinate, the setPerspective,
resetPerspective and togglePerspective change from perspective projection
to axonometric projection, and vice versa.
*******************************************************************************
* CTM *
*******************************************************************************
CTM3D.PAS is the file that defines the current transformation matrix that
is used to position the 3D objects in the universe. The CTM is a 4x4 matrix
that is multiplied (from the right) by each point of the 3D object whenever
a new location is desired for the object.
This unit defines all the transformations that can be applied and used
by a CTM, like rotate, scale, translate etc..
*******************************************************************************
* 3D2 FORMAT *
*******************************************************************************
The obj3D object files are files of type real, that has the following
structure :
1 Real entry : number of 3D points. (We will call in numOfPoints)
numOfPoints entries that contain the following information :
1 Real Entry : X location in the 3D universe.
1 Real Entry : Y location in the 3D universe.
1 Real Entry : Z location in the 3D universe.
1 Real Entry : number of lines. (We will call it numOfLines)
numOfLines entries that contain the following information :
1 Real Entry : 3D Point Number of "From" edge of the line.
1 Real Entry : 3D Point Number of "To" edge of the line.
Please refer to the OBJ3D.README method that deals with reading this
3D file format.
To Create object of this kind - Please use the 3dO object compiler provided
with this package, or the 3D environment program available in a different
package, or with the registered version.
*******************************************************************************
* 3DS FORMAT *
*******************************************************************************
The complexObj object files are files of real type that have the
following structure :
1 Real Entry : Number of subobjects the complexObj contain (We will
call it numOfChilds)
numOfChilds entries that have the same structure as simple 3D2 files.
To Create object of this kind - Please use the 3dO object compiler provided
with this package, or the 3D environment program available in a different
package, or with the registered version.
*******************************************************************************
* Warranty *
*******************************************************************************
There is no warranty what so ever, The package is supplied as is,
The distributor (ISoft D&M), or the author (Loewy Ron), are not,
and will not be responsible for any damages, lost profits,
or inconveniences caused by the use, or inability to use this package.
The use of the package is at your own risk.
By using (or attempting to use) the package you agree to this.
*******************************************************************************
* General *
*******************************************************************************
3dLIB is distributed by ISoft D&M, P.O.B. 5517 CORALVILLE IA 52241, U.S.A.
3dLIB is (c) copyrighted by Loewy Ron, 1991,93.
3dLIB is a shareware package, please register your copy.
To register your copy of 3dLIB please refer to the supplied
3DLIB.REG file.
Other programs distributed by ISoft D&M are described in the supplied
PROGRAMS.TXT file.
*******************************************************************************
* Contact *
*******************************************************************************
Please contact :
ISoft D&M,
P.O.B 5517
Coralville IA 52241,
U.S.A
To contact the author directly :
Contact : Loewy Ron,
9 Haneveem st.
Herzeliya, 46465
ISRAEL.
e-mail address : CompuServe - 100274,162
*******************************************************************************
* Credits *
*******************************************************************************
3dLIB was written using Turbo Pascal 6.0 & 7.0, as well as
Turbo Pascal for Windows 1.0, 1.5 and Borland Pascal with objects 7.0.
These products are trademarks of Borland international.
Windows 3.0 and Windows 3.1 are trademarks of Microsoft Corp.
The Borland Brief v3.1 editor was used to write these programs.
The windows help file, as well as the TPH file were created using the
help development kit (hlpdk) v5.0 by Loewy Ron.
The Author's picture (in the 3dCW program) was taken by Allison Bially.