Viewer

画面の上に描画するためには、4つのオブジェクトが必要である。 1つは描かれたオブジェクト、2つはviewing座標系と投影で定義されるviewing、 3つはNDCの中でのクリップ処理のためのviewportとNDCから物理的画面座標系への 変換、4つは 物理的ディスプレイデバイスの上に描画関数を実行するviewsurfaceviewerオブジェクトは、viewingviewportviewsurface オブジェクトを持ち、 座標系変換を連続的に制御する。 [*]節に記述されるdrawhid関数はviewerの インスタンスを使用する。




viewer [クラス]


  :super   object 

:slots (eye :type viewint)
(port :type viewport)
(surface :type viewsurface)


viewingからviewportを経由してviewsurfaceへ移るCascaded Coordinatesの変換を定義する。


:viewing &rest msg [メソッド]

もし、msgが与えられたならば、msgviewing(eye)オブジェクト に送られる。そうでなければ、viewing(eye)オブジェクトが返される。


:viewport &rest msg [メソッド]
もし、msgが与えられたならば、msgviewport(port)オブジェクト に送られる。そうでなければ、viewport(port)オブジェクトが返される。


:viewsurface &rest msg [メソッド]
もし、msgが与えられたならば、msgviewsurface(surface)オブジェクト に送られる。そうでなければ、viewsurface(surface)オブジェクトが返される。


:adjust-viewport [メソッド]
viewsurfaceの大きさが変えられたとき、:adjust-viewportportに固有のメッセージを送ることによりviewportの変換を変える。


:resize width height [メソッド]
viewsurface:resizeメッセージを送り、viewport:sizeメッセージを送る ことによりviewsurfaceの大きさを変える。


:draw-line-ndc p1 p2 &optional (do-clip t) [メソッド]
NDCの中に定義される2つの端点p1,p2を結ぶ線を描く。


:draw-polyline-ndc polylines [メソッド]
NDCの中に定義される端点を結ぶ多角形を描く。


:draw-star-ndc center &optional (size 0.01) [メソッド]
NDCの中に十字マークを描く。


:draw-box-ndc low-left up-right [メソッド]
NDCの中に四角形を描く。


:draw-arc-ndc point width height angle1 angle2 &optional color [メソッド]
NDCの中に円弧を描く。 このviewerに結び付くviewsurfaceオブジェクトは、:arcメッセージを 受けなければならない。


:draw-fill-arc-ndc point width height angle1 angle2 &optional color [メソッド]
NDCの中に塗り潰し円弧を描く。


:draw-string-ndc position string &optional color [メソッド]
NDCの中に定義されるpositionstringを描く。


:draw-image-string-ndc position string &optional color [メソッド]


:draw-rectangle-ndc position width height &optional color [メソッド]


:draw-fill-rectangle-ndc point width height &optional color [メソッド]


:draw-line p1 p2 &optional (do-clip t) [メソッド]
ワールド座標系に定義される2つの端点p1,p2を結ぶ線を描く。


:draw-star position &optional (size 0.01) [メソッド]
ワールド座標系のposition位置に十字マークを描く。


:draw-box center &optional (size 0.01) [メソッド]
ワールド座標系のcenterに四角形を描く。


:draw-arrow p1 p2 [メソッド]
p1からp2へ向けての矢印を描く。


:draw-edge edge [メソッド]


:draw-edge-image edge-image [メソッド]


:draw-faces face-list &optional (normal-clip nil) [メソッド]


:draw-body body &optional (normal-clip nil) [メソッド]


:draw-axis coordinates &optional size [メソッド]
coordinatesで定義される軸をsizeの長さで描く。


:draw &rest things [メソッド]
3次元の幾何学オブジェクトを描く。 もし、オブジェクトが3次元ベクトルならば、その位置に小さな十字マークを描く。 もし、3次元ベクトルのリストであれば、多角形を描く。 もし、thing:drawメッセージを受けたならば、 このviewerを引き数としてそのメソッドが呼び出される。 もし、オブジェクトが:drawnersメソッドを定義しているならば、 :drawメッセージは:drawnersの結果に送られる。 line, edge, polygon, faceおよびbodyオブジェクトは、 viewerに定義されている:draw-xxx(xxxにそのオブジェクトのクラス名が入る) メソッドによって描かれる。


:erase &rest things [メソッド]
背景色でthingsを描く。


:init &key :viewing :viewport :viewsurface [メソッド]
viewing, viewportおよびviewsurfaceをこのviewerのスロット eye, portsurfaceに設定する。



\begin{emtabbing}
{\bf view}
\it\&key \= (:size 500) (:width size) (:height siz...
... (:screen-y screen) \\
\> (:xcenter 500) (:ycenter 400) \\
\rm
\end{emtabbing}

新しいviewerを作り、*viewer*リストに置く。


2016-04-05