B этом разделе приводятся примеры, иллюстрирующие использование описанных выше программ проецирования с удалением невидимых линий.
Пример 1. На рис.8.26 показана поверхность, построенная с использованием программы HALLNE. Данные для поверхности (центр которой находится в начале координат) формируются при обращении к программе GIPER1.
DIMENSION DX(2,930),DY(2,930),DZ(2,930),NCLUST(930) DATA N,G,TOL/930,0.15,0.4/ CALL GIPER1(2.,-2.,2.,15,30,DX,DY,DZ,N,1) CALL PAGE(14.,26., '8.26',4,0) CALL REGION(2.,8.,10.,10.,’ ’,1,0) CALL PRJHL(1,5.,5.,-10.) CALL VPLIM(DX,DY,DZ,N,1,N,S) CALL HALLNE(DX,DY,DZ,N,1,N,NCLUST,N,G,TOL,5) CALL ENDPG(0) END
Tот же результат получится при использовании фрагмента:
CALL PRJHL(1,5.,5.,-10.) CALL PRJHL(1,5.,5.,-10.) CALL VPLIM(DX,DY,DZ,N,1,N,S) CALL SPLITP(0.,0.,0.) CALL HALLNE(DX,DY,DZ,N,1,N,NCLUST,N,G,TOL,8)
Bо втором случае явно указана точка, относительно которой должно проводиться разбиение графического объекта на независимые подмножества (см. пп.8.4.3 и 8.4.4).
Пример 2. На рис.8.32 показана сцена, состоящая из двух изолированных графических объектов: цилиндра и сферы. Цилиндр формируется с помощью обращения к подпрограмме CILIND, сфера - в результате вызова двух подпрограмм - SPHERG и SPHERV. Благодаря тому, что сцена допускает описание в виде независимых подмножеств отрезков, которые можно разделить плоскостью, время, затрачиваемое на вычисления, удается заметно сократить (в данном случае на 60%).
DIMENSION DX(2,660),DY(2,660),DZ(2,660),NCL(280) DATA N,NC/660,280/ C...ЦИЛИHДP (ОTPEЗKИ 1 - 280): CALL CILIND(0.4,-1.,0.9,12,20,DX,DY,DZ,N,1) CALL TRANH(1.7,0.,0.,DX,DY,DZ,N,1,NC) C...CФEPA (ОTPEЗKИ 281 - 660) CALL SPHERG(1.,20,10,DX,DY,DZ,N,NC+1) CALL SPHERV(1.,20,10,DX,DY,DZ,N,NC+1+180) C...ИЗОБPAЖEHИE CЦEHЫ: CALL PAGE(14.,26., '8.32',4,0) CALL REGION(2.,8.,10.,10.,’ ’,1,0) CALL PRJHL(1,10.,5.,-3.) CALL VPLIM(DX,DY,DZ,N,1,N,S) C...ИЗОБPAЖEHИE ЦИЛИHДPA: CALL COORDT(DX,DY,DZ,N,1,NC,NCL,NC,3) CALL HALOED(DX,DY,DZ,N,1,NC,1,NC,NCL,NC,0.1,0.3,3) C...ИЗОБPAЖEHИE CФEPЫ: CALL COORDT(DX,DY,DZ,N,NC+1,N,NCL,1,1) CALL HALOED(DX,DY,DZ,N,NC+1,N,1,N,NCL,1,0.15,0.5,1) CALL ENDPG(0) END
Пример 3. Hа рис.8.33 изображена центральная проекция пространственной кривой, построенная с использованием метода ореола.
DIMENSION DX(2,880),DY(2,880),DZ(2,880),NCLUST(880) DATA NN,N1,M,N,K/8,110,3,4,1/,G,TOL,ITYP/0.05,0.2,5/ N2=NN*N1 H1=3.5/NN H2=4.5/NN FI=H1 PSI=H2 DO 21 J=1,N2 FI=FI+H1/N1 PSI=PSI+H2/N1 TH=6.283*(J-1)/(N1-1) X=SIN(TH) Y=1.2*SIN(M*TH+FI) Z=1.5*SIN(N*TH+PSI) IF(K.EQ.1)$GOTO 20 DX(2,K-1)=X DY(2,K-1)=Y DZ(2,K-1)=Z IF(K.EQ.N2)$GOTO 21 20 DX(1,K)=X DY(1,K)=Y DZ(1,K)=Z K=K+1 21 CONTINUE C...PИCОBAHИE ПPОEKЦИИ ПPОCTPAHCTBEHHОЙ KPИBОЙ: CALL PAGE(15.,15.,0,0,1) CALL REGION(1.,1.,13.,13.,0,0,0) CALL PRJHL(1,15.,8.,3.) CALL VPLIM(DX,DY,DZ,N2,1,N2,S) CALL HALLNE(DX,DY,DZ,N2,1,N2,NCLUST,N2,G,TOL,ITYP) CALL ENDPG('8.33') END