The declarations shown below contain several extraneous elements, and are only included for consistency with the rest of the program, in case the definition of terms used elsewhere is needed.
/* * RECView.m -- Implementation file for the RECView class * * You may freely copy, distribute, and reuse the code in this example. * NeXT disclaims any warranty of any kind, expressed or implied, as to * its fitness for any particular use, or that it even has a use. * */ #import "rec.h" #import "recdtbl.h" #import "RECView.h" #import <NXCType.h> #import <math.h> #import <stdlib.h> #import <string.h> # define KK 2 # define CLEN 300 /* buffer length for rec source */ # define PLEN 900 /* buffer length for rec object */ # define HMAX 25 /* maximum depth pushdown stack */ # define PMAX 12 /* maximum polygon accepted by program */ # define NMU 5 /* number of items in first column */ # define NY 8 /* number of demonstration programs */ # define NIP 12 /* number of initial polygons */ # define NSK 4 /* number of prototype skeletons */ # define PI 3.14159 //int rec(char *z); void refen(int n); char cstr[CLEN]; /* console rec program */ Inst rprg[PLEN]; /* rec program array */ int phil; /* length of cstr */ int plev; /* pushdown depth */ char idef[1][30] = { " (()) " }; //(z(!100!0r:;)1r2r(0r:;);) a€" }; char recrule[NY][CLEN] = { " ([pentagonal] X5 P CN CN CN CN C p;)", " ([bipentag] X5 P CN CN CN Cn Cn Cn Cn C p;)", " (TC NC NC NC nC nC nC nC;)" }; char skeletons[NSK][CLEN] = { " ([show polygon] O C;)", " ([sector] O (! n ! C N:;);)", " ([binary] O (! n-1 ! C N:;)(! n-1 ! C n :;);)", " ([second] O (! n ! C N:;);)" }; int isErrm=FALSE; int drawBack=YES; int exSource=YES; int options[4]={FALSE,FALSE,FALSE,FALSE}; int pgon=3, edge=0; char errm[50]; double scale=25.0; char dfclr[KK][12] = {"1.0,0.0,0.0","0.0,1.0,0.0"}; struct inpoly {int order; double points[8][3]; char *title;}; struct inpoly inpollies[NIP] = { 3,{ { 0.0, 0.0, 0.25}, { 5.0, 0.0, 0.25}, { 0.0, 8.6, 0.25}}, "3 - 30-60-90 triangle", 3,{ { 0.0, 0.0, 0.25}, {10.0, 0.0, 0.25}, { 0.0, 10.0, 0.25}}, "3 - 45-45-90 triangle", 3,{ { 0.0, 0.0, 0.25}, { 5.0, 0.0, 0.25}, { 0.0, 8.6, 0.25}}, "3 - skew triangle", 4,{ { 0.0, 0.0, 0.25}, {10.0, 0.0, 0.25}, {15.0, 8.7, 0.25}, { 5.0, 8.7, 0.25}}, "4 - rhombus", 4,{ { 0.0, 0.0, 0.25}, {30.0, 0.0, 0.25}, {20.0, 10.0, 0.25}, {10.0, 10.0, 0.25}}, "4 - 45 degree trapezoid", 4,{ { 0.0, 0.0, 0.25}, {20.0, 0.0, 0.25}, {15.0, 8.6, 0.25}, { 5.0, 8.6, 0.25}}, "4 - 60 degree trapezoid", 5,{ { 0.0, 0.0, 0.25}, {10.0, 0.0, 0.25}, {10.0, 5.0, 0.25}, { 5.0, 10.0, 0.25}, { 0.0, 10.0, 0.25}}, "5 - snub square", 5,{ { 0.0, 0.0, 0.5}, {10.0, 0.0, 0.5}, {10.0, 10.0, 0.5}, { 5.0, 15.0, 0.5}, { 0.0, 10.0, 0.5}}, "5 - 45 gable house", 5,{ { 0.0, 0.0, 0.5}, {10.0, 0.0, 0.5}, {10.0, 10.0, 0.5}, { 5.0, 18.6, 0.5}, { 0.0, 10.0, 0.5}}, "5 - 60 gable house", 6,{ { 0.0, 0.0, 0.5}, {30.0, 0.0, 0.5}, {30.0, 10.0, 0.5}, {20.0, 20.0, 0.5}, {10.0, 20.0, 0.5}, { 0.0, 10.0, 0.5}}, "6 - barn", }; double high, wide; double eks, wye, angle, alpha; double exoff=0.0, wyoff=0.0; extern double r_dblpar; double polystack[HMAX][PMAX][3]; double pointbase[PMAX][3],edgebase[PMAX][3]; double pointtraj[PMAX][3],edgetraj[PMAX][3]; double pointsnow[PMAX][3],edgesnow[PMAX][3]; double pointinit[3][3]={{0.0,0.0,1.0}, {0.0,10.0,1.0}, {10.0,0.0,1.0}}; double halftr[3][3]={ { 0.0, 0.0, 0.25}, { 5.0, 0.0, 0.25}, { 0.0, 8.6, 0.25}}; double isosrt[3][3]={ { 0.0, 0.0, 0.25}, {10.0, 0.0, 0.25}, { 0.0, 10.0, 0.25}}; double rhombos[4][3]={ { 0.0, 0.0, 0.25}, {10.0, 0.0, 0.25}, {12.0, 08.0, 0.25}, { 5.0, 7.0, 0.25}}; double rhombus[4][3]={ { 0.0, 0.0, 0.25}, {10.0, 0.0, 0.25}, {15.0, 8.7, 0.25}, { 5.0, 8.7, 0.25}}; double snubsq[5][3]={ { 0.0, 0.0, 0.25}, {10.0, 0.0, 0.25}, {10.0, 5.0, 0.25}, { 5.0, 10.0, 0.25}, { 0.0, 10.0, 0.25}};