# polyhedra.tcl # Author: Gerard Sookahet # Date: 30 Mai 2005 # Description: Rotating polyhedra using a 'standard' tk canvas. # Flat shading and wireframe mode. # Tclet version. # lset forward compatibility by RS - see http://wiki.tcl.tk/9220 proc lset {_list args} { upvar 1 $_list list set indices [lrange $args 0 end-1] if {[llength $indices]==1} {set indices [lindex $indices 0]} ;# list case set list [lset0 $list $indices [lindex $args end]] } proc lset0 {list indices val} { if {[llength $indices]==0} {return $val} set p [lindex $indices 0] set list2 [lindex $list $p] set ind2 [lrange $indices 1 end] lreplace $list $p $p [lset0 $list2 $ind2 $val] } proc Barycenter {lcoords} { set X 0 set Y 0 set n [llength $lcoords] foreach vtx $lcoords { foreach {x y} $vtx { set X [expr {$X + $x}] set Y [expr {$Y + $y}] } } return [list [expr {$X/$n}] [expr {$Y/$n}]] } proc CrossProduct {x1 y1 z1 x2 y2 z2} { return [list [expr {$y1*$z2 - $y2*$z1}] \ [expr {$z1*$x2 - $z2*$x1}] \ [expr {$x1*$y2 - $x2*$y1}]] } proc DotProduct {x1 y1 z1 x2 y2 z2} { return [expr {$x1*$x2 + $y1*$y2 + $z1*$z2}] } proc MatrixVectorProduct {M V} { set x [lindex $V 0] set y [lindex $V 1] set z [lindex $V 2] return [list [expr {[lindex $M 0 0]*$x+[lindex $M 1 0]*$y+[lindex $M 2 0]*$z}] \ [expr {[lindex $M 0 1]*$x+[lindex $M 1 1]*$y+[lindex $M 2 1]*$z}] \ [expr {[lindex $M 0 2]*$x+[lindex $M 1 2]*$y+[lindex $M 2 2]*$z}]] } proc MatrixProduct {M1 M2} { set M {{0 0 0 0} {0 0 0 0} {0 0 0 0} {0 0 0 0}} for {set i 0} {$i<4} {incr i} { for {set j 0} {$j<4} {incr j} { lset M $i $j 0 for {set k 0} {$k<4} {incr k} { lset M $i $j [expr {[lindex $M $i $j]+[lindex $M1 $i $k]*[lindex $M2 $k $j]}] } } } return $M } proc MatrixRotation { ax ay az } { set sax [expr {sin($ax)}] set cax [expr {cos($ax)}] set say [expr {sin($ay)}] set cay [expr {cos($ay)}] set saz [expr {sin($az)}] set caz [expr {cos($az)}] set Mx {{1 0 0 0} {0 0 0 0} {0 0 0 0} {0 0 0 1}} set My {{0 0 0 0} {0 1 0 0} {0 0 0 0} {0 0 0 1}} set Mz {{0 0 0 0} {0 0 0 0} {0 0 1 0} {0 0 0 1}} # Rotation matrix around X axis with angle ax lset Mx 1 1 $cax lset Mx 1 2 $sax lset Mx 2 1 [expr {-1*$sax}] lset Mx 2 2 $cax # Rotation matrix around Y axis with angle ay lset My 0 0 $cay lset My 0 2 [expr {-1*$say}] lset My 2 0 $say lset My 2 2 $cay # Rotation matrix around Z axis with angle az lset Mz 0 0 $caz lset Mz 0 1 $saz lset Mz 1 0 [expr {-1*$saz}] lset Mz 1 1 $caz return [MatrixProduct [MatrixProduct $Mx $My] $Mz] } # Compute normal vector and norm for each face # ------------------------------------------------------------------- proc NormalVector {lvtx lcnx} { set lnv {} set lmv {} foreach face $lcnx { foreach {nx ny nz} [CrossProduct \ [expr {[lindex $lvtx [lindex $face 1] 0] - [lindex $lvtx [lindex $face 0] 0]}] \ [expr {[lindex $lvtx [lindex $face 1] 1] - [lindex $lvtx [lindex $face 0] 1]}] \ [expr {[lindex $lvtx [lindex $face 1] 2] - [lindex $lvtx [lindex $face 0] 2]}] \ [expr {[lindex $lvtx [lindex $face 2] 0] - [lindex $lvtx [lindex $face 1] 0]}] \ [expr {[lindex $lvtx [lindex $face 2] 1] - [lindex $lvtx [lindex $face 1] 1]}] \ [expr {[lindex $lvtx [lindex $face 2] 2] - [lindex $lvtx [lindex $face 1] 2]}]] {} lappend lnv [list $nx $ny $nz] lappend lmv [DotProduct $nx $ny $nz $nx $ny $nz] } return [list $lnv $lmv] } # 2D projection # ------------------------------------------------------------------- proc Projection {x y z M} { global scx scy vdist set nx [expr {[lindex $M 0 0]*$x+[lindex $M 1 0]*$y+[lindex $M 2 0]*$z}] set ny [expr {[lindex $M 0 1]*$x+[lindex $M 1 1]*$y+[lindex $M 2 1]*$z}] set nz [expr {([lindex $M 0 2]*$x+[lindex $M 1 2]*$y+[lindex $M 2 2]*$z+10)/$vdist}] return [list [expr {$nx/$nz+$scx/2.0}] [expr {$ny/$nz+$scy/2.0}]] } # Apply transformations to vertex coordinates # ------------------------------------------------------------------- proc Transformations {lvtx lnv} { global ax ay az update set lnew {} set lvn {} # Compute matrix rotation set M [MatrixRotation $ax $ay $az] set i 0 # Apply projection foreach vtx $lvtx { lappend lnew [Projection [lindex $vtx 0] [lindex $vtx 1] [lindex $vtx 2] $M] incr i } # Normal vector rotation foreach v $lnv {lappend lvn [MatrixVectorProduct $M $v]} return [list $M $lnew $lvn] } # Compute color entensity for each face # ------------------------------------------------------------------- proc Intensity {lnv lmv lvv} { set lclr {} set v [DotProduct [lindex $lvv 0] [lindex $lvv 1] [lindex $lvv 2] \ [lindex $lvv 0] [lindex $lvv 1] [lindex $lvv 2]] set i 0 foreach nv $lnv { set clr 31 set a [DotProduct [lindex $nv 0] [lindex $nv 1] [lindex $nv 2] \ [lindex $lvv 0] [lindex $lvv 1] [lindex $lvv 2]] set b [expr {sqrt([lindex $lmv $i]*$v)}] set clr [expr {round(31*($a/$b))}] lappend lclr [expr {$clr < 0 ? 31 : [expr {32 - $clr}]}] incr i } return $lclr } # Start the display and rotation loop # ------------------------------------------------------------------- proc DisplayModel {s} { global stop global display global ax ay az tx ty tz .c delete all set stop 0 set ax 0.2 set ay 0.1 set az 0.3 set tx 0 set ty 0 set tz 0 set d $display foreach {t lvtx lcnx lclr} [ReadData $s] {} .c create text 10 10 -anchor w -fill white -text $t foreach {lnv lmv} [NormalVector $lvtx $lcnx] {} set lpoly [DisplayInit $d $lcnx $lclr] if {$d == "shaded"} then { for {set i 1} {$i<=820} {incr i} { if $stop break set ax [expr {$ax-0.02}] set az [expr {$az+0.02}] set ay [expr {$ay+0.025}] after 40 DisplayShaded $lpoly $lvtx $lcnx $lnv $lmv } } else { for {set i 1} {$i<=820} {incr i} { if $stop break set ax [expr {$ax-0.02}] set az [expr {$az+0.02}] set ay [expr {$ay+0.025}] after 40 Display $lpoly $lvtx $lcnx $lnv $lmv } } } # Data structure for models with vertices and connectivity # ------------------------------------------------------------------- proc ReadData { n } { set lvtx {} set lcnx {} set lclr {} set txt "" switch $n { tetrahedron { set txt "tetrahedron: 4 faces 4 vertices 5 edges" set a [expr {1.0/sqrt(3.0)}] set lvtx [list [list $a $a $a] [list $a -$a -$a] \ [list -$a $a -$a] [list -$a -$a $a]] set lcnx {{0 3 1} {2 0 1} {3 0 2} {1 3 2}} } cube { set txt "cube: 6 faces 8 vertices 12 edges" set lvtx {{0.7 0.7 0.7} {-0.7 0.7 0.7} {-0.7 -0.7 0.7} {0.7 -0.7 0.7} {0.7 0.7 -0.7} {-0.7 0.7 -0.7} {-0.7 -0.7 -0.7} {0.7 -0.7 -0.7}} set lcnx {{4 7 6 5} {0 1 2 3} {3 2 6 7} {4 5 1 0} {0 3 7 4} {5 6 2 1}} } octahedron { set txt "octahedron 8 faces 6 vertices 16 edges" set lvtx {{1 0 0} {0 1 0} {-1 0 0} {0 -1 0} {0 0 1} {0 0 -1}} set lcnx {{0 1 4} {1 2 4} {2 3 4} {3 0 4} {1 0 5} {2 1 5} {3 2 5} {0 3 5}} } dodecahedron { set txt "dodecahedron 12 faces 20 vertices 30 edges" set s3 [expr sqrt(3)] set s5 [expr sqrt(5)] set alpha [expr {sqrt(2.0/(3 + $s5))/$s3}] set beta [expr {(1.0 + sqrt(6.0/(3 + $s5) - 2 + 2*sqrt(2.0/(3.0 + $s5))))/$s3}] set gamma [expr {1.0/$s3}] set lvtx [list \ [list -$alpha 0 $beta] \ [list $alpha 0 $beta] \ [list -$gamma -$gamma -$gamma] \ [list -$gamma -$gamma $gamma] \ [list -$gamma $gamma -$gamma] \ [list -$gamma $gamma $gamma] \ [list $gamma -$gamma -$gamma] \ [list $gamma -$gamma $gamma] \ [list $gamma $gamma -$gamma] \ [list $gamma $gamma $gamma] \ [list $beta $alpha 0] \ [list $beta -$alpha 0] \ [list -$beta $alpha 0] \ [list -$beta -$alpha 0] \ [list -$alpha 0 -$beta] \ [list $alpha 0 -$beta] \ [list 0 $beta $alpha] \ [list 0 $beta -$alpha] \ [list 0 -$beta $alpha] \ [list 0 -$beta -$alpha]] set lcnx {{0 1 9 16 5} {1 0 3 18 7} {1 7 11 10 9} {11 7 18 19 6} {8 17 16 9 10} {2 14 15 6 19} {2 13 12 4 14} {2 19 18 3 13} {3 0 5 12 13} {6 15 8 10 11} {4 17 8 15 14} {4 12 5 16 17}} } icosahedron { set txt "icosahedron: 20 faces 12 vertices 30 edges" set X 0.525731112119133606 set Z 0.850650808352039932 set lvtx [list [list -$X 0.0 $Z] [list $X 0.0 $Z] [list -$X 0.0 -$Z] \ [list $X 0.0 -$Z] [list 0.0 $Z $X] [list 0.0 $Z -$X] \ [list 0.0 -$Z $X] [list 0.0 -$Z -$X] [list $Z $X 0.0] \ [list -$Z $X 0.0] [list $Z -$X 0.0] [list -$Z -$X 0.0]] set lcnx {{4 0 1} {9 0 4} {5 9 4} {5 4 8} {8 4 1} {10 8 1} {3 8 10} {3 5 8} {2 5 3} {7 2 3} {10 7 3} {6 7 10} {11 7 6} {0 11 6} {1 0 6} {1 6 10} {0 9 11} {11 9 2} {2 9 5} {2 7 11}} } cone { set txt "cone: 32 faces 18 vertices" set lvtx {{0.000000 -1.000000 0.000000} {1.000000 1.000000 0.000000} {0.923880 1.000000 0.382683} {0.707107 1.000000 0.707107} {0.382683 1.000000 0.923880} {0.000000 1.000000 1.000000} {-0.382683 1.000000 0.923880} {-0.707107 1.000000 0.707107} {-0.923880 1.000000 0.382683} {-1.000000 1.000000 0.000000} {-0.923880 1.000000 -0.382683} {-0.707107 1.000000 -0.707107} {-0.382683 1.000000 -0.923880} {-0.000000 1.000000 -1.000000} {0.382683 1.000000 -0.923880} {0.707107 1.000000 -0.707107} {0.923880 1.000000 -0.382683} {0.000000 1.000000 0.000000}} set lcnx {{1 16 17} {16 15 17} {15 14 17} {14 13 17} {13 12 17} {12 11 17} {11 10 17} {10 9 17} {9 8 17} {8 7 17} {7 6 17} {6 5 17} {5 4 17} {4 3 17} {3 2 17} {2 1 17} {0 16 1} {0 15 16} {0 14 15} {0 13 14} {0 12 13} {0 11 12} {0 10 11} {0 9 10} {0 8 9} {0 7 8} {0 6 7} {0 5 6} {0 4 5} {0 3 4} {0 2 3} {0 1 2}} } diamond { set txt "diamond" set lvtx {{-0.0507735 -0.769297 0.0} {0.804 0.0854774 0.0} {0.974955 0.256432 0.0} {0.804 0.598342 0.0} {0.462091 0.769297 0.0} {-0.0507735 0.769297 0.0} {0.482178 0.0854774 0.668262} {0.588768 0.256432 0.801949} {0.482178 0.598342 0.668262} {0.268997 0.769297 0.400974} {-0.240961 0.0854774 0.833319} {-0.278998 0.256432 1.0} {-0.240961 0.598342 0.833319} {-0.164886 0.769297 0.500043} {-0.820925 0.0854774 0.370886} {-0.974955 0.256432 0.445081} {-0.820925 0.598342 0.370886} {-0.512864 0.769297 0.222498} {-0.820925 0.0854774 -0.370886} {-0.974955 0.256432 -0.445081} {-0.820925 0.598342 -0.370886} {-0.512864 0.769297 -0.222498} {-0.240961 0.0854774 -0.833319} {-0.278998 0.256432 -1.0} {-0.240961 0.598342 -0.833319} {-0.164886 0.769297 -0.500043} {0.482178 0.0854774 -0.668262} {0.588768 0.256432 -0.801949} {0.482178 0.598342 -0.668262} {0.268997 0.769297 -0.400974}} set lcnx {{1 6 0} {4 5 9} {6 10 0} {9 5 13} {10 14 0} {5 17 13} {14 18 0} {5 21 17} {18 22 0} {25 21 5} {22 26 0} {29 25 5} {26 1 0} {4 29 5} {1 2 7} {7 6 1} {2 3 8} {8 7 2} {3 4 9} {9 8 3} {6 7 11} {11 10 6} {7 8 12} {12 11 7} {8 9 13} {13 12 8} {13 17 16} {16 12 13} {21 25 24} {24 20 21} {22 23 27} {27 26 22} {23 24 28} {28 27 23} {24 25 29} {29 28 24} {26 27 2} {2 1 26} {27 28 3} {3 2 27} {28 29 4} {4 3 28} {11 15 14} {14 10 11} {12 16 15} {15 11 12} {15 19 18} {18 14 15} {16 20 19} {19 15 16} {17 21 20} {20 16 17} {19 23 22} {22 18 19} {20 24 23} {23 19 20}} } sphere816 { set txt "sphere" set lvtx {{0.000000 1.000000 0.000000} {0.000000 -1.000000 0.000000} {0.382683 0.923880 0.000000} {0.353553 0.923880 0.146447} {0.270598 0.923880 0.270598} {0.146447 0.923880 0.353553} {0.000000 0.923880 0.382683} {-0.146447 0.923880 0.353553} {-0.270598 0.923880 0.270598} {-0.353553 0.923880 0.146447} {-0.382683 0.923880 0.000000} {-0.353553 0.923880 -0.146447} {-0.270598 0.923880 -0.270598} {-0.146447 0.923880 -0.353553} {-0.000000 0.923880 -0.382683} {0.146447 0.923880 -0.353553} {0.270598 0.923880 -0.270598} {0.353553 0.923880 -0.146447} {0.707107 0.707107 0.000000} {0.653281 0.707107 0.270598} {0.500000 0.707107 0.500000} {0.270598 0.707107 0.653281} {0.000000 0.707107 0.707107} {-0.270598 0.707107 0.653281} {-0.500000 0.707107 0.500000} {-0.653281 0.707107 0.270598} {-0.707107 0.707107 0.000000} {-0.653281 0.707107 -0.270598} {-0.500000 0.707107 -0.500000} {-0.270598 0.707107 -0.653281} {-0.000000 0.707107 -0.707107} {0.270598 0.707107 -0.653281} {0.500000 0.707107 -0.500000} {0.653281 0.707107 -0.270598} {0.923880 0.382683 0.000000} {0.853553 0.382683 0.353553} {0.653281 0.382683 0.653281} {0.353553 0.382683 0.853553} {0.000000 0.382683 0.923880} {-0.353553 0.382683 0.853553} {-0.653281 0.382683 0.653281} {-0.853553 0.382683 0.353553} {-0.923880 0.382683 0.000000} {-0.853553 0.382683 -0.353553} {-0.653281 0.382683 -0.653281} {-0.353553 0.382683 -0.853553} {-0.000000 0.382683 -0.923880} {0.353553 0.382683 -0.853553} {0.653281 0.382683 -0.653281} {0.853553 0.382683 -0.353553} {1.000000 0.000000 0.000000} {0.923880 0.000000 0.382683} {0.707107 0.000000 0.707107} {0.382683 0.000000 0.923880} {0.000000 0.000000 1.000000} {-0.382683 0.000000 0.923880} {-0.707107 0.000000 0.707107} {-0.923880 0.000000 0.382683} {-1.000000 0.000000 0.000000} {-0.923880 0.000000 -0.382683} {-0.707107 0.000000 -0.707107} {-0.382683 0.000000 -0.923880} {-0.000000 0.000000 -1.000000} {0.382683 0.000000 -0.923880} {0.707107 0.000000 -0.707107} {0.923880 0.000000 -0.382683} {0.923880 -0.382683 0.000000} {0.853553 -0.382683 0.353553} {0.653281 -0.382683 0.653281} {0.353553 -0.382683 0.853553} {0.000000 -0.382683 0.923880} {-0.353553 -0.382683 0.853553} {-0.653281 -0.382683 0.653281} {-0.853553 -0.382683 0.353553} {-0.923880 -0.382683 0.000000} {-0.853553 -0.382683 -0.353553} {-0.653281 -0.382683 -0.653281} {-0.353553 -0.382683 -0.853553} {-0.000000 -0.382683 -0.923880} {0.353553 -0.382683 -0.853553} {0.653281 -0.382683 -0.653281} {0.853553 -0.382683 -0.353553} {0.707107 -0.707107 0.000000} {0.653281 -0.707107 0.270598} {0.500000 -0.707107 0.500000} {0.270598 -0.707107 0.653281} {0.000000 -0.707107 0.707107} {-0.270598 -0.707107 0.653281} {-0.500000 -0.707107 0.500000} {-0.653281 -0.707107 0.270598} {-0.707107 -0.707107 0.000000} {-0.653281 -0.707107 -0.270598} {-0.500000 -0.707107 -0.500000} {-0.270598 -0.707107 -0.653281} {-0.000000 -0.707107 -0.707107} {0.270598 -0.707107 -0.653281} {0.500000 -0.707107 -0.500000} {0.653281 -0.707107 -0.270598} {0.382683 -0.923880 0.000000} {0.353553 -0.923880 0.146447} {0.270598 -0.923880 0.270598} {0.146447 -0.923880 0.353553} {0.000000 -0.923880 0.382683} {-0.146447 -0.923880 0.353553} {-0.270598 -0.923880 0.270598} {-0.353553 -0.923880 0.146447} {-0.382683 -0.923880 0.000000} {-0.353553 -0.923880 -0.146447} {-0.270598 -0.923880 -0.270598} {-0.146447 -0.923880 -0.353553} {-0.000000 -0.923880 -0.382683} {0.146447 -0.923880 -0.353553} {0.270598 -0.923880 -0.270598} {0.353553 -0.923880 -0.146447}} set lcnx {{1 113 98} {1 112 113} {1 111 112} {1 110 111} {1 109 110} {1 108 109} {1 107 108} {1 106 107} {1 105 106} {1 104 105} {1 103 104} {1 102 103} {1 101 102} {1 100 101} {1 99 100} {1 98 99} {97 82 98 113} {96 97 113 112} {95 96 112 111} {94 95 111 110} {93 94 110 109} {92 93 109 108} {91 92 108 107} {90 91 107 106} {89 90 106 105} {88 89 105 104} {87 88 104 103} {86 87 103 102} {85 86 102 101} {84 85 101 100} {83 84 100 99} {82 83 99 98} {81 66 82 97} {80 81 97 96} {79 80 96 95} {78 79 95 94} {77 78 94 93} {76 77 93 92} {75 76 92 91} {74 75 91 90} {73 74 90 89} {72 73 89 88} {71 72 88 87} {70 71 87 86} {69 70 86 85} {68 69 85 84} {67 68 84 83} {66 67 83 82} {65 50 66 81} {64 65 81 80} {63 64 80 79} {62 63 79 78} {61 62 78 77} {60 61 77 76} {59 60 76 75} {58 59 75 74} {57 58 74 73} {56 57 73 72} {55 56 72 71} {54 55 71 70} {53 54 70 69} {52 53 69 68} {51 52 68 67} {50 51 67 66} {49 34 50 65} {48 49 65 64} {47 48 64 63} {46 47 63 62} {45 46 62 61} {44 45 61 60} {43 44 60 59} {42 43 59 58} {41 42 58 57} {40 41 57 56} {39 40 56 55} {38 39 55 54} {37 38 54 53} {36 37 53 52} {35 36 52 51} {34 35 51 50} {33 18 34 49} {32 33 49 48} {31 32 48 47} {30 31 47 46} {29 30 46 45} {28 29 45 44} {27 28 44 43} {26 27 43 42} {25 26 42 41} {24 25 41 40} {23 24 40 39} {22 23 39 38} {21 22 38 37} {20 21 37 36} {19 20 36 35} {18 19 35 34} {17 2 18 33} {16 17 33 32} {15 16 32 31} {14 15 31 30} {13 14 30 29} {12 13 29 28} {11 12 28 27} {10 11 27 26} {9 10 26 25} {8 9 25 24} {7 8 24 23} {6 7 23 22} {5 6 22 21} {4 5 21 20} {3 4 20 19} {2 3 19 18} {2 17 0} {17 16 0} {16 15 0} {15 14 0} {14 13 0} {13 12 0} {12 11 0} {11 10 0} {10 9 0} {9 8 0} {8 7 0} {7 6 0} {6 5 0} {5 4 0} {4 3 0} {3 2 0}} } sphere1632 { set txt "sphere" set lvtx {{0.000000 1.000000 0.000000} {0.000000 -1.000000 0.000000} {0.195090 0.980785 0.000000} {0.191342 0.980785 0.038060} {0.180240 0.980785 0.074658} {0.162212 0.980785 0.108386} {0.137950 0.980785 0.137950} {0.108386 0.980785 0.162212} {0.074658 0.980785 0.180240} {0.038060 0.980785 0.191342} {0.000000 0.980785 0.195090} {-0.038060 0.980785 0.191342} {-0.074658 0.980785 0.180240} {-0.108386 0.980785 0.162212} {-0.137950 0.980785 0.137950} {-0.162212 0.980785 0.108386} {-0.180240 0.980785 0.074658} {-0.191342 0.980785 0.038060} {-0.195090 0.980785 0.000000} {-0.191342 0.980785 -0.038060} {-0.180240 0.980785 -0.074658} {-0.162212 0.980785 -0.108386} {-0.137950 0.980785 -0.137950} {-0.108386 0.980785 -0.162212} {-0.074658 0.980785 -0.180240} {-0.038060 0.980785 -0.191342} {-0.000000 0.980785 -0.195090} {0.038060 0.980785 -0.191342} {0.074658 0.980785 -0.180240} {0.108386 0.980785 -0.162212} {0.137950 0.980785 -0.137950} {0.162212 0.980785 -0.108386} {0.180240 0.980785 -0.074658} {0.191342 0.980785 -0.038060} {0.382683 0.923880 0.000000} {0.375330 0.923880 0.074658} {0.353553 0.923880 0.146447} {0.318190 0.923880 0.212608} {0.270598 0.923880 0.270598} {0.212608 0.923880 0.318190} {0.146447 0.923880 0.353553} {0.074658 0.923880 0.375330} {0.000000 0.923880 0.382683} {-0.074658 0.923880 0.375330} {-0.146447 0.923880 0.353553} {-0.212608 0.923880 0.318190} {-0.270598 0.923880 0.270598} {-0.318190 0.923880 0.212608} {-0.353553 0.923880 0.146447} {-0.375330 0.923880 0.074658} {-0.382683 0.923880 0.000000} {-0.375330 0.923880 -0.074658} {-0.353553 0.923880 -0.146447} {-0.318190 0.923880 -0.212608} {-0.270598 0.923880 -0.270598} {-0.212608 0.923880 -0.318190} {-0.146447 0.923880 -0.353553} {-0.074658 0.923880 -0.375330} {-0.000000 0.923880 -0.382683} {0.074658 0.923880 -0.375330} {0.146447 0.923880 -0.353553} {0.212608 0.923880 -0.318190} {0.270598 0.923880 -0.270598} {0.318190 0.923880 -0.212608} {0.353553 0.923880 -0.146447} {0.375330 0.923880 -0.074658} {0.555570 0.831470 0.000000} {0.544895 0.831470 0.108386} {0.513280 0.831470 0.212608} {0.461940 0.831470 0.308658} {0.392847 0.831470 0.392847} {0.308658 0.831470 0.461940} {0.212608 0.831470 0.513280} {0.108386 0.831470 0.544895} {0.000000 0.831470 0.555570} {-0.108386 0.831470 0.544895} {-0.212608 0.831470 0.513280} {-0.308658 0.831470 0.461940} {-0.392847 0.831470 0.392847} {-0.461940 0.831470 0.308658} {-0.513280 0.831470 0.212608} {-0.544895 0.831470 0.108386} {-0.555570 0.831470 0.000000} {-0.544895 0.831470 -0.108386} {-0.513280 0.831470 -0.212608} {-0.461940 0.831470 -0.308658} {-0.392847 0.831470 -0.392847} {-0.308658 0.831470 -0.461940} {-0.212608 0.831470 -0.513280} {-0.108386 0.831470 -0.544895} {-0.000000 0.831470 -0.555570} {0.108386 0.831470 -0.544895} {0.212608 0.831470 -0.513280} {0.308658 0.831470 -0.461940} {0.392847 0.831470 -0.392847} {0.461940 0.831470 -0.308658} {0.513280 0.831470 -0.212608} {0.544895 0.831470 -0.108386} {0.707107 0.707107 0.000000} {0.693520 0.707107 0.137950} {0.653281 0.707107 0.270598} {0.587938 0.707107 0.392847} {0.500000 0.707107 0.500000} {0.392847 0.707107 0.587938} {0.270598 0.707107 0.653281} {0.137950 0.707107 0.693520} {0.000000 0.707107 0.707107} {-0.137950 0.707107 0.693520} {-0.270598 0.707107 0.653281} {-0.392847 0.707107 0.587938} {-0.500000 0.707107 0.500000} {-0.587938 0.707107 0.392847} {-0.653281 0.707107 0.270598} {-0.693520 0.707107 0.137950} {-0.707107 0.707107 0.000000} {-0.693520 0.707107 -0.137950} {-0.653281 0.707107 -0.270598} {-0.587938 0.707107 -0.392847} {-0.500000 0.707107 -0.500000} {-0.392847 0.707107 -0.587938} {-0.270598 0.707107 -0.653281} {-0.137950 0.707107 -0.693520} {-0.000000 0.707107 -0.707107} {0.137950 0.707107 -0.693520} {0.270598 0.707107 -0.653281} {0.392847 0.707107 -0.587938} {0.500000 0.707107 -0.500000} {0.587938 0.707107 -0.392847} {0.653281 0.707107 -0.270598} {0.693520 0.707107 -0.137950} {0.831470 0.555570 0.000000} {0.815493 0.555570 0.162212} {0.768178 0.555570 0.318190} {0.691342 0.555570 0.461940} {0.587938 0.555570 0.587938} {0.461940 0.555570 0.691342} {0.318190 0.555570 0.768178} {0.162212 0.555570 0.815493} {0.000000 0.555570 0.831470} {-0.162212 0.555570 0.815493} {-0.318190 0.555570 0.768178} {-0.461940 0.555570 0.691342} {-0.587938 0.555570 0.587938} {-0.691342 0.555570 0.461940} {-0.768178 0.555570 0.318190} {-0.815493 0.555570 0.162212} {-0.831470 0.555570 0.000000} {-0.815493 0.555570 -0.162212} {-0.768178 0.555570 -0.318190} {-0.691342 0.555570 -0.461940} {-0.587938 0.555570 -0.587938} {-0.461940 0.555570 -0.691342} {-0.318190 0.555570 -0.768178} {-0.162212 0.555570 -0.815493} {-0.000000 0.555570 -0.831470} {0.162212 0.555570 -0.815493} {0.318190 0.555570 -0.768178} {0.461940 0.555570 -0.691342} {0.587938 0.555570 -0.587938} {0.691342 0.555570 -0.461940} {0.768178 0.555570 -0.318190} {0.815493 0.555570 -0.162212} {0.923880 0.382683 0.000000} {0.906127 0.382683 0.180240} {0.853553 0.382683 0.353553} {0.768178 0.382683 0.513280} {0.653281 0.382683 0.653281} {0.513280 0.382683 0.768178} {0.353553 0.382683 0.853553} {0.180240 0.382683 0.906127} {0.000000 0.382683 0.923880} {-0.180240 0.382683 0.906127} {-0.353553 0.382683 0.853553} {-0.513280 0.382683 0.768178} {-0.653281 0.382683 0.653281} {-0.768178 0.382683 0.513280} {-0.853553 0.382683 0.353553} {-0.906127 0.382683 0.180240} {-0.923880 0.382683 0.000000} {-0.906127 0.382683 -0.180240} {-0.853553 0.382683 -0.353553} {-0.768178 0.382683 -0.513280} {-0.653281 0.382683 -0.653281} {-0.513280 0.382683 -0.768178} {-0.353553 0.382683 -0.853553} {-0.180240 0.382683 -0.906127} {-0.000000 0.382683 -0.923880} {0.180240 0.382683 -0.906127} {0.353553 0.382683 -0.853553} {0.513280 0.382683 -0.768178} {0.653281 0.382683 -0.653281} {0.768178 0.382683 -0.513280} {0.853553 0.382683 -0.353553} {0.906127 0.382683 -0.180240} {0.980785 0.195090 0.000000} {0.961940 0.195090 0.191342} {0.906127 0.195090 0.375330} {0.815493 0.195090 0.544895} {0.693520 0.195090 0.693520} {0.544895 0.195090 0.815493} {0.375330 0.195090 0.906127} {0.191342 0.195090 0.961940} {0.000000 0.195090 0.980785} {-0.191342 0.195090 0.961940} {-0.375330 0.195090 0.906127} {-0.544895 0.195090 0.815493} {-0.693520 0.195090 0.693520} {-0.815493 0.195090 0.544895} {-0.906127 0.195090 0.375330} {-0.961940 0.195090 0.191342} {-0.980785 0.195090 0.000000} {-0.961940 0.195090 -0.191342} {-0.906127 0.195090 -0.375330} {-0.815493 0.195090 -0.544895} {-0.693520 0.195090 -0.693520} {-0.544895 0.195090 -0.815493} {-0.375330 0.195090 -0.906127} {-0.191342 0.195090 -0.961940} {-0.000000 0.195090 -0.980785} {0.191342 0.195090 -0.961940} {0.375330 0.195090 -0.906127} {0.544895 0.195090 -0.815493} {0.693520 0.195090 -0.693520} {0.815493 0.195090 -0.544895} {0.906127 0.195090 -0.375330} {0.961940 0.195090 -0.191342} {1.000000 0.000000 0.000000} {0.980785 0.000000 0.195090} {0.923880 0.000000 0.382683} {0.831470 0.000000 0.555570} {0.707107 0.000000 0.707107} {0.555570 0.000000 0.831470} {0.382683 0.000000 0.923880} {0.195090 0.000000 0.980785} {0.000000 0.000000 1.000000} {-0.195090 0.000000 0.980785} {-0.382683 0.000000 0.923880} {-0.555570 0.000000 0.831470} {-0.707107 0.000000 0.707107} {-0.831470 0.000000 0.555570} {-0.923880 0.000000 0.382683} {-0.980785 0.000000 0.195090} {-1.000000 0.000000 0.000000} {-0.980785 0.000000 -0.195090} {-0.923880 0.000000 -0.382683} {-0.831470 0.000000 -0.555570} {-0.707107 0.000000 -0.707107} {-0.555570 0.000000 -0.831470} {-0.382683 0.000000 -0.923880} {-0.195090 0.000000 -0.980785} {-0.000000 0.000000 -1.000000} {0.195090 0.000000 -0.980785} {0.382683 0.000000 -0.923880} {0.555570 0.000000 -0.831470} {0.707107 0.000000 -0.707107} {0.831470 0.000000 -0.555570} {0.923880 0.000000 -0.382683} {0.980785 0.000000 -0.195090} {0.980785 -0.195090 0.000000} {0.961940 -0.195090 0.191342} {0.906127 -0.195090 0.375330} {0.815493 -0.195090 0.544895} {0.693520 -0.195090 0.693520} {0.544895 -0.195090 0.815493} {0.375330 -0.195090 0.906127} {0.191342 -0.195090 0.961940} {0.000000 -0.195090 0.980785} {-0.191342 -0.195090 0.961940} {-0.375330 -0.195090 0.906127} {-0.544895 -0.195090 0.815493} {-0.693520 -0.195090 0.693520} {-0.815493 -0.195090 0.544895} {-0.906127 -0.195090 0.375330} {-0.961940 -0.195090 0.191342} {-0.980785 -0.195090 0.000000} {-0.961940 -0.195090 -0.191342} {-0.906127 -0.195090 -0.375330} {-0.815493 -0.195090 -0.544895} {-0.693520 -0.195090 -0.693520} {-0.544895 -0.195090 -0.815493} {-0.375330 -0.195090 -0.906127} {-0.191342 -0.195090 -0.961940} {-0.000000 -0.195090 -0.980785} {0.191342 -0.195090 -0.961940} {0.375330 -0.195090 -0.906127} {0.544895 -0.195090 -0.815493} {0.693520 -0.195090 -0.693520} {0.815493 -0.195090 -0.544895} {0.906127 -0.195090 -0.375330} {0.961940 -0.195090 -0.191342} {0.923880 -0.382683 0.000000} {0.906127 -0.382683 0.180240} {0.853553 -0.382683 0.353553} {0.768178 -0.382683 0.513280} {0.653281 -0.382683 0.653281} {0.513280 -0.382683 0.768178} {0.353553 -0.382683 0.853553} {0.180240 -0.382683 0.906127} {0.000000 -0.382683 0.923880} {-0.180240 -0.382683 0.906127} {-0.353553 -0.382683 0.853553} {-0.513280 -0.382683 0.768178} {-0.653281 -0.382683 0.653281} {-0.768178 -0.382683 0.513280} {-0.853553 -0.382683 0.353553} {-0.906127 -0.382683 0.180240} {-0.923880 -0.382683 0.000000} {-0.906127 -0.382683 -0.180240} {-0.853553 -0.382683 -0.353553} {-0.768178 -0.382683 -0.513280} {-0.653281 -0.382683 -0.653281} {-0.513280 -0.382683 -0.768178} {-0.353553 -0.382683 -0.853553} {-0.180240 -0.382683 -0.906127} {-0.000000 -0.382683 -0.923880} {0.180240 -0.382683 -0.906127} {0.353553 -0.382683 -0.853553} {0.513280 -0.382683 -0.768178} {0.653281 -0.382683 -0.653281} {0.768178 -0.382683 -0.513280} {0.853553 -0.382683 -0.353553} {0.906127 -0.382683 -0.180240} {0.831470 -0.555570 0.000000} {0.815493 -0.555570 0.162212} {0.768178 -0.555570 0.318190} {0.691342 -0.555570 0.461940} {0.587938 -0.555570 0.587938} {0.461940 -0.555570 0.691342} {0.318190 -0.555570 0.768178} {0.162212 -0.555570 0.815493} {0.000000 -0.555570 0.831470} {-0.162212 -0.555570 0.815493} {-0.318190 -0.555570 0.768178} {-0.461940 -0.555570 0.691342} {-0.587938 -0.555570 0.587938} {-0.691342 -0.555570 0.461940} {-0.768178 -0.555570 0.318190} {-0.815493 -0.555570 0.162212} {-0.831470 -0.555570 0.000000} {-0.815493 -0.555570 -0.162212} {-0.768178 -0.555570 -0.318190} {-0.691342 -0.555570 -0.461940} {-0.587938 -0.555570 -0.587938} {-0.461940 -0.555570 -0.691342} {-0.318190 -0.555570 -0.768178} {-0.162212 -0.555570 -0.815493} {-0.000000 -0.555570 -0.831470} {0.162212 -0.555570 -0.815493} {0.318190 -0.555570 -0.768178} {0.461940 -0.555570 -0.691342} {0.587938 -0.555570 -0.587938} {0.691342 -0.555570 -0.461940} {0.768178 -0.555570 -0.318190} {0.815493 -0.555570 -0.162212} {0.707107 -0.707107 0.000000} {0.693520 -0.707107 0.137950} {0.653281 -0.707107 0.270598} {0.587938 -0.707107 0.392847} {0.500000 -0.707107 0.500000} {0.392847 -0.707107 0.587938} {0.270598 -0.707107 0.653281} {0.137950 -0.707107 0.693520} {0.000000 -0.707107 0.707107} {-0.137950 -0.707107 0.693520} {-0.270598 -0.707107 0.653281} {-0.392847 -0.707107 0.587938} {-0.500000 -0.707107 0.500000} {-0.587938 -0.707107 0.392847} {-0.653281 -0.707107 0.270598} {-0.693520 -0.707107 0.137950} {-0.707107 -0.707107 0.000000} {-0.693520 -0.707107 -0.137950} {-0.653281 -0.707107 -0.270598} {-0.587938 -0.707107 -0.392847} {-0.500000 -0.707107 -0.500000} {-0.392847 -0.707107 -0.587938} {-0.270598 -0.707107 -0.653281} {-0.137950 -0.707107 -0.693520} {-0.000000 -0.707107 -0.707107} {0.137950 -0.707107 -0.693520} {0.270598 -0.707107 -0.653281} {0.392847 -0.707107 -0.587938} {0.500000 -0.707107 -0.500000} {0.587938 -0.707107 -0.392847} {0.653281 -0.707107 -0.270598} {0.693520 -0.707107 -0.137950} {0.555570 -0.831470 0.000000} {0.544895 -0.831470 0.108386} {0.513280 -0.831470 0.212608} {0.461940 -0.831470 0.308658} {0.392847 -0.831470 0.392847} {0.308658 -0.831470 0.461940} {0.212608 -0.831470 0.513280} {0.108386 -0.831470 0.544895} {0.000000 -0.831470 0.555570} {-0.108386 -0.831470 0.544895} {-0.212608 -0.831470 0.513280} {-0.308658 -0.831470 0.461940} {-0.392847 -0.831470 0.392847} {-0.461940 -0.831470 0.308658} {-0.513280 -0.831470 0.212608} {-0.544895 -0.831470 0.108386} {-0.555570 -0.831470 0.000000} {-0.544895 -0.831470 -0.108386} {-0.513280 -0.831470 -0.212608} {-0.461940 -0.831470 -0.308658} {-0.392847 -0.831470 -0.392847} {-0.308658 -0.831470 -0.461940} {-0.212608 -0.831470 -0.513280} {-0.108386 -0.831470 -0.544895} {-0.000000 -0.831470 -0.555570} {0.108386 -0.831470 -0.544895} {0.212608 -0.831470 -0.513280} {0.308658 -0.831470 -0.461940} {0.392847 -0.831470 -0.392847} {0.461940 -0.831470 -0.308658} {0.513280 -0.831470 -0.212608} {0.544895 -0.831470 -0.108386} {0.382683 -0.923880 0.000000} {0.375330 -0.923880 0.074658} {0.353553 -0.923880 0.146447} {0.318190 -0.923880 0.212608} {0.270598 -0.923880 0.270598} {0.212608 -0.923880 0.318190} {0.146447 -0.923880 0.353553} {0.074658 -0.923880 0.375330} {0.000000 -0.923880 0.382683} {-0.074658 -0.923880 0.375330} {-0.146447 -0.923880 0.353553} {-0.212608 -0.923880 0.318190} {-0.270598 -0.923880 0.270598} {-0.318190 -0.923880 0.212608} {-0.353553 -0.923880 0.146447} {-0.375330 -0.923880 0.074658} {-0.382683 -0.923880 0.000000} {-0.375330 -0.923880 -0.074658} {-0.353553 -0.923880 -0.146447} {-0.318190 -0.923880 -0.212608} {-0.270598 -0.923880 -0.270598} {-0.212608 -0.923880 -0.318190} {-0.146447 -0.923880 -0.353553} {-0.074658 -0.923880 -0.375330} {-0.000000 -0.923880 -0.382683} {0.074658 -0.923880 -0.375330} {0.146447 -0.923880 -0.353553} {0.212608 -0.923880 -0.318190} {0.270598 -0.923880 -0.270598} {0.318190 -0.923880 -0.212608} {0.353553 -0.923880 -0.146447} {0.375330 -0.923880 -0.074658} {0.195090 -0.980785 0.000000} {0.191342 -0.980785 0.038060} {0.180240 -0.980785 0.074658} {0.162212 -0.980785 0.108386} {0.137950 -0.980785 0.137950} {0.108386 -0.980785 0.162212} {0.074658 -0.980785 0.180240} {0.038060 -0.980785 0.191342} {0.000000 -0.980785 0.195090} {-0.038060 -0.980785 0.191342} {-0.074658 -0.980785 0.180240} {-0.108386 -0.980785 0.162212} {-0.137950 -0.980785 0.137950} {-0.162212 -0.980785 0.108386} {-0.180240 -0.980785 0.074658} {-0.191342 -0.980785 0.038060} {-0.195090 -0.980785 0.000000} {-0.191342 -0.980785 -0.038060} {-0.180240 -0.980785 -0.074658} {-0.162212 -0.980785 -0.108386} {-0.137950 -0.980785 -0.137950} {-0.108386 -0.980785 -0.162212} {-0.074658 -0.980785 -0.180240} {-0.038060 -0.980785 -0.191342} {-0.000000 -0.980785 -0.195090} {0.038060 -0.980785 -0.191342} {0.074658 -0.980785 -0.180240} {0.108386 -0.980785 -0.162212} {0.137950 -0.980785 -0.137950} {0.162212 -0.980785 -0.108386} {0.180240 -0.980785 -0.074658} {0.191342 -0.980785 -0.038060}} set lcnx {{1 481 450} {1 480 481} {1 479 480} {1 478 479} {1 477 478} {1 476 477} {1 475 476} {1 474 475} {1 473 474} {1 472 473} {1 471 472} {1 470 471} {1 469 470} {1 468 469} {1 467 468} {1 466 467} {1 465 466} {1 464 465} {1 463 464} {1 462 463} {1 461 462} {1 460 461} {1 459 460} {1 458 459} {1 457 458} {1 456 457} {1 455 456} {1 454 455} {1 453 454} {1 452 453} {1 451 452} {1 450 451} {449 418 450 481} {448 449 481 480} {447 448 480 479} {446 447 479 478} {445 446 478 477} {444 445 477 476} {443 444 476 475} {442 443 475 474} {441 442 474 473} {440 441 473 472} {439 440 472 471} {438 439 471 470} {437 438 470 469} {436 437 469 468} {435 436 468 467} {434 435 467 466} {433 434 466 465} {432 433 465 464} {431 432 464 463} {430 431 463 462} {429 430 462 461} {428 429 461 460} {427 428 460 459} {426 427 459 458} {425 426 458 457} {424 425 457 456} {423 424 456 455} {422 423 455 454} {421 422 454 453} {420 421 453 452} {419 420 452 451} {418 419 451 450} {417 386 418 449} {416 417 449 448} {415 416 448 447} {414 415 447 446} {413 414 446 445} {412 413 445 444} {411 412 444 443} {410 411 443 442} {409 410 442 441} {408 409 441 440} {407 408 440 439} {406 407 439 438} {405 406 438 437} {404 405 437 436} {403 404 436 435} {402 403 435 434} {401 402 434 433} {400 401 433 432} {399 400 432 431} {398 399 431 430} {397 398 430 429} {396 397 429 428} {395 396 428 427} {394 395 427 426} {393 394 426 425} {392 393 425 424} {391 392 424 423} {390 391 423 422} {389 390 422 421} {388 389 421 420} {387 388 420 419} {386 387 419 418} {385 354 386 417} {384 385 417 416} {383 384 416 415} {382 383 415 414} {381 382 414 413} {380 381 413 412} {379 380 412 411} {378 379 411 410} {377 378 410 409} {376 377 409 408} {375 376 408 407} {374 375 407 406} {373 374 406 405} {372 373 405 404} {371 372 404 403} {370 371 403 402} {369 370 402 401} {368 369 401 400} {367 368 400 399} {366 367 399 398} {365 366 398 397} {364 365 397 396} {363 364 396 395} {362 363 395 394} {361 362 394 393} {360 361 393 392} {359 360 392 391} {358 359 391 390} {357 358 390 389} {356 357 389 388} {355 356 388 387} {354 355 387 386} {353 322 354 385} {352 353 385 384} {351 352 384 383} {350 351 383 382} {349 350 382 381} {348 349 381 380} {347 348 380 379} {346 347 379 378} {345 346 378 377} {344 345 377 376} {343 344 376 375} {342 343 375 374} {341 342 374 373} {340 341 373 372} {339 340 372 371} {338 339 371 370} {337 338 370 369} {336 337 369 368} {335 336 368 367} {334 335 367 366} {333 334 366 365} {332 333 365 364} {331 332 364 363} {330 331 363 362} {329 330 362 361} {328 329 361 360} {327 328 360 359} {326 327 359 358} {325 326 358 357} {324 325 357 356} {323 324 356 355} {322 323 355 354} {321 290 322 353} {320 321 353 352} {319 320 352 351} {318 319 351 350} {317 318 350 349} {316 317 349 348} {315 316 348 347} {314 315 347 346} {313 314 346 345} {312 313 345 344} {311 312 344 343} {310 311 343 342} {309 310 342 341} {308 309 341 340} {307 308 340 339} {306 307 339 338} {305 306 338 337} {304 305 337 336} {303 304 336 335} {302 303 335 334} {301 302 334 333} {300 301 333 332} {299 300 332 331} {298 299 331 330} {297 298 330 329} {296 297 329 328} {295 296 328 327} {294 295 327 326} {293 294 326 325} {292 293 325 324} {291 292 324 323} {290 291 323 322} {289 258 290 321} {288 289 321 320} {287 288 320 319} {286 287 319 318} {285 286 318 317} {284 285 317 316} {283 284 316 315} {282 283 315 314} {281 282 314 313} {280 281 313 312} {279 280 312 311} {278 279 311 310} {277 278 310 309} {276 277 309 308} {275 276 308 307} {274 275 307 306} {273 274 306 305} {272 273 305 304} {271 272 304 303} {270 271 303 302} {269 270 302 301} {268 269 301 300} {267 268 300 299} {266 267 299 298} {265 266 298 297} {264 265 297 296} {263 264 296 295} {262 263 295 294} {261 262 294 293} {260 261 293 292} {259 260 292 291} {258 259 291 290} {257 226 258 289} {256 257 289 288} {255 256 288 287} {254 255 287 286} {253 254 286 285} {252 253 285 284} {251 252 284 283} {250 251 283 282} {249 250 282 281} {248 249 281 280} {247 248 280 279} {246 247 279 278} {245 246 278 277} {244 245 277 276} {243 244 276 275} {242 243 275 274} {241 242 274 273} {240 241 273 272} {239 240 272 271} {238 239 271 270} {237 238 270 269} {236 237 269 268} {235 236 268 267} {234 235 267 266} {233 234 266 265} {232 233 265 264} {231 232 264 263} {230 231 263 262} {229 230 262 261} {228 229 261 260} {227 228 260 259} {226 227 259 258} {225 194 226 257} {224 225 257 256} {223 224 256 255} {222 223 255 254} {221 222 254 253} {220 221 253 252} {219 220 252 251} {218 219 251 250} {217 218 250 249} {216 217 249 248} {215 216 248 247} {214 215 247 246} {213 214 246 245} {212 213 245 244} {211 212 244 243} {210 211 243 242} {209 210 242 241} {208 209 241 240} {207 208 240 239} {206 207 239 238} {205 206 238 237} {204 205 237 236} {203 204 236 235} {202 203 235 234} {201 202 234 233} {200 201 233 232} {199 200 232 231} {198 199 231 230} {197 198 230 229} {196 197 229 228} {195 196 228 227} {194 195 227 226} {193 162 194 225} {192 193 225 224} {191 192 224 223} {190 191 223 222} {189 190 222 221} {188 189 221 220} {187 188 220 219} {186 187 219 218} {185 186 218 217} {184 185 217 216} {183 184 216 215} {182 183 215 214} {181 182 214 213} {180 181 213 212} {179 180 212 211} {178 179 211 210} {177 178 210 209} {176 177 209 208} {175 176 208 207} {174 175 207 206} {173 174 206 205} {172 173 205 204} {171 172 204 203} {170 171 203 202} {169 170 202 201} {168 169 201 200} {167 168 200 199} {166 167 199 198} {165 166 198 197} {164 165 197 196} {163 164 196 195} {162 163 195 194} {161 130 162 193} {160 161 193 192} {159 160 192 191} {158 159 191 190} {157 158 190 189} {156 157 189 188} {155 156 188 187} {154 155 187 186} {153 154 186 185} {152 153 185 184} {151 152 184 183} {150 151 183 182} {149 150 182 181} {148 149 181 180} {147 148 180 179} {146 147 179 178} {145 146 178 177} {144 145 177 176} {143 144 176 175} {142 143 175 174} {141 142 174 173} {140 141 173 172} {139 140 172 171} {138 139 171 170} {137 138 170 169} {136 137 169 168} {135 136 168 167} {134 135 167 166} {133 134 166 165} {132 133 165 164} {131 132 164 163} {130 131 163 162} {129 98 130 161} {128 129 161 160} {127 128 160 159} {126 127 159 158} {125 126 158 157} {124 125 157 156} {123 124 156 155} {122 123 155 154} {121 122 154 153} {120 121 153 152} {119 120 152 151} {118 119 151 150} {117 118 150 149} {116 117 149 148} {115 116 148 147} {114 115 147 146} {113 114 146 145} {112 113 145 144} {111 112 144 143} {110 111 143 142} {109 110 142 141} {108 109 141 140} {107 108 140 139} {106 107 139 138} {105 106 138 137} {104 105 137 136} {103 104 136 135} {102 103 135 134} {101 102 134 133} {100 101 133 132} {99 100 132 131} {98 99 131 130} {97 66 98 129} {96 97 129 128} {95 96 128 127} {94 95 127 126} {93 94 126 125} {92 93 125 124} {91 92 124 123} {90 91 123 122} {89 90 122 121} {88 89 121 120} {87 88 120 119} {86 87 119 118} {85 86 118 117} {84 85 117 116} {83 84 116 115} {82 83 115 114} {81 82 114 113} {80 81 113 112} {79 80 112 111} {78 79 111 110} {77 78 110 109} {76 77 109 108} {75 76 108 107} {74 75 107 106} {73 74 106 105} {72 73 105 104} {71 72 104 103} {70 71 103 102} {69 70 102 101} {68 69 101 100} {67 68 100 99} {66 67 99 98} {65 34 66 97} {64 65 97 96} {63 64 96 95} {62 63 95 94} {61 62 94 93} {60 61 93 92} {59 60 92 91} {58 59 91 90} {57 58 90 89} {56 57 89 88} {55 56 88 87} {54 55 87 86} {53 54 86 85} {52 53 85 84} {51 52 84 83} {50 51 83 82} {49 50 82 81} {48 49 81 80} {47 48 80 79} {46 47 79 78} {45 46 78 77} {44 45 77 76} {43 44 76 75} {42 43 75 74} {41 42 74 73} {40 41 73 72} {39 40 72 71} {38 39 71 70} {37 38 70 69} {36 37 69 68} {35 36 68 67} {34 35 67 66} {33 2 34 65} {32 33 65 64} {31 32 64 63} {30 31 63 62} {29 30 62 61} {28 29 61 60} {27 28 60 59} {26 27 59 58} {25 26 58 57} {24 25 57 56} {23 24 56 55} {22 23 55 54} {21 22 54 53} {20 21 53 52} {19 20 52 51} {18 19 51 50} {17 18 50 49} {16 17 49 48} {15 16 48 47} {14 15 47 46} {13 14 46 45} {12 13 45 44} {11 12 44 43} {10 11 43 42} {9 10 42 41} {8 9 41 40} {7 8 40 39} {6 7 39 38} {5 6 38 37} {4 5 37 36} {3 4 36 35} {2 3 35 34} {2 33 0} {33 32 0} {32 31 0} {31 30 0} {30 29 0} {29 28 0} {28 27 0} {27 26 0} {26 25 0} {25 24 0} {24 23 0} {23 22 0} {22 21 0} {21 20 0} {20 19 0} {19 18 0} {18 17 0} {17 16 0} {16 15 0} {15 14 0} {14 13 0} {13 12 0} {12 11 0} {11 10 0} {10 9 0} {9 8 0} {8 7 0} {7 6 0} {6 5 0} {5 4 0} {4 3 0} {3 2 0}} } shuttle { set txt "shuttle" set lvtx { {-0.939909 -0.126624 -0.146241} {-0.958906 -0.100278 -0.122005} {-1.07493 -0.024337 -0.170295} {-0.958906 0.100278 -0.122005} {-1.02016 0.0301995 -0.120814} {-1.07493 0.024337 -0.170295} {-1.02016 -0.0301995 -0.120814} {-1.03031 -0.0961504 -0.170831} {-1.03031 0.0961504 -0.170831} {-0.958851 0.139184 -0.170182} {-0.939909 0.126624 -0.146241} {-0.958851 -0.139184 -0.170182} {0.688736 -0.0244448 -0.0829605} {1.27507 -0.00245391 0.562368} {1.41227 -0.01295 0.562368} {1.23772 0.0 0.0534362} {0.688736 0.0244448 -0.0829605} {0.693389 0.00833092 -0.0258223} {1.41227 0.01295 0.562368} {0.693389 -0.00833092 -0.0258223} {1.27507 0.00245391 0.562368} {1.5 0.0 0.562368} {1.08238 -0.0267249 -0.0428092} {1.08238 0.0267249 -0.0428092} {1.23772 0.0 0.0534362} {1.0828 -0.110049 -0.0178997} {1.31351 -0.224591 -0.512407} {1.0828 0.110049 -0.0178997} {1.0828 0.234595 -0.029129} {1.0828 0.291559 -0.196141} {1.0828 0.266017 -0.543646} {1.08238 -0.0267249 -0.0428092} {1.11771 -0.26754 -0.501994} {1.31351 0.224591 -0.512407} {1.0828 -0.308302 -0.133258} {1.0828 -0.178447 -0.00074584} {1.0828 -0.234595 -0.029129} {1.0828 0.178447 -0.00074584} {1.08891 -0.063379 -0.294445} {1.08891 -0.166409 -0.294443} {1.11369 -0.166419 -0.471169} {1.08243 -0.0515174 -0.0669961} {1.08228 0.103032 -0.156218} {1.08213 0.0515221 -0.245447} {1.08213 -0.051508 -0.245456} {1.1013 -0.217928 -0.382803} {1.11771 0.26754 -0.501994} {1.11369 0.0633884 -0.471177} {1.11369 -0.0633884 -0.471177} {1.08891 0.166409 -0.294443} {1.08891 0.063379 -0.294445} {1.1013 -0.0118649 -0.382809} {1.1013 0.0118649 -0.382809} {1.0828 -0.247045 -0.251067} {1.0828 0.247045 -0.251067} {1.0828 -0.291559 -0.196141} {1.08228 -0.103032 -0.156223} {1.08243 0.0515127 -0.0669934} {1.08238 0.0267249 -0.0428092} {1.0828 0.308302 -0.133258} {1.11369 0.166419 -0.471169} {1.1013 0.217928 -0.382803} {1.0828 -0.266017 -0.543646} {0.688736 -0.0244448 -0.0829605} {0.688736 -0.0917011 -0.0966416} {1.0828 -0.110049 -0.0178997} {0.688736 -0.123472 -0.108273} {0.688736 -0.176918 -0.137219} {0.688736 -0.1958 -0.153641} {0.688736 -0.215119 -0.253067} {0.670978 -0.220507 -0.466203} {0.308688 -0.216568 -0.24479} {0.308688 -0.215225 -0.202475} {0.308688 -0.195613 -0.161785} {0.308688 -0.178682 -0.146351} {0.308688 -0.126897 -0.111899} {0.308688 -0.0954215 -0.0981031} {-0.88731 -0.212252 -0.243635} {-0.887362 -0.188314 -0.198149} {-0.887436 -0.133236 -0.132552} {-0.958935 -0.20673 -0.267103} {-0.9588 -0.177681 -0.215478} {-0.958816 -0.163808 -0.201442} {-0.939909 -0.126624 -0.146241} {-0.958906 -0.100278 -0.122005} {-1.07493 -0.024337 -0.170295} {-1.03023 -0.166229 -0.235951} {-1.03017 -0.191588 -0.292564} {-1.26521 -0.138018 -0.374911} {-1.26521 -0.124543 -0.320051} {-1.26521 -0.0490006 -0.264026} {-1.5 0.0 -0.412988} {0.688736 0.0244448 -0.0829605} {0.688736 0.0917011 -0.0966416} {1.0828 0.110049 -0.0178997} {0.688736 0.123472 -0.108273} {0.688736 0.176918 -0.137219} {1.0828 0.234595 -0.029129} {0.688736 0.1958 -0.153641} {0.688736 0.215118 -0.194548} {1.0828 0.291559 -0.196141} {0.688736 0.215119 -0.253067} {0.670978 0.220507 -0.466203} {1.0828 0.266017 -0.543646} {0.30878 0.220507 -0.41634} {0.308688 0.216568 -0.24479} {0.308688 0.215225 -0.202475} {0.308688 0.195613 -0.161785} {0.308688 0.178682 -0.146351} {0.308688 0.126897 -0.111899} {0.308688 0.0954215 -0.0981031} {-0.88731 0.212252 -0.243635} {-0.887362 0.188314 -0.198149} {-0.887436 0.133236 -0.132552} {-0.887466 0.10508 -0.105683} {-0.887488 0.0328198 -0.0833572} {-0.958935 0.20673 -0.267103} {-0.9588 0.177681 -0.215478} {-0.958816 0.163808 -0.201442} {-0.958906 0.100278 -0.122005} {-0.958944 0.0328141 -0.086177} {-1.02016 0.0301995 -0.120814} {-1.03023 0.166229 -0.235951} {-1.03017 0.191588 -0.292564} {-1.26521 0.138018 -0.374911} {-1.26519 0.141686 -0.439231} {-1.26521 0.124543 -0.320051} {-1.26521 0.10678 -0.296367} {-1.26521 0.0490006 -0.264026} {-1.07493 0.024337 -0.170295} {-1.02016 -0.0301995 -0.120814} {-0.958944 -0.0328141 -0.086177} {-0.887488 -0.0328198 -0.0833572} {0.308688 -0.0265785 -0.0830364} {0.308688 0.0265785 -0.0830364} {1.08238 -0.0267249 -0.0428092} {-1.26519 -0.141686 -0.439231} {-0.958935 -0.204173 -0.479135} {1.0828 -0.308302 -0.133258} {1.0828 -0.178447 -0.00074584} {1.0828 -0.234595 -0.029129} {1.0828 0.178447 -0.00074584} {-1.3826 -0.0620793 -0.340391} {-1.3826 0.0284875 -0.320987} {-1.3826 0.0620793 -0.340391} {-1.3826 0.0823721 -0.42611} {-1.3826 0.0802401 -0.387517} {-1.3826 0.0724059 -0.354601} {-1.3826 0.0117303 -0.318067} {-1.3826 -0.0724059 -0.354601} {-1.3826 -0.0802401 -0.387517} {-1.3826 -0.0823721 -0.42611} {-1.3826 -0.0284875 -0.320987} {-1.3826 -0.0117303 -0.318067} {1.0828 -0.247045 -0.251067} {1.0828 0.247045 -0.251067} {1.0828 -0.291559 -0.196141} {1.08238 0.0267249 -0.0428092} {1.0828 0.308302 -0.133258} {0.688736 -0.215118 -0.194548} {-1.03025 0.150519 -0.220259} {-1.03025 -0.150519 -0.220259} {-1.03031 -0.0961504 -0.170831} {-1.26521 -0.020177 -0.259159} {-1.26521 0.020177 -0.259159} {-1.26521 -0.10678 -0.296367} {-1.03031 0.0961504 -0.170831} {-0.958935 0.204173 -0.479135} {0.30878 -0.220507 -0.41634} {1.0828 -0.266017 -0.543646} {-0.887466 -0.10508 -0.105683} {-0.958851 0.139184 -0.170182} {-0.887377 0.175665 -0.184931} {-0.939909 0.126624 -0.146241} {-0.887377 -0.175665 -0.184931} {-0.958851 -0.139184 -0.170182} {0.670978 -0.220507 -0.466203} {0.825338 -0.88489 -0.465451} {0.960293 -0.95594 -0.480964} {0.682207 -0.88489 -0.45205} {0.711202 -0.928988 -0.474635} {0.613199 -0.88489 -0.479944} {0.233437 -0.50635 -0.500845} {0.670978 0.220507 -0.466203} {1.0828 0.266017 -0.543646} {0.825338 0.88489 -0.465451} {0.960293 0.95594 -0.480964} {0.682207 0.88489 -0.45205} {0.711202 0.928988 -0.474635} {0.30878 0.220507 -0.41634} {0.613199 0.88489 -0.479944} {0.0964395 0.406305 -0.503493} {-0.958935 -0.204173 -0.479135} {0.0964395 -0.406305 -0.503493} {-0.958935 0.204173 -0.479135} {0.233437 0.50635 -0.500845} {0.30878 -0.220507 -0.41634} {0.838604 0.95594 -0.47811} {1.0828 -0.266017 -0.543646} {0.838604 -0.95594 -0.47811} {1.31351 -0.224591 -0.512407} {0.960293 -0.95594 -0.480964} {0.711202 -0.928988 -0.474635} {0.613199 -0.88489 -0.479944} {0.233437 -0.50635 -0.500845} {-1.5 0.0 -0.412988} {0.30878 -0.220507 -0.556237} {1.0828 0.266017 -0.543646} {0.960293 0.95594 -0.480964} {0.711202 0.928988 -0.474635} {0.613199 0.88489 -0.479944} {0.0964395 0.406305 -0.503493} {-1.26519 0.141686 -0.439231} {0.30878 0.220507 -0.556237} {1.31351 0.224591 -0.512407} {0.670978 -0.220507 -0.562369} {0.670978 0.220507 -0.562369} {-1.26519 -0.141686 -0.439231} {-0.958935 -0.204173 -0.479135} {0.0964395 -0.406305 -0.503493} {-1.3826 0.0823721 -0.42611} {-1.3826 -0.0823721 -0.42611} {-0.958935 0.204173 -0.479135} {0.233437 0.50635 -0.500845} {0.838604 0.95594 -0.47811} {1.0828 -0.266017 -0.543646} {0.838604 -0.95594 -0.47811} {1.33709 -0.0428351 -0.349754} {1.27823 -0.0495943 -0.358006} {1.22255 -0.0749348 -0.365811} {1.32843 -0.0788646 -0.287952} {1.27038 -0.0822444 -0.302001} {1.21775 -0.094915 -0.331538} {1.32843 -0.150925 -0.28795} {1.27038 -0.147546 -0.301999} {1.21775 -0.134876 -0.331537} {1.19169 -0.114897 -0.370137} {1.33709 -0.186958 -0.34975} {1.27823 -0.180199 -0.358002} {1.22255 -0.154858 -0.365809} {1.34576 -0.150932 -0.411554} {1.28608 -0.147551 -0.414009} {1.22736 -0.13488 -0.400082} {1.34576 -0.0788712 -0.41156} {1.28608 -0.0822504 -0.414014} {1.22736 -0.0949187 -0.400085} {1.32843 0.0788646 -0.287952} {1.33709 0.0428351 -0.349754} {1.27038 0.0822444 -0.302001} {1.27823 0.0495943 -0.358006} {1.21775 0.094915 -0.331538} {1.22255 0.0749348 -0.365811} {1.32843 0.150925 -0.28795} {1.27038 0.147546 -0.301999} {1.21775 0.134876 -0.331537} {1.33709 0.186958 -0.34975} {1.27823 0.180199 -0.358002} {1.22255 0.154858 -0.365809} {1.19169 0.114897 -0.370137} {1.34576 0.150932 -0.411554} {1.28608 0.147551 -0.414009} {1.22736 0.13488 -0.400082} {1.34576 0.0788712 -0.41156} {1.28608 0.0822504 -0.414014} {1.22736 0.0949187 -0.400085} {1.32038 -0.0720615 -0.156622} {1.32048 -0.0360318 -0.0942161} {1.26094 -0.0653021 -0.156523} {1.26103 -0.032652 -0.0999702} {1.20471 -0.0399618 -0.156429} {1.20477 -0.0199814 -0.121821} {1.17356 0.0 -0.156376} {1.32048 0.0360285 -0.0942143} {1.26103 0.0326491 -0.0999684} {1.20477 0.0199796 -0.12182} {1.32038 0.0720615 -0.156619} {1.26094 0.0653021 -0.156519} {1.20471 0.0399618 -0.156426} {1.32027 0.036035 -0.219027} {1.26084 0.032655 -0.213074} {1.20466 0.0199833 -0.191035} {1.32027 -0.0360252 -0.219033} {1.26084 -0.032646 -0.213079} {1.20466 -0.019978 -0.191038} {1.13896 -0.0795845 -0.37753} {1.19178 -0.0521707 -0.370125} {1.25806 -0.0351116 -0.360833} {1.33727 -0.0260158 -0.349729} {1.13471 -0.0972401 -0.347245} {1.18424 -0.0835328 -0.316329} {1.24847 -0.0750028 -0.292407} {1.32659 -0.0704549 -0.273502} {1.13471 -0.132551 -0.347244} {1.18424 -0.146257 -0.316327} {1.24847 -0.154787 -0.292405} {1.32659 -0.159334 -0.2735} {1.13896 -0.150208 -0.377528} {1.19178 -0.177622 -0.370121} {1.25806 -0.194681 -0.360829} {1.33727 -0.203777 -0.349724} {1.1432 -0.132555 -0.407813} {1.19932 -0.146263 -0.423918} {1.26765 -0.154794 -0.429257} {1.34796 -0.159342 -0.425953} {1.1432 -0.0972433 -0.407816} {1.19932 -0.0835385 -0.423923} {1.26765 -0.0750101 -0.429263} {1.34796 -0.0704629 -0.42596} {1.13471 0.0972401 -0.347245} {1.13896 0.0795845 -0.37753} {1.18424 0.0835328 -0.316329} {1.19178 0.0521707 -0.370125} {1.24847 0.0750028 -0.292407} {1.25806 0.0351116 -0.360833} {1.32659 0.0704549 -0.273502} {1.33727 0.0260158 -0.349729} {1.13471 0.132551 -0.347244} {1.18424 0.146257 -0.316327} {1.24847 0.154787 -0.292405} {1.32659 0.159334 -0.2735} {1.13896 0.150208 -0.377528} {1.19178 0.177622 -0.370121} {1.25806 0.194681 -0.360829} {1.33727 0.203777 -0.349724} {1.1432 0.132555 -0.407813} {1.19932 0.146263 -0.423918} {1.26765 0.154794 -0.429257} {1.34796 0.159342 -0.425953} {1.1432 0.0972433 -0.407816} {1.19932 0.0835385 -0.423923} {1.26765 0.0750101 -0.429263} {1.34796 0.0704629 -0.42596} {1.1203 -0.0353119 -0.156287} {1.12035 -0.0176565 -0.125706} {1.17364 -0.0627257 -0.156376} {1.17373 -0.0313639 -0.102055} {1.24057 -0.079785 -0.156489} {1.24069 -0.0398936 -0.0873936} {1.32056 -0.0888808 -0.156623} {1.32069 -0.0444417 -0.0796507} {1.12035 0.0176549 -0.125705} {1.17373 0.031361 -0.102053} {1.24069 0.0398902 -0.0873915} {1.32069 0.0444376 -0.0796484} {1.1203 0.0353119 -0.156285} {1.17364 0.0627257 -0.156373} {1.24057 0.079785 -0.156484} {1.32056 0.0888808 -0.156618} {1.12025 0.0176582 -0.186867} {1.17355 0.0313667 -0.210696} {1.24046 0.0398973 -0.225582} {1.32043 0.0444458 -0.233593} {1.12025 -0.0176533 -0.18687} {1.17355 -0.0313581 -0.210701} {1.24046 -0.0398865 -0.225588} {1.32043 -0.0444335 -0.2336} {1.13524 -0.0498704 -0.37805} {1.13896 -0.0795845 -0.37753} {1.08891 -0.063379 -0.294445} {1.12743 -0.0823825 -0.322282} {1.13471 -0.0972401 -0.347245} {1.08891 -0.166409 -0.294443} {1.12743 -0.147407 -0.32228} {1.13471 -0.132551 -0.347244} {1.13524 -0.179923 -0.378047} {1.13896 -0.150208 -0.377528} {1.11369 -0.166419 -0.471169} {1.14306 -0.147413 -0.433817} {1.1432 -0.132555 -0.407813} {1.14306 -0.0823884 -0.433822} {1.1432 -0.0972433 -0.407816} {1.12743 0.0823825 -0.322282} {1.13524 0.0498704 -0.37805} {1.13471 0.0972401 -0.347245} {1.13896 0.0795845 -0.37753} {1.12743 0.147407 -0.32228} {1.13471 0.132551 -0.347244} {1.13524 0.179923 -0.378047} {1.13896 0.150208 -0.377528} {1.14306 0.147413 -0.433817} {1.1432 0.132555 -0.407813} {1.14306 0.0823884 -0.433822} {1.1432 0.0972433 -0.407816} {1.11655 -0.065026 -0.156281} {1.11665 -0.0325139 -0.0999672} {1.08243 -0.0515174 -0.0669961} {1.1203 -0.0353119 -0.156287} {1.12035 -0.0176565 -0.125706} {1.11665 0.0325111 -0.0999653} {1.12035 0.0176549 -0.125705} {1.11655 0.065026 -0.156277} {1.08228 0.103032 -0.156218} {1.1203 0.0353119 -0.156285} {1.11646 0.032517 -0.212593} {1.08213 0.0515221 -0.245447} {1.12025 0.0176582 -0.186867} {1.11646 -0.032508 -0.212598} {1.08213 -0.051508 -0.245456} {1.12025 -0.0176533 -0.18687} {1.1013 -0.217928 -0.382803} {1.11369 0.0633884 -0.471177} {1.11369 -0.0633884 -0.471177} {1.08891 0.166409 -0.294443} {1.08891 0.063379 -0.294445} {1.1013 -0.0118649 -0.382809} {1.1013 0.0118649 -0.382809} {1.08228 -0.103032 -0.156223} {1.08243 0.0515127 -0.0669934} {1.11369 0.166419 -0.471169} {1.1013 0.217928 -0.382803} {1.33727 -0.0260158 -0.349729} {1.33709 -0.0428351 -0.349754} {1.32659 -0.0704549 -0.273502} {1.32843 -0.0788646 -0.287952} {1.32659 -0.159334 -0.2735} {1.32843 -0.150925 -0.28795} {1.33727 -0.203777 -0.349724} {1.33709 -0.186958 -0.34975} {1.34796 -0.159342 -0.425953} {1.34576 -0.150932 -0.411554} {1.34796 -0.0704629 -0.42596} {1.34576 -0.0788712 -0.41156} {1.32659 0.0704549 -0.273502} {1.33727 0.0260158 -0.349729} {1.32843 0.0788646 -0.287952} {1.33709 0.0428351 -0.349754} {1.32659 0.159334 -0.2735} {1.32843 0.150925 -0.28795} {1.33727 0.203777 -0.349724} {1.33709 0.186958 -0.34975} {1.34796 0.159342 -0.425953} {1.34576 0.150932 -0.411554} {1.34796 0.0704629 -0.42596} {1.34576 0.0788712 -0.41156} {1.32056 -0.0888808 -0.156623} {1.32069 -0.0444417 -0.0796507} {1.32038 -0.0720615 -0.156622} {1.32048 -0.0360318 -0.0942161} {1.32069 0.0444376 -0.0796484} {1.32048 0.0360285 -0.0942143} {1.32056 0.0888808 -0.156618} {1.32038 0.0720615 -0.156619} {1.32043 0.0444458 -0.233593} {1.32027 0.036035 -0.219027} {1.32043 -0.0444335 -0.2336} {1.32027 -0.0360252 -0.219033}} set lcnx { {11 1 7} {3 10 9} {7 6 2} {11 0 1} {6 7 1} {5 4 8} {8 3 9} {8 4 3} {5 2 6} {6 4 5 } {16 17 23} {18 14 21} {22 19 12} {21 14 22} {22 15 21} {15 23 18} {18 21 15} {14 13 19} {19 22 14} {23 17 20} {20 18 23} {20 13 14} {14 18 20} {16 12 19} {19 17 16} {17 19 13} {13 20 17 } {46 33 30} {32 48 40} {47 46 60} {54 61 46} {43 29 42} {53 62 32} {31 25 36} {62 26 32} {34 56 41} {32 40 45} {55 53 44} {57 59 58} {39 38 53} {54 50 49} {42 59 57} {25 35 36} {46 30 54} {55 44 56} {31 58 24} {55 56 34} {42 29 59} {54 49 61} {45 39 53} {60 46 61} {28 37 27} {31 36 34} {34 41 31} {43 54 29} {32 45 53} {58 59 28} {58 28 27} {53 54 43} {43 44 53} {31 41 57} {57 58 31} {47 52 51} {51 48 47} {54 53 38} {38 50 54} {32 26 33} {33 46 32} {32 46 47} {47 48 32} {38 51 52} {52 50 38} {174 83 175} {162 85 163} {142 152 91} {98 96 97} {162 163 90} {121 120 119} {82 174 175} {64 139 65} {87 89 88} {75 67 66} {99 98 158} {74 75 79} {161 162 165} {146 91 147} {175 162 161} {170 132 131} {173 113 172} {164 129 166} {148 91 153} {114 120 115} {94 141 93} {67 75 74} {157 93 92} {106 105 111} {84 131 130} {98 97 158} {125 124 167} {147 91 144} {159 138 68} {74 79 174} {126 122 123} {126 123 124} {91 149 142} {171 172 118} {144 91 143} {160 166 171} {171 173 172} {113 109 108} {162 90 165} {64 65 135} {137 77 80} {68 140 67} {175 161 82} {113 114 109} {109 114 110} {140 68 138} {77 71 72} {93 141 95} {128 164 166} {145 91 146} {172 113 108} {87 86 89} {75 170 79} {99 158 100} {123 116 167} {127 166 160} {84 170 131} {63 64 135} {159 69 154} {124 123 167} {174 79 83} {127 128 166} {155 101 100} {156 159 154} {137 88 136} {116 111 167} {91 150 149} {139 64 66} {75 76 170} {91 151 150} {120 114 119} {143 91 148} {118 160 171} {91 152 153} {157 94 93} {138 159 156} {137 80 87} {101 99 100} {137 87 88} {123 122 117} {117 116 123} {64 63 133} {133 76 64} {69 159 72} {72 71 69} {124 125 145} {145 146 124} {108 109 95} {95 96 108} {82 81 78} {78 174 82} {111 105 104} {104 167 111} {152 90 163} {163 153 152} {126 124 146} {146 147 126} {107 108 96} {96 98 107} {76 133 132} {132 170 76} {105 101 102} {102 104 105} {164 128 143} {143 148 164} {122 160 118} {118 117 122} {154 69 70} {70 169 154} {114 115 134} {134 110 114} {66 64 76} {76 75 66} {172 112 117} {117 118 172} {80 81 86} {86 87 80} {139 66 67} {67 140 139} {149 89 165} {165 142 149} {116 117 112} {112 111 116} {81 82 161} {161 86 81} {103 102 101} {101 155 103} {97 96 95} {95 141 97} {77 72 73} {73 78 77} {168 70 69} {69 71 168} {128 127 144} {144 143 128} {105 106 99} {99 101 105} {165 89 86} {86 161 165} {151 136 88} {88 150 151} {137 168 71} {71 77 137} {98 99 106} {106 107 98} {84 83 79} {79 170 84} {109 110 93} {93 95 109} {150 88 89} {89 149 150} {160 122 126} {126 127 160} {174 78 73} {73 74 174} {108 107 112} {112 172 108} {165 90 152} {152 142 165} {73 72 159} {159 68 73} {68 67 74} {74 73 68} {114 113 173} {173 119 114} {127 126 147} {147 144 127} {110 134 92} {92 93 110} {77 78 81} {81 80 77} {112 107 106} {106 111 112} {121 130 131} {131 120 121} {134 133 63} {63 92 134} {120 131 132} {132 115 120} {164 163 85} {85 129 164} {163 164 148} {148 153 163} {115 132 133} {133 134 115} {180 179 181} {199 179 180} {195 187 190} {178 177 199} {190 187 188} {182 196 193} {195 189 187} {199 177 179} {191 189 195} {187 185 197} {193 196 192} {181 179 196} {188 187 197} {197 185 186} {181 196 182} {194 189 191} {189 183 185} {185 187 189} {186 185 183} {183 184 186} {179 177 176} {176 196 179} {198 176 177} {177 178 198} {224 208 207} {204 219 206} {202 203 215} {213 211 223} {215 226 202} {225 201 226} {215 225 226} {203 204 215} {224 207 216} {209 224 216} {216 213 223} {204 206 215} {216 210 209} {216 223 210} {221 205 220} {217 221 220} {220 212 217} {218 217 212} {212 222 218} {215 216 207} {207 225 215} {225 207 214} {214 200 225} {213 216 215} {215 206 213} {206 219 211} {211 213 206} {222 211 219} {219 218 222 } {271 277 274} {271 274 270} {258 254 250} {258 257 254} {271 270 269} {239 242 236} {232 235 236} {258 264 261} {235 239 236} {258 261 257} {271 269 283} {258 251 264} {242 245 236} {271 283 280} {229 232 236} {271 280 277} {245 229 236} {258 250 251} {253 256 255} {255 252 253} {238 241 242} {242 239 238} {234 238 239} {239 235 234} {248 253 252} {252 246 248} {282 267 265} {265 281 282} {269 270 268} {268 267 269} {230 233 234} {234 231 230} {233 237 238} {238 234 233} {270 274 273} {273 268 270} {283 269 267} {267 282 283} {249 248 246} {246 247 249} {231 234 235} {235 232 231} {254 257 256} {256 253 254} {268 273 272} {272 266 268} {280 283 282} {282 279 280} {263 249 247} {247 262 263} {251 250 248} {248 249 251} {240 243 244} {244 241 240} {277 280 279} {279 276 277} {267 268 266} {266 265 267} {250 254 253} {253 248 250} {237 240 241} {241 238 237} {274 277 276} {276 273 274} {243 227 228} {228 244 243} {228 231 232} {232 229 228} {257 261 260} {260 256 257} {273 276 275} {275 272 273} {260 263 262} {262 259 260} {244 228 229} {229 245 244} {241 244 245} {245 242 241} {256 260 259} {259 255 256} {276 279 278} {278 275 276} {261 264 263} {263 260 261} {227 230 231} {231 228 227} {264 251 249} {249 263 264} {279 282 281} {281 278 279 } {346 350 349} {349 345 346} {327 331 330} {330 326 327} {300 304 305} {305 301 300} {290 294 295} {295 291 290} {313 312 310} {310 311 313} {329 311 309} {309 328 329} {355 338 336} {336 354 355} {335 341 340} {340 333 335} {318 322 321} {321 317 318} {298 302 303} {303 299 298} {289 293 294} {294 290 289} {311 310 308} {308 309 311} {338 339 337} {337 336 338} {354 336 334} {334 353 354} {337 342 341} {341 335 337} {319 323 322} {322 318 319} {292 296 297} {297 293 292} {288 292 293} {293 289 288} {314 319 318} {318 312 314} {336 337 335} {335 334 336} {353 334 332} {332 352 353} {339 343 342} {342 337 339} {310 317 316} {316 308 310} {293 297 298} {298 294 293} {297 301 302} {302 298 297} {317 321 320} {320 316 317} {343 347 346} {346 342 343} {349 353 352} {352 348 349} {330 313 311} {311 329 330} {315 314 312} {312 313 315} {284 288 289} {289 285 284} {306 286 287} {287 307 306} {326 330 329} {329 325 326} {345 349 348} {348 344 345} {347 351 350} {350 346 347} {321 325 324} {324 320 321} {301 305 306} {306 302 301} {286 290 291} {291 287 286} {305 285 286} {286 306 305} {325 329 328} {328 324 325} {351 355 354} {354 350 351} {341 345 344} {344 340 341} {322 326 325} {325 321 322} {302 306 307} {307 303 302} {285 289 290} {290 286 285} {304 284 285} {285 305 304} {331 315 313} {313 330 331} {350 354 353} {353 349 350} {342 346 345} {345 341 342} {323 327 326} {326 322 323} {296 300 301} {301 297 296} {294 298 299} {299 295 294} {312 318 317} {317 310 312} {334 335 333} {333 332 334} {369 356 357} {357 370 369} {380 382 381} {381 379 380} {367 369 370} {370 368 367} {382 374 372} {372 381 382} {387 389 388} {388 384 387} {358 361 362} {362 359 358} {377 379 408} {408 409 377} {396 383 406} {406 397 396} {362 364 365} {365 363 362} {373 376 375} {375 371 373} {392 395 393} {393 390 392} {383 384 385} {385 406 383} {366 401 369} {369 367 366} {399 366 367} {367 364 399} {381 372 405} {405 400 381} {395 398 396} {396 393 395} {376 378 377} {377 375 376} {356 359 360} {360 357 356} {372 371 403} {403 405 372} {388 390 391} {391 407 388} {379 381 400} {400 408 379} {361 399 364} {364 362 361} {386 387 384} {384 383 386} {390 393 394} {394 391 390} {371 375 402} {402 403 371} {404 358 359} {359 356 404} {375 377 409} {409 402 375} {393 396 397} {397 394 393} {364 367 368} {368 365 364} {374 373 371} {371 372 374} {389 392 390} {390 388 389} {384 388 407} {407 385 384} {401 404 356} {356 369 401} {359 362 363} {363 360 359} {378 380 379} {379 377 378} {398 386 383} {383 396 398} {439 441 440} {440 438 439} {418 420 421} {421 419 418} {436 437 435} {435 434 436} {433 425 423} {423 432 433} {431 433 432} {432 430 431} {420 410 411} {411 421 420} {437 439 438} {438 435 437} {410 412 413} {413 411 410} {443 445 444} {444 442 443} {414 416 417} {417 415 414} {441 443 442} {442 440 441} {416 418 419} {419 417 416} {429 431 430} {430 428 429} {445 436 434} {434 444 445} {412 414 415} {415 413 412} {425 424 422} {422 423 425} {424 427 426} {426 422 424} {427 429 428} {428 426 427}} } } for {set i 0} {$i <= [llength $lcnx]} {incr i} { lappend lclr "0000[format %2.2x 255]" } return [list $txt $lvtx $lcnx $lclr] } # Initialization of canvas with polygonal objects filled or not # ------------------------------------------------------------------- proc DisplayInit {d lcnx lclr} { set lpoly {} set i 0 if {$d == "shaded"} then { foreach cnx $lcnx { lappend lpoly [.c create polygon \ [string repeat " 0" [expr {2*[llength $cnx]}]] \ -fill "#[lindex $lclr $i]"] incr i } } else { foreach cnx $lcnx { lappend lpoly [.c create polygon \ [string repeat " 0" [expr {2*[llength $cnx]}]] \ -fill black -outline blue] } } return $lpoly } # Flat shaded display with gradient color # ------------------------------------------------------------------- proc DisplayShaded {lpoly lvtx lcnx lnv lmv} { update set lgradB {} foreach {M lnew lvn} [Transformations $lvtx $lnv] {} # Light vector is set to <1 1 -1> foreach i [Intensity $lvn $lmv [list 1 1 -1]] { lappend lgradB [format %2.2x [expr {100+154*$i/32}]] } set i 0 foreach cnx $lcnx { set lcoords {} foreach j $cnx {lappend lcoords [lindex $lnew $j]} # Backface culing for hidden face. Not removed but only reduced to a point if {[lindex $lvn $i 2] < 0} { eval .c coords [lindex $lpoly $i] [join $lcoords] .c itemconfigure [lindex $lpoly $i] -fill "#0000[lindex $lgradB $i]" } else { .c coords [lindex $lpoly $i] [string repeat " [join [Barycenter $lcoords]]" [llength $cnx]] } incr i } } # Wireframe display # ------------------------------------------------------------------- proc Display {lpoly lvtx lcnx lnv lmv} { update foreach {M lnew lvn} [Transformations $lvtx $lnv] {} set i 0 foreach cnx $lcnx { set lcoords {} foreach j $cnx {lappend lcoords [lindex $lnew $j]} # Backface culing for hidden face. Not removed but only reduced to a point if {[lindex $lvn $i 2] < 0} { eval .c coords [lindex $lpoly $i] [join $lcoords] } else { .c coords [lindex $lpoly $i] [string repeat " [join [Barycenter $lcoords]]" [llength $cnx]] } incr i } } global stop global display global scx scy vdist set display shaded set scx 420 set scy 420 set vdist 1100 pack [canvas .c -width $scx -height $scy -bg white -bg black -bd 0] .c delete all set f1 [frame .f1] pack $f1 -fill x button $f1.brun -text Stop -command {set stop 1} button $f1.bq -text Quit -command exit label $f1.l1 -text " " radiobutton $f1.rbs -text "Shaded" -variable display -value shaded radiobutton $f1.rbw -text "Wireframe" -variable display -value wireframe eval pack [winfo children $f1] -side left set f2 [frame .f2] pack $f2 -fill x foreach i {tetrahedron cube octahedron dodecahedron icosahedron} { button $f2.b$i -text $i -command "DisplayModel $i" } eval pack [winfo children $f2] -side left set f3 [frame .f3] pack $f3 -fill x foreach i {cone diamond sphere816 sphere1632 shuttle} { button $f3.b$i -text $i -command "DisplayModel $i" } eval pack [winfo children $f3] -side left set f4 [frame .f4] pack $f4 -fill x label $f4.l1 -text "View distance " scale $f4.sca -from 300 -to 1600 -length 300 \ -orient horiz -bd 1 -showvalue true -variable vdist eval pack [winfo children $f4] -side left