Ok, here's some source first of all. Luckilly I had this knocking around on my HD, then I'll explain how it works in a minute..
'By Shockwave ^ DBF
'-------------------------------------------------------------------------
'-------------------------------------------------------------------------
' Includes.
'-------------------------------------------------------------------------
'#define PTC_WIN
#define dbfcls redim shared buffer (640*480) as integer
#Include Once "tinyptc.bi"
option dynamic
'-------------------------------------------------------------------------
' Open 640 X 480 Screen.
'-------------------------------------------------------------------------
If( ptc_open( "Blah", 640, 480 ) = 0 ) Then
End -1
End If
'-------------------------------------------------------------------------
' Variable Definitions.
'-------------------------------------------------------------------------
dim shared pi as double
dim shared ca as integer
pi=3.1415926535897932385
Dim Shared LP As Integer: ' Used In Loops.
Dim Shared As Integer Buffer( 640 * 480 ):' Screen Buffer.
DIM SHARED AS INTEGER CPAL (255):' Holds Palette.
Dim Shared GADD As Integer:' General Purpose Variable Just Ticks Up.
Dim Shared SMSIN As DOUBLE:' Holds X Movement.
DIM SHARED SMCOS As DOUBLE:' Holds Y Movement.
DIM SHARED ZMCOS As DOUBLE:' Holds Z Movement.
DIM SHARED STPTR AS INTEGER:' Pointer Used When Looping Through Stars.
DIM SHARED STST AS INTEGER:' Holds Deepest Star Pos.
DIM SHARED A AS INTEGER:' Holds Colour Multiplier.
'-----------------------------------------------------------------
'Read In Our Font;
'-----------------------------------------------------------------
dim shared FONT (81 * 59) as integer
FOR LP=1 TO (81*59)
READ FONT(LP)
NEXT
'-------------------------------------------------------------------------
' Subroutine Definitions.
'-------------------------------------------------------------------------
DECLARE SUB CONSTRUCT()
DECLARE SUB ROTATE()
declare sub DBFTEXT(BYVAL BX AS INTEGER , BYVAL BY AS INTEGER , BYVAL CH AS INTEGER , BYVAL CLR AS INTEGER)
declare SUB Millisecs()
declare sub DBFWPF(BYVAL BX AS INTEGER, BYVAL BY AS INTEGER , BYVAL CH AS INTEGER )
declare sub DBFTRI(BYVAL QX1 AS DOUBLE , BYVAL QY1 AS DOUBLE ,BYVAL QX2 AS DOUBLE , BYVAL QY2 AS DOUBLE,BYVAL QX3 AS DOUBLE , BYVAL QY3 AS DOUBLE , BYVAL QCLR AS INTEGER, BYVAL EDGE AS INTEGER)
DIM SHARED XRES,YRES AS INTEGER
XRES=640
YRES=480
'----------------------------
'--- Set Up Starfield; ---
'----------------------------
'---------------
'-Debug Stuff; -
'---------------
dim shared oldtime,newtime as double
dim shared TST as string
dim shared ticks as integer
ticks=0
'---------------------------------------------------------
' Define the necessary variables;
'---------------------------------------------------------
DIM shared N AS DOUBLE
dim shared vx1 as double
dim shared vx2 as double
dim shared vy1 as double
dim shared vy2 as double
DIM SHARED SIZE AS DOUBLE
DIM SHARED POINTS AS INTEGER
DIM SHARED FACES AS INTEGER
DIM SHARED VXR as double
dim shared VYR as double
dim shared VZR AS double
size=19
points=14
faces=24
Dim SHARED Vx(points) AS DOUBLE
Dim SHARED Vy(points) AS DOUBLE
Dim SHARED Vz(points) AS DOUBLE
Dim SHARED Vtx(points) AS INTEGER
Dim SHARED Vty(points) AS INTEGER
Dim SHARED Vtz(points) AS INTEGER
Dim SHARED Vf1(faces) AS DOUBLE
Dim SHARED Vf2(faces) AS DOUBLE
Dim SHARED Vf3(faces) AS DOUBLE
Dim SHARED Vf4(faces) AS DOUBLE
Dim SHARED Vr(faces) AS DOUBLE
Dim SHARED Vg(faces) AS DOUBLE
Dim SHARED Vb(faces) AS DOUBLE
'---------------------------------------------------------
' Read in the Object's points;
'---------------------------------------------------------
For a=1 To points
Read Vx(a)
read Vy(a)
read Vz(a)
Next
For a=1 To faces
Read Vf1(a)
Read Vf2(a)
Read Vf3(a)
Read Vf4(a)
Read Vr(a)
READ Vg(a)
READ Vb(a)
Next
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
'--------------------------------------------------
'--- Main Loop, Repeat Until Escape Pressed. ---
'--------------------------------------------------
oldtime=timer
DO
GADD=GADD+1
dbfcls
MILLISECS()
ROTATE()
CONSTRUCT()
Ptc_Update @Buffer(0):' Update The Buffer.
ticks=ticks+1
LOOP UNTIL INKEY$ = CHR$(27)
Ptc_Close()
END
'-------------------------------------------------------------------------------
' Triangle Routine By Shockwave / DBF 2006.
' Dependent on DBFWPF sub and also needs an array called buffer of 640*480
' to plot the pixels.
'-------------------------------------------------------------------------------
SUB DBFTRI(BYVAL QX1 AS DOUBLE , BYVAL QY1 AS DOUBLE ,BYVAL QX2 AS DOUBLE , BYVAL QY2 AS DOUBLE,BYVAL QX3 AS DOUBLE , BYVAL QY3 AS DOUBLE, BYVAL QCLR AS INTEGER , BYVAL EDGE AS INTEGER)
DIM QFTY1 AS DOUBLE , QFTY2 AS DOUBLE ,QFTY3 AS DOUBLE ,QFTX1 AS DOUBLE ,QFTX2 AS DOUBLE ,QFTX3 AS DOUBLE
'-------------------------------------------------------------------------------
'Get rid of flat bottomed and flat topped tris, fuck accuracy, lets go for speed :-)
'-------------------------------------------------------------------------------
IF QY1=QY2 OR QY1=QY3 THEN QY1=QY1-1
IF QY2=QY3 THEN QY3=QY3+1
QFTY1=QY1
QFTY2=QY2
QFTY3=QY3
QFTX1=QX1
QFTX2=QX2
QFTX3=QX3
'-------------------------------------------------------------------------------
'SORT POINTS INTO ORDER..
'-------------------------------------------------------------------------------
'----------------------
' ISOLATE TOP.---
'----------------------
IF QFTY2<QFTY1 AND QFTY2<QFTY3 THEN
QY1=QFTY2
QX1=QFTX2
END IF
IF QFTY1<QFTY2 AND QFTY1<QFTY3 THEN
QY1=QFTY1
QX1=QFTX1
END IF
IF QFTY3<QFTY2 AND QFTY3<QFTY1 THEN
QY1=QFTY3
QX1=QFTX3
END IF
'-------------------------
' ISOLATE MIDDLE.---
'-------------------------
IF QFTY1>QFTY2 AND QFTY1<QFTY3 THEN
QY2=QFTY1
QX2=QFTX1
END IF
IF QFTY1<QFTY2 AND QFTY1>QFTY3 THEN
QY2=QFTY1
QX2=QFTX1
END IF
IF QFTY2>QFTY1 AND QFTY2<QFTY3 THEN
QY2=QFTY2
QX2=QFTX2
END IF
IF QFTY2<QFTY1 AND QFTY2>QFTY3 THEN
QY2=QFTY2
QX2=QFTX2
END IF
IF QFTY3>QFTY1 AND QFTY3<QFTY2 THEN
QY2=QFTY3
QX2=QFTX3
END IF
IF QFTY3<QFTY1 AND QFTY3>QFTY2 THEN
QY2=QFTY3
QX2=QFTX3
END IF
'-------------------------
' ISOLATE BOTTOM;---
'-------------------------
IF QFTY1>QFTY2 AND QFTY1>QFTY3 THEN
QY3=QFTY1
QX3=QFTX1
END IF
IF QFTY2>QFTY1 AND QFTY2>QFTY3 THEN
QY3=QFTY2
QX3=QFTX2
END IF
IF QFTY3>QFTY2 AND QFTY3>QFTY1 THEN
QY3=QFTY3
QX3=QFTX3
END IF
'------------------------------------------
'Interpolation, Edge And Loop Variables;---
'------------------------------------------
DIM QT1,QT2 AS INTEGER:' loops.
DIM QSTART1 AS DOUBLE:'Edge 1
DIM QSTART2 AS DOUBLE:'Edge 2
DIM QSTADD1 AS DOUBLE'Interpolation 1
DIM QSTADD2 AS DOUBLE'Interpolation 2
'Set Start Points
QSTART1=QX1
QSTART2=QX1
'Calculate Interpolations;
QSTADD1 = (QX2-QX1) / (QY2 - QY1)
QSTADD2 = (QX3-QX1) / (QY3 - QY1)
'-------------------------
' Draw Top Of Triangle;---
'-------------------------
FOR QA=QY1 TO QY2-1
IF QSTART1<=QSTART2 THEN
QT1=QSTART1
QT2=QSTART2
ELSE
QT1=QSTART2
QT2=QSTART1
END IF
FOR QBB=QT1 TO QT2
DBFWPF(QBB,QA,QCLR)
NEXT
DBFWPF(QT1,QA,EDGE)
DBFWPF(QT2,QA,EDGE)
QSTART1=QSTART1+QSTADD1
QSTART2=QSTART2+QSTADD2
NEXT
QSTADD1= (QX3-QSTART1) / (QY3 - QY2)
'----------------------------
' Draw Bottom Of Triangle;---
'----------------------------
FOR QA=QY2 TO QY3
IF QSTART1<=QSTART2 THEN
QT1=QSTART1
QT2=QSTART2
ELSE
QT1=QSTART2
QT2=QSTART1
END IF
FOR QBB=QT1 TO QT2
DBFWPF(QBB,QA,QCLR)
NEXT
DBFWPF(QT1,QA,EDGE)
DBFWPF(QT2,QA,EDGE)
QSTART1=QSTART1+QSTADD1
QSTART2=QSTART2+QSTADD2
NEXT
END SUB
'---------------------------------------------------------------------------
'DBF WRITEPIXELFAST COMMAND BY SHOCKWAVE 2006. NEEDS BUFFER ARRAY 640*480---
'---------------------------------------------------------------------------
SUB DBFWPF (BYVAL BX AS INTEGER , BYVAL BY AS INTEGER , BYVAL CH AS INTEGER)
IF (BX>0) AND (BX<640) AND (BY>0) AND (BY<480) THEN
BUFFER ((BY*640)+BX)=CH
END IF
END SUB
'-------------------------------------------------------------------------------
' Display FPS.
'-------------------------------------------------------------------------------
SUB Millisecs()
t=timer
if t-oldtime >=1 then
newtime = ticks
ticks=0
oldtime=timer
end if
TST = str( (newtime) )
TST = "FPS "+TST
for LP=1 to len(tst)
CH=(ASC(MID(TST,LP,1)))-31
DBFTEXT((LP*10),1,CH,&h443333)
NEXT
end sub
'-------------------------------------------------------------------------
'Sub To Draw A Letter AnyWhere On The Screen (With Clipping);
'-------------------------------------------------------------------------
sub DBFTEXT(BYVAL BX AS INTEGER , BYVAL BY AS INTEGER , BYVAL CH AS INTEGER , BYVAL CLR AS INTEGER)
dim blx,bly as integer
'---------------------------------
'Calculate Offset In Font Data;---
'---------------------------------
bm=(ch*81)-81
FOR BLY=0 TO 8
FOR BLX=1 TO 9
'--------
'Clip;---
'--------
IF (BX+BLX>0) AND (BX+BLX<639) AND (BY+BLY>0) AND (BY+BLY<479) THEN
'----------------------------------------------------
'Draw Pixel In Buffer If Onscreen And If Binary 1 ---
'----------------------------------------------------
MM= FONT(((BLY*9)+BLX)+BM)
IF MM >0 THEN BUFFER (((BY+BLY)*640)+BX+BLX)=CLR
END IF
NEXT
NEXT
END SUB
'---------------------------------------------------------
' Draw The Object;
'---------------------------------------------------------
SUB construct()
DIM N AS DOUBLE
For a=1 To faces
'---------------------------------------------------------
' Draw A Face Of The Object;
'---------------------------------------------------------
vx1= Vtx(Vf1(a))-Vtx(Vf2(a))
vy1= Vty(Vf1(a))-Vty(Vf2(a))
vx2= Vtx(Vf3(a))-Vtx(Vf2(a))
vy2= Vty(Vf3(a))-Vty(Vf2(a))
n= vx1*vy2-vx2*vy1
If n<0 THEN
n=-(n/400)
rd=Vr(a)+n : If rd>155 THEN rd=155
gr=Vg(a)+n : If gr>155 THEN gr=155
bl=Vb(a)+n : If bl>155 THEN bl=155
DBFTRI(Vtx(Vf1(a)),Vty(Vf1(a)),Vtx(Vf2(a)),Vty(Vf2(a)),Vtx(Vf3(a)),Vty(Vf3(a)),RGB(RD,GR,BL),RGB(RD/2,GR/2,BL/2))
DBFTRI(Vtx(Vf1(a)),Vty(Vf1(a)),Vtx(Vf4(a)),Vty(Vf4(a)),Vtx(Vf3(a)),Vty(Vf3(a)),RGB(RD,GR,BL),RGB(RD/2,GR/2,BL/2))
End If
NEXT
END SUB
SUB ROTATE()
DIM VX1 AS DOUBLE
dim VY1 AS DOUBLE
dim VZ1 AS DOUBLE
DIM VZZ AS DOUBLE
dim vxx as double
dim vyy as double
DIM VDV AS DOUBLE
'###############################################
'## Rotate And Scale Each Point! Store Result ##
'###############################################
For a=1 To points
VX1=Vx(a)
VY1=Vy(a)
VZ1=Vz(a)
'######################
'## X,Y,Z rotations! ##
'######################
Vxx=Vx1
Vyy=Vy1*cos(Vxr)+Vz1*sin(Vxr)
Vzz=Vz1*cos(Vxr)-Vy1*sin(Vxr)
Vy1=Vyy
Vx1=Vxx*cos(Vyr)-Vzz*sin(Vyr)
Vz1=Vxx*sin(Vyr)+Vzz*cos(Vyr)
Vzz=Vz1
Vxx=Vx1*cos(Vzr)-Vy1*sin(Vzr)
Vyy=Vx1*sin(Vzr)+Vy1*cos(Vzr)
'########################
'## Apply Perspective! ##
'########################
Vdv=(Vzz/40)+1
Vxx=(size*(Vxx/Vdv))+320
Vyy=(size*(Vyy/Vdv))+240
Vtx(a)=Int(Vxx)
Vty(a)=Int(Vyy)
Vtz(a)=Int(Vzz)
Next
Vxr=Vxr+0.008
Vyr=Vyr+0.007
Vzr=Vzr+0.006
END SUB
'==============================================================================
' Binary Font By Shockwave / DBF; (59 Chars)
'==============================================================================
'space
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'!
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,0,1,1,1,0,0,0
'"
data 0,1,1,0,1,1,0,0,0
data 0,1,1,0,1,1,0,0,0
data 0,1,1,0,1,1,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'#
data 0,0,0,0,0,0,0,0,0
data 0,1,1,0,0,0,1,1,0
data 1,1,1,1,1,1,1,1,1
data 0,1,1,0,0,0,1,1,0
data 0,1,1,0,0,0,1,1,0
data 0,1,1,0,0,0,1,1,0
data 1,1,1,1,1,1,1,1,1
data 0,1,1,0,0,0,1,1,0
data 0,0,0,0,0,0,0,0,0
'£
data 0,0,1,1,1,1,0,0,0
data 0,1,1,1,1,1,0,0,0
data 0,1,1,0,0,0,0,0,0
data 0,1,1,0,0,0,0,0,0
data 0,1,1,1,1,0,0,0,0
data 0,1,1,0,0,0,0,0,0
data 0,1,1,0,0,0,0,0,0
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,0
'%
data 0,0,0,0,0,0,0,0,0
data 0,1,1,0,0,0,0,0,0
data 0,1,1,0,0,0,1,0,0
data 0,0,0,0,0,1,0,0,0
data 0,0,0,0,1,0,0,0,0
data 0,0,0,1,0,0,0,0,0
data 0,0,1,0,0,0,1,1,0
data 0,0,0,0,0,0,1,1,0
data 0,0,0,0,0,0,0,0,0
'&
data 0,0,0,1,1,1,0,0,0
data 0,0,1,1,1,1,1,0,0
data 0,0,1,1,0,1,1,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,1,1,0,1,1,0,0
data 0,1,1,0,0,1,1,1,1
data 0,1,1,1,0,0,1,1,0
data 0,0,1,1,1,1,1,0,0
data 0,0,0,0,1,1,0,0,0
''
data 0,1,1,0,0,0,0,0,0
data 0,1,1,0,0,0,0,0,0
data 0,1,1,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'(
data 0,0,0,0,0,1,1,1,0
data 0,0,0,0,1,1,1,1,0
data 0,0,0,0,1,1,0,0,0
data 0,0,0,0,1,1,0,0,0
data 0,0,0,0,1,1,1,0,0
data 0,0,0,0,1,1,1,0,0
data 0,0,0,0,1,1,1,0,0
data 0,0,0,0,1,1,1,1,0
data 0,0,0,0,0,1,1,1,0
')
data 0,1,1,1,0,0,0,0,0
data 0,1,1,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,1,1,1,0,0,0,0
data 0,0,1,1,1,0,0,0,0
data 0,0,1,1,1,0,0,0,0
data 0,1,1,1,1,0,0,0,0
data 0,1,1,1,0,0,0,0,0
'*
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,1,0,0,0,0
data 0,0,1,0,1,0,1,0,0
data 0,0,0,1,1,1,0,0,0
data 0,1,1,1,1,1,1,1,0
data 0,0,0,1,1,1,0,0,0
data 0,0,1,0,1,0,1,0,0
data 0,0,0,0,1,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'+
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,1,0,0,0,0
data 0,0,0,0,1,0,0,0,0
data 0,0,1,1,1,1,1,0,0
data 0,0,0,0,1,1,0,0,0
data 0,0,0,0,1,1,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
''
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,0,1,0,0,0,0
'-
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,1,1,1,1,1,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'.
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
'/
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,1,0
data 0,0,0,0,0,0,1,1,0
data 0,0,0,0,0,1,1,0,0
data 0,0,0,0,1,1,0,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0,0
data 0,1,1,1,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'0
data 0,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,1,1,1
data 1,1,0,0,0,1,0,1,1
data 1,1,0,0,1,0,0,1,1
data 1,1,0,1,1,0,0,1,1
data 1,1,1,1,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,0
'1
data 0,0,0,1,1,0,0,0,0
data 0,0,1,1,1,0,0,0,0
data 0,0,1,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,0,1,1,1,0,0,0
data 0,1,1,1,1,1,1,0,0
data 0,1,1,1,1,1,1,0,0
'2
data 0,0,1,1,1,1,1,1,0
data 0,0,1,1,1,1,1,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 0,1,1,1,1,1,1,1,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
'3
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,0
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,1,1,1,1,0
data 0,0,0,0,0,0,1,1,1
data 0,0,0,0,0,0,1,1,1
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,0
'4
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,1,1,0,0,0
data 1,1,0,0,1,1,0,0,0
data 1,1,1,1,1,1,1,1,1
data 0,0,0,0,0,1,1,1,0
data 0,0,0,0,0,1,1,1,0
data 0,0,0,0,0,1,1,1,0
data 0,0,0,0,0,1,1,1,0
'5
data 0,1,1,1,1,1,1,0,0
data 0,1,1,1,1,1,1,0,0
data 0,1,1,0,0,0,0,0,0
data 0,1,1,0,0,0,0,0,0
data 0,1,1,1,1,1,1,1,0
data 0,0,0,0,0,0,1,1,1
data 0,0,0,0,0,0,1,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,0
'6
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,1,1,1,1,1,1,0
data 1,1,0,0,0,0,1,1,1
data 1,1,0,0,0,0,1,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,0
'7
data 0,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,1,1,1,1,1
data 0,0,0,0,0,0,1,1,1
data 0,0,0,0,0,1,1,1,0
data 0,0,0,0,0,1,1,1,0
data 0,0,0,0,0,1,1,1,0
'8
data 0,0,1,1,1,1,1,0,0
data 0,1,1,1,1,1,1,1,0
data 0,1,1,0,0,0,1,1,0
data 0,1,1,0,0,0,1,1,0
data 0,0,1,1,1,1,1,0,0
data 1,1,1,0,0,0,1,1,1
data 1,1,0,0,0,0,1,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,0
'9
data 0,0,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,1
data 0,1,1,0,0,0,0,1,1
data 0,1,1,0,0,0,0,1,1
data 0,0,1,1,1,1,1,1,1
data 0,0,0,0,0,0,1,1,1
data 0,0,0,0,0,0,1,1,1
data 0,0,0,0,0,0,1,1,1
data 0,0,0,0,0,0,1,1,1
':
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
';
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,0,1,0,0,0,0
'<
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,1,1,0,0
data 0,0,0,0,1,1,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,1,1,1,0,0,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,0,0,1,1,1,0,0
data 0,0,0,0,0,1,1,0,0
data 0,0,0,0,0,0,0,0,0
'=
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,1,1,1,1,1,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,1,1,1,1,1,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'>
data 0,0,0,0,0,0,0,0,0
data 0,0,1,1,0,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,0,1,1,0,0,0
data 0,0,0,0,1,1,1,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,1,1,1,0,0,0,0
data 0,1,1,1,0,0,0,0,0
data 0,0,0,0,0,0,0,0,0
'?
data 0,0,1,1,1,1,1,0,0
data 0,1,1,1,1,1,1,1,0
data 0,1,1,0,0,0,1,1,0
data 0,0,0,0,0,0,1,1,0
data 0,0,0,1,1,1,1,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,0,0,0,0,0,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,0,1,1,1,0,0,0
'@
data 0,0,0,0,0,0,0,0,0
data 0,0,1,1,1,1,1,0,0
data 0,1,0,0,0,0,0,0,0
data 0,1,0,0,1,1,1,0,0
data 0,1,0,1,0,0,0,1,0
data 0,1,0,1,1,1,0,1,0
data 0,1,0,0,0,0,0,1,0
data 0,0,1,1,1,1,1,0,0
data 0,0,0,0,0,0,0,0,0
'a
data 0,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,0
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
'b
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,0
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,0
'c
data 0,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,1
'd
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,0
'e
data 0,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,1,1,1,1,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,1
'f
data 0,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,1,1,1,1,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0,0
'g
data 0,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,1,1,1,1
data 1,1,0,0,0,0,1,1,1
data 1,1,0,0,0,0,1,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,0
'h
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
'i
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,0,1,1,1,0,0,0
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
'j
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,0
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,0
'k
data 1,1,0,0,0,0,1,1,0
data 1,1,0,0,0,0,1,1,0
data 1,1,0,0,0,0,1,1,0
data 1,1,0,0,0,0,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
'l
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,1
'm
data 0,1,1,1,0,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,1,0,0,1,1
data 1,1,0,0,1,0,0,1,1
data 1,1,0,0,1,0,0,1,1
data 1,1,1,0,1,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
'n
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
'o
data 0,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,0
'p
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0,0
'q
data 0,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,1,0,1,1
data 1,1,1,0,0,0,1,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,0
'r
data 1,1,1,1,1,1,1,1,0
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,0
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
's
data 0,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,0,0,0,0,0,0,0
data 1,1,0,0,0,0,0,0,0
data 0,1,1,1,1,1,1,1,0
data 0,0,0,0,0,0,1,1,1
data 0,0,0,0,0,0,1,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,0
't
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,0,0,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,0,1,1,1,0,0,0
data 0,0,0,1,1,1,0,0,0
'u
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,1,1,1,1,0
'v
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,1,0,0,1,1,1
data 0,1,1,1,1,1,1,1,0
data 0,0,1,1,1,1,1,0,0
'w
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,1,0,1,0,0,1,1
data 1,1,1,0,1,0,0,1,1
data 1,1,1,0,1,0,0,1,1
data 1,1,1,1,1,1,1,1,1
data 0,1,1,1,0,1,1,1,0
'x
data 0,1,1,0,0,0,1,1,0
data 0,1,1,0,0,0,1,1,0
data 0,1,1,0,0,0,1,1,0
data 0,1,1,0,0,0,1,1,0
data 0,1,1,1,1,1,1,1,0
data 1,1,1,1,0,0,1,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
data 1,1,1,0,0,0,0,1,1
'y
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 1,1,0,0,0,0,0,1,1
data 0,1,1,1,1,1,1,1,1
data 0,0,0,0,0,0,1,1,1
data 0,0,0,0,0,0,1,1,1
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,0
'z
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
data 0,0,0,0,0,0,0,1,1
data 0,0,0,0,0,0,1,1,1
data 0,1,1,1,1,1,1,1,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,0,0,0,0,0,0
data 1,1,1,1,1,1,1,1,1
data 1,1,1,1,1,1,1,1,1
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
' The Object Description As Data!
' The Data Below Describes A Cube.
'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
'Points definition;
'~~~~~~~~~~~~~~~~~~
'Below are the points of the Object defined as x,y,z;
Data 5,-5,-5,5,5,-5,-5,5,-5,-5,-5,-5,0,0,-8,8,0,0,0
Data 8,0,-8,0,0,0,-8,0,5,-5,5,5,5,5,-5,5,5,-5,-5,5,0,0,8
'Connection definition;
'Below are the faces of the Object defined as vertice
'numbers, specified in clockwise order. These are followed
'by r,g,b values For the face And finally cell shaded
'parameter (0)=off (1)=on.
Data 10,9,13,13,50,0,0
Data 14,10,13,13,0,50,0
Data 14,13,12,12,0,50,0
Data 8,12,13,13,0,0,50
Data 4,8,13,13,0,0,50
Data 10,14,11,11,0,50,0
Data 10,11,6,6,50,0,50
Data 4,13,9,9,50,0,0
Data 1,4,9,9,50,0,0
Data 1,9,10,10,50,0,0
Data 6,1,10,10,50,0,50
Data 5,4,1,1,0,50,50
Data 8,4,3,3,0,0,50
Data 3,12,8,8,0,0,50
Data 3,4,5,5,0,50,50
Data 7,12,3,3,50,50,0
Data 14,12,11,11,0,50,0
Data 11,12,7,7,50,50,0
Data 6,11,2,2,50,0,50
Data 11,7,2,2,50,50,0
Data 1,6,2,2,50,0,50
Data 2,5,1,1,0,50,50
Data 2,7,3,3,50,50,0
Data 2,3,5,5,0,50,50
'===============================================================================
' ***END***
'===============================================================================