next up previous
Next: 21.3 集合演算 Up: 21 三次元形状記述 Previous: 21.1 bodyクラス

21.2 基本立体定義

基本立体の定義には,make-cube, make-cylinder, make-prismなど 数種類の関数が定義されている.

eus$ (setq b1 (make-cube 30 40 100))
#<body #X27b920 (:cube 30 40 100) 
                0.0 0.0 0.0 / 0.0 0.0 0.0>
19.eusx$ (describe b1)
plist=((:volume . 1.200000e+05)
 (:centroid . #f(0.0 -4.959103e-08 -4.882809e-07)))
rot=#2f((1.0 0.0 0.0)
        (0.0 1.0 0.0)
        (0.0 0.0 1.0))
pos=#f(0.0 0.0 0.0)
parent=nil
descendants=nil
worldcoords=#<coordinates #X102893f4
               0.0 0.0 0.0 / 0.0 0.0 0.0>
manager=#<body #X1028a078
              (:cube 30.0 40.0 100.0)
               0.0 0.0 0.0 / 0.0 0.0 0.0>
changed=nil
box=#<bounding-box #X10289d30
    #f(-15.24 -20.32 -50.8)/#f(15.24 20.32 50.8)>
faces=(#<face #X1028a174 :cube :bottom>
       #<face #X102278b4 :cube :top>
       #<face #X1028a138 :cube :side 3 :y>
       #<face #X1028a0d8 :cube :side 2 :x>
       #<face #X102335b4 :cube :side 1 :-y>
       #<face #X10233650 :cube :side 0 :-x>)
edges=(#<edge #X1028a36c #f(15.00 20.00 -50.00)
                         #f(-15.00 20.00 -50.00)>
       #<edge #X1027a40c #f(15.00 20.00 50.00)
                         #f(-15.00 20.00 50.00)>
       #<edge #X1028a2ac #f(15.00 -20.00 -50.00)
                         #f(15.00 20.00 -50.00)>
       #<edge #X1028a2d0 #f(15.00 20.00 -50.00)
                         #f(15.00 20.00 50.00)>
       #<edge #X1027a4a8 #f(15.00 -20.00 50.00)
                         #f(15.00 20.00 50.00)>
       #<edge #X1027a640 #f(-15.00 -20.00 -50.00)
                         #f(15.00 -20.00 -50.00)>
       #<edge #X1028a210 #f(15.00 -20.00 -50.00)
                         #f(15.00 -20.00 50.00)>
       #<edge #X1027a484 #f(-15.00 -20.00 50.00)
                         #f(15.00 -20.00 50.00)>
       #<edge #X1027a544 #f(-15.00 20.00 50.00)
                         #f(-15.00 20.00 -50.00)>
       #<edge #X1027a580 #f(-15.00 20.00 -50.00)
                         #f(-15.00 -20.00 -50.00)>
       #<edge #X1027a5a4 #f(-15.00 -20.00 -50.00)
                         #f(-15.00 -20.00 50.00)>
       #<edge #X1027a448 #f(-15.00 20.00 50.00)
                         #f(-15.00 -20.00 50.00)>)
vertices=(#f(15.0 20.0 -50.0)
          #f(15.0 20.0 50.0)
          #f(15.0 -20.0 -50.0)
          #f(15.0 -20.0 50.0)
          #f(-15.0 20.0 -50.0)
          #f(-15.0 -20.0 -50.0)
          #f(-15.0 -20.0 50.0)
          #f(-15.0 20.0 50.0))
model-vertices=(#f(15.0 20.0 -50.0)
                #f(15.0 20.0 50.0)
                #f(15.0 -20.0 -50.0)
                #f(15.0 -20.0 50.0)
                #f(-15.0 20.0 -50.0)
                #f(-15.0 -20.0 -50.0)
                #f(-15.0 -20.0 50.0)
                #f(-15.0 20.0 50.0))
convexp=t
geometry::evertedp=nil
csg=((:cube 30.0 40.0 100.0))
nil
このように,多面体を表現するデータにはたくさんの情報が含まれている.
図 2: 基本立体の定義関数 jmanualより
\includegraphics[width=11cm]{/home/inaba/eps/lecture/fig1.eps}


generated through LaTeX2HTML. M.Inaba 平成18年5月7日