Compucolor.org – Virtual Media

Listing of file='SPHERE.BAS;01' on disk='vmedia/demos-sector.ccvf'

50 PLOT 31,17:PRINT "WORKING"
60 PLOT 15,19:PRINT "TAKES TWO MINUTES TO CALCULATE"
100 REM  GENERATE A SPHERE USING THE SPHERICAL COORDINATE SYSTEM
110 DIM X(100),Y(100),Z(100)
120 RO= 30:I= 1
130 FOR TH= 0TO 2.51327STEP .628317
140 FOR PH= 0TO 6.28319STEP .330694
150 X(I)= RO* COS (TH)* SIN (PH)
160 Y(I)= RO* SIN (TH)* SIN (PH)
170 Z(I)= RO* COS (PH)
180 I= I+ 1
190 NEXT PH
200 NEXT TH
210 P= 100
1080 REM  DIMETRIC PROJECTION ROUTINE
1090 REM  FROM 'MATHERMATICAL ELEMENTS FOR COMPUTER GRAPHICS'
1100 REM    P= NUMBER OF X,Y,Z TRIPLETS
1110 REM     X( )= ARRAY CONTAINING X-COORDINATES
1120 REM     Y( )= ARRAY CONTAINING Y-COORDINATES
1130 REM    Z( )=ARRAY CONTAINING Z-COORDINATES
1140 DIM U(100,4),V(100,4),T(4,4)
1150 FOR I= 1TO P:FOR J= 1TO 4:U(I,J)= 0:V(I,J)= 0:NEXT J:NEXT I
1160 FOR I= 1TO P
1170 U(I,1)= X(I):U(I,2)= Y(I):U(I,3)= Z(I):U(I,4)= 1
1180 NEXT I
1190 FOR I= 1TO 4:FOR J= 1TO 4:T(I,J)= 0:NEXT J:NEXT I
1200 T(1,1)= .92582:T(1,2)= .133631:T(1,3)= - .353553
1210 T(2,2)= .935414:T(2,3)= .353553
1220 T(3,1)= .377964:T(3,2)= - .327327:T(3,3)= .866025
1230 T(4,4)= 1.0
1240 FOR I= 1TO P:FOR J= 1TO 4:FOR K= 1TO 4
1250 V(I,J)= U(I,K)* T(K,J)+ V(I,J)
1260 NEXT K:NEXT J:NEXT I
1270 FOR I= 1TO P
1280 X(I)= V(I,1):Y(I)= V(I,2):Z(I)= V(I,3)
1290 NEXT I
1300 N= 3
1310 REM  AXONDMETPIC PROJECTIDN RDUTINE
1320 REM     FROM 'MATHERMATICAL ELEMENTS FOR COMPUTER GRAPHICS'
1330 REM    P=NUMBER OF X,Y,Z TRIPLETS
1340 REM    X( ) = ARRAY CONTAINING X-COORDINATES
1350 REM    Y( ) = ARRAY CONTAINING Y-COORDINATES
1360 REM     Z( ) = ARRAY CONTAINING Z-COORDINATES
1370 REM     N=NUMBER INDICATING THE PERPENDICULAR AXIS
1380 REM     N=1 X-AXIS, N=2 Y-AXIS, N=3 Z-AXIS
1390 FOR I= 1TO P:FOR J= 1TO 4:U(I,J)= 0:V(I,J)= 0:NEXT J:NEXT I
1400 FOR I= 1TO P
1410 U(I,1)= X(I):U(I,2)= Y(I):U(I,3)= Z(I):U(I,4)= 1
1420 NEXT I
1430 FOR I= 1TO 4:FOR J= 1TO 4:T(I,J)= 0:NEXT J:NEXT I
1440 T(1,1)= 1:T(2,2)= 1:T(3,3)= 1:T(4,4)= 1
1450 IF N= 3THEN 1490
1460 IF N= 2THEN 1480
1470 T(1,1)= 0:GOTO 1500
1480 T(2,2)= 0:GOTO 1500
1490 T(3,3)= 0
1500 FOR I= 1TO P:FOR J= 1TO 4:FOR K= 1TO 4
1510 V(I,J)= U(I,K)* T(K,J)+ V(I,J)
1520 NEXT K:NEXT J:NEXT I
1530 FOR I= 1TO P
1540 HX= X(1):LX= X(1):HY= Y(1):LY= Y(1)
1550 FOR I= 2TO P
1560 IF X(I)> HXTHEN HX= X(I):GOTO 1580
1570 IF X(I)< LXTHEN LX= X(I)
1580 IF Y(I)> HYTHEN HY= Y(I):GOTO 1600
1590 IF Y(I)< LYTHEN LY= Y(I)
1600 NEXT I
1610 DX= HX- LX:DY= HY- LY:MX= 127/ DX:MY= 127/ DY
1620 PLOT 12,6,3,2,INT (0.5+ MX* (X(1)- LX)),INT (0.5+ MY* (Y(1)- LY))
1630 PLOT 242
1640 FOR I= 1TO P
1650 X(I)= INT (0.5+ MX* (X(I)- LX))
1660 Y(I)= INT (0.5+ MY* (Y(I)- LY))
1670 PLOT X(I),Y(I)
1680 NEXT I
1690 PLOT 255