mirror of
https://github.com/PDP-10/stacken.git
synced 2026-02-06 08:14:51 +00:00
140 lines
2.6 KiB
Plaintext
140 lines
2.6 KiB
Plaintext
BEGIN "SIMPLE PERSPECTIVE"
|
|
DEFINE EP="EXTERNAL PROCEDURE",EIP="EXTERNAL INTEGER PROCEDURE";
|
|
DEFINE CRLF="('15&'12)",REF="REFERENCE",INT="INTEGER";
|
|
|
|
EIP DINI(INT N,CH;REF INT AR;INT S);
|
|
EIP DGET;
|
|
|
|
EP DOPEN(INT N);
|
|
EIP DPOST(INT N);
|
|
EP DDONE;
|
|
EIP DVECT3(REAL X1,Y1,Z1,X2,Y2,Z2);
|
|
|
|
EIP DMOVE3(REAL X1,Y1,Z1);
|
|
EIP DDRAW3(REAL X1,Y1,Z1);
|
|
EP DPUSH(INT NAME);
|
|
EP DPOP(INT NAME);
|
|
|
|
EP DAPPLY(REF REAL AR;INT NAME);
|
|
EP DCOMPOSE(REF REAL AR;INT NAME);
|
|
|
|
REQUIRE "REL:DISSAI" LOAD!MODULE;
|
|
INTEGER B;;
|
|
REAL EYEX,EYEY,EYEZ,CX,CY,CZ,T,X,Y,Z;
|
|
REAL ARRAY M,IDENTITY[1:4,1:4];
|
|
INTEGER ARRAY D[1:1];
|
|
|
|
OPEN(1,"TTY",0,1,1,100,B,B);
|
|
DINI(4,10,D[1],0);
|
|
DGET;
|
|
|
|
COMMENT SET UP IDENTITY MATRIX;
|
|
|
|
FOR B_1 STEP 1 UNTIL 4 DO IDENTITY[B,B]_1;
|
|
|
|
COMMENT GO ROUND IN AN INFINITE LOOP;
|
|
|
|
WHILE TRUE DO BEGIN "WIEV"
|
|
ARRTRAN(M,IDENTITY); "THE 'P' MATRIX"
|
|
M[1,1]_M[2,2]_COSD(30)/SIND(30);
|
|
DAPPLY(M[1,1],0); "AND MAKE IT CURRENT TRANSFORM"
|
|
|
|
COMMENT INPUT THE WIEVING POINT AND THE DIRECTION
|
|
COSINES;
|
|
|
|
OUTSTR("WIEVPOINT: ");
|
|
EYEX_REALIN(1);
|
|
EYEY_REALIN(1);
|
|
EYEZ_REALIN(1);
|
|
|
|
OUTSTR("LOOKING TOWARDS POINT: ");
|
|
CX_REALIN(1)-EYEX;
|
|
CY_REALIN(1)-EYEY;
|
|
CZ_REALIN(1)-EYEZ;
|
|
|
|
T_SQRT(CX*CX+CY*CY+CZ*CZ); "LENGTH OF THE VECTOR"
|
|
|
|
CX_CX/T;
|
|
CY_CY/T;
|
|
CZ_CZ/T;
|
|
|
|
T_SQRT(CX*CX+CZ*CZ);
|
|
|
|
COMMENT NOW MAKE R1;
|
|
|
|
ARRTRAN(M,IDENTITY); "THIS IS ACTUALLY R2"
|
|
M[2,2]_M[3,3]_T;
|
|
M[3,2]_-(M[2,3]_CY);
|
|
DCOMPOSE(M[1,1],0);
|
|
|
|
COMMENT THIS IS R1 THOUGH;
|
|
|
|
ARRTRAN(M,IDENTITY);
|
|
M[1,1]_M[3,3]_-CZ/T;
|
|
M[3,1]_-(M[1,3]_CX/T);
|
|
DCOMPOSE(M[1,1],0);
|
|
|
|
COMMENT THE CONCATENATION OF T AND L;
|
|
|
|
ARRTRAN(M,IDENTITY);
|
|
M[3,3]_-1;
|
|
M[4,1]_-EYEX;
|
|
M[4,2]_-EYEY;
|
|
M[4,3]_EYEZ;
|
|
DCOMPOSE(M[1,1],0); "COCLUDES THE TRANSFORMS"
|
|
|
|
BEGIN "FIGURE"
|
|
DOPEN(1);
|
|
FOR Z_-1,0 DO BEGIN
|
|
DMOVE3(-0.5,-1,Z);
|
|
DDRAW3(-0.5,1,Z);
|
|
DDRAW3(0,2,Z);
|
|
DDRAW3(0.5,1,Z);
|
|
DDRAW3(0.5,-1,Z);
|
|
DDRAW3(-0.5,-1,Z);
|
|
END;
|
|
FOR X_-0.5,0.5 DO
|
|
FOR Y_-1,1 DO BEGIN
|
|
DMOVE3(X,Y,-1);
|
|
DDRAW3(X,Y,0);
|
|
END;
|
|
DVECT3(0,2,-1,0,2,0);
|
|
|
|
COMMENT NEXT BODY OF THE CHURCH;
|
|
|
|
FOR Z_0,1.5 DO BEGIN
|
|
DMOVE3(-1,-1,Z);
|
|
DDRAW3(-1,0,Z);
|
|
DDRAW3(0,0.5,Z);
|
|
DDRAW3(1,0,Z);
|
|
DDRAW3(1,-1,Z);
|
|
DDRAW3(-1,-1,Z);
|
|
END;
|
|
FOR X_-1,1 DO
|
|
FOR Y_-1,0 DO BEGIN
|
|
DMOVE3(X,Y,0);
|
|
DDRAW3(X,Y,1.5);
|
|
END;
|
|
DVECT3(0,0.5,0,0,0.5,1.5);
|
|
FOR X_1,1.5 DO BEGIN
|
|
DMOVE3(X,-1,0.5);
|
|
DDRAW3(X,-0.5,0.5);
|
|
DDRAW3(X,-0.25,0.75);
|
|
DDRAW3(X,-0.5,1);
|
|
DDRAW3(X,-1,1);
|
|
DDRAW3(X,-1,0.5);
|
|
END;
|
|
FOR Z_0.5,1 DO
|
|
FOR Y_-1,-0.5 DO BEGIN
|
|
DMOVE3(1,Y,Z);
|
|
DDRAW3(1.5,Y,Z);
|
|
END;
|
|
DVECT3(1,-0.25,0.75,1.5,-0.25,0.75);
|
|
|
|
DPOST(1); DDONE;
|
|
END "FIGURE";
|
|
|
|
END "WIEV";
|
|
|
|
END;
|