Compucolor.org – Virtual Media

Listing of file='PLOT3D.FOR;01' on disk='vmedia/chip_61-sector.ccvf'



	PROGRAM PLOT3D
	DIMENSION P(3,18),G(3,18),T(3,3),I1(3),I2(3),
     1  DEG(3),TI(3,3)
	LOGICAL CLEAR,COLOR,P2,P242,P255
	DATA P/0.0,0.0,0.0,30.0,0.0,0.0,30.0,30.0,0.0,
     1  30.0,30.0,30.0,30.0,30.0,0.0,0.0,30.0,0.0,
     2  0.0,0.0,0.0,0.0,0.0,30.0,0.0,30.0,30.0,
     3  30.0,30.0,30.0,0.0,30.0,30.0,0.0,30.0,0.0,
     4  0.0,0.0,0.0,0.0,0.0,30.0,30.0,0.0,30.0,
     5  30.0,30.0,30.0,30.0,0.0,30.0,30.0,0.0,0.0/
     6  I1,I2/1,1,2,2,3,3/
     7  TI/1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0/
     8  IB,NOPTS,NS,ANGLE,DX,DY/16,18,1,10.0,60.0,60.0/
     9  P2,P242,P255,CLEAR/2,242,255,12/
	CALL PLTOBJ (NS,NOPTS,P,3,18,CLEAR,DX,DY,P2,P242,P255)
1       DO 30 IR=1,3
	DO 30 JR=1,6
	COLOR=IB+JR
	WRITE(3)COLOR
	CALL INIMAT (T,3,3,TI,3,3)
	CALL ROTMAT (T,3,3,I1,3,I2,3,IR,ANGLE)
	CALL MLTMAT (NOPTS,P,3,18,T,3,3)
	CALL PLTOBJ (NS,NOPTS,P,3,18,CLEAR,DX,DY,P2,P242,P255)
30      CONTINUE
	GO TO 1
	END
	SUBROUTINE PLTOBJ(NDS,NODPTS,DP,M1,M2,DCLEAR,DDX,DDY,
     1  PD2,PD242,PD255)
	DIMENSION DP(M1,M2)
	LOGICAL LX,LY,PD2,PD242,PD255,DCLEAR
	WRITE(3)DCLEAR
	LX=DP(1,NDS)+DDX
	LY=DP(2,NDS)+DDY
	WRITE(3)PD2,LX,LY,PD242
        NSP=NDS+1
	DO 10 I=NSP,NODPTS
	LX=DP(1,I)+DDX
	LY=DP(2,I)+DDY
	WRITE(3)LX,LY
10      CONTINUE
	WRITE(3)PD255
	RETURN
	END
	SUBROUTINE ROTMAT (DT,N3,N4,ID1,N5,ID2,N6,II,DANGLE)
	DIMENSION DT(N3,N4),ID1(N5),ID2(N6)
	RADIAN=(3.14159*DANGLE)/180.0
	K=ID1(II)
	J=ID2(II)
	DT(K,K)=COS(RADIAN)
	DT(K,J)=-SIN(RADIAN)
	DT(J,K)=SIN(RADIAN)
	DT(J,J)=COS(RADIAN)
	RETURN
	END
	SUBROUTINE INIMAT (DT,M1,M2,DTI,M3,M4)
	DIMENSION DT(M1,M2),DTI(M3,M4)
	DO 10 I=1,M1
	DO 10 J=1,M4
10      DT(I,J)=DTI(I,J)
	RETURN
	END
	SUBROUTINE MLTMAT (NODPTS,DP,M1,M2,DT,M3,M4)
	DIMENSION DP(M1,M2),DT(M3,M4)
	DO 10 I=1,NODPTS
	PX=DP(1,I)
	PY=DP(2,I)
	PZ=DP(3,I)
	DP(1,I)=PX*DT(1,1)+PY*DT(1,2)+PZ*DT(1,3)
	DP(2,I)=PX*DT(2,1)+PY*DT(2,2)+PZ*DT(2,3)
	DP(3,I)=PX*DT(3,1)+PY*DT(3,2)+PZ*DT(3,3)
10      CONTINUE
	RETURN
	END
	CONTINU