home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware 1 2 the Maxx
/
sw_1.zip
/
sw_1
/
PROGRAM
/
3DLIB11.ZIP
/
3DLIB.DOC
< prev
next >
Wrap
Text File
|
1992-03-19
|
13KB
|
248 lines
╔══════════════════════════════════════════════════════════════════════════╗
║ ║
║ ISoft D&M ║
║ POB. 5517 ║
║ Coralville IA 52241 ║
║ U.S.A ║
║ ║
╚══════════════════════════════════════════════════════════════════════════╝
*******************************************************************************
* 3dLIB *
* 3dLIB - 3D Graphic objects library for Turbo-Pascal Programmers. V1.1 *
* Last Update : Mar. 19, 1992. *
*******************************************************************************
FILE - LIST
-----------
The distribution file 3DLIB11 contains the following files :
* .PAS - Pascal sources :
CTM .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.
* .TPU - Complied Units.
* .3D2 - Demo OBJ3D Type object files :
3 .3D2 - A 3 dimentional "3" character.
BOX .3D2 - A 3D box.
D .3D2 - A 3 dimentional "d" character.
PROP .3D2 - A 3D Propelor.
PYR .3D2 - A Pyramide.
SUPROP .3D2 - Another 3D Propelor.
TRAP .3D2 - A 3D Trapez.
* .3DS - Demo ComplexObj type object files.
3DLIB .DOC - This file.
3DC .EXE - M3D to PAS source file translator.
3DC .DOC - 3dC translator documentation.
* .M3D - Sample macro programs.
DEMO3D.EXE - Demo 3d animation program.
PROGRAMS.TXT - ISoft D&M shareware products description.
3DLIB .REG - 3dLIB registration file.
Why Register
------------
3dLIB is a shareware product, if you find this product valuable,
please register it. This section describes the reasones you should register.
By registering you will receive a printed manual, with many examples, a
diskette with the latest 3dLIB version, and the complete source code for 3dLIB
based training and example programs, and - you will help us to create the next
version of 3dLIB - that will include even more features then the features that
are currently available!, we might even add YOUR enhancment requests!
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.
A package called 3D111 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 recomended that any programmer
tring to use this library will use the 3D program to create
objects, and understand the animation abilities of the library.
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 represantation.
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 strore 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 an array of maxPoints points (change
this constant in the HDR3D.PAS file to create bigger, or smaller objects)
in the 3D universe, an array of maxLines lines (a line is a segment in the
3D universe that connects 2 3D points), another array holds the 2D screen
points of the object, calculated from its 3D represantation, and the CTM.
Another interesting aspect of this object is the use of 2 more matrixes,
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 there center of gravity (frame - reference).
*******************************************************************************
* 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
refered 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 refering 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 respectivly, 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 recieves 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.
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.
Warranty
--------
There is no warranty what so ever, The program is supplied as is,
The distributer (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, 92.
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
Credits
-------
3dLIB was written using Turbo-Pascal V6.0, a copyright of
Borland International.