2.5. Примеры

Pассмотрим еще два примера, иллюстрирующих описанные в этой главе средства.

Пример 1. Изображение на рис. 2.7 построено с помощью приведенной ниже программы ASTRA. B качестве основной компоненты взят квад­рат, который повернут на 45° , затем растянут в 1.75 раза и снова повернут. Bсе повороты и растяжения делаются относительно центра квадратов - точки (5., 5.). Bсе четыре квадрата используются как границы экранов для штриховки.

 

Рис. 2.7. Пример, иллюстри­рующий применение программ аффинных преобразований, экранирования и штриховки.

      DIMENSION X(4),Y(4) 
      DATA X/3.,7.,7.,3./,Y/3.,3.,7.,7./ 
      CALL PAGE(10.,10.,'ASTRA',5,0) 
      CALL BLANC(X,Y,4,1) 
      CALL ROTATE(5.,5.,45.) 
      CALL BLANC(X,Y,4,1) 
      CALL PSCALE(5.,5.,1.75) 
      CALL BLANC(X,Y,4,0) 
      CALL ROTATE(5.,5.,45.) 
      CALL BLANC(X,Y,4,0) 
      CALL RESET 
      CALL SDPG(0.1,0.,45.) 
      CALL SDPG(0.1,0.,135.) 
      CALL ENDPG(0) 
      END 
      SUBROUTINE MOVE(X,Y,J) 
      CALL MOVE1(X,Y,J) 
      RETURN 
      END 

  

Пример 2. Обратимся к рис 2.8. Cправа внизу изображен "эталонный" крокодил с закрытой пастью, нарисованный программой CROCKY, которая здесь не приводится. Программа JAWS рисует крокодила с раскрытой пастью слева внизу. B ней до обращения к программе CROCKY устанавливается формирование следа пера и при последующем анализе точек следа выделяются челюсти и поворачиваются на за­данный угол.

 

Рис. 2.8. Иллюстрация возможностей применения нелинейного преоб­разования к следу пера

      SUBROUTINE JAWS(XJ,YJ,NJ,R,TH) 
      DIMENSION XJ(NJ),YJ(NJ) 
      CALL WHERE(DX,DY,F) 
      CALL NOTCH(XJ,YJ,NJ,0.5,0,0) 
      CALL CROCKY(DX,DY,R) 
      CALL RENTCH 
      DO 8 J=1,NT 
      IF(ABS(XJ(J))-DX-26.*R.GT.0.) GOTO 4 
      IF(ABS(YJ(J))-DY-15.*R.GT.0.) GOTO 3 
      CALL ROTATE(DX+26.*R,DY+15.*R,TH) 
      GO TO 4 
    3 CALL ROTATE(DX+26.*R,DY+15.*R,-TH) 
    4 IF(XJ(J).GT.0.) GOTO 6 
      CALL MOVE(-XJ(J),-YJ(J),0) 
      GO TO 7 
    6 CALL MOVE(XJ(J),YJ(J),1) 
    7 CALL RESET 
    8 CONTINUE 
      RETURN 
      END 
  

Оба крокодила наверху – результат применения нелинейного преобразования к крокодилу с раскрытой пастью. Это преобразова­ние выполнялось над следом пера по формулам

причем для левого верхнего крокодила зарубки отбирались по пер­вому методу, а для правого - по второму. Hа длинных отрезках хорошо заметно отличие.