eusx$ (setq *viewer* (view :viewpoint #f(1000 1000 500))) #<viewer #X1028e29c eusx view> eusx$ (draw (make-cube 100 200 300)) nilとすると,viewの実行で,画面に図4左のような ウィンドウが表示されて,drawによって右のように立体が表示される. eusでは,EUSDIR という環境変数にeus環境をインストールした ルートディレクトリを設定しておく必要がある. そのEUSDIRの下のlibとlib/demoの下のプログラムファイルについては 絶対パスを入力しなくてもロードすることができる. EUSDIR/lib/demoの下には,view.lというファイルが用意されており, これをロードすると,その中に定義されているビューを利用する ことができるようになる. 現在のview.lには,
(setq *viewer* (view :size 450 :title (format nil "EusViewer~d" (length *viewers*)) :x 100 :y 100 :viewpoint #f(1200 800 500) :target #f(0 0 0) :hither 100.0 :yon 5000.0 :screen 1.0 :viewdistance 3.0)) (setq *viewsurface* (send *viewer* :viewsurface)) (setq *viewport* (send *viewer* :viewport)) (setq *viewing* (send *viewer* :viewing))というように定義が行われている. そこで,
eusx$ (load "view.l") t eusx$ (draw (make-cube 100 200 300)) nilとすると表示がなされる. 空間中での視点座標系と視界を定義するviewing, 投影を定義するprojection,2次元表示空間を定義するviewport, 表示デバイスを定義するviewsurfaceなどのクラスがある.
(defclass viewing :super cascaded-coords :slots (viewcoords)) (defclass projection :super viewing :slots ((screenx :type float) (screeny :type float) (hither :type float) (yon :type float) projection-matrix)) (defclass parallel-viewing :super projection) (defclass perspective-viewing :super projection :slots ((viewdistance :type float))) (defclass viewport :super coordinates) (defclass viewer :super propertied-object :slots (eye port surface alt-surface)) (defclass viewsurface :super propertied-object)viewingは,図5のような形で座標系と 視界の範囲を持つ.