body [クラス]
:super cascaded-coords
:slots (faces edges vertices model-vertices box convexp evertedp csg)
-
- 3次元形状を定義する。
:magnify rate [メソッド]
-
-
このbodyのサイズをrateで変更する。拡大は,csgリストの中に
記録される。
:translate-vertices vector [メソッド]
-
-
モデルの頂点を相対移動する。vectorはローカル座標系で与えられなければならない。
変換はcsgリストに記録される。
:rotate-vertices angle axis [メソッド]
-
-
モデルの頂点をaxis軸回りにangleラジアン回転させる。
回転はcsgリストに記録される。
:reset-model-vertices [メソッド]
-
-
:newcoords rot &optional pos [メソッド]
-
-
座標系をrotやposを用いて変更する。
posが省略された時はnewrotにはcoordinatesのインスタンスを与える。
:vertices [メソッド]
-
- このbodyのすべての頂点のリストを返す。
:edges [メソッド]
-
- このbodyのすべてのエッジのリストを返す。
:faces [メソッド]
-
-
このbodyを構成するすべての面のリストを返す。
:box [メソッド]
-
- このbodyのbounding-boxを返す。
:Euler [メソッド]
-
-
このbodyのオイラー数を計算する。これは,
faces+verticesedges2holesである。
これは,2ringsと等しくなるべきである。
:perimeter [メソッド]
-
-
すべてのエッジの長さの合計を返す。
:volume &optional (reference-point #f(0 0 0)) [メソッド]
-
-
このbodyの体積を返す。
:centroid &optional (point #f(0 0 0) [メソッド]
-
-
このbodyが均質な立体と仮定し,重心の位置を返す。
:possibly-interfering-faces box [メソッド]
-
-
:common-box body [メソッド]
-
-
このbodyと他のbodyの共通な最小のboxを返す。
もし,2つのbodyが干渉しているならば,その交差部分は
この共通boxの中に存在するはずである。
:insidep point [メソッド]
-
-
もし,pointがこのbodyに属するなら,:insideを返す。
もし,pointがこのbodyの表面上にある場合,:borderを返す。
そうでなければ,:outsideを返す。
:intersect-face face [メソッド]
-
-
もし,このbodyの面とfaceの間に干渉がある場合,Tを返す。
:intersectp body [メソッド]
-
-
このbodyと他のbodyとの間の交差部分を返す。
:evert [メソッド]
-
- すべての面とエッジの方向を反転させる。
そのため,このbodyの内部は外部になる。
:faces-intersect-with-point-vector point direction [メソッド]
-
-
pointからdirectionの方向に伸びるベクトルと交差する面をすべて集める。
:distance target [メソッド]
-
-
targetは,実数ベクトルあるいは平面オブジェクトである。
:distanceメソッドは,targetから最も近い面を見つけ,
その面と距離のリストを返す。
:csg [メソッド]
-
-
bodyが構築された履歴であるcsgスロットを返す。
:primitive-body [メソッド]
-
-
このbodyを構築する基本bodyのリストを返す。
:primitive-body-p [メソッド]
-
- もし,このbodyが
節で示される関数の内の1つから作られた基本bodyであるなら,Tを返す。
:creation-form [メソッド]
-
-
このbodyを作るためのLisp表現を返す。
:body-type [メソッド]
-
-
もし,このbodyが基本bodyあるいはこのbodyの表現が複雑(に構成された)
bodyなら,作成パラメータのリストを返す。
:primitive-groups [メソッド]
-
-
2つの要素をもつリストを返す。
最初の要素は,このbodyを構成するために追加(body+)された基本body
のリストである。次の要素は,差し引かれた基本bodyのリストである。
:get-face body &optional face id [メソッド]
-
-
bodyは,このbodyを構成しているbodyのインスタンスであり,
基本body型の1つである。例えば,:cube, :prism, :cone, :solid-of-resolutionなどか
あるいはNILである。
もし,faceもidも与えられないならば,bodyに一致する面をすべて返す。
もし,faceが与えられたなら,その上にフィルターが実行される。
faceは,:top,:bottomと:sideの内の1つでなければならない。
(send abody :get-face :cylinder :top)は,abodyを構成する円柱の上面すべてを返す。
もし,faceが:sideなら,idで番号付けされた面を取り出すことができる。
(send abody nil :side 2)は,idが0から始まるため,abodyを構成する
bodyの側面から3番目の面をすべて返す。
:init &key :faces :edges :vertices [メソッド]
-
-
:facesよりこのbodyを初期化する。
:facesは,必要な引き数である。
:faces,:edgesと:verticesは完全な立体モデルを定義するために
矛盾のない関係を持っていなければならないので,矛盾した引き数でこのメソッドを
呼び出すことは,意味の無いことである。
bodyを作るために,節で書いている基本bodyの作成関数と
節のbody合成関数を使用する。
:constraint b [メソッド]
-
- このbodyがbに接触しているとき,
このbodyの拘束を返す。このメソッドの詳細な説明は節を参照すること。
2016-04-05