├── README.md ├── docs └── images │ ├── basic.png │ ├── ellipse.png │ ├── life.png │ ├── line.png │ ├── polygon.png │ ├── random_color.png │ ├── rotating_cube.png │ ├── tree.png │ ├── turtle.png │ ├── turtle_hilbert.png │ ├── turtle_koch.png │ ├── turtle_sierpinski.png │ └── turtle_snowflake.png ├── drawille.lua ├── examples ├── basic.lua ├── curses_test.lua ├── ellipse.lua ├── life.lua ├── line.lua ├── models │ ├── arcelite │ │ ├── adder.wrl │ │ ├── anaconda.wrl │ │ ├── asp2.wrl │ │ ├── asp2v.wrl │ │ ├── boa.wrl │ │ ├── bushmaster.wrl │ │ ├── caiman.wrl │ │ ├── cobra1.wrl │ │ ├── cobra3.wrl │ │ ├── cobra3v (1).wrl │ │ ├── cobra3v.wrl │ │ ├── constrictor.wrl │ │ ├── copperhead.wrl │ │ ├── ferdelance.wrl │ │ ├── gecko.wrl │ │ ├── hawk.wrl │ │ ├── hognose.wrl │ │ ├── krait.wrl │ │ ├── mamba.wrl │ │ ├── moccasin.wrl │ │ ├── moray.wrl │ │ ├── python.wrl │ │ ├── shuttle.wrl │ │ ├── sidewinder.wrl │ │ ├── thargoid.wrl │ │ ├── thargon.wrl │ │ ├── transporter.wrl │ │ ├── urutu.wrl │ │ ├── viper.wrl │ │ └── worm.wrl │ ├── cobra3.dae │ ├── cobra3.mtl │ ├── cobra3.obj │ ├── coriolis.mtl │ ├── coriolis.obj │ ├── cube.dae │ ├── cube.obj │ ├── dodo.mtl │ ├── dodo.obj │ ├── elite │ │ ├── adder.wrl │ │ ├── anaconda.wrl │ │ ├── asp2.wrl │ │ ├── boa.wrl │ │ ├── cobra1.wrl │ │ ├── cobra3.wrl │ │ ├── constrictor.wrl │ │ ├── elite.scr │ │ ├── ferdelance.wrl │ │ ├── gecko.wrl │ │ ├── krait.wrl │ │ ├── logo.wrl │ │ ├── mamba.wrl │ │ ├── moray.wrl │ │ ├── python.wrl │ │ ├── shuttle.wrl │ │ ├── sidewinder.wrl │ │ ├── thargoid.wrl │ │ ├── thargon.wrl │ │ ├── transporter.wrl │ │ ├── viper.wrl │ │ └── worm.wrl │ ├── elite2 │ │ ├── bug.wrl │ │ ├── cat.wrl │ │ ├── delta.wrl │ │ ├── drake.wrl │ │ ├── gnat.wrl │ │ ├── griffin1.wrl │ │ ├── griffin2.wrl │ │ ├── thargon1.wrl │ │ ├── thargon2.wrl │ │ └── thargon3.wrl │ ├── elitea │ │ ├── bushmaster.wrl │ │ ├── chameleon.wrl │ │ ├── ghavial.wrl │ │ ├── iguana.wrl │ │ ├── monitor.wrl │ │ ├── ophidian.wrl │ │ ├── salamander.wrl │ │ └── shuttlev.wrl │ ├── misc │ │ ├── amm.wrl │ │ ├── asteroid.wrl │ │ ├── boulder.wrl │ │ ├── cargo.wrl │ │ ├── coriolis.wrl │ │ ├── dodo.wrl │ │ ├── escape.wrl │ │ └── missile.wrl │ ├── paper │ │ ├── adder.gif │ │ ├── anaconda.gif │ │ ├── asp2.gif │ │ ├── boa.gif │ │ ├── cobra1.gif │ │ ├── cobra3.gif │ │ ├── constrictor.gif │ │ ├── ferdelance.gif │ │ ├── gecko.gif │ │ ├── krait.gif │ │ ├── mamba.gif │ │ ├── moray.gif │ │ ├── python.gif │ │ ├── shuttle.gif │ │ ├── sidewinder.gif │ │ ├── thargoid.gif │ │ ├── thargon.gif │ │ ├── transporter.gif │ │ ├── viper.gif │ │ └── worm.gif │ ├── untitled.b2l │ └── untitled.b2l.bin ├── polygon.lua ├── random_color.lua ├── rotating_cube.lua ├── speed_test.lua ├── starfield.lua ├── turtle.lua ├── turtle_dragon.lua ├── turtle_hilbert.lua ├── turtle_koch.lua ├── turtle_mod.lua ├── turtle_sierpinski.lua ├── turtle_snowflake.lua ├── turtle_tree.lua └── turtle_tree2.lua └── point3d.lua /README.md: -------------------------------------------------------------------------------- 1 | Lua-DRAWILLE 2 | ============ 3 | 4 | [![Generic badge](https://img.shields.io/badge/Lua-5.2-44cc11.svg)](https://shields.io/) 5 | [![Generic badge](https://img.shields.io/badge/Lua-5.3-44cc11.svg)](https://shields.io/) 6 | [![Generic badge](https://img.shields.io/badge/LuaJIT-2.0-44cc11.svg)](https://shields.io/) 7 | [![Generic badge](https://img.shields.io/badge/LuaJIT-2.1-44cc11.svg)](https://shields.io/) 8 | 9 | Draw graphics on the terminal with Braille charakters. Implements a small graphics kernel with a handfull of useful routines, like Line Bresenham and Ellipse, light 3D support and Turtle Graphics. 10 | 11 | Additionally the PGL "Primitive Graphics Language", that will plot a graph from a string and that is supported by the implementation of a Lindenmayer algorithm to create fractals. Implementing a nice little Conway's Game of Life as an example. 12 | 13 | Lua implementation of [drawille](http://github.com/asciimoo/drawille) 14 | Version 2.0 of [drawille](https://github.com/silizium/lua-drawille.git) 15 | 16 | 17 | ### Usage 18 | 19 | ```lua 20 | Canvas = require "drawille" 21 | 22 | local c = Canvas.new() 23 | 24 | for i=0,360*4 do 25 | if (i % 15) == 0 then 26 | c:set(i/15, math.floor(math.sin(i*(math.pi/180))*4)) 27 | end 28 | end 29 | 30 | print(c:frame()) 31 | ``` 32 | 33 | ![Rotating Cube](docs/images/rotating_cube.png) 34 | ![Lines](docs/images/lines.png) 35 | ![Polygon](docs/images/polygon.png) 36 | ![Random Colors](docs/images/random_color.png) 37 | ![Turtle Graphics](docs/images/turtle.png) 38 | ![Hilbert Curve](docs/images/turtle_hilbert.png) 39 | ![Sierpinski Triangle](docs/images/turtle_sierpinski.png) 40 | ![Lindenmayer Tree](docs/images/tree.png) 41 | ![Game of Life](docs/images/life.png) 42 | 43 | 44 | ### Usage with Colors 45 | Note: Color Resolution is peer Character, not per Subpixel of the [Braille][] characters. 46 | [Braille]: http://en.wikipedia.org/wiki/Braille 47 | For usage with Curses see Examples. 48 | 49 | ```lua 50 | Canvas = require "drawille" 51 | 52 | local c = Canvas.new() 53 | c.esccodes = true 54 | for i=0,360*4 do 55 | if (i % 15) == 0 then 56 | local r = math.random(0,255) 57 | local g = math.random(0,255) 58 | local b = math.random(0,255) 59 | c:set(i/15, math.floor(math.sin(i*(math.pi/180))*4),r,g,b) 60 | end 61 | end 62 | 63 | print(c:frame()) 64 | ``` 65 | ![Sine](docs/images/basic.png) 66 | 67 | ### Added features with 2.0 68 | 69 | * point3D library with rudimentary backface culling 70 | * full support of turtle graphics 71 | * lindenmayer algorithm 72 | * new "drawille drawing language" DDL 73 | * shitload of additional examples, especially for Lindenmayer 74 | * Conways "Game of Life" 75 | * many new features 76 | * better 3D routines, lines, ellipses (now Bresenham), working polygons 77 | * more or less everything the Python version can do but more than that 78 | * remaining basically compatible to 1.0 79 | 80 | ### Dependings 81 | 82 | * lcurses (sudo luarocks install lcurses) 83 | 84 | ### ToDo 85 | 86 | * better, full 3D routines, using of GPU if available, matrix routines 87 | * replacing culling algorithm with more modern way, expanding 3D functionality 88 | * implementing load of 3D objects (working on that right now) 89 | * while everything is faster in this version, the "speed_test" is still slower than the Python version, because the data structure is different 90 | * porting data structure into Lua FFI implementation, no optimization done yet 91 | 92 | ### Video Tutorials 93 | 94 | * https://www.youtube.com/watch?v=aHqVpk_EPGA 3D Cube 95 | * https://www.youtube.com/watch?v=IUMqfx5S-so Koch Snowflake 96 | * https://www.youtube.com/watch?v=D3qCxwQXOns Game of Life 97 | * https://www.youtube.com/watch?v=L9th_TFU3fw Lindenmayer 98 | * https://www.youtube.com/watch?v=NaZ4_mBrXM4 Starfield 99 | 100 | ### Bugs 101 | 102 | Bugs or suggestions? Visit the [issue tracker](https://github.com/silizium/lua-drawille/issues). 103 | 104 | Tested with 105 | * `urxvt` terminal and `fixed` font 106 | * `Terminology` on Linux/Kubuntu 18.10 `Terminus (TTF)` Font 107 | * `Terminator` on Linux/Kubuntu 18.10 108 | 109 | Not correctly showing on 110 | * `Konsole` with color activated, any font 111 | * `Cool Retro Term` on Linux/Kubuntu 18.10 112 | 113 | ### LICENSE 114 | 115 | ``` 116 | drawille is free software: you can redistribute it and/or modify 117 | it under the terms of the GNU Affero General Public License as published by 118 | the Free Software Foundation, either version 3 of the License, or 119 | (at your option) any later version. 120 | 121 | drawille is distributed in the hope that it will be useful, 122 | but WITHOUT ANY WARRANTY; without even the implied warranty of 123 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 124 | GNU Affero General Public License for more details. 125 | 126 | You should have received a copy of the GNU Affero General Public License 127 | along with drawille. If not, see < http://www.gnu.org/licenses/ >. 128 | 129 | (C) 2014- by Adam Tauber, 130 | (CC) 2018 by Hanno Behrens, 131 | ``` 132 | -------------------------------------------------------------------------------- /docs/images/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/docs/images/basic.png -------------------------------------------------------------------------------- /docs/images/ellipse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/docs/images/ellipse.png -------------------------------------------------------------------------------- /docs/images/life.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/docs/images/life.png -------------------------------------------------------------------------------- /docs/images/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/docs/images/line.png -------------------------------------------------------------------------------- /docs/images/polygon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/docs/images/polygon.png -------------------------------------------------------------------------------- /docs/images/random_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/docs/images/random_color.png -------------------------------------------------------------------------------- /docs/images/rotating_cube.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/docs/images/rotating_cube.png -------------------------------------------------------------------------------- /docs/images/tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/docs/images/tree.png -------------------------------------------------------------------------------- /docs/images/turtle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/docs/images/turtle.png -------------------------------------------------------------------------------- /docs/images/turtle_hilbert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/docs/images/turtle_hilbert.png -------------------------------------------------------------------------------- /docs/images/turtle_koch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/docs/images/turtle_koch.png -------------------------------------------------------------------------------- /docs/images/turtle_sierpinski.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/docs/images/turtle_sierpinski.png -------------------------------------------------------------------------------- /docs/images/turtle_snowflake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/docs/images/turtle_snowflake.png -------------------------------------------------------------------------------- /drawille.lua: -------------------------------------------------------------------------------- 1 | local bit=bit or bit32 --require "bit" 2 | local band,bor,rshift,bnot,bxor=bit.band,bit.bor,bit.rshift,bit.bnot,bit.bxor 3 | 4 | -- represents braille character that has 8 subpixel, values are used as offsets for the calculations. 5 | local pixel_map = {{0x01, 0x08}, 6 | {0x02, 0x10}, 7 | {0x04, 0x20}, 8 | {0x40, 0x80}} 9 | 10 | -- contains RGBA values, braille char retresentaion value and a UTF8 String that may be more than one char. 11 | local Pixel = {} 12 | setmetatable(Pixel, { 13 | __call=function(cls, ...) 14 | return cls.new(...) 15 | end, 16 | }) 17 | Pixel.new = function(str, braille_rep, r, g, b, a) 18 | return { 19 | str = str or space, 20 | braille_rep = braille_rep or 0, 21 | r=r or 255, 22 | g=g or 255, 23 | b=b or 255, 24 | a=a or 255} 25 | end 26 | -- braille unicode characters starts at 0x2800 27 | Pixel.braille={} 28 | local braille_char_offset = 0x2800 29 | for i=0,255 do 30 | local char = braille_char_offset + i 31 | local outstr = {} 32 | -- utf-16 to utf-8 33 | outstr[#outstr+1]=string.char(128+64+32+band(15, rshift(char, 12))) 34 | outstr[#outstr+1]=string.char(bor(128, band(63, rshift(char, 6)))) 35 | outstr[#outstr+1]=string.char(bor(128, band(char, 63))) 36 | Pixel.braille[i]=table.concat(outstr) 37 | end 38 | local nl,space="\n",Pixel.braille[0] 39 | 40 | 41 | -- Creat new canvas with default values. 42 | local Canvas = {} 43 | Canvas.__index = Canvas 44 | Canvas._VERSION="drawille for Lua 5.1 / drawille 2.0.0" 45 | setmetatable(Canvas, { 46 | __call=function(cls, ...) 47 | return cls.new(...) 48 | end, 49 | }) 50 | function Canvas.new() 51 | local self = setmetatable({}, Canvas) 52 | self.clear(self) 53 | -- This applies to waht Canvas.frame() will return. 54 | self.alpha_threshold = 10 -- Pixels with a alpha value below are printed as a space. 55 | self.esccodes = false -- Turn ecsape codes off (false) to use only your Terminal Standard Color. 56 | self:reset() -- reset turtle attributes 57 | return self 58 | end 59 | -- get pixel 60 | function Canvas.get(self, x, y) 61 | local row = math.floor(y / 4) 62 | local col = math.floor(x / 2) 63 | if self.pixel_matrix[row] == nil then 64 | return false 65 | end 66 | if self.pixel_matrix[row][col] == nil then 67 | return false 68 | end 69 | local pixel = self.pixel_matrix[row][col] 70 | return band(pixel.braille_rep, pixel_map[band(y,3) + 1][band(x,1) + 1])~=0 71 | end 72 | 73 | -- Clears the canvas and all pixels. 74 | function Canvas.clear(self) 75 | self.pixel_matrix = {} 76 | self.minrow = 0; self.mincol = 0; 77 | self.maxrow = 0; self.maxcol = 0; 78 | self.width = 0 79 | self.height = 0 80 | end 81 | 82 | -- Set a pixel on the canvas, if no RGB or A values are givven it defaults to white. 83 | function Canvas.set(self, x, y, r, g, b, a) 84 | local row = math.floor(y / 4) 85 | local col = math.floor(x / 2) 86 | if self.pixel_matrix[row] == nil then 87 | self.pixel_matrix[row] = {} 88 | end 89 | if self.pixel_matrix[row][col] == nil then 90 | self.pixel_matrix[row][col] = Pixel.new(nil, nil,r,g,b,a) 91 | end 92 | local pixel = self.pixel_matrix[row][col] 93 | pixel.braille_rep = bor(pixel.braille_rep, pixel_map[band(y,3) + 1][band(x,1) + 1]) 94 | pixel.str = Pixel.braille[pixel.braille_rep] 95 | pixel.r = r or pixel.r 96 | pixel.g = g or pixel.g 97 | pixel.b = b or pixel.b 98 | pixel.a = a or pixel.a 99 | self.pixel_matrix[row][col] = pixel 100 | -- Set min,max size of canvas 101 | if (row < self.minrow) then self.minrow = row end; 102 | if (row > self.maxrow) then self.maxrow = row end; 103 | if (col < self.mincol) then self.mincol = col end; 104 | if (col > self.maxcol) then self.maxcol = col end; 105 | self.width = -self.minrow+self.maxrow 106 | self.height = -self.mincol+self.maxcol 107 | end 108 | -- unset a pixel on the canvas 109 | function Canvas.unset(self, x, y) 110 | local row = math.floor(y / 4) 111 | local col = math.floor(x / 2) 112 | if self.pixel_matrix[row] == nil then 113 | return 114 | end 115 | if self.pixel_matrix[row][col] == nil then 116 | return 117 | end 118 | local pixel = self.pixel_matrix[row][col] 119 | pixel.braille_rep = band(pixel.braille_rep, bnot(pixel_map[band(y,3) + 1][band(x,1) + 1])) 120 | pixel.str = Pixel.braille[pixel.braille_rep] 121 | self.pixel_matrix[row][col] = pixel 122 | -- Set min,max size of canvas 123 | if (row < self.minrow) then self.minrow = row end; 124 | if (row > self.maxrow) then self.maxrow = row end; 125 | if (col < self.mincol) then self.mincol = col end; 126 | if (col > self.maxcol) then self.maxcol = col end; 127 | self.width = -self.minrow+self.maxrow 128 | self.height = -self.mincol+self.maxcol 129 | end 130 | -- toggle a pixel on the canvas 131 | function Canvas.toggle(self, x, y, r, g, b, a) 132 | local row = math.floor(y / 4) 133 | local col = math.floor(x / 2) 134 | if self.pixel_matrix[row] == nil then 135 | self.pixel_matrix[row] = {} 136 | end 137 | if self.pixel_matrix[row][col] == nil then 138 | self.pixel_matrix[row][col] = Pixel.new(nil, nil,r,g,b,a) 139 | end 140 | local pixel = self.pixel_matrix[row][col] 141 | pixel.braille_rep = bxor(pixel.braille_rep, pixel_map[band(y,3) + 1][band(x,1) + 1]) 142 | pixel.str = Pixel.braille[pixel.braille_rep] 143 | self.pixel_matrix[row][col] = pixel 144 | -- Set min,max size of canvas 145 | if (row < self.minrow) then self.minrow = row end; 146 | if (row > self.maxrow) then self.maxrow = row end; 147 | if (col < self.mincol) then self.mincol = col end; 148 | if (col > self.maxcol) then self.maxcol = col end; 149 | self.width = -self.minrow+self.maxrow 150 | self.height = -self.mincol+self.maxcol 151 | end 152 | 153 | function Canvas.set_text(self, x, y, text, r, g, b, a) 154 | --[[Set text to the given coords. 155 | @Parameter x: x coordinate of the text start position 156 | @Parameter y: y coordinate of the text start position 157 | @Parameter text: to write text 158 | ]] 159 | local col = math.floor(x/2) 160 | local row = math.floor(y/4) 161 | for c in text:gmatch("([%z\1-\127\194-\244][\128-\191]*)") do 162 | if self.pixel_matrix[row] == nil then 163 | self.pixel_matrix[row] = {} 164 | end 165 | if self.pixel_matrix[row][col] == nil then 166 | self.pixel_matrix[row][col] = Pixel.new(nil, nil,r,g,b,a) 167 | end 168 | local pixel = self.pixel_matrix[row][col] 169 | pixel.str=c 170 | pixel.r=r or pixel.r 171 | pixel.g=g or pixel.g 172 | pixel.b=b or pixel.b 173 | pixel.a=a or pixel.a 174 | col=col+1 175 | end 176 | end 177 | 178 | -- Returns a string of the Frame. 179 | function Canvas.frame(self, mincol, minrow, maxcol, maxrow) 180 | mincol=mincol or self.mincol 181 | maxcol=maxcol or self.maxcol 182 | minrow=minrow or self.minrow 183 | maxrow=maxrow or self.maxrow 184 | local out={} 185 | for row=minrow, maxrow do 186 | for col=mincol, maxcol do 187 | -- check the pixels alpha threshold and add space if value is less. 188 | if self.pixel_matrix[row] 189 | and self.pixel_matrix[row][col] 190 | and self.pixel_matrix[row][col].a > self.alpha_threshold then 191 | local pixel = self.pixel_matrix[row][col] 192 | if self.esccodes then 193 | out[#out+1]=set_string_RGBColor(pixel.str,pixel.r,pixel.g,pixel.b) 194 | else 195 | out[#out+1]=pixel.str 196 | end 197 | else 198 | out[#out+1]=space 199 | end 200 | end 201 | out[#out+1]=nl 202 | end 203 | return table.concat(out) 204 | end 205 | 206 | -- convenience method for use with curses 207 | -- Prints the frame in curses Standard Screen. 208 | function Canvas.cframe(self, curses, mincol, minrow, maxcol, maxrow) 209 | mincol=math.floor(mincol or self.mincol) 210 | minrow=math.floor(minrow or self.minrow) 211 | maxcol=math.floor(maxcol or self.maxcol) 212 | maxrow=math.floor(maxrow or self.maxrow) 213 | local stdscr=curses.stdscr() 214 | if curses then 215 | for row=minrow, maxrow do 216 | for col=mincol, maxcol do 217 | -- check the pixels alpha threshold and print space if value is less. 218 | if self.pixel_matrix[row] 219 | and self.pixel_matrix[row][col] 220 | and self.pixel_matrix[row][col].a > self.alpha_threshold then 221 | local pixel = self.pixel_matrix[row][col] 222 | local term256color = nearest_term256_color_index(pixel.r, pixel.g, pixel.b) 223 | local cp = curses.color_pair(term256color) 224 | stdscr:attron(cp) 225 | --stdscr:attron(curses.A_BOLD) 226 | stdscr:addstr(pixel.str) 227 | stdscr:attroff(cp) 228 | else 229 | --curses.stdscr():attron(curses.A_BOLD) 230 | stdscr:addstr(space) 231 | --curses.stdscr():attroff(curses.A_BOLD) 232 | end 233 | end 234 | curses.stdscr():addstr(nl) 235 | end 236 | else 237 | error("no stdscr or curses given") 238 | end 239 | end 240 | 241 | function Canvas.line(x1, y1, x2, y2) 242 | --[[Returns the Bresnham line coords between (x1, y1), (x2, y2) 243 | @Parameter: x1 coordinate of the startpoint 244 | @Parameter: y1 coordinate of the startpoint 245 | @Parameter: x2 coordinate of the endpoint 246 | @Parameter: y2 coordinate of the endpoint 247 | @Returns: a coroutine yielding x,y 248 | ]] 249 | return coroutine.wrap(function() 250 | local x1 = math.floor(x1+.5) 251 | local y1 = math.floor(y1+.5) 252 | local x2 = math.floor(x2+.5) 253 | local y2 = math.floor(y2+.5) 254 | 255 | local dx = math.abs(x2-x1) 256 | local dy = -math.abs(y2-y1) 257 | local sx=x1dy then err=err+dy; x1=x1+sx end 266 | if e2 -(2*dy-1)*a2 then 294 | dy=dy-1; err=err-(2*dy-1)*a2 295 | end 296 | until dy<0 297 | end) 298 | end 299 | function Canvas.polygon(center_x, center_y, sides, radius) 300 | return coroutine.wrap(function() 301 | center_x=center_x or 0 302 | center_y=center_y or 0 303 | sides=sides or 4 304 | radius=radius or 4 305 | local degree = 360/sides 306 | 307 | for n=1,sides do 308 | local a=(n-1)*degree 309 | local b=n*degree 310 | local x1 = center_x + math.cos(math.rad(a)) * radius 311 | local y1 = center_y + math.sin(math.rad(a)) * radius 312 | local x2 = center_x + math.cos(math.rad(b)) * radius 313 | local y2 = center_y + math.sin(math.rad(b)) * radius 314 | 315 | for x, y in Canvas.line(x1, y1, x2, y2) do 316 | coroutine.yield(x, y) 317 | end 318 | end 319 | end) 320 | end 321 | --[[ 322 | Turtle routines 323 | def __init__(self, pos_x=0, pos_y=0): 324 | def up(self): 325 | def down(self): 326 | def forward(self, step): 327 | def move(self, x, y): 328 | def right(self, angle): 329 | def left(self, angle): 330 | def back(self, step): 331 | def animate(canvas, fn, delay=1./24, *args, **kwargs): 332 | def animation(stdscr): 333 | 334 | ]] 335 | function Canvas:reset(x,y,dir,down) 336 | self.x =x or 0 337 | self.y =y or 0 338 | self.dir =dir or 0 339 | self.down =down or true 340 | self.stack ={} 341 | end 342 | function Canvas:up() 343 | self.down = false 344 | end 345 | function Canvas:down() 346 | self.down = true 347 | end 348 | function Canvas:forward(step, r, g, b) 349 | local x = self.x + math.cos(math.rad(self.dir)) * step 350 | local y = self.y + math.sin(math.rad(self.dir)) * step 351 | --prev_brush_state = self.brush_on 352 | --self.brush_on = True 353 | self:move(x, y, r, g, b) 354 | --self.brush_on = prev_brush_state 355 | end 356 | function Canvas:back(step) 357 | self:forward(-step) 358 | end 359 | function Canvas:move(x,y,r,g,b) 360 | if self.down then 361 | for lx, ly in Canvas.line(self.x, self.y, x, y) do 362 | self:set(lx, ly,r,g,b) 363 | end 364 | end 365 | self.x = x 366 | self.y = y 367 | end 368 | function Canvas:right(angle) 369 | self.dir=self.dir+angle 370 | end 371 | function Canvas:left(angle) 372 | self.dir=self.dir-angle 373 | end 374 | function Canvas:push() 375 | table.insert(self.stack, self.dir) 376 | table.insert(self.stack, self.x) 377 | table.insert(self.stack, self.y) 378 | return self.dir, self.x, self.y 379 | end 380 | function Canvas:pop() 381 | self.y=table.remove(self.stack) or self.y 382 | self.x=table.remove(self.stack) or self.x 383 | self.dir=table.remove(self.stack) or self.dir 384 | return self.dir, self.x, self.y 385 | end 386 | function Canvas:draw(str, r,g,b) 387 | --[[ 388 | Draw a lindenmayer string with the canvas draw "language" 389 | @Parameter: str the lindenmayer string 390 | The drawing language interprets following commands: 391 | F - draw forward 392 | L - turn left 393 | R - turn right 394 | M - move without drawing 395 | N - reset position to all 0,0 396 | S - define stepsize (defaults 1) 397 | T - define turnsize (defaults 1 deg) 398 | X - eXchange rule with new one 399 | Z - Zufall (random) select symbol 400 | + Push pos+rotation 401 | - Pull pos+rotation 402 | repeats following command num times 403 | @Return: self 404 | ]] 405 | local rep,step,turn=0,1,1 406 | for c in str:gmatch(".") do 407 | if c=="F" then -- forward 408 | self.down=true 409 | self:forward((rep>1 and rep or 1)*step, r, g, b) 410 | rep=0 411 | elseif c=="+" then -- push rot 412 | self:push() 413 | elseif c=="-" then -- pull rot 414 | self:pop() 415 | elseif c=="L" then -- turn left 416 | self:left((rep>1 and rep or 1)*turn) 417 | rep=0 418 | elseif c=="R" then -- turn right 419 | self:right((rep>1 and rep or 1)*turn) 420 | rep=0 421 | elseif c=="M" then -- move without drawing 422 | self.down=false 423 | self:forward((rep>1 and rep or 1)*step) 424 | rep=0 425 | elseif c=="N" then -- reset postion to 0 426 | self:reset() 427 | rep,step=0,1 428 | elseif c=="S" then -- default stepsize 429 | step=rep>1 and rep or 1 430 | rep=0 431 | elseif c=="T" then -- default turnsize 432 | turn=rep>1 and rep or 1 433 | rep=0 434 | elseif c:match("%d") then -- allow repeated commands 435 | rep=rep*10+tonumber(c) 436 | end 437 | end 438 | return self 439 | end 440 | 441 | function string:lindenmayer(n,subst) 442 | --[[ Lindenmayer string substituation 443 | @Parameter: n number depth of iteration of the lindenmayer substitution 444 | @Parameter: var string of to replace symbols 445 | @Parameter: subst table of substituations for symbols 446 | @Return: returns lindenmayer string 447 | 448 | Example for the Hilbert curve implemented by Lindenmayer system 449 | local str="3S90TA" -- stepsize=3 turnsize=90 startsymbol="A" 450 | str=str:lindenmayer(3,"AB",{["A"]="LBFRAFARFBL",["B"]="RAFLBFBLFAR"}) 451 | print(c:frame(str)) 452 | ]] 453 | subst=subst or {} --["A"]="LBFRAFARFBL",["B"]="RAFLBFBLFAR"} 454 | for i=1,n do 455 | self=self:gsub("X(.-)X(.-)X", function(k,v) 456 | subst[k]=v 457 | return "" 458 | end) 459 | self=self:gsub("Z(.-)Z", function(c) 460 | local r=math.random(#c) 461 | return c and c:sub(r,r) or c 462 | end) 463 | for k,v in pairs(subst) do 464 | if #k>1 then 465 | self=self:gsub(k,v) 466 | end 467 | end 468 | self=self:gsub("(.)", function(c) 469 | return subst[c] or c 470 | end) 471 | end 472 | return self 473 | end 474 | 475 | -- some functions to convert RGB values to a xterm-256colors index 476 | -- ACKNOWLEDGMENT http://stackoverflow.com/questions/38045839/lua-xterm-256-colors-gradient-scripting 477 | local abs, min, max, floor = math.abs, math.min, math.max, math.floor 478 | local levels = {[0] = 0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff} 479 | 480 | local function index_0_5(value) -- value = color component 0..255 481 | return floor(max((value - 35) / 40, value / 58)) 482 | end 483 | 484 | local function nearest_16_231(r, g, b) -- r, g, b = 0..255 485 | -- returns color_index_from_16_to_231, appr_r, appr_g, appr_b 486 | r, g, b = index_0_5(r), index_0_5(g), index_0_5(b) 487 | return 16 + 36 * r + 6 * g + b, levels[r], levels[g], levels[b] 488 | end 489 | 490 | local function nearest_232_255(r, g, b) -- r, g, b = 0..255 491 | local gray = (3 * r + 10 * g + b) / 14 492 | -- this is a rational approximation for well-known formula 493 | -- gray = 0.2126 * r + 0.7152 * g + 0.0722 * b 494 | local index = min(23, max(0, floor((gray - 3) / 10))) 495 | gray = 8 + index * 10 496 | return 232 + index, gray, gray, gray 497 | end 498 | 499 | local function color_distance(r1, g1, b1, r2, g2, b2) 500 | return abs(r1 - r2) + abs(g1 - g2) + abs(b1 - b2) 501 | end 502 | 503 | function nearest_term256_color_index(r, g, b) -- r, g, b = 0..255 504 | local idx1, r1, g1, b1 = nearest_16_231(r, g, b) 505 | local idx2, r2, g2, b2 = nearest_232_255(r, g, b) 506 | local dist1 = color_distance(r, g, b, r1, g1, b1) 507 | local dist2 = color_distance(r, g, b, r2, g2, b2) 508 | return dist1 < dist2 and idx1 or idx2 509 | end 510 | 511 | local unpack, tonumber = table.unpack or unpack, tonumber 512 | 513 | local function convert_color_to_table(rrggbb) 514 | if type(rrggbb) == "string" then 515 | local r, g, b = rrggbb:match"(%x%x)(%x%x)(%x%x)" 516 | return {tonumber(r, 16), tonumber(g, 16), tonumber(b, 16)} 517 | else 518 | return rrggbb 519 | end 520 | end 521 | 522 | -- Takes special formated string with xterm256 color index, prints string with the color EscCode. 523 | local function print_with_colors(str) 524 | print( 525 | str:gsub("@x(%d%d%d)", 526 | function(color_idx) 527 | return "\27[38;5;"..color_idx.."m" 528 | end) 529 | .."\27[0m" 530 | ) 531 | end 532 | 533 | -- Takes special formated string with xterm256 color index, returns string with the color EscCode. 534 | local function string_with_colors(str) 535 | return str:gsub("@x(%d%d%d)", 536 | function(color_idx) 537 | return "\27[38;5;"..color_idx.."m" 538 | end) 539 | .."\27[0m" 540 | end 541 | 542 | -- Takes string and RGB values, returns string with nearest xterm256 color EscCode. 543 | function set_string_RGBColor(str,r,g,b) 544 | local colorstr = ("@x%03d"):format(nearest_term256_color_index(r,g,b)) 545 | return string_with_colors(colorstr..str) 546 | end 547 | 548 | return Canvas 549 | -------------------------------------------------------------------------------- /examples/basic.lua: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env luajit 2 | package.path = package.path .. ";../?.lua" 3 | Canvas = require "drawille" 4 | 5 | math.randomseed(os.time()) 6 | local c = Canvas.new() 7 | 8 | -- Print in your terminal color 9 | for i=0,360*4 do 10 | if (i % 15) == 0 then 11 | c:set(math.floor(i/15+.5), math.floor(math.sin(i*(math.pi/180))*8+.5)) 12 | end 13 | end 14 | --c:set_text(15,0,"Dies ist ein Test",255,255,255,255) 15 | print(c:frame()) 16 | 17 | -- Print in with default color (white) 18 | c:clear() -- clear the canvas 19 | c.esccodes = true -- turn no escape codes if you want to print with color 20 | for i=0,360*4 do 21 | if (i % 15) == 0 then 22 | c:set(math.floor(i/15+.5), math.floor(math.cos(i*(math.pi/180))*8+.5)) 23 | end 24 | end 25 | print(c:frame()) 26 | 27 | -- Print random colors 28 | c:clear() 29 | for i=0,360*4 do 30 | if (i % 15) == 0 then 31 | local r = math.random(0,255) 32 | local g = math.random(0,255) 33 | local b = math.random(0,255) 34 | c:set(math.floor(i/15+.5), math.floor(math.sin(i*(math.pi/180))*8+.5),r,g,b) 35 | end 36 | end 37 | c:set_text(15,0,"Dies ist ein Test",255,255,255,255) 38 | print(c:frame()) 39 | -------------------------------------------------------------------------------- /examples/curses_test.lua: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env luajit 2 | package.path = package.path .. ";../?.lua" 3 | local curses = require "curses" 4 | os.setlocale('') 5 | 6 | -- Start up curses. 7 | curses.initscr() -- Initialize the curses library and the terminal screen. 8 | curses.cbreak() -- Turn off input line buffering. 9 | curses.echo(false) -- Don't print out characters as the user types them. 10 | curses.nl(false) -- Turn off special-case return/newline handling. 11 | curses.curs_set(0) -- Hide the cursor. 12 | 13 | 14 | -- Setup Curses Colors curses.has_colors() 15 | if curses.has_colors() then 16 | curses.start_color() 17 | curses.use_default_colors() 18 | for i=0, curses.colors() do 19 | curses.init_pair(i + 1, i, -1) 20 | end 21 | 22 | -- Partial color support 23 | if curses.colors() < 256 then 24 | curses.endwin() 25 | print("It Looks like your curses version or your Terminal has no full 256 color support.") 26 | local diag = string.format( "Your Terminal settings support %i colors.", curses.colors()) 27 | print(diag) 28 | os.execute("echo Your Terminal Setting = $TERM") 29 | print("It should be xterm-256color in order to work.") 30 | print("try 'export TERM=xterm-256color' ") 31 | os.exit(0) 32 | end 33 | 34 | else -- NO color support 35 | curses.start_color() 36 | curses.use_default_colors() 37 | curses.endwin() 38 | print("Your curses version or your Terminal has no color support.") 39 | local diag = string.format( "Your Terminal settings support %i colors.", curses.colors()) 40 | print(diag) 41 | os.execute("echo Your Terminal Setting = $TERM .") 42 | print("Your Terminal setting sould be xterm-256color in order to work.") 43 | print("try 'export TERM=xterm-256color' ") 44 | os.exit(0) 45 | end 46 | 47 | 48 | local stdscr = curses.stdscr() 49 | stdscr:nodelay(true) -- Make getch nonblocking. 50 | stdscr:keypad() -- Correctly catch arrow key presses. 51 | while true do 52 | 53 | stdscr:erase() -- use erase() not clear() to remove flickering 54 | 55 | stdscr:addstr("Congratulations, You have 256 colors. \n") 56 | stdscr:addstr("Press Q to Quit. \n") 57 | for i=1,32 do 58 | stdscr:addstr(i%10) 59 | end 60 | stdscr:addstr("\n") 61 | local cstr = "" 62 | for i=1,curses.colors() do 63 | local cc = curses.color_pair(i) 64 | stdscr:attron(cc) 65 | stdscr:addstr("●") --"█") 66 | stdscr:attroff(cc) 67 | if i % 32 == 0 then 68 | stdscr:addstr("\n") 69 | end 70 | end 71 | stdscr:refresh() 72 | 73 | -- handle key imput 74 | local key = stdscr:getch() -- Nonblocking; returns nil if no key was pressed. 75 | if key == tostring('q'):byte(1) then -- The q key quits. 76 | curses.endwin() 77 | os.exit(0) 78 | end 79 | end 80 | -------------------------------------------------------------------------------- /examples/ellipse.lua: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env luajit 2 | package.path = package.path .. ";../?.lua" 3 | local Canvas = require "drawille" 4 | local curses = require "curses" 5 | os.setlocale('de_DE.utf-8') 6 | math.randomseed(os.time()) 7 | 8 | -- Start up curses. 9 | curses.initscr() -- Initialize the curses library and the terminal screen. 10 | curses.cbreak() -- Turn off input line buffering. 11 | curses.echo(false) -- Don't print out characters as the user types them. 12 | curses.nl(false) -- Turn off special-case return/newline handling. 13 | curses.curs_set(0) -- Hide the cursor. 14 | curses.raw() 15 | -- Area to draw 16 | local width = curses.cols() or 80 17 | local height = curses.lines() or 25 18 | width,height = (width-2)*1.7, (height-1)*4 19 | -- Setup Curses Colors 20 | if curses.has_colors() then 21 | curses.start_color() 22 | curses.use_default_colors() 23 | for i=0, curses.colors() do 24 | curses.init_pair(i + 1, i, -1) 25 | end 26 | else 27 | curses.endwin() 28 | error("Your terminal has no colors") 29 | end 30 | 31 | local stdscr = curses.stdscr() 32 | stdscr:nodelay(true) -- Make getch nonblocking. 33 | stdscr:keypad() -- Correctly catch key presses. 34 | stdscr:erase() -- use erase() not clear() to remove flickering 35 | local line={} 36 | local c = Canvas.new() 37 | repeat 38 | stdscr:mvaddstr(1,1,"") 39 | for i=1,10 do 40 | while #line>50 do 41 | for x,y in c.ellipse(unpack(line[1])) do 42 | c:unset(x,y) 43 | end 44 | table.remove(line, 1) 45 | end 46 | local xm,ym,xr,yr= 47 | math.random(21,width-41), math.random(21,height-41), 48 | math.random(5,20), math.random(5,20) 49 | table.insert(line, {xm,ym,xr,yr}) 50 | local r = math.random(0,255) 51 | local g = math.random(0,255) 52 | local b = math.random(0,255) 53 | local a = math.random(0,255) 54 | for x,y in c.ellipse(xm,ym, xr,yr) do 55 | c:set(x,y,r,g,b,a) 56 | end 57 | end 58 | c:set_text(10,10, "Press Q to Quit",255,255,255,255) 59 | -- draw frame the convenient way 60 | c:cframe(curses) 61 | 62 | -- handle key imput 63 | local key = stdscr:getch() -- Nonblocking; returns nil if no key was pressed. 64 | if key == tostring('q'):byte(1) then -- The q key quits. 65 | curses.endwin() 66 | os.exit(0) 67 | end 68 | 69 | curses.delay_output(100) 70 | until false 71 | -------------------------------------------------------------------------------- /examples/life.lua: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env luajit 2 | package.path = package.path .. ";../?.lua" 3 | local Canvas = require "drawille" 4 | local curses = require "curses" 5 | os.setlocale('') -- de_DE.utf-8 6 | math.randomseed(os.time()^5+os.clock()) 7 | 8 | -- Start up curses. 9 | curses.initscr() -- Initialize the curses library and the terminal screen. 10 | curses.cbreak() -- Turn off input line buffering. 11 | curses.echo(false) -- Don't print out characters as the user types them. 12 | curses.nl(false) -- Turn off special-case return/newline handling. 13 | curses.curs_set(0) -- Hide the cursor. 14 | -- Area to draw 15 | local width = curses.cols() or 80 16 | local height = curses.lines() or 25 17 | width,height=(width-2)*2,(height-1)*4 18 | 19 | 20 | -- Setup Curses Colors 21 | curses.start_color() 22 | curses.use_default_colors() 23 | for i=0, curses.colors() do 24 | curses.init_pair(i + 1, i, -1) 25 | end 26 | 27 | function Canvas:neighbors(x,y,width,height) 28 | local n=0 29 | local xh,xl=x%width+1,(x-2)%width+1 30 | local yh,yl=y%height+1,(y-2)%height+1 31 | if self:get(xl,yl) then n=n+1 end 32 | if self:get(x ,yl) then n=n+1 end 33 | if self:get(xh,yl) then n=n+1 end 34 | if self:get(xl,y ) then n=n+1 end 35 | if self:get(xh,y ) then n=n+1 end 36 | if self:get(xl,yh) then n=n+1 end 37 | if self:get(x ,yh) then n=n+1 end 38 | if self:get(xh,yh) then n=n+1 end 39 | return n 40 | end 41 | 42 | local stdscr = curses.stdscr() 43 | stdscr:nodelay(true) -- Make getch nonblocking. 44 | stdscr:keypad() -- Correctly catch key presses. 45 | local c = { Canvas(),Canvas() } 46 | local c1,c2 = 1,2 47 | c[c1]:set(2,1) c[c1]:set(3,2) c[c1]:set(1,3) c[c1]:set(2,3) c[c1]:set(3,3) 48 | for x=1,width do for y=1,height do 49 | if math.random(4)==1 then c[c1]:set(x,y) end 50 | end end 51 | 52 | --[[ 53 | Conways Game of Life 54 | Argument: 23/3 (default Conway world, with 2+3 survival, 3 birth) 55 | first argument in form of / makes the new world 56 | Examples 57 | 3/3 13/3 23/3 (Conway) 34/3 (4G3) 35/3 236/3 135/35 12345/3 58 | 1357/1357 (copyworld) 24/35 0123/01234 (blinking spotworld) 59 | 01234678/0123478 Anti-Conway 60 | 02468/02468 Anti-Copy 61 | 01234678/0123678 Anti 4G3 62 | ]] 63 | 64 | local cs, cb=arg[1] and arg[1]:match("(%d+)/(%d+)") or "23","3" 65 | local birth,survive={},{} 66 | for c in cb:gmatch("%d") do 67 | birth[tonumber(c)]=true 68 | end 69 | for c in cs:gmatch("%d") do 70 | survive[tonumber(c)]=true 71 | end 72 | 73 | repeat 74 | -- stdscr:erase() -- use erase() not clear() to remove flickering 75 | stdscr:mvaddstr(0,0,"") 76 | c[c1]:cframe(curses) 77 | for y=1, height do 78 | for x=1, width do 79 | local pixel=c[c1]:get(x,y) 80 | local n=c[c1]:neighbors(x,y,width,height) 81 | if birth[n] then 82 | c[c2]:set(x,y) 83 | elseif survive[n] and pixel then 84 | c[c2]:set(x,y) 85 | end 86 | end 87 | end 88 | c1,c2=c2,c1 89 | c[c2]:clear() 90 | local key = stdscr:getch() -- Nonblocking; returns nil if no key was pressed. 91 | if key == tostring('q'):byte(1) then -- The q key quits. 92 | curses.endwin() 93 | os.exit(0) 94 | end 95 | curses.delay_output(100) 96 | until false 97 | -------------------------------------------------------------------------------- /examples/line.lua: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env luajit 2 | package.path = package.path .. ";../?.lua" 3 | local Canvas = require "drawille" 4 | local curses = require "curses" 5 | os.setlocale('de_DE.utf-8') 6 | math.randomseed(os.time()) 7 | 8 | -- Start up curses. 9 | curses.initscr() -- Initialize the curses library and the terminal screen. 10 | curses.cbreak() -- Turn off input line buffering. 11 | curses.echo(false) -- Don't print out characters as the user types them. 12 | curses.nl(false) -- Turn off special-case return/newline handling. 13 | curses.curs_set(0) -- Hide the cursor. 14 | curses.raw() 15 | -- Area to draw 16 | local width = curses.cols() or 80 17 | local height = curses.lines() or 25 18 | width,height=(width-2)*2,(height-2)*4 19 | 20 | -- Setup Curses Colors 21 | curses.start_color() 22 | curses.use_default_colors() 23 | for i=0, curses.colors() do 24 | curses.init_pair(i + 1, i, -1) 25 | end 26 | 27 | 28 | local stdscr = curses.stdscr() 29 | stdscr:nodelay(true) -- Make getch nonblocking. 30 | stdscr:keypad() -- Correctly catch key presses. 31 | stdscr:erase() -- use erase() not clear() to remove flickering 32 | local line={} 33 | local c = Canvas() 34 | repeat 35 | stdscr:mvaddstr(0,0,"") 36 | --stdscr:mvaddstr(1,1,"Press Q to Quit.\n") 37 | for i=1,10 do 38 | while #line>25 do 39 | for x,y in c.line(unpack(line[1])) do 40 | c:unset(x,y) 41 | end 42 | table.remove(line, 1) 43 | end 44 | local x1,y1,x2,y2= 45 | math.random(1,width), math.random(1,height), 46 | math.random(1,width), math.random(1,height) 47 | table.insert(line, {x1,y1,x2,y2}) 48 | local r = math.random(0,255) 49 | local g = math.random(0,255) 50 | local b = math.random(0,255) 51 | local a = math.random(0,255) 52 | for x,y in c.line(x1,y1, x2,y2) do 53 | c:set(x,y,r,g,b,a) 54 | end 55 | end 56 | c:set_text(10,10, "Press Q to Quit",255,255,255,255) 57 | -- draw frame the convenient way 58 | c:cframe(curses) 59 | 60 | -- handle key imput 61 | local key = stdscr:getch() -- Nonblocking; returns nil if no key was pressed. 62 | if key == tostring('q'):byte(1) then -- The q key quits. 63 | curses.endwin() 64 | os.exit(0) 65 | end 66 | 67 | curses.delay_output(100) 68 | until false 69 | -------------------------------------------------------------------------------- /examples/models/arcelite/adder.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.625000, 0.625000, 0.125000 8 | 0.625000, 0.625000, 0.125000 9 | 0.875000, 0.625000, 0.125000 10 | 0.875000, 0.625000, 0.125000 11 | 0.125000, 0.375000, 0.125000 12 | 0.125000, 0.375000, 0.125000 13 | 0.625000, 0.625000, 0.125000 14 | 0.625000, 0.625000, 0.125000 15 | 0.375000, 0.625000, 0.125000 16 | 0.375000, 0.625000, 0.125000 17 | 0.625000, 0.625000, 0.125000 18 | 0.625000, 0.625000, 0.125000 19 | 0.375000, 0.625000, 0.125000 20 | 0.375000, 0.625000, 0.125000 21 | 0.375000, 0.375000, 0.125000 22 | 0.375000, 0.625000, 0.125000 23 | 0.375000, 0.625000, 0.125000 24 | 0.375000, 0.375000, 0.125000 25 | 0.375000, 0.375000, 0.125000 26 | 0.375000, 0.375000, 0.125000 27 | 0.125000, 0.375000, 0.125000 28 | 0.125000, 0.375000, 0.125000 29 | 0.375000, 0.375000, 0.125000 30 | 0.375000, 0.375000, 0.125000 31 | 0.375000, 0.375000, 0.375000 32 | 0.375000, 0.375000, 0.375000 33 | 0.375000, 0.375000, 0.375000 34 | 0.375000, 0.375000, 0.375000 35 | 0.875000, 0.125000, 0.125000 36 | 0.875000, 0.125000, 0.125000 37 | ] 38 | } 39 | coordIndex [ 40 | 2,1,0,-1, 41 | 2,3,1,-1, 42 | 4,3,2,-1, 43 | 4,2,5,-1, 44 | 22,23,24,-1, 45 | 27,26,25,-1, 46 | 5,6,4,-1, 47 | 6,5,7,-1, 48 | 3,8,1,-1, 49 | 4,6,9,-1, 50 | 3,9,8,-1, 51 | 3,4,9,-1, 52 | 7,10,6,-1, 53 | 10,11,6,-1, 54 | 6,11,9,-1, 55 | 1,12,0,-1, 56 | 13,12,1,-1, 57 | 8,13,1,-1, 58 | 12,13,11,-1, 59 | 10,12,11,-1, 60 | 11,13,9,-1, 61 | 13,8,9,-1, 62 | 14,15,16,-1, 63 | 16,17,14,-1, 64 | 0,12,2,-1, 65 | 2,12,10,-1, 66 | 10,5,2,-1, 67 | 5,10,7,-1, 68 | 20,19,18,-1, 69 | 20,18,21,-1 70 | ] 71 | 72 | coord Coordinate { point 73 | [ 74 | -80,0,-110, 75 | -80,0,-70, 76 | -60,19,-110, 77 | -60,19,10, 78 | 60,19,10, 79 | 60,19,-110, 80 | 80,0,-70, 81 | 80,0,-110, 82 | -60,0,90, 83 | 60,0,90, 84 | 60,-20,-110, 85 | 60,-20,10, 86 | -60,-20,-110, 87 | -60,-20,10, 88 | -35,7,60, 89 | -35,12,40, 90 | 35,12,40, 91 | 35,7,60, 92 | -25,9,-110.1, 93 | 25,9,-110.1, 94 | 25,-15,-110.1, 95 | -25,-15,-110.1, 96 | 13,20,-29, 97 | 13,20,-89, 98 | 25,20,-69, 99 | -13,20,-29, 100 | -13,20,-89, 101 | -25,20,-69 102 | ] 103 | } 104 | solid FALSE 105 | colorPerVertex FALSE 106 | } 107 | 108 | appearance Appearance { 109 | material Material { 110 | shininess 0.2 111 | specularColor 1 1 1 112 | } 113 | } 114 | } 115 | 116 | NavigationInfo { type "EXAMINE" } 117 | 118 | Viewpoint { 119 | position 0 0 600 120 | } 121 | -------------------------------------------------------------------------------- /examples/models/arcelite/anaconda.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | 6 | color Color { 7 | color [ 8 | 0.875000, 0.625000, 0.125000 9 | 0.625000, 0.625000, 0.125000 10 | 0.625000, 0.625000, 0.125000 11 | 0.875000, 0.625000, 0.125000 12 | 0.625000, 0.625000, 0.375000 13 | 0.625000, 0.375000, 0.125000 14 | 0.625000, 0.375000, 0.125000 15 | 0.875000, 0.125000, 0.125000 16 | 0.375000, 0.125000, 0.125000 17 | 0.375000, 0.125000, 0.125000 18 | 0.625000, 0.625000, 0.375000 19 | 0.375000, 0.125000, 0.125000 20 | 0.375000, 0.125000, 0.125000 21 | 0.125000, 0.125000, 0.125000 22 | 0.125000, 0.125000, 0.125000 23 | 0.125000, 0.125000, 0.125000 24 | 0.125000, 0.125000, 0.125000 25 | ] 26 | } 27 | 28 | coordIndex [ 29 | 2,1,0,-1, 30 | 0,3,2,-1, 31 | 1,4,0,-1, 32 | 0,5,6,-1, 33 | 0,6,3,-1, 34 | 5,7,6,-1, 35 | 7,1,2,-1, 36 | 8,9,10,-1, 37 | 6,7,2,-1, 38 | 3,6,2,-1, 39 | 4,5,0,-1, 40 | 1,7,5,-1, 41 | 5,4,1,-1, 42 | 13,12,11,-1, 43 | 15,14,13,-1, 44 | 16,17,18,-1, 45 | 18,19,16,-1 46 | ] 47 | 48 | coord Coordinate { 49 | point [ 50 | 0,-25,175, 51 | -70,-75,-145, 52 | 70,-75,-145, 53 | 110,-35,-95, 54 | -110,-35,-95, 55 | -60,35,-115, 56 | 60,35,-115, 57 | 0,15,-175, 58 | 0,-15,-165.1, 59 | -30,-51,-153.1, 60 | 30,-51,-153.1, 61 | -17,-6,83, 62 | 18,-6,83, 63 | 20,-4,74, 64 | -20,-4,74, 65 | -18,-6,83, 66 | 16,-8,94, 67 | 14,-10,103, 68 | -14,-10,103, 69 | -16,-8,94 70 | ] 71 | } 72 | solid FALSE 73 | colorPerVertex FALSE 74 | } 75 | 76 | appearance Appearance { 77 | material Material { 78 | shininess 0.2 79 | specularColor 1 1 1 80 | } 81 | } 82 | } 83 | 84 | NavigationInfo { type "EXAMINE" } 85 | 86 | Viewpoint { 87 | position 0 0 600 88 | } 89 | -------------------------------------------------------------------------------- /examples/models/arcelite/asp2.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.375000, 0.375000, 0.375000 8 | 0.375000, 0.375000, 0.375000 9 | 0.875000, 0.125000, 0.125000 10 | 0.875000, 0.125000, 0.125000 11 | 0.375000, 0.625000, 0.375000 12 | 0.375000, 0.625000, 0.375000 13 | 0.375000, 0.625000, 0.375000 14 | 0.125000, 0.875000, 0.375000 15 | 0.125000, 0.875000, 0.375000 16 | 0.125000, 0.875000, 0.375000 17 | 0.375000, 0.375000, 0.125000 18 | 0.375000, 0.375000, 0.125000 19 | 0.375000, 0.375000, 0.125000 20 | 0.125000, 0.375000, 0.125000 21 | 0.125000, 0.375000, 0.125000 22 | 0.375000, 0.375000, 0.125000 23 | 0.125000, 0.375000, 0.375000 24 | 0.125000, 0.375000, 0.375000 25 | 0.125000, 0.625000, 0.375000 26 | 0.125000, 0.625000, 0.375000 27 | 0.125000, 0.375000, 0.125000 28 | 0.125000, 0.375000, 0.125000 29 | 0.125000, 0.375000, 0.125000 30 | 0.125000, 0.375000, 0.125000 31 | ] 32 | } 33 | 34 | coordIndex [ 35 | 2,1,0,-1, 36 | 3,1,2,-1, 37 | 7,11,15,-1, 38 | 16,7,15,-1, 39 | 0,1,4,-1, 40 | 4,5,0,-1, 41 | 5,9,0,-1, 42 | 3,4,1,-1, 43 | 3,10,4,-1, 44 | 12,10,3,-1, 45 | 4,13,5,-1, 46 | 14,13,4,-1, 47 | 14,4,10,-1, 48 | 5,13,9,-1, 49 | 10,12,14,-1, 50 | 8,6,2,-1, 51 | 8,13,6,-1, 52 | 13,14,6,-1, 53 | 8,9,13,-1, 54 | 14,12,6,-1, 55 | 2,6,12,-1, 56 | 12,3,2,-1, 57 | 9,8,2,-1, 58 | 2,0,9,-1 59 | ] 60 | 61 | coord Coordinate { point 62 | [ 63 | -60,0,-75, 64 | 0,20,-75, 65 | 0,-20,-75, 66 | 60,0,-75, 67 | 0,20,-5, 68 | -60,10,15, 69 | 60,-10,15, 70 | 0,10,-75.1, 71 | -60,-10,15, 72 | -100,0,5, 73 | 60,10,15, 74 | -20,0,-75.1, 75 | 100,0,5, 76 | -40,0,75, 77 | 40,0,75, 78 | 0,-10,-75.1, 79 | 20,0,-75.1 80 | ] 81 | } 82 | solid FALSE 83 | colorPerVertex FALSE 84 | } 85 | 86 | appearance Appearance { 87 | material Material { 88 | shininess 0.2 89 | specularColor 1 1 1 90 | } 91 | } 92 | } 93 | 94 | NavigationInfo { type "EXAMINE" } 95 | 96 | Viewpoint { 97 | position 0 0 600 98 | } -------------------------------------------------------------------------------- /examples/models/arcelite/asp2v.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.125000, 0.375000, 0.125000 8 | 0.125000, 0.625000, 0.125000 9 | 0.125000, 0.625000, 0.125000 10 | 0.875000, 0.375000, 0.125000 11 | 0.875000, 0.375000, 0.125000 12 | 0.125000, 0.375000, 0.125000 13 | 0.125000, 0.375000, 0.125000 14 | 0.125000, 0.875000, 0.375000 15 | 0.125000, 0.875000, 0.375000 16 | 0.375000, 0.625000, 0.125000 17 | 0.125000, 0.625000, 0.125000 18 | 0.875000, 0.625000, 0.125000 19 | 0.875000, 0.625000, 0.125000 20 | 0.875000, 0.625000, 0.125000 21 | 0.125000, 0.375000, 0.375000 22 | 0.875000, 0.125000, 0.125000 23 | 0.875000, 0.125000, 0.125000 24 | 0.375000, 0.375000, 0.125000 25 | 0.125000, 0.375000, 0.125000 26 | 0.625000, 0.625000, 0.125000 27 | 0.625000, 0.625000, 0.125000 28 | 0.625000, 0.625000, 0.125000 29 | 0.625000, 0.625000, 0.125000 30 | 0.375000, 0.375000, 0.125000 31 | ] 32 | } 33 | 34 | coordIndex [ 35 | 7,0,6,-1, 36 | 8,3,1,-1, 37 | 7,8,1,-1, 38 | 16,15,14,-1, 39 | 17,18,19,-1, 40 | 7,9,8,-1, 41 | 7,6,9,-1, 42 | 6,2,10,-1, 43 | 5,9,10,-1, 44 | 11,6,10,-1, 45 | 11,10,9,-1, 46 | 2,1,10,-1, 47 | 1,3,10,-1, 48 | 3,5,10,-1, 49 | 11,12,13,-1, 50 | 11,9,12,-1, 51 | 6,11,13,-1, 52 | 9,5,4,-1, 53 | 8,9,4,-1, 54 | 3,8,4,-1, 55 | 4,5,3,-1, 56 | 1,2,0,-1, 57 | 0,7,1,-1, 58 | 0,2,6,-1 59 | ] 60 | 61 | coord Coordinate { point 62 | [ 63 | 115,-10,15, 64 | 50,-10,97, 65 | 90,16,27, 66 | -50,-10,97, 67 | -115,-10,15, 68 | -90,16,27, 69 | 65,-10,-103, 70 | 98,-30,37, 71 | -98,-30,37, 72 | -65,-10,-103, 73 | 0,30,-11, 74 | 0,20,-103, 75 | -18,-10,-103, 76 | 18,-10,-103, 77 | -18,-14,85.1, 78 | -24,-26,49.1, 79 | -14,-26,49.1, 80 | 24,-26,49.1, 81 | 14,-26,49.1, 82 | 18,-14,85.1 83 | ] 84 | } 85 | solid FALSE 86 | colorPerVertex FALSE 87 | } 88 | 89 | appearance Appearance { 90 | material Material { 91 | shininess 0.2 92 | specularColor 1 1 1 93 | } 94 | } 95 | } 96 | 97 | NavigationInfo { type "EXAMINE" } 98 | 99 | Viewpoint { 100 | position 0 0 600 101 | } 102 | -------------------------------------------------------------------------------- /examples/models/arcelite/boa.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.375000, 0.375000, 0.625000 8 | 0.625000, 0.375000, 0.625000 9 | 0.875000, 0.375000, 0.625000 10 | 0.625000, 0.375000, 0.625000 11 | 0.375000, 0.375000, 0.625000 12 | 0.375000, 0.125000, 0.625000 13 | 0.375000, 0.125000, 0.625000 14 | 0.125000, 0.125000, 0.375000 15 | 0.875000, 0.125000, 0.125000 16 | 0.375000, 0.125000, 0.375000 17 | 0.375000, 0.125000, 0.375000 18 | ] 19 | } 20 | 21 | coordIndex [ 22 | 0,1,2,-1, 23 | 3,0,2,-1, 24 | 4,3,2,-1, 25 | 5,4,2,-1, 26 | 1,5,2,-1, 27 | 3,4,5,-1, 28 | 3,5,0,-1, 29 | 1,0,5,-1, 30 | 6,7,8,-1 31 | ] 32 | 33 | coord Coordinate { point 34 | [ 35 | 46,3,-114, 36 | 0,-46,-67, 37 | 0,4,114, 38 | 44,46,-87, 39 | -44,46,-87, 40 | -46,3,-114, 41 | 0,16,-105, 42 | 14,39,-92, 43 | -12,39,-92 44 | ] 45 | } 46 | solid FALSE 47 | colorPerVertex FALSE 48 | } 49 | 50 | appearance Appearance { 51 | material Material { 52 | shininess 0.2 53 | specularColor 1 1 1 54 | } 55 | } 56 | } 57 | 58 | NavigationInfo { type "EXAMINE" } 59 | 60 | Viewpoint { 61 | position 0 0 600 62 | } 63 | -------------------------------------------------------------------------------- /examples/models/arcelite/bushmaster.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.375000, 0.125000, 0.125000 8 | 0.375000, 0.125000, 0.125000 9 | 0.375000, 0.125000, 0.125000 10 | 0.375000, 0.125000, 0.125000 11 | 0.375000, 0.125000, 0.125000 12 | 0.875000, 0.125000, 0.125000 13 | 0.875000, 0.125000, 0.125000 14 | 0.375000, 0.375000, 0.375000 15 | 0.375000, 0.875000, 0.875000 16 | 0.375000, 0.875000, 0.875000 17 | 0.625000, 0.875000, 0.875000 18 | 0.125000, 0.625000, 0.625000 19 | 0.125000, 0.625000, 0.625000 20 | 0.375000, 0.625000, 0.625000 21 | 0.125000, 0.625000, 0.625000 22 | 0.375000, 0.625000, 0.625000 23 | 0.125000, 0.625000, 0.625000 24 | 0.125000, 0.375000, 0.375000 25 | 0.125000, 0.375000, 0.375000 26 | 0.875000, 0.125000, 0.125000 27 | 0.875000, 0.125000, 0.125000 28 | 0.375000, 0.375000, 0.375000 29 | ] 30 | } 31 | 32 | coordIndex [ 33 | 0,1,2,-1, 34 | 0,3,1,-1, 35 | 3,4,1,-1, 36 | 3,5,6,-1, 37 | 6,4,3,-1, 38 | 14,13,12,-1, 39 | 17,16,15,-1, 40 | 5,3,7,-1, 41 | 8,9,7,-1, 42 | 10,9,8,-1, 43 | 2,10,8,-1, 44 | 10,2,1,-1, 45 | 8,0,11,-1, 46 | 8,7,0,-1, 47 | 7,3,0,-1, 48 | 10,1,9,-1, 49 | 1,4,9,-1, 50 | 5,7,9,-1, 51 | 9,6,5,-1, 52 | 20,19,18,-1, 53 | 21,22,23,-1, 54 | 6,9,4,-1 55 | ] 56 | 57 | coord Coordinate { 58 | point [ 59 | 100,-20,30, 60 | -100,-20,30, 61 | 0,-20,130, 62 | 100,-20,-90, 63 | -100,-20,-90, 64 | 40,-20,-130, 65 | -40,-20,-130, 66 | 40,20,-130, 67 | 40,20,-10, 68 | -40,20,-130, 69 | -40,20,-10, 70 | 0,-20,130, 71 | -40,-20.1,30, 72 | -50,-20.1,-90, 73 | -30,-20.1,-90, 74 | 40,-20.1,30, 75 | 30,-20.1,-90, 76 | 50,-20.1,-90, 77 | -30,0,-130.1, 78 | -10,10,-130.1, 79 | -10,-10,-130.1, 80 | 10,10,-130.1, 81 | 10,-10,-130.1, 82 | 30,0,-130.1 83 | ] 84 | } 85 | solid FALSE 86 | colorPerVertex FALSE 87 | } 88 | 89 | appearance Appearance { 90 | material Material { 91 | shininess 0.2 92 | specularColor 1 1 1 93 | } 94 | } 95 | } 96 | 97 | NavigationInfo { type "EXAMINE" } 98 | 99 | Viewpoint { 100 | position 0 0 512 101 | } -------------------------------------------------------------------------------- /examples/models/arcelite/caiman.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.375000, 0.375000, 0.625000 8 | 0.375000, 0.375000, 0.625000 9 | 0.375000, 0.625000, 0.625000 10 | 0.125000, 0.625000, 0.625000 11 | 0.375000, 0.875000, 0.625000 12 | 0.625000, 0.875000, 0.625000 13 | 0.375000, 0.625000, 0.375000 14 | 0.875000, 0.125000, 0.125000 15 | 0.875000, 0.125000, 0.125000 16 | 0.125000, 0.125000, 0.625000 17 | 0.125000, 0.125000, 0.375000 18 | 0.125000, 0.125000, 0.375000 19 | ] 20 | } 21 | 22 | coordIndex [ 23 | 0,1,2,-1, 24 | 2,3,4,-1, 25 | 2,5,0,-1, 26 | 2,4,5,-1, 27 | 6,0,5,-1, 28 | 5,4,6,-1, 29 | 3,2,1,-1, 30 | 7,8,9,-1, 31 | 10,11,12,-1, 32 | 1,6,3,-1, 33 | 13,14,15,-1, 34 | 16,17,18,-1 35 | ] 36 | 37 | coord Coordinate { 38 | point [ 39 | -40,-30,40, 40 | -120,-30,-120, 41 | 0,10,-120, 42 | 120,-30,-120, 43 | 40,-30,40, 44 | 0,30,40, 45 | 0,-30,120, 46 | 8,-6,-120.1, 47 | 8,-22,-120.1, 48 | 52,-22,-120.1, 49 | -8,-22,-120.1, 50 | -8,-6,-120.1, 51 | -52,-22,-120.1, 52 | 13,2,52, 53 | 25,-14,52, 54 | 13,-14,76, 55 | -13,-14,76, 56 | -25,-14,52, 57 | -13,2,52 58 | ] 59 | } 60 | solid FALSE 61 | colorPerVertex FALSE 62 | } 63 | 64 | appearance Appearance { 65 | material Material { 66 | shininess 0.2 67 | specularColor 1 1 1 68 | } 69 | } 70 | } 71 | 72 | NavigationInfo { type "EXAMINE" } 73 | 74 | Viewpoint { 75 | position 0 0 512 76 | } -------------------------------------------------------------------------------- /examples/models/arcelite/cobra1.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.875000, 0.875000, 0.875000 8 | 0.125000, 0.875000, 0.875000 9 | 0.125000, 0.625000, 0.875000 10 | 0.125000, 0.625000, 0.875000 11 | 0.125000, 0.625000, 0.875000 12 | 0.125000, 0.625000, 0.875000 13 | 0.125000, 0.375000, 0.875000 14 | 0.125000, 0.375000, 0.875000 15 | 0.375000, 0.125000, 0.875000 16 | 0.375000, 0.125000, 0.875000 17 | 0.625000, 0.375000, 0.875000 18 | 0.625000, 0.375000, 0.875000 19 | 0.125000, 0.125000, 0.625000 20 | 0.125000, 0.125000, 0.625000 21 | 0.125000, 0.125000, 0.375000 22 | 0.125000, 0.125000, 0.375000 23 | 0.375000, 0.125000, 0.375000 24 | 0.375000, 0.125000, 0.375000 25 | 0.125000, 0.125000, 0.375000 26 | 0.125000, 0.125000, 0.375000 27 | 0.875000, 0.125000, 0.125000 28 | 0.875000, 0.125000, 0.125000 29 | ] 30 | } 31 | 32 | coordIndex [ 33 | 0,1,2,-1, 34 | 2,3,4,-1, 35 | 0,2,4,-1, 36 | 2,1,3,-1, 37 | 5,3,1,-1, 38 | 6,0,4,-1, 39 | 6,4,7,-1, 40 | 8,3,5,-1, 41 | 6,7,9,-1, 42 | 10,8,5,-1, 43 | 10,3,8,-1, 44 | 4,9,7,-1, 45 | 4,3,9,-1, 46 | 9,3,10,-1, 47 | 0,10,1,-1, 48 | 0,9,10,-1, 49 | 10,5,1,-1, 50 | 0,6,9,-1, 51 | 11,12,13,-1, 52 | 13,14,11,-1, 53 | 15,16,17,-1, 54 | 15,18,19,-1 55 | ] 56 | 57 | coord Coordinate { 58 | point [ 59 | 45,-6,78, 60 | -45,-6,78, 61 | 0,25,-12, 62 | -91,10,-78, 63 | 91,10,-78, 64 | -130,-6,30, 65 | 130,-6,30, 66 | 130,-6,-57, 67 | -130,-6,-57, 68 | 91,-25,-77, 69 | -91,-25,-78, 70 | -27,4.7,47, 71 | 27,4.7,47, 72 | 27,0.3,60, 73 | -27,0.3,60, 74 | 0,1,-78, 75 | 45,-15,-78, 76 | 60,0,-78, 77 | -60,0,-78, 78 | -45,-15,-78 79 | ] 80 | } 81 | solid FALSE 82 | colorPerVertex FALSE 83 | } 84 | 85 | appearance Appearance { 86 | material Material { 87 | shininess 0.2 88 | specularColor 1 1 1 89 | } 90 | } 91 | } 92 | 93 | NavigationInfo { type "EXAMINE" } 94 | 95 | Viewpoint { 96 | position 0 0 512 97 | } -------------------------------------------------------------------------------- /examples/models/arcelite/cobra3.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.375000, 0.125000, 0.875000 8 | 0.375000, 0.125000, 0.875000 9 | 0.125000, 0.625000, 0.625000 10 | 0.125000, 0.625000, 0.625000 11 | 0.125000, 0.125000, 0.625000 12 | 0.125000, 0.125000, 0.625000 13 | 0.125000, 0.125000, 0.375000 14 | 0.125000, 0.125000, 0.375000 15 | 0.375000, 0.625000, 0.875000 16 | 0.375000, 0.375000, 0.375000 17 | 0.375000, 0.375000, 0.375000 18 | 0.375000, 0.375000, 0.375000 19 | 0.125000, 0.375000, 0.375000 20 | 0.375000, 0.375000, 0.375000 21 | 0.875000, 0.125000, 0.125000 22 | 0.875000, 0.125000, 0.125000 23 | 0.875000, 0.125000, 0.125000 24 | 0.875000, 0.125000, 0.125000 25 | 0.875000, 0.125000, 0.125000 26 | 0.875000, 0.125000, 0.125000 27 | 0.125000, 0.125000, 0.625000 28 | 0.125000, 0.125000, 0.625000 29 | 0.125000, 0.375000, 0.375000 30 | 0.125000, 0.375000, 0.375000 31 | 0.125000, 0.375000, 0.375000 32 | 0.125000, 0.375000, 0.375000 33 | ] 34 | } 35 | 36 | coordIndex [ 37 | 0,1,2,-1, 38 | 0,3,4,-1, 39 | 0,5,1,-1, 40 | 0,4,5,-1, 41 | 2,1,6,-1, 42 | 3,7,4,-1, 43 | 1,8,6,-1, 44 | 4,7,9,-1, 45 | 2,3,0,-1, 46 | 4,9,10,-1, 47 | 1,11,8,-1, 48 | 5,4,10,-1, 49 | 5,10,11,-1, 50 | 1,5,11,-1, 51 | 12,13,14,-1, 52 | 17,16,15,-1, 53 | 20,19,18,-1, 54 | 20,21,19,-1, 55 | 22,23,24,-1, 56 | 23,25,24,-1, 57 | 2,11,10,-1, 58 | 10,3,2,-1, 59 | 8,11,2,-1, 60 | 2,6,8,-1, 61 | 3,9,7,-1, 62 | 3,10,9,-1 63 | ] 64 | 65 | coord Coordinate { 66 | point [ 67 | 0,15,10, 68 | 80,5,-45, 69 | 25,-5,45, 70 | -25,-5,45, 71 | -80,5,-45, 72 | 0,15,-45, 73 | 95,-5,-25, 74 | -95,-5,-25, 75 | 95,-5,-45, 76 | -95,-5,-45, 77 | -25,-15,-45, 78 | 25,-15,-45, 79 | -60,-5,-45.1, 80 | -60,5,-45.1, 81 | -75,0,-45.1, 82 | 60,5,-45.1, 83 | 75,0,-45.1, 84 | 60,-5,-45.1, 85 | -5,5,-45.1, 86 | -5,-10,-45.1, 87 | -30,0,-45.1, 88 | -30,-5,-45.1, 89 | 5,5,-45.1, 90 | 5,-10,-45.1, 91 | 30,0,-45.1, 92 | 30,-5,-45.1 93 | ] 94 | } 95 | solid FALSE 96 | colorPerVertex FALSE 97 | } 98 | 99 | appearance Appearance { 100 | material Material { 101 | shininess 0.2 102 | specularColor 1 1 1 103 | } 104 | } 105 | } 106 | 107 | NavigationInfo { type "EXAMINE" } 108 | 109 | Viewpoint { 110 | position 0 0 512 111 | } -------------------------------------------------------------------------------- /examples/models/arcelite/cobra3v (1).wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.625000, 0.375000, 0.125000 8 | 0.625000, 0.375000, 0.125000 9 | 0.375000, 0.125000, 0.125000 10 | 0.375000, 0.125000, 0.125000 11 | 0.125000, 0.375000, 0.125000 12 | 0.125000, 0.375000, 0.125000 13 | 0.125000, 0.125000, 0.375000 14 | 0.125000, 0.125000, 0.375000 15 | 0.625000, 0.125000, 0.125000 16 | 0.375000, 0.375000, 0.375000 17 | 0.375000, 0.375000, 0.375000 18 | 0.375000, 0.375000, 0.375000 19 | 0.125000, 0.375000, 0.375000 20 | 0.375000, 0.375000, 0.375000 21 | 0.875000, 0.125000, 0.125000 22 | 0.875000, 0.125000, 0.125000 23 | 0.875000, 0.125000, 0.125000 24 | 0.875000, 0.125000, 0.125000 25 | 0.875000, 0.125000, 0.125000 26 | 0.875000, 0.125000, 0.125000 27 | 0.125000, 0.375000, 0.125000 28 | 0.125000, 0.375000, 0.125000 29 | 0.125000, 0.375000, 0.375000 30 | 0.125000, 0.375000, 0.375000 31 | 0.125000, 0.375000, 0.375000 32 | 0.125000, 0.375000, 0.375000 33 | ] 34 | } 35 | 36 | coordIndex [ 37 | 0,1,2,-1, 38 | 0,3,4,-1, 39 | 0,5,1,-1, 40 | 0,4,5,-1, 41 | 2,1,6,-1, 42 | 3,7,4,-1, 43 | 1,8,6,-1, 44 | 4,7,9,-1, 45 | 2,3,0,-1, 46 | 4,9,10,-1, 47 | 1,11,8,-1, 48 | 5,4,10,-1, 49 | 5,10,11,-1, 50 | 1,5,11,-1, 51 | 12,13,14,-1, 52 | 17,16,15,-1, 53 | 20,19,18,-1, 54 | 20,21,19,-1, 55 | 22,23,24,-1, 56 | 23,25,24,-1, 57 | 2,11,10,-1, 58 | 10,3,2,-1, 59 | 8,11,2,-1, 60 | 2,6,8,-1, 61 | 3,9,7,-1, 62 | 3,10,9,-1 63 | ] 64 | 65 | coord Coordinate { 66 | point [ 67 | 0,15,10, 68 | 80,5,-45, 69 | 25,-5,45, 70 | -25,-5,45, 71 | -80,5,-45, 72 | 0,15,-45, 73 | 95,-5,-25, 74 | -95,-5,-25, 75 | 95,-5,-45, 76 | -95,-5,-45, 77 | -25,-15,-45, 78 | 25,-15,-45, 79 | -60,-5,-45.1, 80 | -60,5,-45.1, 81 | -75,0,-45.1, 82 | 60,5,-45.1, 83 | 75,0,-45.1, 84 | 60,-5,-45.1, 85 | -5,5,-45.1, 86 | -5,-10,-45.1, 87 | -30,0,-45.1, 88 | -30,-5,-45.1, 89 | 5,5,-45.1, 90 | 5,-10,-45.1, 91 | 30,0,-45.1, 92 | 30,-5,-45.1 93 | ] 94 | } 95 | solid FALSE 96 | colorPerVertex FALSE 97 | } 98 | 99 | appearance Appearance { 100 | material Material { 101 | shininess 0.2 102 | specularColor 1 1 1 103 | } 104 | } 105 | } 106 | 107 | NavigationInfo { type "EXAMINE" } 108 | 109 | Viewpoint { 110 | position 0 0 512 111 | } -------------------------------------------------------------------------------- /examples/models/arcelite/cobra3v.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.625000, 0.375000, 0.125000 8 | 0.625000, 0.375000, 0.125000 9 | 0.375000, 0.125000, 0.125000 10 | 0.375000, 0.125000, 0.125000 11 | 0.125000, 0.375000, 0.125000 12 | 0.125000, 0.375000, 0.125000 13 | 0.125000, 0.125000, 0.375000 14 | 0.125000, 0.125000, 0.375000 15 | 0.625000, 0.125000, 0.125000 16 | 0.375000, 0.375000, 0.375000 17 | 0.375000, 0.375000, 0.375000 18 | 0.375000, 0.375000, 0.375000 19 | 0.125000, 0.375000, 0.375000 20 | 0.375000, 0.375000, 0.375000 21 | 0.875000, 0.125000, 0.125000 22 | 0.875000, 0.125000, 0.125000 23 | 0.875000, 0.125000, 0.125000 24 | 0.875000, 0.125000, 0.125000 25 | 0.875000, 0.125000, 0.125000 26 | 0.875000, 0.125000, 0.125000 27 | 0.125000, 0.375000, 0.125000 28 | 0.125000, 0.375000, 0.125000 29 | 0.125000, 0.375000, 0.375000 30 | 0.125000, 0.375000, 0.375000 31 | 0.125000, 0.375000, 0.375000 32 | 0.125000, 0.375000, 0.375000 33 | ] 34 | } 35 | 36 | coordIndex [ 37 | 0,1,2,-1, 38 | 0,3,4,-1, 39 | 0,5,1,-1, 40 | 0,4,5,-1, 41 | 2,1,6,-1, 42 | 3,7,4,-1, 43 | 1,8,6,-1, 44 | 4,7,9,-1, 45 | 2,3,0,-1, 46 | 4,9,10,-1, 47 | 1,11,8,-1, 48 | 5,4,10,-1, 49 | 5,10,11,-1, 50 | 1,5,11,-1, 51 | 12,13,14,-1, 52 | 17,16,15,-1, 53 | 20,19,18,-1, 54 | 20,21,19,-1, 55 | 22,23,24,-1, 56 | 23,25,24,-1, 57 | 2,11,10,-1, 58 | 10,3,2,-1, 59 | 8,11,2,-1, 60 | 2,6,8,-1, 61 | 3,9,7,-1, 62 | 3,10,9,-1 63 | ] 64 | 65 | coord Coordinate { 66 | point [ 67 | 0,15,10, 68 | 80,5,-45, 69 | 25,-5,45, 70 | -25,-5,45, 71 | -80,5,-45, 72 | 0,15,-45, 73 | 95,-5,-25, 74 | -95,-5,-25, 75 | 95,-5,-45, 76 | -95,-5,-45, 77 | -25,-15,-45, 78 | 25,-15,-45, 79 | -60,-5,-45.1, 80 | -60,5,-45.1, 81 | -75,0,-45.1, 82 | 60,5,-45.1, 83 | 75,0,-45.1, 84 | 60,-5,-45.1, 85 | -5,5,-45.1, 86 | -5,-10,-45.1, 87 | -30,0,-45.1, 88 | -30,-5,-45.1, 89 | 5,5,-45.1, 90 | 5,-10,-45.1, 91 | 30,0,-45.1, 92 | 30,-5,-45.1 93 | ] 94 | } 95 | solid FALSE 96 | colorPerVertex FALSE 97 | } 98 | 99 | appearance Appearance { 100 | material Material { 101 | shininess 0.2 102 | specularColor 1 1 1 103 | } 104 | } 105 | } 106 | 107 | NavigationInfo { type "EXAMINE" } 108 | 109 | Viewpoint { 110 | position 0 0 512 111 | } -------------------------------------------------------------------------------- /examples/models/arcelite/constrictor.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.125000, 0.375000, 0.375000 8 | 0.125000, 0.375000, 0.375000 9 | 0.125000, 0.375000, 0.375000 10 | 0.125000, 0.375000, 0.375000 11 | 0.125000, 0.125000, 0.375000 12 | 0.125000, 0.125000, 0.375000 13 | 0.875000, 0.875000, 0.125000 14 | 0.875000, 0.875000, 0.125000 15 | 0.875000, 0.875000, 0.125000 16 | 0.875000, 0.875000, 0.125000 17 | 0.125000, 0.875000, 0.375000 18 | 0.625000, 0.875000, 0.375000 19 | 0.375000, 0.125000, 0.125000 20 | 0.375000, 0.125000, 0.125000 21 | 0.875000, 0.125000, 0.125000 22 | 0.875000, 0.125000, 0.125000 23 | 0.375000, 0.875000, 0.125000 24 | 0.375000, 0.875000, 0.125000 25 | 0.625000, 0.875000, 0.125000 26 | 0.625000, 0.875000, 0.125000 27 | 0.625000, 0.875000, 0.125000 28 | 0.625000, 0.875000, 0.125000 29 | 0.125000, 0.625000, 0.125000 30 | 0.125000, 0.625000, 0.125000 31 | 0.125000, 0.625000, 0.125000 32 | 0.125000, 0.625000, 0.125000 33 | ] 34 | } 35 | 36 | coordIndex [ 37 | 3,1,0,-1, 38 | 3,0,2,-1, 39 | 3,2,5,-1, 40 | 5,2,4,-1, 41 | 18,17,16,-1, 42 | 21,20,19,-1, 43 | 8,7,6,-1, 44 | 6,9,8,-1, 45 | 6,10,9,-1, 46 | 10,11,9,-1, 47 | 22,23,24,-1, 48 | 26,25,27,-1, 49 | 5,6,3,-1, 50 | 5,10,6,-1, 51 | 12,13,15,-1, 52 | 14,12,15,-1, 53 | 2,0,8,-1, 54 | 8,9,2,-1, 55 | 4,11,10,-1, 56 | 10,5,4,-1, 57 | 6,7,1,-1, 58 | 1,3,6,-1, 59 | 2,9,11,-1, 60 | 11,4,2,-1, 61 | 7,8,0,-1, 62 | 0,1,7,-1 63 | ] 64 | 65 | coord Coordinate { 66 | point [ 67 | -20,-12,45, 68 | -35,-12,25, 69 | 20,-12,45, 70 | -35,-12,-45, 71 | 35,-12,25, 72 | 35,-12,-45, 73 | -20,2,-45, 74 | -20,2,15, 75 | -10,2,30, 76 | 10,2,30, 77 | 20,2,-45, 78 | 20,2,15, 79 | -15,-2,-45.1, 80 | -20,-7,-45.1, 81 | 15,-2,-45.1, 82 | 20,-7,-45.1, 83 | -15,-12.1,-35, 84 | -10,-12.1,-35, 85 | -10,-12.1,20, 86 | 10,-12.1,20, 87 | 10,-12.1,-35, 88 | 15,-12.1,-35, 89 | 0,2.2,25, 90 | -10,2.2,5, 91 | 10,2.2,5, 92 | -10,2.1,-25, 93 | 0,2.1,15, 94 | 10,2.1,-25 95 | ] 96 | } 97 | 98 | solid FALSE 99 | colorPerVertex FALSE 100 | } 101 | 102 | appearance Appearance { 103 | material Material { 104 | shininess 0.2 105 | specularColor 1 1 1 106 | } 107 | } 108 | } 109 | 110 | NavigationInfo { type "EXAMINE" } 111 | 112 | Viewpoint { 113 | position 0 0 512 114 | } 115 | -------------------------------------------------------------------------------- /examples/models/arcelite/copperhead.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.125000, 0.375000, 0.125000 8 | 0.062500, 0.312500, 0.062500 9 | 0.187500, 0.437500, 0.187500 10 | 0.437500, 0.437500, 0.187500 11 | 0.187500, 0.437500, 0.187500 12 | 0.187500, 0.437500, 0.437500 13 | 0.187500, 0.437500, 0.437500 14 | 0.312500, 0.312500, 0.312500 15 | 0.875000, 0.125000, 0.125000 16 | ] 17 | } 18 | 19 | coordIndex [ 20 | 5,4,0,-1, 21 | 4,3,0,-1, 22 | 1,5,0,-1, 23 | 2,1,0,-1, 24 | 3,2,0,-1, 25 | 5,1,4,-1, 26 | 2,3,4,-1, 27 | 1,2,4,-1, 28 | 7,8,6,-1 29 | ] 30 | 31 | coord Coordinate { point 32 | [ 33 | 0,40,0, 34 | -60,-20,100, 35 | 60,-20,100, 36 | 80,0,-40, 37 | 0,-20,-80, 38 | -80,0,-40, 39 | 0,-20.1,-20, 40 | -20,-20.1,40, 41 | 20,-20.1,40 42 | ] 43 | } 44 | solid FALSE 45 | colorPerVertex FALSE 46 | } 47 | 48 | appearance Appearance { 49 | material Material { 50 | shininess 0.2 51 | specularColor 1 1 1 52 | } 53 | } 54 | } 55 | 56 | NavigationInfo { type "EXAMINE" } 57 | 58 | Viewpoint { 59 | position 0 0 600 60 | } -------------------------------------------------------------------------------- /examples/models/arcelite/ferdelance.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.875000, 0.625000, 0.375000 8 | 0.875000, 0.625000, 0.125000 9 | 0.375000, 0.125000, 0.125000 10 | 0.375000, 0.125000, 0.125000 11 | 0.625000, 0.625000, 0.125000 12 | 0.625000, 0.625000, 0.125000 13 | 0.125000, 0.375000, 0.125000 14 | 0.625000, 0.375000, 0.125000 15 | 0.625000, 0.375000, 0.125000 16 | 0.625000, 0.375000, 0.125000 17 | 0.625000, 0.375000, 0.125000 18 | 0.375000, 0.375000, 0.375000 19 | 0.375000, 0.375000, 0.375000 20 | 0.875000, 0.125000, 0.125000 21 | 0.875000, 0.125000, 0.125000 22 | 0.375000, 0.375000, 0.375000 23 | 0.125000, 0.375000, 0.375000 24 | 0.375000, 0.375000, 0.375000 25 | 0.375000, 0.125000, 0.125000 26 | 0.375000, 0.125000, 0.125000 27 | ] 28 | } 29 | 30 | coordIndex [ 31 | 0,1,2,-1, 32 | 3,0,2,-1, 33 | 0,4,1,-1, 34 | 3,5,0,-1, 35 | 2,6,3,-1, 36 | 2,1,7,-1, 37 | 2,7,6,-1, 38 | 6,8,3,-1, 39 | 3,8,5,-1, 40 | 7,1,4,-1, 41 | 7,4,9,-1, 42 | 9,6,7,-1, 43 | 8,6,9,-1, 44 | 18,17,16,-1, 45 | 16,19,18,-1, 46 | 9,4,0,-1, 47 | 8,9,0,-1, 48 | 8,0,5,-1, 49 | 10,11,12,-1, 50 | 13,14,15,-1 51 | ] 52 | 53 | coord Coordinate { point 54 | [ 55 | 0,-25,120, 56 | -70,15,-60, 57 | 0,25,-90, 58 | 70,15,-60, 59 | -70,-25,-60, 60 | 70,-25,-60, 61 | 40,15,-120, 62 | -40,15,-120, 63 | 40,-25,-120, 64 | -40,-25,-120, 65 | -10,-13,70, 66 | -50,15,-50, 67 | -10,21,-70, 68 | 10,-13,70, 69 | 10,21,-70, 70 | 50,15,-50, 71 | -10,5,-120.1, 72 | 10,5,-120.1, 73 | 10,-15,-120.1, 74 | -10,-15,-120.1 75 | ] 76 | } 77 | solid FALSE 78 | colorPerVertex FALSE 79 | } 80 | 81 | appearance Appearance { 82 | material Material { 83 | shininess 0.2 84 | specularColor 1 1 1 85 | } 86 | } 87 | } 88 | 89 | NavigationInfo { type "EXAMINE" } 90 | 91 | Viewpoint { 92 | position 0 0 600 93 | } -------------------------------------------------------------------------------- /examples/models/arcelite/gecko.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.562500, 0.562500, 0.062500 8 | 0.562500, 0.562500, 0.062500 9 | 0.562500, 0.562500, 0.312500 10 | 0.562500, 0.562500, 0.312500 11 | 0.437500, 0.187500, 0.187500 12 | 0.437500, 0.187500, 0.187500 13 | 0.812500, 0.562500, 0.312500 14 | 0.875000, 0.125000, 0.125000 15 | 0.812500, 0.562500, 0.312500 16 | 0.875000, 0.125000, 0.125000 17 | 0.625000, 0.625000, 0.125000 18 | 0.625000, 0.625000, 0.125000 19 | 0.625000, 0.625000, 0.375000 20 | 0.625000, 0.625000, 0.375000 21 | 0.875000, 0.625000, 0.375000 22 | 0.875000, 0.625000, 0.375000 23 | 0.875000, 0.125000, 0.125000 24 | 0.875000, 0.125000, 0.125000 25 | ] 26 | } 27 | 28 | coordIndex [ 29 | 6,0,1,-1, 30 | 1,7,6,-1, 31 | 4,6,7,-1, 32 | 7,3,4,-1, 33 | 8,9,10,-1, 34 | 11,12,13,-1, 35 | 5,4,0,-1, 36 | 20,19,18,-1, 37 | 1,3,2,-1, 38 | 21,22,23,-1, 39 | 2,7,1,-1, 40 | 6,5,0,-1, 41 | 5,6,4,-1, 42 | 3,7,2,-1, 43 | 4,3,1,-1, 44 | 1,0,4,-1, 45 | 17,15,14,-1, 46 | 14,16,17,-1 47 | ] 48 | 49 | coord Coordinate { 50 | point [ 51 | -60,30,-100, 52 | 60,30,-100, 53 | 120,0,-60, 54 | 60,-30,-100, 55 | -60,-30,-100, 56 | -120,0,-60, 57 | -30,0,100, 58 | 30,0,100, 59 | 10,-9,40, 60 | 25,-28,-80, 61 | 10,-28,-80, 62 | -10,-28,-80, 63 | -25,-28,-80, 64 | -10,-9,40, 65 | -30,20,-100.1, 66 | 30,20,-100.1, 67 | -30,-20,-100.1, 68 | 30,-20,-100.1, 69 | -90,0,-80.1, 70 | -72,10,-92.1, 71 | -72,-10,-92.1, 72 | 72,10,-92.1, 73 | 72,-10,-92.1, 74 | 90,0,-80.1 75 | ] 76 | } 77 | solid FALSE 78 | colorPerVertex FALSE 79 | } 80 | 81 | appearance Appearance { 82 | material Material { 83 | shininess 0.2 84 | specularColor 1 1 1 85 | diffuseColor 1.0 0.6 0.5 86 | } 87 | } 88 | } 89 | 90 | NavigationInfo { type "EXAMINE" } 91 | 92 | Viewpoint { 93 | position 0 0 600 94 | } 95 | -------------------------------------------------------------------------------- /examples/models/arcelite/hawk.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.125000, 0.375000, 0.375000 8 | 0.125000, 0.375000, 0.375000 9 | 0.375000, 0.375000, 0.375000 10 | 0.375000, 0.375000, 0.375000 11 | 0.125000, 0.375000, 0.375000 12 | 0.125000, 0.375000, 0.375000 13 | 0.125000, 0.375000, 0.375000 14 | 0.125000, 0.375000, 0.375000 15 | 0.125000, 0.375000, 0.375000 16 | 0.125000, 0.375000, 0.375000 17 | 0.125000, 0.375000, 0.875000 18 | 0.125000, 0.375000, 0.875000 19 | 0.375000, 0.625000, 0.625000 20 | 0.375000, 0.625000, 0.625000 21 | 0.375000, 0.375000, 0.375000 22 | 0.375000, 0.375000, 0.375000 23 | 0.375000, 0.125000, 0.375000 24 | 0.375000, 0.125000, 0.375000 25 | 0.125000, 0.375000, 0.625000 26 | 0.125000, 0.375000, 0.625000 27 | 0.375000, 0.125000, 0.625000 28 | 0.375000, 0.125000, 0.625000 29 | 0.875000, 0.125000, 0.125000 30 | 0.875000, 0.125000, 0.125000 31 | 0.125000, 0.125000, 0.375000 32 | 0.125000, 0.125000, 0.375000 33 | ] 34 | } 35 | 36 | coordIndex [ 37 | 0,1,2,-1, 38 | 3,4,5,-1, 39 | 6,7,8,-1, 40 | 7,9,8,-1, 41 | 10,9,4,-1, 42 | 11,10,4,-1, 43 | 3,11,4,-1, 44 | 2,8,12,-1, 45 | 12,13,2,-1, 46 | 2,13,0,-1, 47 | 6,2,1,-1, 48 | 5,4,7,-1, 49 | 1,5,7,-1, 50 | 7,6,1,-1, 51 | 5,1,14,-1, 52 | 14,15,5,-1, 53 | 14,13,12,-1, 54 | 15,10,11,-1, 55 | 0,13,14,-1, 56 | 15,11,3,-1, 57 | 1,0,14,-1, 58 | 5,15,3,-1, 59 | 15,14,8,-1, 60 | 8,9,15,-1, 61 | 12,8,14,-1, 62 | 15,9,10,-1 63 | ] 64 | 65 | coord Coordinate { point 66 | [ 67 | -90,30,7, 68 | -30,60,97, 69 | -30,30,97, 70 | 90,30,7, 71 | 30,30,97, 72 | 30,60,97, 73 | -30,30,142, 74 | 30,30,142, 75 | -30,30,-142, 76 | 30,30,-142, 77 | 135,-60,-142, 78 | 120,-15,-82, 79 | -135,-60,-142, 80 | -120,-15,-82, 81 | -30,60,-142, 82 | 30,60,-142 83 | ] 84 | } 85 | solid FALSE 86 | colorPerVertex FALSE 87 | } 88 | 89 | appearance Appearance { 90 | material Material { 91 | shininess 0.2 92 | specularColor 1 1 1 93 | diffuseColor 1.0 0.6 0.5 94 | } 95 | } 96 | } 97 | 98 | NavigationInfo { type "EXAMINE" } 99 | 100 | Viewpoint { 101 | position 0 0 600 102 | } -------------------------------------------------------------------------------- /examples/models/arcelite/hognose.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.875000, 0.375000, 0.125000 8 | 0.875000, 0.625000, 0.125000 9 | 0.875000, 0.375000, 0.125000 10 | 0.875000, 0.625000, 0.125000 11 | 0.625000, 0.375000, 0.125000 12 | 0.375000, 0.375000, 0.125000 13 | 0.125000, 0.375000, 0.375000 14 | 0.375000, 0.375000, 0.375000 15 | ] 16 | } 17 | 18 | coordIndex [ 19 | 2,1,0,-1, 20 | 10,9,8,-1, 21 | 0,3,2,-1, 22 | 7,6,5,-1, 23 | 0,4,3,-1, 24 | 0,1,4,-1, 25 | 4,1,2,-1, 26 | 3,4,2,-1 27 | ] 28 | 29 | coord Coordinate { point 30 | [ 31 | 0,70,95, 32 | -120,-30,95, 33 | 0,-70,175, 34 | 120,-30,95, 35 | 0,-70,-175, 36 | 15,-45,155, 37 | 75,-25,115, 38 | 15,25,115, 39 | -15,25,115, 40 | -75,-25,115, 41 | -15,-45,155, 42 | ] 43 | } 44 | solid FALSE 45 | colorPerVertex FALSE 46 | } 47 | 48 | appearance Appearance { 49 | material Material { 50 | shininess 0.2 51 | specularColor 1 1 1 52 | } 53 | } 54 | } 55 | 56 | NavigationInfo { type "EXAMINE" } 57 | 58 | Viewpoint { 59 | position 0 0 600 60 | } -------------------------------------------------------------------------------- /examples/models/arcelite/krait.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.062500, 0.312500, 0.812500 8 | 0.125000, 0.375000, 0.875000 9 | 0.375000, 0.375000, 0.375000 10 | 0.375000, 0.375000, 0.375000 11 | 0.375000, 0.375000, 0.375000 12 | 0.375000, 0.375000, 0.375000 13 | 0.875000, 0.125000, 0.125000 14 | 0.875000, 0.125000, 0.125000 15 | 0.062500, 0.312500, 0.812500 16 | 0.125000, 0.375000, 0.875000 17 | 0.312500, 0.312500, 0.562500 18 | 0.312500, 0.312500, 0.562500 19 | 0.187500, 0.437500, 0.937500 20 | 0.125000, 0.375000, 0.875000 21 | 0.125000, 0.375000, 0.875000 22 | 0.062500, 0.312500, 0.812500 23 | ] 24 | } 25 | 26 | coordIndex [ 27 | 5,12,4,-1, 28 | 1,2,11,-1, 29 | 4,5,0,-1, 30 | 3,4,0,-1, 31 | 2,3,0,-1, 32 | 1,2,0,-1, 33 | 7,9,10,-1, 34 | 7,8,9,-1, 35 | 0,5,6,-1, 36 | 0,6,1,-1, 37 | 5,4,6,-1, 38 | 1,6,2,-1, 39 | 6,4,3,-1, 40 | 6,3,2,-1, 41 | 5,4,12,-1, 42 | 1,11,2,-1 43 | ] 44 | 45 | coord Coordinate { 46 | point [ 47 | 0,40,-100, 48 | -100,10,-30, 49 | -100,-10,-30, 50 | 0,-40,-100, 51 | 100,-10,-30, 52 | 100,10,-30, 53 | 0,0,100, 54 | 0,20,-100.1, 55 | -60,0,-58.1, 56 | 0,-20,-100.1, 57 | 60,0,-58.1, 58 | -100,0,100, 59 | 100,0,100 60 | ] 61 | } 62 | solid FALSE 63 | colorPerVertex FALSE 64 | } 65 | 66 | appearance Appearance { 67 | material Material { 68 | shininess 0.2 69 | specularColor 1 1 1 70 | } 71 | } 72 | } 73 | 74 | NavigationInfo { type "EXAMINE" } 75 | 76 | Viewpoint { 77 | position 0 0 600 78 | } -------------------------------------------------------------------------------- /examples/models/arcelite/mamba.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.125000, 0.625000, 0.125000 8 | 0.125000, 0.375000, 0.125000 9 | 0.125000, 0.875000, 0.625000 10 | 0.125000, 0.875000, 0.625000 11 | 0.125000, 0.625000, 0.125000 12 | 0.125000, 0.375000, 0.375000 13 | 0.125000, 0.375000, 0.375000 14 | 0.875000, 0.125000, 0.125000 15 | 0.875000, 0.125000, 0.125000 16 | 0.875000, 0.125000, 0.125000 17 | 0.875000, 0.125000, 0.125000 18 | 0.125000, 0.375000, 0.125000 19 | 0.375000, 0.125000, 0.125000 20 | 0.375000, 0.125000, 0.125000 21 | ] 22 | } 23 | 24 | coordIndex [ 25 | 2,1,0,-1, 26 | 1,2,3,-1, 27 | 7,6,5,-1, 28 | 5,8,7,-1, 29 | 3,4,1,-1, 30 | 2,0,4,-1, 31 | 4,3,2,-1, 32 | 11,10,9,-1, 33 | 14,13,12,-1, 34 | 17,16,15,-1, 35 | 18,16,17,-1, 36 | 0,1,4,-1, 37 | 20,19,21,-1, 38 | 22,23,24,-1 39 | ] 40 | 41 | coord Coordinate { 42 | point [ 43 | -110,-20,-110, 44 | 0,-20,110, 45 | -60,20,-110, 46 | 60,20,-110, 47 | 110,-20,-110, 48 | -11,-3.9,22, 49 | 11,-3.9,22, 50 | 5,0.1,0, 51 | -5,0.1,0, 52 | -60,8,-110.1, 53 | -60,-8,-110.1, 54 | -76,-4,-110.1, 55 | 60,-8,-110.1, 56 | 60,8,-110.1, 57 | 76,-4,-110.1, 58 | -28,8,-110.1, 59 | 28,8,-110.1, 60 | -28,-12,-110.1, 61 | 28,-12,-110.1, 62 | -20,-20.1,0, 63 | -40,-20.1,-70, 64 | -30,-20.1,-70, 65 | 30,-20.1,-70, 66 | 20,-20.1,0, 67 | 40,-20.1,-70 68 | ] 69 | } 70 | solid FALSE 71 | colorPerVertex FALSE 72 | } 73 | 74 | appearance Appearance { 75 | material Material { 76 | shininess 0.2 77 | specularColor 1 1 1 78 | } 79 | } 80 | } 81 | 82 | NavigationInfo { type "EXAMINE" } 83 | 84 | Viewpoint { 85 | position 0 0 600 86 | } 87 | -------------------------------------------------------------------------------- /examples/models/arcelite/moccasin.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.375000, 0.625000, 0.375000 8 | 0.625000, 0.625000, 0.375000 9 | 0.375000, 0.625000, 0.375000 10 | 0.625000, 0.625000, 0.375000 11 | 0.125000, 0.625000, 0.375000 12 | 0.125000, 0.625000, 0.375000 13 | 0.875000, 0.625000, 0.375000 14 | 0.625000, 0.875000, 0.375000 15 | 0.625000, 0.875000, 0.375000 16 | 0.375000, 0.625000, 0.375000 17 | 0.875000, 0.125000, 0.125000 18 | 0.875000, 0.125000, 0.125000 19 | 0.375000, 0.625000, 0.125000 20 | 0.625000, 0.875000, 0.625000 21 | 0.625000, 0.875000, 0.625000 22 | 0.375000, 0.625000, 0.375000 23 | 0.875000, 0.375000, 0.375000 24 | ] 25 | } 26 | 27 | coordIndex [ 28 | 0,1,2,-1, 29 | 2,3,0,-1, 30 | 2,4,5,-1, 31 | 5,6,2,-1, 32 | 3,6,5,-1, 33 | 3,5,0,-1, 34 | 1,4,2,-1, 35 | 17,18,19,-1, 36 | 20,21,22,-1, 37 | 3,2,6,-1, 38 | 8,9,10,-1, 39 | 11,12,13,-1, 40 | 1,7,4,-1, 41 | 0,7,1,-1, 42 | 4,7,5,-1, 43 | 0,5,7,-1, 44 | 16,15,14,-1, 45 | ] 46 | 47 | coord Coordinate { 48 | point [ 49 | 75,-15,45, 50 | 30,15,45, 51 | 0,15,-105, 52 | 90,-15,-105, 53 | -30,15,45, 54 | -75,-15,45, 55 | -90,-15,-105, 56 | 0,-8,105, 57 | -6,-9,-105.1, 58 | -15,3,-105.1, 59 | -33,-3,-105.1, 60 | 18,3,-105.1, 61 | 9,-9,-105.1, 62 | 33,-3,-105.1, 63 | 10,9,61, 64 | -10,9,61, 65 | 0,-1,87, 66 | 3,15.1,-54, 67 | 18,15.1,33, 68 | 3,15.1,33, 69 | -18,15.1,33, 70 | -3,15.1,-54, 71 | -3,15.1,33, 72 | ] 73 | } 74 | solid FALSE 75 | colorPerVertex FALSE 76 | } 77 | 78 | appearance Appearance { 79 | material Material { 80 | shininess 0.2 81 | specularColor 1 1 1 82 | } 83 | } 84 | } 85 | 86 | NavigationInfo { type "EXAMINE" } 87 | 88 | Viewpoint { 89 | position 0 0 600 90 | } 91 | 92 | -------------------------------------------------------------------------------- /examples/models/arcelite/moray.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.875000, 0.625000, 0.125000 8 | 0.625000, 0.625000, 0.375000 9 | 0.125000, 0.625000, 0.625000 10 | 0.875000, 0.625000, 0.125000 11 | 0.625000, 0.375000, 0.125000 12 | 0.625000, 0.375000, 0.125000 13 | 0.875000, 0.375000, 0.125000 14 | 0.875000, 0.375000, 0.125000 15 | 0.375000, 0.375000, 0.375000 16 | 0.125000, 0.375000, 0.375000 17 | 0.375000, 0.375000, 0.375000 18 | 0.875000, 0.125000, 0.125000 19 | 0.875000, 0.125000, 0.125000 20 | ] 21 | } 22 | 23 | coordIndex [ 24 | 0,1,2,-1, 25 | 0,2,4,-1, 26 | 7,8,9,-1, 27 | 0,4,5,-1, 28 | 2,3,4,-1, 29 | 4,3,6,-1, 30 | 4,6,5,-1, 31 | 3,2,1,-1, 32 | 3,1,0,-1, 33 | 6,3,0,-1, 34 | 6,0,5,-1, 35 | 3,10,11,-1, 36 | 12,13,6,-1 37 | ] 38 | 39 | coord Coordinate { 40 | point [ 41 | 0,-25,85, 42 | -110,-25,25, 43 | -60,25,25, 44 | -30,-25,-85, 45 | 60,25,25, 46 | 110,-25,25, 47 | 30,-25,-85, 48 | 0,-9,66, 49 | -20,11,42, 50 | 20,11,42, 51 | -25,-25.1,-65, 52 | -10,-25.1,-85, 53 | 10,-25.1,-85, 54 | 25,-25.1,-65 55 | ] 56 | } 57 | solid FALSE 58 | colorPerVertex FALSE 59 | } 60 | 61 | appearance Appearance { 62 | material Material { 63 | shininess 0.2 64 | specularColor 1 1 1 65 | } 66 | } 67 | } 68 | 69 | NavigationInfo { type "EXAMINE" } 70 | 71 | Viewpoint { 72 | position 0 0 600 73 | } 74 | -------------------------------------------------------------------------------- /examples/models/arcelite/python.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.375000, 0.125000, 0.625000 8 | 0.125000, 0.125000, 0.625000 9 | 0.125000, 0.375000, 0.625000 10 | 0.125000, 0.375000, 0.625000 11 | 0.375000, 0.625000, 0.625000 12 | 0.375000, 0.625000, 0.625000 13 | 0.625000, 0.625000, 0.625000 14 | 0.625000, 0.625000, 0.625000 15 | 0.375000, 0.125000, 0.625000 16 | 0.125000, 0.125000, 0.625000 17 | 0.125000, 0.375000, 0.625000 18 | 0.125000, 0.375000, 0.625000 19 | 0.375000, 0.625000, 0.625000 20 | 0.375000, 0.625000, 0.625000 21 | 0.625000, 0.625000, 0.625000 22 | 0.625000, 0.625000, 0.625000 23 | 0.375000, 0.375000, 0.375000 24 | 0.375000, 0.375000, 0.375000 25 | 0.875000, 0.125000, 0.125000 26 | 0.875000, 0.125000, 0.125000 27 | ] 28 | } 29 | 30 | coordIndex [ 31 | 0,1,2,-1, 32 | 0,2,3,-1, 33 | 1,4,2,-1, 34 | 2,4,3,-1, 35 | 5,4,1,-1, 36 | 3,4,5,-1, 37 | 5,6,3,-1, 38 | 1,7,5,-1, 39 | 0,3,8,-1, 40 | 0,8,1,-1, 41 | 3,9,8,-1, 42 | 8,9,1,-1, 43 | 10,9,3,-1, 44 | 1,9,10,-1, 45 | 10,7,1,-1, 46 | 3,6,10,-1, 47 | 5,7,10,-1, 48 | 5,10,6,-1, 49 | 11,12,13,-1, 50 | 13,14,11,-1 51 | ] 52 | 53 | coord Coordinate { 54 | point [ 55 | 0,0,160, 56 | -80,0,-80, 57 | 0,50,-30, 58 | 80,0,-80, 59 | 0,50,-80, 60 | 0,30,-160, 61 | 50,0,-160, 62 | -50,0,-160, 63 | 0,-50,-30, 64 | 0,-50,-80, 65 | 0,-30,-160, 66 | 0,-10,-160.1, 67 | 10,0,-160.1, 68 | 0,10,-160.1, 69 | -10,0,-160.1 70 | ] 71 | } 72 | solid FALSE 73 | colorPerVertex FALSE 74 | } 75 | 76 | appearance Appearance { 77 | material Material { 78 | shininess 0.2 79 | specularColor 1 1 1 80 | } 81 | } 82 | } 83 | 84 | NavigationInfo { type "EXAMINE" } 85 | 86 | Viewpoint { 87 | position 0 0 600 88 | } 89 | 90 | -------------------------------------------------------------------------------- /examples/models/arcelite/shuttle.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.375000, 0.375000, 0.375000 8 | 0.375000, 0.375000, 0.375000 9 | 0.875000, 0.125000, 0.125000 10 | 0.875000, 0.125000, 0.125000 11 | 0.375000, 0.125000, 0.125000 12 | 0.375000, 0.125000, 0.125000 13 | 0.375000, 0.125000, 0.125000 14 | 0.375000, 0.125000, 0.125000 15 | 0.625000, 0.375000, 0.125000 16 | 0.625000, 0.375000, 0.125000 17 | 0.625000, 0.375000, 0.125000 18 | 0.625000, 0.375000, 0.125000 19 | 0.125000, 0.375000, 0.375000 20 | 0.375000, 0.375000, 0.375000 21 | 0.375000, 0.375000, 0.375000 22 | 0.125000, 0.375000, 0.375000 23 | 0.625000, 0.875000, 0.625000 24 | 0.625000, 0.875000, 0.625000 25 | ] 26 | } 27 | 28 | coordIndex [ 29 | 2,1,0,-1, 30 | 2,0,3,-1, 31 | 15,16,17,-1, 32 | 17,18,15,-1, 33 | 3,4,2,-1, 34 | 3,0,5,-1, 35 | 1,2,6,-1, 36 | 1,7,0,-1, 37 | 4,6,2,-1, 38 | 6,7,1,-1, 39 | 0,7,5,-1, 40 | 5,4,3,-1, 41 | 5,7,8,-1, 42 | 8,4,5,-1, 43 | 7,6,8,-1, 44 | 4,8,6,-1, 45 | 11,10,9,-1, 46 | 12,13,14,-1 47 | ] 48 | 49 | coord Coordinate { 50 | point [ 51 | -60,-60,-120, 52 | -60,60,-120, 53 | 60,60,-120, 54 | 60,-60,-120, 55 | 50,0,80, 56 | 0,-50,80, 57 | 0,50,80, 58 | -50,0,80, 59 | 0,-20,120, 60 | -10,30,90, 61 | -30,10,90, 62 | -10,0,103, 63 | 10,0,103, 64 | 10,30,90, 65 | 30,10,90, 66 | 0,20,-120.1, 67 | -20,0,-120.1, 68 | 0,-20,-120.1, 69 | 20,0,-120.1 70 | ] 71 | } 72 | solid FALSE 73 | colorPerVertex FALSE 74 | } 75 | 76 | appearance Appearance { 77 | material Material { 78 | shininess 0.2 79 | specularColor 1 1 1 80 | } 81 | } 82 | } 83 | 84 | NavigationInfo { type "EXAMINE" } 85 | 86 | Viewpoint { 87 | position 0 0 600 88 | } 89 | -------------------------------------------------------------------------------- /examples/models/arcelite/sidewinder.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.000000, 0.000000, 0.750000 8 | 0.000000, 0.000000, 0.750000 9 | 0.875000, 0.125000, 0.125000 10 | 0.875000, 0.125000, 0.125000 11 | 0.125000, 0.375000, 0.375000 12 | 0.187500, 0.437500, 0.437500 13 | 0.125000, 0.375000, 0.375000 14 | 0.125000, 0.375000, 0.375000 15 | 0.187500, 0.437500, 0.437500 16 | 0.125000, 0.375000, 0.375000 17 | ] 18 | } 19 | 20 | coordIndex [ 21 | 0,3,2,-1, 22 | 0,2,1,-1, 23 | 6,8,9,-1, 24 | 6,9,7,-1, 25 | 0,1,5,-1, 26 | 0,5,4,-1, 27 | 0,4,3,-1, 28 | 1,2,5,-1, 29 | 5,2,4,-1, 30 | 4,2,3,-1 31 | ] 32 | 33 | coord Coordinate { 34 | point [ 35 | 0,25,-75, 36 | 100,0,-75, 37 | 0,-25,-75, 38 | -100,0,-75, 39 | -50,0,75, 40 | 50,0,75, 41 | -25,15,-75.1, 42 | 25,15,-75.1, 43 | -25,-15,-75.1, 44 | 25,-15,-75.1 45 | ] 46 | } 47 | solid FALSE 48 | colorPerVertex FALSE 49 | } 50 | 51 | appearance Appearance { 52 | material Material { 53 | shininess 0.2 54 | specularColor 1 1 1 55 | } 56 | } 57 | } 58 | 59 | NavigationInfo { type "EXAMINE" } 60 | 61 | Viewpoint { 62 | position 0 0 600 63 | } 64 | -------------------------------------------------------------------------------- /examples/models/arcelite/thargoid.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.125000, 0.125000, 0.375000 8 | 0.125000, 0.125000, 0.375000 9 | 0.125000, 0.125000, 0.375000 10 | 0.125000, 0.125000, 0.375000 11 | 0.125000, 0.125000, 0.375000 12 | 0.125000, 0.125000, 0.375000 13 | 0.375000, 0.125000, 0.125000 14 | 0.375000, 0.125000, 0.125000 15 | 0.125000, 0.125000, 0.375000 16 | 0.125000, 0.125000, 0.375000 17 | 0.125000, 0.125000, 0.375000 18 | 0.125000, 0.125000, 0.375000 19 | 0.125000, 0.125000, 0.375000 20 | 0.125000, 0.125000, 0.375000 21 | 0.625000, 0.125000, 0.375000 22 | 0.625000, 0.125000, 0.375000 23 | 0.875000, 0.125000, 0.375000 24 | 0.875000, 0.125000, 0.375000 25 | 0.625000, 0.125000, 0.375000 26 | 0.625000, 0.125000, 0.375000 27 | 0.875000, 0.125000, 0.375000 28 | 0.875000, 0.125000, 0.375000 29 | 0.375000, 0.125000, 0.375000 30 | 0.375000, 0.125000, 0.375000 31 | 0.625000, 0.125000, 0.375000 32 | 0.625000, 0.125000, 0.375000 33 | 0.375000, 0.125000, 0.375000 34 | 0.375000, 0.125000, 0.375000 35 | 0.875000, 0.125000, 0.375000 36 | 0.875000, 0.125000, 0.375000 37 | ] 38 | } 39 | 40 | coordIndex [ 41 | 0,1,2,-1, 42 | 0,2,3,-1, 43 | 0,3,4,-1, 44 | 0,4,5,-1, 45 | 0,5,6,-1, 46 | 0,6,7,-1, 47 | 16,17,18,-1, 48 | 19,20,21,-1, 49 | 8,9,10,-1, 50 | 8,10,11,-1, 51 | 8,11,12,-1, 52 | 8,12,13,-1, 53 | 8,13,14,-1, 54 | 8,14,15,-1, 55 | 1,0,11,-1, 56 | 1,11,10,-1, 57 | 2,1,10,-1, 58 | 2,10,9,-1, 59 | 3,2,9,-1, 60 | 3,9,8,-1, 61 | 8,15,3,-1, 62 | 3,15,4,-1, 63 | 4,15,14,-1, 64 | 14,5,4,-1, 65 | 5,14,13,-1, 66 | 13,6,5,-1, 67 | 6,13,12,-1, 68 | 12,7,6,-1, 69 | 11,0,7,-1, 70 | 12,11,7,-1 71 | ] 72 | 73 | coord Coordinate { 74 | point [ 75 | -60,-9,25, 76 | -25,-9,60, 77 | 25,-9,60, 78 | 60,-9,25, 79 | 60,-9,-25, 80 | 25,-9,-60, 81 | -25,-9,-60, 82 | -60,-9,-25, 83 | 36,9,14, 84 | 16,9,36, 85 | -14,9,36, 86 | -36,9,15, 87 | -36,9,-15, 88 | -15,9,-36, 89 | 15,9,-36, 90 | 36,9,-15, 91 | -27,-9.1,-25, 92 | -23,-9.1,25, 93 | -19,-9.1,-25, 94 | 19,-9.1,-25, 95 | 23,-9.1,25, 96 | 27,-9.1,-25 97 | ] 98 | } 99 | solid FALSE 100 | colorPerVertex FALSE 101 | } 102 | 103 | appearance Appearance { 104 | material Material { 105 | shininess 0.2 106 | specularColor 1 1 1 107 | } 108 | } 109 | } 110 | 111 | NavigationInfo { type "EXAMINE" } 112 | 113 | Viewpoint { 114 | position 0 0 600 115 | } -------------------------------------------------------------------------------- /examples/models/arcelite/thargon.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.875000, 0.125000, 0.125000 8 | 0.125000, 0.375000, 0.375000 9 | 0.875000, 0.125000, 0.125000 10 | 0.875000, 0.125000, 0.125000 11 | 0.125000, 0.375000, 0.375000 12 | 0.875000, 0.125000, 0.125000 13 | 0.375000, 0.375000, 0.875000 14 | 0.375000, 0.375000, 0.875000 15 | 0.625000, 0.375000, 0.875000 16 | 0.625000, 0.375000, 0.875000 17 | 0.875000, 0.375000, 0.875000 18 | 0.875000, 0.375000, 0.875000 19 | 0.625000, 0.375000, 0.875000 20 | 0.625000, 0.375000, 0.875000 21 | 0.375000, 0.375000, 0.875000 22 | 0.375000, 0.375000, 0.875000 23 | ] 24 | } 25 | 26 | coordIndex [ 27 | 0,1,2,-1, 28 | 0,2,3,-1, 29 | 0,3,4,-1, 30 | 7,6,5,-1, 31 | 8,7,5,-1, 32 | 8,5,9,-1, 33 | 5,0,4,-1, 34 | 4,9,5,-1, 35 | 3,9,4,-1, 36 | 3,8,9,-1, 37 | 8,3,2,-1, 38 | 2,7,8,-1, 39 | 2,1,6,-1, 40 | 2,6,7,-1, 41 | 6,1,0,-1, 42 | 6,0,5,-1 43 | ] 44 | 45 | coord Coordinate { 46 | point [ 47 | 0,-20,-75, 48 | -70,-20,-35, 49 | -30,-20,75, 50 | 30,-20,75, 51 | 70,-20,-35, 52 | 0,20,-45, 53 | -20,20,-35, 54 | -10,20,-15, 55 | 10,20,-15, 56 | 20,20,-35 57 | ] 58 | } 59 | solid FALSE 60 | colorPerVertex FALSE 61 | } 62 | 63 | appearance Appearance { 64 | material Material { 65 | shininess 0.2 66 | specularColor 1 1 1 67 | } 68 | } 69 | } 70 | 71 | NavigationInfo { type "EXAMINE" } 72 | 73 | Viewpoint { 74 | position 0 0 600 75 | } 76 | -------------------------------------------------------------------------------- /examples/models/arcelite/transporter.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.125000, 0.125000, 0.375000 8 | 0.125000, 0.125000, 0.375000 9 | 0.125000, 0.125000, 0.375000 10 | 0.125000, 0.125000, 0.375000 11 | 0.125000, 0.875000, 0.625000 12 | 0.125000, 0.875000, 0.625000 13 | 0.375000, 0.375000, 0.375000 14 | 0.375000, 0.375000, 0.375000 15 | 0.125000, 0.375000, 0.375000 16 | 0.875000, 0.125000, 0.125000 17 | 0.875000, 0.125000, 0.125000 18 | 0.375000, 0.625000, 0.625000 19 | 0.375000, 0.625000, 0.625000 20 | 0.375000, 0.625000, 0.625000 21 | 0.375000, 0.625000, 0.625000 22 | 0.125000, 0.125000, 0.875000 23 | 0.125000, 0.125000, 0.875000 24 | 0.375000, 0.125000, 0.125000 25 | 0.375000, 0.125000, 0.125000 26 | 0.125000, 0.625000, 0.625000 27 | 0.375000, 0.875000, 0.625000 28 | 0.125000, 0.375000, 0.875000 29 | 0.125000, 0.375000, 0.875000 30 | 0.625000, 0.375000, 0.375000 31 | 0.875000, 0.875000, 0.375000 32 | 0.125000, 0.875000, 0.375000 33 | 0.125000, 0.125000, 0.625000 34 | 0.125000, 0.375000, 0.875000 35 | 0.125000, 0.125000, 0.625000 36 | 0.125000, 0.625000, 0.625000 37 | 0.125000, 0.625000, 0.625000 38 | 0.125000, 0.625000, 0.875000 39 | 0.125000, 0.625000, 0.875000 40 | 0.125000, 0.625000, 0.625000 41 | 0.125000, 0.625000, 0.625000 42 | ] 43 | } 44 | 45 | coordIndex [ 46 | 0,3,2,-1, 47 | 0,4,5,-1, 48 | 3,0,5,-1, 49 | 2,1,0,-1, 50 | 32,31,30,-1, 51 | 35,34,33,-1, 52 | 2,6,7,-1, 53 | 7,1,2,-1, 54 | 6,8,7,-1, 55 | 37,36,14,-1, 56 | 14,38,37,-1, 57 | 6,2,3,-1, 58 | 6,3,9,-1, 59 | 10,1,7,-1, 60 | 10,0,1,-1, 61 | 8,11,10,-1, 62 | 10,7,8,-1, 63 | 21,22,23,-1, 64 | 23,24,21,-1, 65 | 27,26,25,-1, 66 | 27,28,26,-1, 67 | 11,8,6,-1, 68 | 6,9,11,-1, 69 | 18,19,20,-1, 70 | 29,17,15,-1, 71 | 16,17,29,-1, 72 | 11,12,10,-1, 73 | 12,11,13,-1, 74 | 13,11,9,-1, 75 | 9,3,5,-1, 76 | 5,13,9,-1, 77 | 13,5,4,-1, 78 | 4,12,13,-1, 79 | 4,10,12,-1, 80 | 4,0,10,-1 81 | ] 82 | 83 | coord Coordinate { 84 | point [ 85 | -100,-25,60, 86 | -100,-25,-120, 87 | 100,-25,-120, 88 | 100,-25,60, 89 | -30,-25,120, 90 | 30,-25,120, 91 | 100,5,-120, 92 | -100,5,-120, 93 | 0,25,-120, 94 | 100,5,60, 95 | -100,5,60, 96 | 0,25,60, 97 | -30,5,120, 98 | 30,5,120, 99 | -50,-15,-120.1, 100 | 30,19.1,-10, 101 | 70,11.1,-10, 102 | 50,15.1,20, 103 | 30,19.1,-90, 104 | 70,11.1,-90, 105 | 50,15.1,-60, 106 | -80,9.1,-10, 107 | -30,19.1,-10, 108 | -30,19.1,4, 109 | -80,9.1,4, 110 | -70,11.1,-60, 111 | -50,15.1,-60, 112 | -50,15.1,-90, 113 | -30,19.1,-60, 114 | 50,15.1,-10, 115 | -50,-25.1,20, 116 | -60,-25.1,-60, 117 | -40,-25.1,-60, 118 | 50,-25.1,20, 119 | 40,-25.1,-60, 120 | 60,-25.1,-60, 121 | -50,5,-120.1, 122 | 40,5,-120.1, 123 | 40,-15,-120.1 124 | ] 125 | } 126 | solid FALSE 127 | colorPerVertex FALSE 128 | } 129 | 130 | appearance Appearance { 131 | material Material { 132 | shininess 0.2 133 | specularColor 1 1 1 134 | } 135 | } 136 | } 137 | 138 | NavigationInfo { type "EXAMINE" } 139 | 140 | Viewpoint { 141 | position 0 0 600 142 | } 143 | -------------------------------------------------------------------------------- /examples/models/arcelite/urutu.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.375000, 0.625000, 0.375000 8 | 0.625000, 0.625000, 0.375000 9 | 0.375000, 0.625000, 0.375000 10 | 0.625000, 0.625000, 0.375000 11 | 0.125000, 0.625000, 0.375000 12 | 0.125000, 0.625000, 0.375000 13 | 0.875000, 0.625000, 0.375000 14 | 0.375000, 0.375000, 0.375000 15 | 0.875000, 0.125000, 0.125000 16 | 0.375000, 0.625000, 0.125000 17 | 0.625000, 0.875000, 0.625000 18 | 0.625000, 0.875000, 0.625000 19 | 0.375000, 0.625000, 0.375000 20 | 0.875000, 0.125000, 0.125000 21 | 0.125000, 0.875000, 0.125000 22 | ] 23 | } 24 | 25 | coordIndex [ 26 | 0,1,2,-1, 27 | 2,3,0,-1, 28 | 2,4,5,-1, 29 | 5,6,2,-1, 30 | 3,6,5,-1, 31 | 3,5,0,-1, 32 | 1,4,2,-1, 33 | 3,2,6,-1, 34 | 8,9,10,-1, 35 | 1,7,4,-1, 36 | 0,7,1,-1, 37 | 4,7,5,-1, 38 | 0,5,7,-1, 39 | 11,12,13,-1, 40 | 16,15,14,-1 41 | ] 42 | 43 | coord Coordinate { 44 | point [ 45 | 75,-27,45, 46 | 30,3,45, 47 | 0,27,-105, 48 | 170,-22,-105, 49 | -30,3,45, 50 | -75,-27,45, 51 | -170,-22,-105, 52 | 0,-20,105, 53 | -6,-21,-105.1, 54 | -15,11,-105.1, 55 | -70,-15,-105.1, 56 | 18,11,-105.1, 57 | 9,-21,-105.1, 58 | 70,-15,-105.1, 59 | 0,0,53, 60 | -9,-10,79, 61 | 8,-10,79 62 | ] 63 | } 64 | solid FALSE 65 | colorPerVertex FALSE 66 | } 67 | 68 | appearance Appearance { 69 | material Material { 70 | shininess 0.2 71 | specularColor 1 1 1 72 | } 73 | } 74 | } 75 | 76 | NavigationInfo { type "EXAMINE" } 77 | 78 | Viewpoint { 79 | position 0 0 600 80 | } 81 | -------------------------------------------------------------------------------- /examples/models/arcelite/viper.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.625000, 0.125000, 0.125000 8 | 0.625000, 0.125000, 0.125000 9 | 0.125000, 0.375000, 0.375000 10 | 0.125000, 0.375000, 0.375000 11 | 0.375000, 0.375000, 0.375000 12 | 0.375000, 0.375000, 0.375000 13 | 0.875000, 0.125000, 0.125000 14 | 0.875000, 0.125000, 0.125000 15 | 0.375000, 0.125000, 0.125000 16 | 0.125000, 0.375000, 0.125000 17 | 0.375000, 0.125000, 0.125000 18 | 0.125000, 0.375000, 0.125000 19 | 0.375000, 0.125000, 0.125000 20 | 0.375000, 0.375000, 0.125000 21 | 0.375000, 0.125000, 0.125000 22 | 0.375000, 0.375000, 0.125000 23 | ] 24 | } 25 | 26 | coordIndex [ 27 | 0,1,2,-1, 28 | 5,4,3,-1, 29 | 1,6,5,-1, 30 | 7,2,3,-1, 31 | 3,1,5,-1, 32 | 2,1,3,-1, 33 | 9,10,11,-1, 34 | 12,13,14,-1, 35 | 8,0,2,-1, 36 | 2,7,8,-1, 37 | 1,0,8,-1, 38 | 8,6,1,-1, 39 | 5,8,4,-1, 40 | 8,5,6,-1, 41 | 4,8,3,-1, 42 | 3,8,7,-1 43 | ] 44 | 45 | coord Coordinate { point 46 | [ 47 | 0,30,0, 48 | -45,30,-100, 49 | 45,30,-100, 50 | 45,-30,-100, 51 | 0,-30,0, 52 | -45,-30,-100, 53 | -80,0,-100, 54 | 80,0,-100, 55 | 0,0,100, 56 | -10,-15,-100.1, 57 | -10,15,-100.1, 58 | -40,0,-100.1, 59 | 10,15,-100.1, 60 | 10,-15,-100.1, 61 | 40,0,-100.1 62 | ] 63 | } 64 | solid FALSE 65 | colorPerVertex FALSE 66 | } 67 | 68 | appearance Appearance { 69 | material Material { 70 | shininess 0.2 71 | specularColor 1 1 1 72 | } 73 | } 74 | } 75 | 76 | NavigationInfo { type "EXAMINE" } 77 | 78 | Viewpoint { 79 | position 0 0 600 80 | } 81 | -------------------------------------------------------------------------------- /examples/models/arcelite/worm.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | color Color { 6 | color [ 7 | 0.875000, 0.625000, 0.625000 8 | 0.875000, 0.625000, 0.625000 9 | 0.875000, 0.375000, 0.375000 10 | 0.875000, 0.375000, 0.375000 11 | 0.625000, 0.625000, 0.625000 12 | 0.625000, 0.625000, 0.625000 13 | 0.625000, 0.375000, 0.375000 14 | 0.625000, 0.625000, 0.625000 15 | 0.625000, 0.375000, 0.375000 16 | 0.375000, 0.375000, 0.375000 17 | 0.375000, 0.375000, 0.375000 18 | 0.875000, 0.125000, 0.125000 19 | 0.875000, 0.125000, 0.125000 20 | 0.625000, 0.625000, 0.625000 21 | 0.125000, 0.375000, 0.375000 22 | 0.125000, 0.375000, 0.375000 23 | 0.125000, 0.375000, 0.375000 24 | 0.125000, 0.375000, 0.375000 25 | 0.125000, 0.625000, 0.625000 26 | 0.125000, 0.625000, 0.625000 27 | ] 28 | } 29 | 30 | coordIndex [ 31 | 0,1,2,-1, 32 | 2,3,0,-1, 33 | 1,4,2,-1, 34 | 4,5,2,-1, 35 | 0,6,7,-1, 36 | 7,1,0,-1, 37 | 4,1,7,-1, 38 | 2,8,3,-1, 39 | 5,8,2,-1, 40 | 6,3,9,-1, 41 | 6,0,3,-1, 42 | 13,14,15,-1, 43 | 14,16,15,-1, 44 | 8,9,3,-1, 45 | 6,9,8,-1, 46 | 8,7,6,-1, 47 | 8,5,7,-1, 48 | 5,4,7,-1, 49 | 10,1,11,-1, 50 | 11,2,12,-1 51 | ] 52 | 53 | coord Coordinate { point 54 | [ 55 | 75,54,-150, 56 | 36,-18,111, 57 | -36,-18,111, 58 | -75,54,-150, 59 | 36,-54,150, 60 | -36,-54,150, 61 | 111,-54,-150, 62 | 60,-54,111, 63 | -60,-54,111, 64 | -111,-54,-150, 65 | 15,-18,111, 66 | 0,-48,144, 67 | -15,-18,111, 68 | 60,33,-150.1, 69 | -60,33,-150.1, 70 | 66,18,-150.1, 71 | -66,18,-150.1 72 | ] 73 | } 74 | solid FALSE 75 | colorPerVertex FALSE 76 | } 77 | 78 | appearance Appearance { 79 | material Material { 80 | shininess 0.2 81 | specularColor 1 1 1 82 | } 83 | } 84 | } 85 | 86 | NavigationInfo { type "EXAMINE" } 87 | 88 | Viewpoint { 89 | position 0 0 600 90 | } -------------------------------------------------------------------------------- /examples/models/cobra3.dae: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Blender User 6 | Blender 2.79.0 commit date:2018-03-22, commit time:14:10, hash:f4dc9f9d68b 7 | 8 | 2018-12-22T09:45:30 9 | 2018-12-22T09:45:30 10 | 11 | Z_UP 12 | 13 | 14 | 15 | 16 | 17 | 18 | 49.13434 19 | 1.777778 20 | 0.1 21 | 100 22 | 23 | 24 | 25 | 26 | 27 | 0 28 | 0 29 | 0 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 44.99999 38 | 1.777778 39 | 0.1 40 | 100 41 | 42 | 43 | 44 | 45 | 46 | 0 47 | 0 48 | 0 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 1 1 1 58 | 1 59 | 0 60 | 0.00111109 61 | 62 | 63 | 64 | 65 | 0 66 | 0 67 | 8192 68 | 1 69 | 1 70 | 1 71 | 1 72 | 0 73 | 0 74 | 0 75 | 1 76 | 29.99998 77 | 75 78 | 0.15 79 | 1 80 | 0 81 | 1 82 | 2 83 | 1.000799 84 | 30.002 85 | 1 86 | 3 87 | 0.04999995 88 | 2880 89 | 3 90 | 1 91 | 0 92 | 0 93 | 2 94 | 1 95 | 1 96 | 1 97 | 0 98 | 1 99 | 0.1 100 | 0.1 101 | 1 102 | 0.000999987 103 | 1 104 | 0 105 | 0 106 | 1 107 | 1 108 | 1 109 | 1 110 | 1 111 | 1 112 | 1 113 | 2 114 | 1 115 | 1 116 | 1 117 | 1 118 | 0 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 0 0 0 1 131 | 132 | 133 | 0 0 0 1 134 | 135 | 136 | 0.64 0.64 0.72 1 137 | 138 | 139 | 0.5 0.5 0.5 1 140 | 141 | 142 | 103 143 | 144 | 145 | 1 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 32 0 76 -32 0 76 0 26 24 -120 -3 -8 120 -3 -8 -88 16 -40 88 16 -40 128 -8 -40 -128 -8 -40 0 26 -40 -32 -24 -40 32 -24 -40 -36 8 -40 -8 12 -40 8 12 -40 36 8 -40 36 -12 -40 8 -16 -40 -8 -16 -40 -36 -12 -40 0 0 76 0 0 90 -80 -6 -40 -80 6 -40 -88 0 -40 80 6 -40 88 0 -40 80 -6 -40 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 0 -0.8944273 -0.4472137 0 -0.9792605 0.2026056 -0.3013625 -0.9140226 -0.2715574 0.2834181 0.9219462 0.2639875 -0.1580024 0.9669597 -0.2000606 -0.3013625 0.9140226 0.2715574 0.2834181 -0.9219462 -0.2639875 -0.1580024 -0.9669597 0.2000606 0.1129097 -0.9936053 0 0.1129097 0.9936053 0 -0.5144883 0.8574807 -0.005359232 -0.5144883 -0.8574807 0.005359232 0 0 1 -0.1613529 0.9681178 -0.1916067 -0.1613529 -0.9681178 0.1916067 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 |

0 0 1 0 2 0 1 1 11 1 0 1 0 2 2 2 6 2 0 3 4 3 6 3 4 4 11 4 0 4 1 5 2 5 5 5 1 6 3 6 5 6 3 7 10 7 1 7 2 8 5 8 9 8 2 9 6 9 9 9 3 10 5 10 8 10 4 11 6 11 7 11 6 12 9 12 11 12 1 1 10 1 11 1 4 13 7 13 11 13 3 14 8 14 10 14 9 12 5 12 10 12 5 12 8 12 10 12 10 12 11 12 9 12 11 12 7 12 6 12

187 |
188 |
189 |
190 |
191 | 192 | 193 | 194 | 195 | 0.6859207 -0.3240135 0.6515582 7.481132 0.7276763 0.3054208 -0.6141704 -6.50764 0 0.8953956 0.4452714 5.343665 0 0 0 1 196 | 197 | 198 | 199 | -0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 0.2183912 1.005454 -0.05518906 0.6045247 0.7946723 5.903862 0 0 0 1 200 | 201 | 202 | 203 | -1 -3.82137e-15 -8.74228e-8 0 -8.74228e-8 4.37114e-8 1 0 0 1 -4.37114e-8 0 0 0 0 1 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | -1 -3.82137e-15 -8.74228e-8 0 -8.74228e-8 4.37114e-8 1 600 0 1 -4.37114e-8 0 0 0 0 1 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 |
-------------------------------------------------------------------------------- /examples/models/cobra3.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'None' 2 | # Material Count: 1 3 | 4 | newmtl Shape 5 | Ns 200.000000 6 | Ka 0.200000 0.200000 0.200000 7 | Kd 0.640000 0.640000 0.720000 8 | Ks 0.500000 0.500000 0.500000 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.000000 11 | d 1.000000 12 | illum 2 13 | -------------------------------------------------------------------------------- /examples/models/cobra3.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.79 (sub 0) OBJ File: '' 2 | # www.blender.org 3 | mtllib cobra3.mtl 4 | o Shape_IndexedLineSet 5 | v -0.000007 -0.000003 -76.000000 6 | v -0.000008 -0.000004 -90.000000 7 | l 1 2 8 | o Shape_IndexedFaceSet 9 | v -32.000008 -0.000003 -76.000000 10 | v 31.999994 -0.000003 -76.000000 11 | v -0.000002 25.999998 -24.000002 12 | v 120.000000 -3.000000 7.999990 13 | v -120.000000 -3.000000 8.000010 14 | v 88.000000 16.000002 39.999992 15 | v -88.000000 16.000002 40.000008 16 | v -128.000000 -7.999998 40.000011 17 | v 128.000000 -7.999998 39.999989 18 | v 0.000003 26.000002 40.000000 19 | v 32.000004 -23.999998 40.000000 20 | v -31.999996 -23.999998 40.000004 21 | v 36.000004 8.000002 39.999996 22 | v 8.000004 12.000002 40.000000 23 | v -7.999997 12.000002 40.000000 24 | v -35.999996 8.000002 40.000004 25 | v -35.999996 -11.999998 40.000004 26 | v -7.999997 -15.999998 40.000000 27 | v 8.000004 -15.999998 40.000000 28 | v 36.000004 -11.999998 39.999996 29 | v -0.000007 -0.000003 -76.000000 30 | v -0.000008 -0.000004 -90.000000 31 | v 80.000000 -5.999998 39.999992 32 | v 80.000000 6.000002 39.999992 33 | v 88.000000 0.000002 39.999992 34 | v -80.000000 6.000002 40.000008 35 | v -88.000000 0.000002 40.000008 36 | v -80.000000 -5.999998 40.000008 37 | vn 0.0000 -0.8944 0.4472 38 | vn -0.0000 -0.9793 -0.2026 39 | vn 0.3014 -0.9140 0.2716 40 | vn -0.2834 0.9219 -0.2640 41 | vn 0.1588 0.9672 0.1981 42 | vn 0.3014 0.9140 -0.2716 43 | vn -0.2834 -0.9219 0.2640 44 | vn 0.1588 -0.9672 -0.1981 45 | vn -0.1129 -0.9936 0.0000 46 | vn -0.1129 0.9936 0.0000 47 | vn 0.5145 0.8575 0.0054 48 | vn 0.5145 -0.8575 -0.0054 49 | vn -0.0000 -0.0000 -1.0000 50 | usemtl Shape 51 | s off 52 | f 3//1 4//1 5//1 53 | f 3//2 4//2 13//2 14//2 54 | f 3//3 5//3 9//3 55 | f 3//4 7//4 9//4 56 | f 3//5 7//5 10//5 14//5 57 | f 4//6 5//6 8//6 58 | f 4//7 6//7 8//7 59 | f 4//8 6//8 11//8 13//8 60 | f 5//9 8//9 12//9 61 | f 5//10 9//10 12//10 62 | f 6//11 8//11 11//11 63 | f 7//12 9//12 10//12 64 | f 8//13 11//13 13//13 14//13 10//13 9//13 12//13 65 | -------------------------------------------------------------------------------- /examples/models/coriolis.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'None' 2 | # Material Count: 1 3 | 4 | newmtl Shape.002 5 | Ns 200.000000 6 | Ka 0.200000 0.200000 0.200000 7 | Kd 0.640000 0.640000 0.720000 8 | Ks 0.500000 0.500000 0.500000 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.000000 11 | d 1.000000 12 | illum 2 13 | -------------------------------------------------------------------------------- /examples/models/coriolis.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.79 (sub 0) OBJ File: '' 2 | # www.blender.org 3 | mtllib coriolis.mtl 4 | o Shape_IndexedFaceSet_Shape_IndexedFaceSet.001 5 | v -160.000015 -0.000007 -159.999985 6 | v -0.000014 160.000000 -160.000000 7 | v 159.999985 -0.000007 -160.000015 8 | v -0.000014 -160.000000 -160.000000 9 | v -160.000000 -160.000000 0.000021 10 | v -160.000000 160.000000 0.000007 11 | v 160.000000 160.000000 -0.000021 12 | v 160.000000 -160.000000 -0.000007 13 | v -159.999985 0.000007 160.000015 14 | v 0.000014 160.000000 160.000000 15 | v 160.000015 0.000007 159.999985 16 | v 0.000014 -160.000000 160.000000 17 | v -10.000014 -30.000008 -160.000000 18 | v -10.000014 29.999992 -160.000000 19 | v 9.999986 29.999992 -160.000000 20 | v 9.999986 -30.000008 -160.000000 21 | vn 0.0000 0.0000 -1.0000 22 | vn 0.5774 -0.5774 0.5774 23 | vn -0.5774 -0.5774 -0.5774 24 | vn -1.0000 0.0000 0.0000 25 | vn -0.5774 -0.5774 0.5774 26 | vn 0.0000 -1.0000 0.0000 27 | vn -0.5774 0.5774 0.5774 28 | vn 1.0000 0.0000 -0.0000 29 | vn 0.0000 1.0000 0.0000 30 | vn 0.5774 0.5774 -0.5774 31 | vn 0.5774 0.5774 0.5774 32 | usemtl Shape.002 33 | s off 34 | f 1//1 2//1 3//1 4//1 35 | f 1//2 2//2 6//2 36 | f 1//3 4//3 5//3 37 | f 1//4 5//4 9//4 6//4 38 | f 2//5 3//5 7//5 39 | f 2//6 7//6 10//6 6//6 40 | f 3//7 4//7 8//7 41 | f 3//8 7//8 11//8 8//8 42 | f 4//9 5//9 12//9 8//9 43 | f 5//10 9//10 12//10 44 | f 6//7 9//7 10//7 45 | f 7//11 10//11 11//11 46 | f 8//2 11//2 12//2 47 | f 9//1 10//1 11//1 12//1 48 | -------------------------------------------------------------------------------- /examples/models/cube.dae: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Blender User 6 | Blender 2.79.0 commit date:2018-03-22, commit time:14:10, hash:f4dc9f9d68b 7 | 8 | 2018-12-22T10:04:22 9 | 2018-12-22T10:04:22 10 | 11 | Z_UP 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 0 0 0 1 21 | 22 | 23 | 0 0 0 1 24 | 25 | 26 | 0.64 0.64 0.64 1 27 | 28 | 29 | 0.5 0.5 0.5 1 30 | 31 | 32 | 50 33 | 34 | 35 | 1 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 1 1 -1 1 -1 -1 -1 -0.9999998 -1 -0.9999997 1 -1 1 0.9999995 1 0.9999994 -1.000001 1 -1 -0.9999997 1 -1 1 1 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 0 0 -1 0 0 1 1 -2.98023e-7 0 -2.83122e-7 -1 -1.78814e-7 -1 2.38419e-7 -1.3411e-7 2.38419e-7 1 1.63913e-7 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 4 4 4 4 4 4 77 |

0 0 1 0 2 0 3 0 4 1 7 1 6 1 5 1 0 2 4 2 5 2 1 2 1 3 5 3 6 3 2 3 2 4 6 4 7 4 3 4 4 5 0 5 3 5 7 5

78 |
79 |
80 |
81 |
82 | 83 | 84 | 85 | 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 |
-------------------------------------------------------------------------------- /examples/models/cube.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.79 (sub 0) OBJ File: '' 2 | # www.blender.org 3 | mtllib cobra3.mtl 4 | o Cube 5 | v -1.000000 1.000000 -1.000000 6 | v -1.000000 1.000000 1.000000 7 | v 1.000000 1.000000 1.000000 8 | v 1.000000 1.000000 -1.000000 9 | v -1.000000 -1.000000 -0.999999 10 | v -0.999999 -1.000000 1.000001 11 | v 1.000000 -1.000000 1.000000 12 | v 1.000000 -1.000000 -1.000000 13 | vn 0.0000 1.0000 0.0000 14 | vn 0.0000 -1.0000 0.0000 15 | vn -1.0000 -0.0000 0.0000 16 | vn 0.0000 0.0000 1.0000 17 | vn 1.0000 0.0000 -0.0000 18 | vn -0.0000 -0.0000 -1.0000 19 | usemtl Material 20 | s off 21 | f 1//1 2//1 3//1 4//1 22 | f 5//2 8//2 7//2 6//2 23 | f 1//3 5//3 6//3 2//3 24 | f 2//4 6//4 7//4 3//4 25 | f 3//5 7//5 8//5 4//5 26 | f 5//6 1//6 4//6 8//6 27 | -------------------------------------------------------------------------------- /examples/models/dodo.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'None' 2 | # Material Count: 1 3 | 4 | newmtl Shape.003 5 | Ns 200.000000 6 | Ka 0.200000 0.200000 0.200000 7 | Kd 0.640000 0.640000 0.720000 8 | Ks 0.500000 0.500000 0.500000 9 | Ke 0.000000 0.000000 0.000000 10 | Ni 1.000000 11 | d 1.000000 12 | illum 2 13 | -------------------------------------------------------------------------------- /examples/models/dodo.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.79 (sub 0) OBJ File: '' 2 | # www.blender.org 3 | mtllib dodo.mtl 4 | o Shape_IndexedFaceSet_Shape_IndexedFaceSet.002 5 | v -0.000017 149.999985 -196.000000 6 | v -143.000015 45.999992 -195.999985 7 | v -88.000015 -121.000008 -195.999985 8 | v 87.999985 -121.000008 -196.000000 9 | v 142.999985 45.999992 -196.000015 10 | v -0.000004 243.000000 -46.000011 11 | v -231.000000 75.000000 -45.999985 12 | v -143.000000 -196.000000 -45.999977 13 | v 143.000000 -196.000000 -46.000004 14 | v 231.000000 75.000000 -46.000023 15 | v -143.000000 196.000000 46.000004 16 | v -231.000000 -75.000000 46.000023 17 | v 0.000004 -243.000000 46.000011 18 | v 231.000000 -75.000000 45.999985 19 | v 143.000000 196.000000 45.999977 20 | v -87.999985 121.000008 196.000000 21 | v -142.999985 -45.999992 196.000015 22 | v 0.000017 -149.999985 196.000000 23 | v 143.000015 -45.999992 195.999985 24 | v 88.000015 121.000008 195.999985 25 | v 15.999983 31.999992 -196.000000 26 | v 15.999983 -32.000008 -196.000000 27 | v -16.000017 31.999992 -196.000000 28 | v -16.000017 -32.000008 -196.000000 29 | vn -0.5258 0.7230 -0.4482 30 | vn 0.0000 0.0000 1.0000 31 | vn 0.5258 0.7230 -0.4482 32 | vn -0.8499 -0.2771 -0.4483 33 | vn -0.0000 -0.8934 -0.4494 34 | vn 0.8499 -0.2771 -0.4483 35 | vn 0.0000 0.8934 0.4494 36 | vn -0.8499 0.2771 0.4483 37 | vn -0.5258 -0.7230 0.4482 38 | vn 0.5258 -0.7230 0.4482 39 | vn 0.8499 0.2771 0.4483 40 | usemtl Shape.003 41 | s off 42 | f 1//1 2//1 7//1 11//1 6//1 43 | f 1//2 2//2 3//2 4//2 5//2 44 | f 1//3 6//3 15//3 10//3 5//3 45 | f 2//4 3//4 8//4 12//4 7//4 46 | f 3//5 4//5 9//5 13//5 8//5 47 | f 4//6 5//6 10//6 14//6 9//6 48 | f 6//7 11//7 16//7 20//7 15//7 49 | f 7//8 12//8 17//8 16//8 11//8 50 | f 8//9 13//9 18//9 17//9 12//9 51 | f 9//10 14//10 19//10 18//10 13//10 52 | f 10//11 15//11 20//11 19//11 14//11 53 | f 16//2 17//2 18//2 19//2 20//2 54 | -------------------------------------------------------------------------------- /examples/models/elite/adder.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 13, 12, -1, 7 | 0, 1, 11, 10, -1, 8 | 0, 10, 7, -1, 9 | 0, 12, 7, -1, 10 | 1, 2, 13, -1, 11 | 1, 2, 11, -1, 12 | 2, 3, 4, 13, -1, 13 | 2, 3, 9, 11, -1, 14 | 3, 4, 5, 6, 8, 9, -1, 15 | 4, 5, 12, 13, -1, 16 | 5, 6, 7, 12, -1, 17 | 5, 6, 8, -1, 18 | 6, 7, 10, 8, -1, 19 | 8, 10, 11, 9, -1, 20 | ] 21 | 22 | coord Coordinate { point [ 23 | -18 0 40, 24 | 18 0 40, 25 | 30 0 -24, 26 | 30 0 -40, 27 | 18 -7 -40, 28 | -18 -7 -40, 29 | -30 0 -40, 30 | -30 0 -24, 31 | -18 7 -40, 32 | 18 7 -40, 33 | -18 7 13, 34 | 18 7 13, 35 | -18 -7 13, 36 | 18 -7 13, 37 | -11 3 29, 38 | 11 3 29, 39 | 11 4 24, 40 | -11 4 24 41 | ] 42 | } 43 | 44 | solid FALSE 45 | } 46 | 47 | appearance Appearance { 48 | material Material { 49 | shininess 0.2 50 | specularColor 1 1 1 51 | diffuseColor 0.8 0.8 0.9 52 | } 53 | } 54 | } 55 | 56 | NavigationInfo { type "EXAMINE" } 57 | 58 | Viewpoint { 59 | position 0 0 600 60 | } 61 | -------------------------------------------------------------------------------- /examples/models/elite/anaconda.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 6, 10, 5, -1, 7 | 0, 1, 2, 3, 4, -1, 8 | 0, 4, 9, 14, 5, -1, 9 | 1, 2, 7, 11, 6, -1, 10 | 2, 3, 8, 12, 7, -1, 11 | 3, 4, 9, 13, 8, -1, 12 | 5, 10, 14, -1, 13 | 6, 10, 12, 11, -1, 14 | 7, 11, 12, -1, 15 | 8, 12, 13, -1, 16 | 9, 13, 12, 14, -1, 17 | 10, 12, 14, -1 18 | ] 19 | 20 | coord Coordinate { point [ 21 | 0 7 -58, 22 | -43 -13 -37, 23 | -26 -47 -3, 24 | 26 -47 -3, 25 | 43 -13 -37, 26 | 0 48 -49, 27 | -69 15 -15, 28 | -43 -39 40, 29 | 43 -39 40, 30 | 69 15 -15, 31 | -43 53 -23, 32 | -69 -1 32, 33 | 0 0 254, 34 | 69 -1 32, 35 | 43 53 -23 36 | ] 37 | } 38 | 39 | solid FALSE 40 | } 41 | 42 | appearance Appearance { 43 | material Material { 44 | shininess 0.2 45 | specularColor 1 1 1 46 | diffuseColor 0.8 0.8 0.9 47 | } 48 | } 49 | } 50 | 51 | NavigationInfo { type "EXAMINE" } 52 | 53 | Viewpoint { 54 | position 0 0 600 55 | } 56 | -------------------------------------------------------------------------------- /examples/models/elite/asp2.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 5, 6, 7, -1, 7 | 0, 1, 2, 3, 4, -1, 8 | 0, 4, 8, 9, 7, -1, 9 | 1, 2, 12, 5, -1, 10 | 2, 3, 10, 12, -1, 11 | 3, 4, 8, -1, 12 | 3, 8, 10, -1, 13 | 5, 6, 11, 12, -1, 14 | 6, 7, 9, -1, 15 | 6, 9, 11, -1, 16 | 8, 9, 11, 10, -1, 17 | 10, 11, 12, -1 18 | ] 19 | 20 | coord Coordinate { point [ 21 | 0 -18 0, 22 | 0 -9 -45, 23 | 43 0 -45, 24 | 69 -3 0, 25 | 43 -14 28, 26 | -43 0 -45, 27 | -69 -3 0, 28 | -43 -14 28, 29 | 26 -7 73, 30 | -26 -7 73, 31 | 43 14 28, 32 | -43 14 28, 33 | 0 9 -45, 34 | -17 0 -45, 35 | 17 0 -45, 36 | 0 -4 -45, 37 | 0 4 -45, 38 | 0 -7 73, 39 | 0 -7 83 40 | ] 41 | } 42 | 43 | solid FALSE 44 | } 45 | 46 | appearance Appearance { 47 | material Material { 48 | shininess 0.2 49 | specularColor 1 1 1 50 | diffuseColor 0.8 0.8 0.9 51 | } 52 | } 53 | } 54 | 55 | Shape { 56 | geometry IndexedLineSet { 57 | coordIndex [ 58 | 0, 1, -1 59 | ] 60 | 61 | coord Coordinate { point [ 62 | 0 -7 73, 63 | 0 -7 83 64 | ] 65 | } 66 | } 67 | 68 | appearance Appearance { 69 | material Material { 70 | emissiveColor 0.8 0.8 0.9 71 | } 72 | } 73 | 74 | } 75 | 76 | NavigationInfo { type "EXAMINE" } 77 | 78 | Viewpoint { 79 | position 0 0 600 80 | } 81 | -------------------------------------------------------------------------------- /examples/models/elite/boa.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 4, 9, -1, 7 | 0, 4, 5, -1, 8 | 0, 5, 6, -1, 9 | 0, 6, 7, -1, 10 | 0, 7, 8, -1, 11 | 0, 8, 9, -1, 12 | 1, 4, 5, -1, 13 | 1, 4, 9, 3, 12, 10, -1, 14 | 1, 5, 6, 2, 11, 10, -1, 15 | 2, 6, 7, -1, 16 | 2, 7, 8, 3, 12, 11, -1, 17 | 3, 8, 9, -1, 18 | 10, 11, 12, -1 19 | ] 20 | 21 | coord Coordinate { point [ 22 | 0 0 93, 23 | 0 40 -87, 24 | 38 -25 -99, 25 | -38 -25 -99, 26 | -38 40 -59, 27 | 38 40 -59, 28 | 62 0 -67, 29 | 24 -65 -79, 30 | -24 -65 -79, 31 | -62 0 -67, 32 | 0 7 -107, 33 | 13 -9 -107, 34 | -13 -9 -107 35 | ] 36 | } 37 | 38 | solid FALSE 39 | } 40 | 41 | appearance Appearance { 42 | material Material { 43 | shininess 0.2 44 | specularColor 1 1 1 45 | diffuseColor 0.8 0.8 0.9 46 | } 47 | } 48 | } 49 | 50 | NavigationInfo { type "EXAMINE" } 51 | 52 | Viewpoint { 53 | position 0 0 600 54 | } 55 | -------------------------------------------------------------------------------- /examples/models/elite/cobra1.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 2, 6, -1, 7 | 0, 2, 4, 8, -1, 8 | 0, 6, 7, 1, -1, 9 | 0, 8, 1, -1, 10 | 1, 7, 3, -1, 11 | 2, 4, 6, -1, 12 | 3, 1, 8, 5, -1, 13 | 4, 5, 7, 6, -1, 14 | 4, 5, 8, -1, 15 | 5, 3, 7, -1 16 | ] 17 | 18 | coord Coordinate { point [ 19 | -18 -1 50, 20 | 18 -1 50, 21 | -66 0 7, 22 | 66 0 7, 23 | -32 12 -38, 24 | 32 12 -38, 25 | -54 -12 -38, 26 | 54 -12 -38, 27 | 0 12 -6, 28 | 0 -1 50, 29 | 0 -1 60 30 | ] 31 | } 32 | 33 | solid FALSE 34 | } 35 | 36 | appearance Appearance { 37 | material Material { 38 | shininess 0.2 39 | specularColor 1 1 1 40 | diffuseColor 0.8 0.8 0.9 41 | } 42 | } 43 | } 44 | 45 | Shape { 46 | geometry IndexedLineSet { 47 | coordIndex [ 48 | 0, 1, -1 49 | ] 50 | 51 | coord Coordinate { point [ 52 | 0 -1 50, 53 | 0 -1 60 54 | ] 55 | } 56 | } 57 | 58 | appearance Appearance { 59 | material Material { 60 | emissiveColor 0.8 0.8 0.9 61 | } 62 | } 63 | 64 | } 65 | 66 | NavigationInfo { type "EXAMINE" } 67 | 68 | Viewpoint { 69 | position 0 0 600 70 | } 71 | -------------------------------------------------------------------------------- /examples/models/elite/cobra3.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 2, -1, 7 | 0, 1, 10, 11, -1, 8 | 0, 2, 6, -1, 9 | 0, 4, 6, -1, 10 | 0, 4, 7, 11, -1, 11 | 1, 2, 5, -1, 12 | 1, 3, 5, -1, 13 | 1, 3, 8, 10, -1, 14 | 2, 5, 9, -1, 15 | 2, 6, 9, -1, 16 | 3, 5, 8, -1, 17 | 4, 6, 7, -1, 18 | 5, 8, 10, 11, 7, 6, 9, -1 19 | ] 20 | 21 | coord Coordinate { point [ 22 | 32 0 76, 23 | -32 0 76, 24 | 0 26 24, 25 | -120 -3 -8, 26 | 120 -3 -8, 27 | -88 16 -40, 28 | 88 16 -40, 29 | 128 -8 -40, 30 | -128 -8 -40, 31 | 0 26 -40, 32 | -32 -24 -40, 33 | 32 -24 -40, 34 | -36 8 -40, 35 | -8 12 -40, 36 | 8 12 -40, 37 | 36 8 -40, 38 | 36 -12 -40, 39 | 8 -16 -40, 40 | -8 -16 -40, 41 | -36 -12 -40, 42 | 0 0 76, 43 | 0 0 90, 44 | -80 -6 -40, 45 | -80 6 -40, 46 | -88 0 -40, 47 | 80 6 -40, 48 | 88 0 -40, 49 | 80 -6 -40 50 | ] 51 | } 52 | 53 | solid FALSE 54 | } 55 | 56 | appearance Appearance { 57 | material Material { 58 | shininess 0.2 59 | specularColor 1 1 1 60 | diffuseColor 0.8 0.8 0.9 61 | } 62 | } 63 | } 64 | 65 | Shape { 66 | geometry IndexedLineSet { 67 | coordIndex [ 68 | 0, 1, -1 69 | ] 70 | 71 | coord Coordinate { point [ 72 | 0 0 76, 73 | 0 0 90 74 | ] 75 | } 76 | } 77 | 78 | appearance Appearance { 79 | material Material { 80 | emissiveColor 0.8 0.8 0.9 81 | } 82 | } 83 | 84 | } 85 | 86 | NavigationInfo { type "EXAMINE" } 87 | 88 | Viewpoint { 89 | position 0 0 600 90 | } 91 | -------------------------------------------------------------------------------- /examples/models/elite/constrictor.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 2, 3, 6, 7, -1, 7 | 0, 1, 9, 8, -1, 8 | 0, 7, 8, -1, 9 | 1, 2, 9, -1, 10 | 2, 3, 9, -1, 11 | 3, 4, 5, 6, -1, 12 | 3, 4, 9, -1, 13 | 4, 5, 8, 9, -1, 14 | 5, 6, 8, -1, 15 | 6, 7, 8, -1 16 | ] 17 | 18 | coord Coordinate { point [ 19 | 20 -7 80, 20 | -20 -7 80, 21 | -54 -7 40, 22 | -54 -7 -40, 23 | -20 13 -40, 24 | 20 13 -40, 25 | 54 -7 -40, 26 | 54 -7 40, 27 | 20 13 5, 28 | -20 13 5, 29 | 20 -7 62, 30 | -20 -7 62, 31 | 25 -7 -25, 32 | -25 -7 -25, 33 | 15 -7 -15, 34 | -15 -7 -15, 35 | 0 -7 0 36 | ] 37 | } 38 | 39 | solid FALSE 40 | } 41 | 42 | appearance Appearance { 43 | material Material { 44 | shininess 0.2 45 | specularColor 1 1 1 46 | diffuseColor 0.8 0.8 0.9 47 | } 48 | } 49 | } 50 | 51 | NavigationInfo { type "EXAMINE" } 52 | 53 | Viewpoint { 54 | position 0 0 600 55 | } 56 | -------------------------------------------------------------------------------- /examples/models/elite/elite.scr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/elite/elite.scr -------------------------------------------------------------------------------- /examples/models/elite/ferdelance.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 2, 3, 4, -1, 7 | 0, 1, 5, -1, 8 | 0, 4, 8, -1, 9 | 0, 5, 9, 8, -1, 10 | 1, 2, 6, 5, -1, 11 | 2, 3, 7, 6, -1, 12 | 3, 4, 8, 7, -1, 13 | 5, 6, 9, -1, 14 | 6, 7, 9, -1, 15 | 7, 8, 9, -1 16 | ] 17 | 18 | coord Coordinate { point [ 19 | 0 -14 108, 20 | -40 -14 -4, 21 | -12 -14 -52, 22 | 12 -14 -52, 23 | 40 -14 -4, 24 | -40 14 -4, 25 | -12 2 -52, 26 | 12 2 -52, 27 | 40 14 -4, 28 | 0 18 -20, 29 | -3 -11 97, 30 | -26 8 18, 31 | -16 14 -4, 32 | 3 -11 97, 33 | 26 8 18, 34 | 16 14 -4, 35 | 0 -14 -20, 36 | -14 -14 44, 37 | 14 -14 44 38 | ] 39 | } 40 | 41 | solid FALSE 42 | } 43 | 44 | appearance Appearance { 45 | material Material { 46 | shininess 0.2 47 | specularColor 1 1 1 48 | diffuseColor 0.8 0.8 0.9 49 | } 50 | } 51 | } 52 | 53 | NavigationInfo { type "EXAMINE" } 54 | 55 | Viewpoint { 56 | position 0 0 600 57 | } 58 | -------------------------------------------------------------------------------- /examples/models/elite/gecko.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 7, 6, -1, 7 | 0, 1, 3, 2, -1, 8 | 0, 2, 4, -1, 9 | 0, 6, 4, -1, 10 | 1, 3, 5, -1, 11 | 1, 5, 7, -1, 12 | 2, 4, 6, -1, 13 | 2, 6, 7, 3, -1, 14 | 3, 7, 5, -1 15 | ] 16 | 17 | coord Coordinate { point [ 18 | -10 -4 47, 19 | 10 -4 47, 20 | -16 8 -23, 21 | 16 8 -23, 22 | -66 0 -3, 23 | 66 0 -3, 24 | -20 -14 -23, 25 | 20 -14 -23, 26 | -8 -6 33, 27 | 8 -6 33, 28 | -8 -13 -16, 29 | 8 -13 -16 30 | ] 31 | } 32 | 33 | solid FALSE 34 | } 35 | 36 | appearance Appearance { 37 | material Material { 38 | shininess 0.2 39 | specularColor 1 1 1 40 | diffuseColor 0.8 0.8 0.9 41 | } 42 | } 43 | } 44 | 45 | NavigationInfo { type "EXAMINE" } 46 | 47 | Viewpoint { 48 | position 0 0 600 49 | } 50 | -------------------------------------------------------------------------------- /examples/models/elite/krait.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 4, -1, 7 | 0, 1, 3, -1, 8 | 0, 2, 4, -1, 9 | 0, 2, 3, -1, 10 | 1, 2, 4, -1, 11 | 1, 2, 3, -1 12 | ] 13 | 14 | coord Coordinate { point [ 15 | 0 0 96, 16 | 0 18 -48, 17 | 0 -18 -48, 18 | 90 0 -3, 19 | -90 0 -3, 20 | 90 0 87, 21 | -90 0 87, 22 | 0 5 53, 23 | 0 7 38, 24 | -18 7 19, 25 | 18 7 19, 26 | 18 11 -39, 27 | 18 -11 -39, 28 | 36 0 -30, 29 | -18 11 -39, 30 | -18 -11 -39, 31 | -36 0 -30 32 | ] 33 | } 34 | 35 | solid FALSE 36 | } 37 | 38 | appearance Appearance { 39 | material Material { 40 | shininess 0.2 41 | specularColor 1 1 1 42 | diffuseColor 0.8 0.8 0.9 43 | } 44 | } 45 | } 46 | 47 | Shape { 48 | geometry IndexedLineSet { 49 | coordIndex [ 50 | 0, 1, -1, 51 | 2, 3, -1 52 | ] 53 | 54 | coord Coordinate { point [ 55 | -90 0 -3, 56 | -90 0 87, 57 | 90 0 -3, 58 | 90 0 87 59 | ] 60 | } 61 | } 62 | 63 | appearance Appearance { 64 | material Material { 65 | emissiveColor 0.8 0.8 0.9 66 | } 67 | } 68 | 69 | } 70 | 71 | NavigationInfo { type "EXAMINE" } 72 | 73 | Viewpoint { 74 | position 0 0 600 75 | } 76 | -------------------------------------------------------------------------------- /examples/models/elite/mamba.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 4, -1, 7 | 0, 1, 2, -1, 8 | 0, 2, 3, -1, 9 | 0, 3, 4, -1, 10 | 1, 2, 3, 4, -1 11 | ] 12 | 13 | coord Coordinate { point [ 14 | 0 0 64, 15 | -64 -8 -32, 16 | -32 8 -32, 17 | 32 8 -32, 18 | 64 -8 -32, 19 | -4 4 16, 20 | 4 4 16, 21 | 8 3 28, 22 | -8 3 28, 23 | -20 -4 16, 24 | 20 -4 16, 25 | -24 -7 -20, 26 | -16 -7 -20, 27 | 16 -7 -20, 28 | 24 -7 -20, 29 | -8 4 -32, 30 | 8 4 -32, 31 | 8 -4 -32, 32 | -8 -4 -32, 33 | -32 4 -32, 34 | 32 4 -32, 35 | 36 -4 -32, 36 | -36 -4 -32, 37 | -38 0 -32, 38 | 38 0 -32 39 | ] 40 | } 41 | 42 | solid FALSE 43 | } 44 | 45 | appearance Appearance { 46 | material Material { 47 | shininess 0.2 48 | specularColor 1 1 1 49 | diffuseColor 0.8 0.8 0.9 50 | } 51 | } 52 | } 53 | 54 | NavigationInfo { type "EXAMINE" } 55 | 56 | Viewpoint { 57 | position 0 0 600 58 | } 59 | -------------------------------------------------------------------------------- /examples/models/elite/moray.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 6, 5, -1, 7 | 0, 1, 2, -1, 8 | 0, 2, 4, -1, 9 | 0, 4, 5, -1, 10 | 1, 2, 3, -1, 11 | 1, 3, 6, -1, 12 | 2, 3, 6, -1, 13 | 2, 4, 5, -1, 14 | 2, 5, 6, -1 15 | ] 16 | 17 | coord Coordinate { point [ 18 | 15 0 65, 19 | -15 0 65, 20 | 0 18 -40, 21 | -60 0 0, 22 | 60 0 0, 23 | 30 -27 -10, 24 | -30 -27 -10, 25 | -9 -4 -25, 26 | 9 -4 -25, 27 | 0 -18 -16, 28 | 13 3 49, 29 | 6 0 65, 30 | -13 3 49, 31 | -6 0 65 32 | ] 33 | } 34 | 35 | solid FALSE 36 | } 37 | 38 | appearance Appearance { 39 | material Material { 40 | shininess 0.2 41 | specularColor 1 1 1 42 | diffuseColor 0.8 0.8 0.9 43 | } 44 | } 45 | } 46 | 47 | NavigationInfo { type "EXAMINE" } 48 | 49 | Viewpoint { 50 | position 0 0 600 51 | } 52 | -------------------------------------------------------------------------------- /examples/models/elite/python.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 3, -1, 7 | 0, 1, 2, -1, 8 | 0, 2, 8, -1, 9 | 0, 3, 8, -1, 10 | 1, 2, 4, -1, 11 | 1, 3, 4, -1, 12 | 2, 4, 5, -1, 13 | 2, 5, 7, -1, 14 | 2, 7, 10, -1, 15 | 2, 8, 9, -1, 16 | 2, 9, 10, -1, 17 | 3, 4, 5, -1, 18 | 3, 5, 6, -1, 19 | 3, 6, 10, -1, 20 | 3, 8, 9, -1, 21 | 3, 9, 10, -1, 22 | 5, 6, 10, 7, -1 23 | ] 24 | 25 | coord Coordinate { point [ 26 | 0 0 224, 27 | 0 48 48, 28 | 96 0 -16, 29 | -96 0 -16, 30 | 0 48 -32, 31 | 0 24 -112, 32 | -48 0 -112, 33 | 48 0 -112, 34 | 0 -48 48, 35 | 0 -48 -32, 36 | 0 -24 -112 37 | ] 38 | } 39 | 40 | solid FALSE 41 | } 42 | 43 | appearance Appearance { 44 | material Material { 45 | shininess 0.2 46 | specularColor 1 1 1 47 | diffuseColor 0.8 0.8 0.9 48 | } 49 | } 50 | } 51 | 52 | NavigationInfo { type "EXAMINE" } 53 | 54 | Viewpoint { 55 | position 0 0 600 56 | } 57 | -------------------------------------------------------------------------------- /examples/models/elite/shuttle.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 4, -1, 7 | 0, 1, 12, -1, 8 | 0, 3, 12, -1, 9 | 0, 3, 7, -1, 10 | 0, 4, 7, -1, 11 | 1, 2, 12, -1, 12 | 1, 2, 5, -1, 13 | 1, 4, 5, -1, 14 | 2, 3, 12, -1, 15 | 2, 3, 6, -1, 16 | 2, 5, 6, -1, 17 | 3, 6, 7, -1, 18 | 4, 5, 6, 7, -1 19 | ] 20 | 21 | coord Coordinate { point [ 22 | 0 -17 23, 23 | -17 0 23, 24 | 0 18 23, 25 | 18 0 23, 26 | -20 -20 -27, 27 | -20 20 -27, 28 | 20 20 -27, 29 | 20 -20 -27, 30 | 5 0 -27, 31 | 0 -2 -27, 32 | -5 0 -27, 33 | 0 3 -27, 34 | 0 -9 35, 35 | 3 -1 31, 36 | 4 11 25, 37 | 11 4 25, 38 | -3 -1 31, 39 | -3 11 25, 40 | -10 4 25 41 | ] 42 | } 43 | 44 | solid FALSE 45 | } 46 | 47 | appearance Appearance { 48 | material Material { 49 | shininess 0.2 50 | specularColor 1 1 1 51 | diffuseColor 0.8 0.8 0.9 52 | } 53 | } 54 | } 55 | 56 | NavigationInfo { type "EXAMINE" } 57 | 58 | Viewpoint { 59 | position 0 0 600 60 | } 61 | -------------------------------------------------------------------------------- /examples/models/elite/sidewinder.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 4, -1, 7 | 0, 1, 5, -1, 8 | 0, 3, 4, -1, 9 | 0, 3, 5, -1, 10 | 1, 2, 4, -1, 11 | 1, 2, 5, -1, 12 | 2, 4, 3, 5, -1 13 | ] 14 | 15 | coord Coordinate { point [ 16 | -32 0 36, 17 | 32 0 36, 18 | 64 0 -28, 19 | -64 0 -28, 20 | 0 16 -28, 21 | 0 -16 -28, 22 | -12 6 -28, 23 | 12 6 -28, 24 | 12 -6 -28, 25 | -12 -6 -28 26 | ] 27 | } 28 | 29 | solid FALSE 30 | } 31 | 32 | appearance Appearance { 33 | material Material { 34 | shininess 0.2 35 | specularColor 1 1 1 36 | diffuseColor 0.8 0.8 0.9 37 | } 38 | } 39 | } 40 | 41 | NavigationInfo { type "EXAMINE" } 42 | 43 | Viewpoint { 44 | position 0 0 600 45 | } 46 | -------------------------------------------------------------------------------- /examples/models/elite/thargoid.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 9, 8, -1, 7 | 0, 1, 2, 3, 4, 5, 6, 7, -1, 8 | 0, 7, 15, 8, -1, 9 | 1, 2, 10, 9, -1, 10 | 2, 3, 11, 10, -1, 11 | 3, 4, 12, 11, -1, 12 | 4, 5, 13, 12, -1, 13 | 5, 6, 14, 13, -1, 14 | 6, 7, 15, 14, -1, 15 | 8, 9, 10, 11, 12, 13, 14, 15, -1 16 | ] 17 | 18 | coord Coordinate { point [ 19 | 32 -48 48, 20 | 32 -68 0, 21 | 32 -48 -48, 22 | 32 0 -68, 23 | 32 48 -48, 24 | 32 68 0, 25 | 32 48 48, 26 | 32 0 68, 27 | -24 -116 116, 28 | -24 -164 0, 29 | -24 -116 -116, 30 | -24 0 -164, 31 | -24 116 -116, 32 | -24 164 0, 33 | -24 116 116, 34 | -24 0 164, 35 | -24 64 80, 36 | -24 64 -80, 37 | -24 -64 -80, 38 | -24 -64 80 39 | ] 40 | } 41 | 42 | solid FALSE 43 | } 44 | 45 | appearance Appearance { 46 | material Material { 47 | shininess 0.2 48 | specularColor 1 1 1 49 | diffuseColor 0.8 0.8 0.9 50 | } 51 | } 52 | } 53 | 54 | NavigationInfo { type "EXAMINE" } 55 | 56 | Viewpoint { 57 | position 0 0 600 58 | } 59 | -------------------------------------------------------------------------------- /examples/models/elite/thargon.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 1, 2, 4, 0, 3, -1, 7 | 6, 7, 9, 5, 8, -1, 8 | 1, 3, 8, 6, -1, 9 | 3, 0, 5, 8, -1, 10 | 0, 4, 9, 5, -1, 11 | 4, 2, 7, 9, -1, 12 | 2, 1, 6, 7, -1 13 | ] 14 | 15 | coord Coordinate { point [ 16 | 9 0 -8, 17 | 9 -6 -26, 18 | 9 6 -26, 19 | 9 -10 -15, 20 | 9 10 -15, 21 | -9 0 40, 22 | -9 -24 -32, 23 | -9 24 -32, 24 | -9 -38 12, 25 | -9 38 12 26 | ] 27 | } 28 | 29 | solid FALSE 30 | } 31 | 32 | appearance Appearance { 33 | material Material { 34 | shininess 0.2 35 | specularColor 1 1 1 36 | diffuseColor 0.8 0.8 0.9 37 | } 38 | } 39 | } 40 | 41 | NavigationInfo { type "EXAMINE" } 42 | 43 | Viewpoint { 44 | position 0 0 600 45 | } 46 | -------------------------------------------------------------------------------- /examples/models/elite/transporter.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 8, 7, -1, 7 | 0, 1, 2, 3, 4, 5, 6, -1, 8 | 0, 6, 11, 7, -1, 9 | 1, 2, 9, 8, -1, 10 | 2, 3, 9, -1, 11 | 3, 4, 10, 14, 13, 9, -1, 12 | 4, 5, 10, -1, 13 | 5, 6, 11, 10, -1, 14 | 7, 8, 12, -1, 15 | 7, 11, 15, -1, 16 | 7, 12, 15, -1, 17 | 8, 9, 13, 12, -1, 18 | 10, 11, 15, 14, -1, 19 | 12, 13, 14, 15, -1 20 | ] 21 | 22 | coord Coordinate { point [ 23 | 0 10 -26, 24 | -25 4 -26, 25 | -28 -3 -26, 26 | -25 -8 -26, 27 | 26 -8 -26, 28 | 29 -3 -26, 29 | 26 4 -26, 30 | 0 6 12, 31 | -30 -1 12, 32 | -33 -8 12, 33 | 33 -8 12, 34 | 30 -1 12, 35 | -11 -2 30, 36 | -13 -8 30, 37 | 14 -8 30, 38 | 11 -2 30, 39 | -5 6 2, 40 | -18 3 2, 41 | -5 7 -7, 42 | -18 4 -7, 43 | -11 6 -14, 44 | -11 5 -7, 45 | 5 7 -14, 46 | 18 4 -14, 47 | 11 5 -7, 48 | 5 6 -3, 49 | 18 3 -3, 50 | 11 4 8, 51 | 11 5 -3, 52 | -16 -8 -13, 53 | -16 -8 16, 54 | 17 -8 -13, 55 | 17 -8 16, 56 | -13 -3 -26, 57 | 13 -3 -26, 58 | 9 3 -26, 59 | -8 3 -26 60 | ] 61 | } 62 | 63 | solid FALSE 64 | } 65 | 66 | appearance Appearance { 67 | material Material { 68 | shininess 0.2 69 | specularColor 1 1 1 70 | diffuseColor 0.8 0.8 0.9 71 | } 72 | } 73 | } 74 | 75 | NavigationInfo { type "EXAMINE" } 76 | 77 | Viewpoint { 78 | position 0 0 600 79 | } 80 | -------------------------------------------------------------------------------- /examples/models/elite/viper.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 8, 4, -1, 7 | 0, 1, 7, 3, -1, 8 | 0, 2, 6, 4, -1, 9 | 0, 2, 5, 3, -1, 10 | 1, 7, 8, -1, 11 | 2, 5, 6, -1, 12 | 3, 5, 6, 4, 8, 7, -1 13 | ] 14 | 15 | coord Coordinate { point [ 16 | 0 0 72, 17 | 0 16 24, 18 | 0 -16 24, 19 | 48 0 -24, 20 | -48 0 -24, 21 | 24 -16 -24, 22 | -24 -16 -24, 23 | 24 16 -24, 24 | -24 16 -24, 25 | -32 0 -24, 26 | 32 0 -24, 27 | 8 8 -24, 28 | -8 8 -24, 29 | -8 -8 -24, 30 | 8 -8 -24 31 | ] 32 | } 33 | 34 | solid FALSE 35 | } 36 | 37 | appearance Appearance { 38 | material Material { 39 | shininess 0.2 40 | specularColor 1 1 1 41 | diffuseColor 0.8 0.8 0.9 42 | } 43 | } 44 | } 45 | 46 | NavigationInfo { type "EXAMINE" } 47 | 48 | Viewpoint { 49 | position 0 0 600 50 | } 51 | -------------------------------------------------------------------------------- /examples/models/elite/worm.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 5, 7, 6, 4, -1, 7 | 0, 1, 3, 2, -1, 8 | 0, 2, 4, -1, 9 | 1, 3, 5, -1, 10 | 2, 3, 9, 8, -1, 11 | 2, 8, 6, 4, -1, 12 | 3, 9, 7, 5, -1, 13 | 7, 6, 8, 9, -1 14 | ] 15 | 16 | coord Coordinate { point [ 17 | 10 -10 35, 18 | -10 -10 35, 19 | 5 6 15, 20 | -5 6 15, 21 | 15 -10 25, 22 | -15 -10 25, 23 | 26 -10 -25, 24 | -26 -10 -25, 25 | 8 14 -25, 26 | -8 14 -25 27 | ] 28 | } 29 | 30 | solid FALSE 31 | } 32 | 33 | appearance Appearance { 34 | material Material { 35 | shininess 0.2 36 | specularColor 1 1 1 37 | diffuseColor 0.8 0.8 0.9 38 | } 39 | } 40 | } 41 | 42 | NavigationInfo { type "EXAMINE" } 43 | 44 | Viewpoint { 45 | position 0 0 600 46 | } 47 | -------------------------------------------------------------------------------- /examples/models/elite2/bug.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 2, 9, -1, 7 | 0, 1, 8, -1, 8 | 0, 8, 7, 13, -1, 9 | 0, 9, 13, -1, 10 | 1, 2, 3, 4, -1, 11 | 1, 4, 5, 8, -1, 12 | 2, 3, 10, 9, -1, 13 | 3, 4, 11, 10, -1, 14 | 4, 5, 11, -1, 15 | 5, 6, 7, 8, -1, 16 | 5, 6, 12, 11, -1, 17 | 6, 7, 13, 12, -1, 18 | 9, 10, 12, 13, -1, 19 | 10, 11, 12, -1 20 | ] 21 | 22 | coord Coordinate { point [ 23 | 0 0 30, 24 | -14 -14 30, 25 | -28 0 10, 26 | -28 0 -10, 27 | -14 -14 -30, 28 | 14 -14 -30, 29 | 28 0 -10, 30 | 28 0 10, 31 | 14 -14 30, 32 | -14 14 10, 33 | -14 14 -10, 34 | 0 0 -30, 35 | 14 14 -10, 36 | 14 14 10, 37 | -4 11 15, 38 | 4 11 15 39 | ] 40 | } 41 | 42 | solid FALSE 43 | } 44 | 45 | appearance Appearance { 46 | material Material { 47 | shininess 0.2 48 | specularColor 1 1 1 49 | diffuseColor 0.8 0.8 0.9 50 | } 51 | } 52 | } 53 | 54 | NavigationInfo { type "EXAMINE" } 55 | 56 | Viewpoint { 57 | position 0 0 600 58 | } 59 | -------------------------------------------------------------------------------- /examples/models/elite2/cat.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 4, 5, -1, 7 | 2, 8, 7, 1, -1, 8 | 0, 3, 6, 5, -1, 9 | 9, 10, 6, 5, -1, 10 | 0, 3, 2, 1, -1, 11 | 1, 4, 2, -1, 12 | 2, 3, 6, 4, -1, 13 | 4, 6, 5, -1 14 | ] 15 | 16 | coord Coordinate { point [ 17 | 0 10 67, 18 | -20 0 40, 19 | -40 0 -40, 20 | 0 30 -40, 21 | 0 -30 -40, 22 | 20 0 40, 23 | 40 0 -40, 24 | -36 0 56, 25 | -60 0 -20, 26 | 36 0 56, 27 | 60 0 -20 28 | ] 29 | } 30 | 31 | solid FALSE 32 | } 33 | 34 | appearance Appearance { 35 | material Material { 36 | shininess 0.2 37 | specularColor 1 1 1 38 | diffuseColor 0.8 0.8 0.9 39 | } 40 | } 41 | } 42 | 43 | NavigationInfo { type "EXAMINE" } 44 | 45 | Viewpoint { 46 | position 0 0 600 47 | } 48 | -------------------------------------------------------------------------------- /examples/models/elite2/delta.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 3, -1, 7 | 0, 1, 2, -1, 8 | 0, 2, 3, -1, 9 | 1, 2, 3, -1, 10 | 1, 4, 7, -1, 11 | 2, 5, 8, -1, 12 | 3, 6, 9, -1 13 | ] 14 | 15 | coord Coordinate { point [ 16 | 0 0 40, 17 | 0 20 -20, 18 | 17 -10 -20, 19 | -17 -10 -20, 20 | 0 30 -20, 21 | 29 -18 -20, 22 | -29 -18 -20, 23 | 0 12 4, 24 | 5 -3 22, 25 | -5 -3 22 26 | ] 27 | } 28 | 29 | solid FALSE 30 | } 31 | 32 | appearance Appearance { 33 | material Material { 34 | shininess 0.2 35 | specularColor 1 1 1 36 | diffuseColor 0.8 0.8 0.9 37 | } 38 | } 39 | } 40 | 41 | NavigationInfo { type "EXAMINE" } 42 | 43 | Viewpoint { 44 | position 0 0 600 45 | } 46 | -------------------------------------------------------------------------------- /examples/models/elite2/drake.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 2, 4, -1, 7 | 0, 1, 3, -1, 8 | 0, 3, 5, -1, 9 | 0, 4, 6, -1, 10 | 0, 5, 8, -1, 11 | 0, 6, 7, 8, -1, 12 | 1, 2, 3, -1, 13 | 2, 3, 5, 7, 6, 4, -1, 14 | 7, 5, 8, -1 15 | ] 16 | 17 | coord Coordinate { point [ 18 | 0 18 67, 19 | -70 -6 -3, 20 | -90 -14 -33, 21 | -50 18 -33, 22 | -60 -6 -33, 23 | 50 18 -33, 24 | 60 -6 -33, 25 | 90 -14 -33, 26 | 70 -6 -3, 27 | -70 -6 47, 28 | 70 -6 47, 29 | -37 10 -33, 30 | -12 10 -33, 31 | -37 2 -33, 32 | -12 2 -33, 33 | 13 10 -33, 34 | 38 10 -33, 35 | 13 2 -33, 36 | 38 2 -33 37 | ] 38 | } 39 | 40 | solid FALSE 41 | } 42 | 43 | appearance Appearance { 44 | material Material { 45 | shininess 0.2 46 | specularColor 1 1 1 47 | diffuseColor 0.8 0.8 0.9 48 | } 49 | } 50 | } 51 | 52 | Shape { 53 | geometry IndexedLineSet { 54 | coordIndex [ 55 | 0, 1, -1, 56 | 2, 3, -1 57 | ] 58 | 59 | coord Coordinate { point [ 60 | -70 -6 47, 61 | -70 -6 -3, 62 | 70 -6 47, 63 | 70 -6 -3 64 | ] 65 | } 66 | } 67 | 68 | appearance Appearance { 69 | material Material { 70 | emissiveColor 0.8 0.8 0.9 71 | } 72 | } 73 | 74 | } 75 | 76 | NavigationInfo { type "EXAMINE" } 77 | 78 | Viewpoint { 79 | position 0 0 600 80 | } 81 | -------------------------------------------------------------------------------- /examples/models/elite2/gnat.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 5, -1, 7 | 0, 1, 2, -1, 8 | 0, 2, 4, -1, 9 | 0, 3, 5, -1, 10 | 0, 3, 4, -1, 11 | 2, 4, 5, -1, 12 | 5, 1, 2, -1, 13 | 5, 3, 4, -1 14 | ] 15 | 16 | coord Coordinate { point [ 17 | 0 20 27, 18 | 80 0 -3, 19 | 80 0 -53, 20 | -80 0 -3, 21 | -80 0 -53, 22 | 0 -20 27, 23 | 80 0 107, 24 | -80 0 107, 25 | 0 8 27, 26 | 0 -8 27, 27 | 32 0 15, 28 | -32 0 15 29 | ] 30 | } 31 | 32 | solid FALSE 33 | } 34 | 35 | appearance Appearance { 36 | material Material { 37 | shininess 0.2 38 | specularColor 1 1 1 39 | diffuseColor 0.8 0.8 0.9 40 | } 41 | } 42 | } 43 | 44 | Shape { 45 | geometry IndexedLineSet { 46 | coordIndex [ 47 | 0, 1, -1, 48 | 2, 3, -1 49 | ] 50 | 51 | coord Coordinate { point [ 52 | 80 0 -3, 53 | 80 0 107, 54 | -80 0 -3, 55 | -80 0 107 56 | ] 57 | } 58 | } 59 | 60 | appearance Appearance { 61 | material Material { 62 | emissiveColor 0.8 0.8 0.9 63 | } 64 | } 65 | 66 | } 67 | 68 | NavigationInfo { type "EXAMINE" } 69 | 70 | Viewpoint { 71 | position 0 0 600 72 | } 73 | -------------------------------------------------------------------------------- /examples/models/elite2/griffin1.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 2, 5, -1, 7 | 0, 1, 4, -1, 8 | 0, 4, 3, 6, -1, 9 | 0, 5, 6, -1, 10 | 1, 2, 7, -1, 11 | 2, 5, 7, -1, 12 | 6, 3, 8, -1, 13 | 5, 6, 8, 7, -1, 14 | 3, 4, 8, -1, 15 | 7, 1, 4, 8, -1 16 | ] 17 | 18 | coord Coordinate { point [ 19 | 0 15 27, 20 | -30 0 67, 21 | -150 -30 -33, 22 | 150 -30 -33, 23 | 30 0 67, 24 | -36 10 -33, 25 | 36 10 -33, 26 | -60 -16 -33, 27 | 60 -16 -33, 28 | 0 0 67, 29 | 0 0 87 30 | ] 31 | } 32 | 33 | solid FALSE 34 | } 35 | 36 | appearance Appearance { 37 | material Material { 38 | shininess 0.2 39 | specularColor 1 1 1 40 | diffuseColor 0.8 0.8 0.9 41 | } 42 | } 43 | } 44 | 45 | Shape { 46 | geometry IndexedLineSet { 47 | coordIndex [ 48 | 0, 1, -1 49 | ] 50 | 51 | coord Coordinate { point [ 52 | 0 0 67, 53 | 0 0 87 54 | ] 55 | } 56 | } 57 | 58 | appearance Appearance { 59 | material Material { 60 | emissiveColor 0.8 0.8 0.9 61 | } 62 | } 63 | } 64 | 65 | NavigationInfo { type "EXAMINE" } 66 | 67 | Viewpoint { 68 | position 0 0 600 69 | } 70 | -------------------------------------------------------------------------------- /examples/models/elite2/griffin2.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 2, 5, -1, 7 | 0, 1, 4, -1, 8 | 0, 4, 3, 6, -1, 9 | 0, 5, 6, -1, 10 | 1, 2, 7, -1, 11 | 2, 5, 7, -1, 12 | 6, 3, 8, -1, 13 | 5, 6, 8, 7, -1, 14 | 3, 4, 8, -1, 15 | 7, 1, 4, 8, -1 16 | ] 17 | 18 | coord Coordinate { point [ 19 | 0 14 27, 20 | -30 0 67, 21 | -150 -30 -3, 22 | 150 -30 -3, 23 | 30 0 67, 24 | -36 10 -33, 25 | 36 10 -33, 26 | -60 -16 -33, 27 | 60 -16 -33, 28 | 0 0 67, 29 | 0 0 87, 30 | -30 -9 -33, 31 | 30 -9 -33, 32 | 30 4 -33, 33 | -30 4 -33 34 | ] 35 | } 36 | 37 | solid FALSE 38 | } 39 | 40 | appearance Appearance { 41 | material Material { 42 | shininess 0.2 43 | specularColor 1 1 1 44 | diffuseColor 0.8 0.8 0.9 45 | } 46 | } 47 | } 48 | 49 | Shape { 50 | geometry IndexedLineSet { 51 | coordIndex [ 52 | 0, 1, -1 53 | ] 54 | 55 | coord Coordinate { point [ 56 | 0 0 67, 57 | 0 0 87 58 | ] 59 | } 60 | } 61 | 62 | appearance Appearance { 63 | material Material { 64 | emissiveColor 0.8 0.8 0.9 65 | } 66 | } 67 | } 68 | 69 | NavigationInfo { type "EXAMINE" } 70 | 71 | Viewpoint { 72 | position 0 0 600 73 | } 74 | -------------------------------------------------------------------------------- /examples/models/elite2/thargon1.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 5, -1, 7 | 0, 1, 2, 3, 4, -1, 8 | 0, 5, 4, -1, 9 | 1, 2, 5, -1, 10 | 2, 3, 5, -1, 11 | 3, 4, 5, -1 12 | ] 13 | 14 | coord Coordinate { point [ 15 | 0 -5 55, 16 | 48 -5 20, 17 | 29 -5 -35, 18 | -29 -5 -35, 19 | -48 -5 20, 20 | 0 15 -5, 21 | 0 4 28, 22 | 19 5 11, 23 | 10 7 12, 24 | -19 5 11, 25 | -10 7 12 26 | ] 27 | } 28 | 29 | solid FALSE 30 | } 31 | 32 | appearance Appearance { 33 | material Material { 34 | shininess 0.2 35 | specularColor 1 1 1 36 | diffuseColor 0.8 0.8 0.9 37 | } 38 | } 39 | } 40 | 41 | NavigationInfo { type "EXAMINE" } 42 | 43 | Viewpoint { 44 | position 0 0 600 45 | } 46 | -------------------------------------------------------------------------------- /examples/models/elite2/thargon2.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 5, -1, 7 | 0, 1, 2, 3, 4, -1, 8 | 0, 5, 4, -1, 9 | 1, 2, 11, 5, -1, 10 | 2, 3, 11, -1, 11 | 3, 4, 5, 11, -1 12 | ] 13 | 14 | coord Coordinate { point [ 15 | 0 -5 50, 16 | 48 -5 15, 17 | 29 -5 -40, 18 | -29 -5 -40, 19 | -48 -5 15, 20 | 0 15 10, 21 | 0 4 32, 22 | 19 5 16, 23 | 10 7 19, 24 | -19 5 16, 25 | -10 7 19, 26 | 0 11 -20, 27 | 6 1 -32, 28 | 12 -2 -36, 29 | -6 1 -32, 30 | -12 -2 -36 31 | ] 32 | } 33 | 34 | solid FALSE 35 | } 36 | 37 | appearance Appearance { 38 | material Material { 39 | shininess 0.2 40 | specularColor 1 1 1 41 | diffuseColor 0.8 0.8 0.9 42 | } 43 | } 44 | } 45 | 46 | NavigationInfo { type "EXAMINE" } 47 | 48 | Viewpoint { 49 | position 0 0 600 50 | } 51 | -------------------------------------------------------------------------------- /examples/models/elite2/thargon3.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 5, -1, 7 | 0, 1, 2, 3, 4, -1, 8 | 0, 5, 6, 7, 8, -1, 9 | 1, 2, 6, 5, -1, 10 | 2, 3, 7, 6, -1, 11 | 3, 4, 8, 7, -1, 12 | 4, 0, 8, -1 13 | ] 14 | 15 | coord Coordinate { point [ 16 | 0 -10 90, 17 | 76 -10 35, 18 | 47 -10 -55, 19 | -47 -10 -55, 20 | -76 -10 35, 21 | 30 14 8, 22 | 9 22 -19, 23 | -9 22 -19, 24 | -30 14 8, 25 | 0 6 36, 26 | 8 16 3, 27 | -8 16 3, 28 | 0 12 14 29 | ] 30 | } 31 | 32 | solid FALSE 33 | } 34 | 35 | appearance Appearance { 36 | material Material { 37 | shininess 0.2 38 | specularColor 1 1 1 39 | diffuseColor 0.8 0.8 0.9 40 | } 41 | } 42 | } 43 | 44 | NavigationInfo { type "EXAMINE" } 45 | 46 | Viewpoint { 47 | position 0 0 600 48 | } 49 | -------------------------------------------------------------------------------- /examples/models/elitea/bushmaster.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 4, -1, 7 | 0, 1, 3, -1, 8 | 0, 2, 4, -1, 9 | 0, 2, 3, -1, 10 | 1, 3, 5, 6, -1, 11 | 1, 4, 6, -1, 12 | 2, 3, 5, 7, -1, 13 | 2, 4, 7, -1, 14 | 4, 6, 5, 7, -1 15 | ] 16 | 17 | coord Coordinate { point [ 18 | 0 0 60, 19 | 50 0 20, 20 | -50 0 20, 21 | 0 20 0, 22 | 0 -20 -40, 23 | 0 14 -40, 24 | 40 0 -40, 25 | -40 0 -40, 26 | 0 4 -40, 27 | 10 0 -40, 28 | 0 -4 -40, 29 | -10 0 -40 30 | ] 31 | } 32 | 33 | solid FALSE 34 | } 35 | 36 | appearance Appearance { 37 | material Material { 38 | shininess 0.2 39 | specularColor 1 1 1 40 | diffuseColor 0.8 0.8 0.9 41 | } 42 | } 43 | } 44 | 45 | NavigationInfo { type "EXAMINE" } 46 | 47 | Viewpoint { 48 | position 0 0 600 49 | } -------------------------------------------------------------------------------- /examples/models/elitea/chameleon.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 9, -1, 7 | 0, 1, 8, -1, 8 | 0, 2, 7, 9, -1, 9 | 0, 2, 3, 8, -1, 10 | 1, 5, 6, 9, -1, 11 | 1, 5, 4, 8, -1, 12 | 2, 3, 11, 10, -1, 13 | 2, 7, 13, 10, -1, 14 | 3, 8, 4, 11, -1, 15 | 4, 5, 12, 11, -1, 16 | 5, 6, 13, 12, -1, 17 | 6, 9, 7, 13, -1, 18 | 10, 11, 12, 13, -1 19 | ] 20 | 21 | coord Coordinate { point [ 22 | -18 0 110, 23 | 18 0 110, 24 | -40 0 0, 25 | -8 24 0, 26 | 8 24 0, 27 | 40 0 0, 28 | 8 -24 0, 29 | -8 -24 0, 30 | 0 24 40, 31 | 0 -24 40, 32 | -32 0 -40, 33 | 0 24 -40, 34 | 32 0 -40, 35 | 0 -24 -40, 36 | -8 0 -40, 37 | 0 8 -40, 38 | 8 0 -40, 39 | 0 -8 -40 40 | ] 41 | } 42 | 43 | solid FALSE 44 | } 45 | 46 | appearance Appearance { 47 | material Material { 48 | shininess 0.2 49 | specularColor 1 1 1 50 | diffuseColor 0.8 0.8 0.9 51 | } 52 | } 53 | } 54 | 55 | NavigationInfo { type "EXAMINE" } 56 | 57 | Viewpoint { 58 | position 0 0 600 59 | } 60 | -------------------------------------------------------------------------------- /examples/models/elitea/ghavial.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 2, 4, -1, 7 | 0, 2, 3, 1, -1, 8 | 0, 4, 8, -1, 9 | 0, 8, 1, -1, 10 | 1, 8, 6, -1, 11 | 3, 1, 6, -1, 12 | 3, 2, 5, 7, -1, 13 | 4, 2, 5, -1, 14 | 4, 5, 8, -1, 15 | 5, 7, 8, -1, 16 | 6, 3, 7, -1, 17 | 6, 8, 7, -1 18 | ] 19 | 20 | coord Coordinate { point [ 21 | 30 0 100, 22 | -30 0 100, 23 | 40 30 -26, 24 | -40 30 -26, 25 | 60 0 -20, 26 | 40 0 -60, 27 | -60 0 -20, 28 | -40 0 -60, 29 | 0 -30 -20, 30 | 10 24 0, 31 | -10 24 0, 32 | 0 22 10 33 | ] 34 | } 35 | 36 | solid FALSE 37 | } 38 | 39 | appearance Appearance { 40 | material Material { 41 | shininess 0.2 42 | specularColor 1 1 1 43 | diffuseColor 0.8 0.8 0.9 44 | } 45 | } 46 | } 47 | 48 | NavigationInfo { type "EXAMINE" } 49 | 50 | Viewpoint { 51 | position 0 0 600 52 | } 53 | -------------------------------------------------------------------------------- /examples/models/elitea/iguana.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 4, -1, 7 | 0, 1, 2, -1, 8 | 0, 2, 3, -1, 9 | 0, 3, 4, -1, 10 | 1, 2, 6, 5, -1, 11 | 1, 4, 8, 5, -1, 12 | 2, 3, 7, 6, -1, 13 | 3, 4, 8, 7, -1, 14 | 5, 6, 7, -1, 15 | 5, 7, 8, -1 16 | ] 17 | 18 | coord Coordinate { point [ 19 | 0 0 90, 20 | 0 20 30, 21 | -40 0 10, 22 | 0 -20 30, 23 | 40 0 10, 24 | 0 20 -40, 25 | -40 0 -30, 26 | 0 -20 -40, 27 | 40 0 -30, 28 | -40 0 40, 29 | 40 0 40, 30 | 0 8 -40, 31 | -16 0 -36, 32 | 0 -8 -40, 33 | 16 0 -36 34 | ] 35 | } 36 | 37 | solid FALSE 38 | } 39 | 40 | appearance Appearance { 41 | material Material { 42 | shininess 0.2 43 | specularColor 1 1 1 44 | diffuseColor 0.8 0.8 0.9 45 | } 46 | } 47 | } 48 | 49 | Shape { 50 | geometry IndexedLineSet { 51 | coordIndex [ 52 | 0, 1, -1, 53 | 2, 3, -1 54 | ] 55 | 56 | coord Coordinate { point [ 57 | -40 0 10, 58 | -40 0 40, 59 | 40 0 10, 60 | 40 0 40 61 | ] 62 | } 63 | } 64 | 65 | appearance Appearance { 66 | material Material { 67 | emissiveColor 0.8 0.8 0.9 68 | } 69 | } 70 | 71 | } 72 | 73 | 74 | NavigationInfo { type "EXAMINE" } 75 | 76 | Viewpoint { 77 | position 0 0 600 78 | } 79 | -------------------------------------------------------------------------------- /examples/models/elitea/monitor.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 3, -1, 7 | 0, 1, 2, -1, 8 | 0, 2, 4, -1, 9 | 0, 3, 10, -1, 10 | 0, 10, 4, -1, 11 | 1, 2, 8, 7, -1, 12 | 1, 3, 5, 7, -1, 13 | 2, 4, 6, 8, -1, 14 | 3, 5, 9, 10, -1, 15 | 4, 10, 9, 6, -1, 16 | 5, 9, 6, 8, 7, -1, 17 | ] 18 | 19 | coord Coordinate { point [ 20 | 0 10 140, 21 | 20 40 -20, 22 | -20 40 -20, 23 | 50 0 10, 24 | -50 0 10, 25 | 30 4 -60, 26 | -30 4 -60, 27 | 18 20 -60, 28 | -18 20 -60, 29 | 0 -20 -60, 30 | 0 -40 10, 31 | 0 34 10, 32 | 0 26 50, 33 | 20 -10 60, 34 | 10 0 100, 35 | -20 -10 60, 36 | -10 0 100 37 | ] 38 | } 39 | 40 | solid FALSE 41 | } 42 | 43 | appearance Appearance { 44 | material Material { 45 | shininess 0.2 46 | specularColor 1 1 1 47 | diffuseColor 0.8 0.8 0.9 48 | } 49 | } 50 | } 51 | 52 | NavigationInfo { type "EXAMINE" } 53 | 54 | Viewpoint { 55 | position 0 0 600 56 | } 57 | -------------------------------------------------------------------------------- /examples/models/elitea/ophidian.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 15, -1, 7 | 0, 1, 2, -1, 8 | 0, 2, 5, 3, -1, 9 | 0, 3, 15, -1, 10 | 1, 2, 5, 4, -1, 11 | 1, 4, 15, -1, 12 | 3, 5, 7, 8, -1, 13 | 8, 9, 10, -1, 14 | 3, 15, 14, 8, -1, 15 | 4, 5, 6, 11, -1, 16 | 11, 12, 13, -1, 17 | 4, 15, 14, 11, -1, 18 | 5, 6, 7, -1, 19 | 6, 7, 8, 14, 11, -1 20 | ] 21 | 22 | coord Coordinate { point [ 23 | -20 0 70, 24 | 20 0 70, 25 | 0 10 40, 26 | -30 0 30, 27 | 30 0 30, 28 | 0 16 10, 29 | 20 10 -50, 30 | -20 10 -50, 31 | -30 0 -50, 32 | -40 0 -50, 33 | -30 0 -30, 34 | 30 0 -50, 35 | 40 0 -50, 36 | 30 0 -30, 37 | 0 -10 -50, 38 | 0 -16 20, 39 | 10 4 -50, 40 | 10 -2 -50, 41 | -10 -2 -50, 42 | -10 4 -50 43 | ] 44 | } 45 | 46 | solid FALSE 47 | } 48 | 49 | appearance Appearance { 50 | material Material { 51 | shininess 0.2 52 | specularColor 1 1 1 53 | diffuseColor 0.8 0.8 0.9 54 | } 55 | } 56 | } 57 | 58 | NavigationInfo { type "EXAMINE" } 59 | 60 | Viewpoint { 61 | position 0 0 600 62 | } 63 | -------------------------------------------------------------------------------- /examples/models/elitea/salamander.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 8, -1, 7 | 0, 1, 7, -1, 8 | 0, 2, 8, -1, 9 | 0, 2, 7, -1, 10 | 1, 3, 8, -1, 11 | 1, 3, 7, -1, 12 | 2, 4, 8, -1, 13 | 2, 4, 7, -1, 14 | 3, 5, 8, -1, 15 | 3, 5, 7, -1, 16 | 4, 6, 8, -1, 17 | 4, 6, 7, -1, 18 | 5, 7, 6, 8, -1 19 | ] 20 | 21 | coord Coordinate { point [ 22 | 0 0 60, 23 | 40 0 40, 24 | -40 0 40, 25 | 60 0 0, 26 | -60 0 0, 27 | 70 0 -40, 28 | -70 0 -40, 29 | 0 20 -40, 30 | 0 -20 -40, 31 | -10 6 -40, 32 | -10 -6 -40, 33 | -20 0 -40, 34 | 10 6 -40, 35 | 10 -6 -40, 36 | 20 0 -40 37 | ] 38 | } 39 | 40 | solid FALSE 41 | } 42 | 43 | appearance Appearance { 44 | material Material { 45 | shininess 0.2 46 | specularColor 1 1 1 47 | diffuseColor 0.8 0.8 0.9 48 | } 49 | } 50 | } 51 | 52 | NavigationInfo { type "EXAMINE" } 53 | 54 | Viewpoint { 55 | position 0 0 600 56 | } 57 | -------------------------------------------------------------------------------- /examples/models/elitea/shuttlev.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 5, 2, -1, 7 | 0, 1, 8, 4, -1, 8 | 0, 2, 6, 3, -1, 9 | 0, 3, 7, 4, -1, 10 | 1, 5, 9, 8, -1, 11 | 2, 5, 10, 6, -1, 12 | 3, 6, 11, 7, -1, 13 | 4, 7, 12, 8, -1, 14 | 5, 9, 10, -1, 15 | 6, 10, 11, -1, 16 | 7, 11, 12, -1, 17 | 8, 9, 12, -1, 18 | 9, 10, 11, 12, -1 19 | ] 20 | 21 | coord Coordinate { point [ 22 | 0 0 40, 23 | 0 20 30, 24 | -20 0 30, 25 | 0 -20 30, 26 | 20 0 30, 27 | -20 20 20, 28 | -20 -20 20, 29 | 20 -20 20, 30 | 20 20 20, 31 | 0 20 -40, 32 | -20 0 -40, 33 | 0 -20 -40, 34 | 20 0 -40, 35 | -4 4 -40, 36 | -4 -4 -40, 37 | 4 -4 -40, 38 | 4 4 -40 39 | ] 40 | } 41 | 42 | solid FALSE 43 | } 44 | 45 | appearance Appearance { 46 | material Material { 47 | shininess 0.2 48 | specularColor 1 1 1 49 | diffuseColor 0.8 0.8 0.9 50 | } 51 | } 52 | } 53 | 54 | NavigationInfo { type "EXAMINE" } 55 | 56 | Viewpoint { 57 | position 0 0 600 58 | } 59 | -------------------------------------------------------------------------------- /examples/models/misc/amm.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 3, -1, 7 | 0, 1, 2, -1, 8 | 0, 2, 3, -1, 9 | 1, 2, 5, 4, -1, 10 | 1, 3, 6, 4, -1, 11 | 2, 3, 6, 5, -1, 12 | 4, 5, 6, -1, 13 | 4, 7, 10, -1, 14 | 5, 8, 11, -1, 15 | 6, 9, 12, -1 16 | ] 17 | 18 | coord Coordinate { point [ 19 | 0 -2 27, 20 | -4 -2 15, 21 | 0 5 15, 22 | 4 -2 15, 23 | -4 -2 -15, 24 | 0 5 -15, 25 | 4 -2 -15, 26 | -9 -5 -15, 27 | 0 11 -15, 28 | 9 -5 -15, 29 | -4 -2 -3, 30 | 0 5 -3, 31 | 4 -2 -3 32 | ] 33 | } 34 | 35 | solid FALSE 36 | } 37 | 38 | appearance Appearance { 39 | material Material { 40 | shininess 0.2 41 | specularColor 1 1 1 42 | diffuseColor 0.8 0.8 0.9 43 | } 44 | } 45 | } 46 | 47 | NavigationInfo { type "EXAMINE" } 48 | 49 | Viewpoint { 50 | position 0 0 400 51 | } 52 | -------------------------------------------------------------------------------- /examples/models/misc/asteroid.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 6, -1, 7 | 0, 1, 7, -1, 8 | 0, 4, 5, -1, 9 | 0, 4, 7, -1, 10 | 0, 5, 6, -1, 11 | 1, 2, 6, -1, 12 | 1, 2, 8, -1, 13 | 1, 7, 8, -1, 14 | 2, 3, 5, -1, 15 | 2, 3, 8, -1, 16 | 2, 5, 6, -1, 17 | 3, 4, 5, -1, 18 | 3, 4, 7, -1, 19 | 3, 7, 8, -1 20 | ] 21 | 22 | coord Coordinate { point [ 23 | 0 80 0, 24 | -80 -10 0, 25 | 0 -80 0, 26 | 70 -40 0, 27 | 60 50 0, 28 | 50 0 60, 29 | -40 0 70, 30 | 0 30 -75, 31 | 0 -50 -60 32 | ] 33 | } 34 | 35 | solid FALSE 36 | } 37 | 38 | appearance Appearance { 39 | material Material { 40 | shininess 0.2 41 | specularColor 1 1 1 42 | diffuseColor 0.8 0.8 0.9 43 | } 44 | } 45 | } 46 | 47 | NavigationInfo { type "EXAMINE" } 48 | 49 | Viewpoint { 50 | position 0 0 600 51 | } 52 | -------------------------------------------------------------------------------- /examples/models/misc/boulder.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 6, -1, 7 | 0, 1, 5, -1, 8 | 0, 5, 4, -1, 9 | 0, 6, 4, -1, 10 | 1, 2, 6, -1, 11 | 1, 2, 5, -1, 12 | 2, 3, 6, -1, 13 | 2, 3, 5, -1, 14 | 3, 4, 6, -1, 15 | 3, 4, 5, -1 16 | ] 17 | 18 | coord Coordinate { point [ 19 | -18 37 -11, 20 | 30 7 12, 21 | 28 -7 -12, 22 | 2 0 -39, 23 | -28 34 -30, 24 | 5 -10 13, 25 | 20 17 -30 26 | ] 27 | } 28 | 29 | solid FALSE 30 | } 31 | 32 | appearance Appearance { 33 | material Material { 34 | shininess 0.2 35 | specularColor 1 1 1 36 | diffuseColor 0.8 0.8 0.9 37 | } 38 | } 39 | } 40 | 41 | NavigationInfo { type "EXAMINE" } 42 | 43 | Viewpoint { 44 | position 0 0 600 45 | } 46 | -------------------------------------------------------------------------------- /examples/models/misc/cargo.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 2, 3, 4, -1, 7 | 0, 1, 6, 5, -1, 8 | 0, 4, 9, 5, -1, 9 | 1, 2, 7, 6, -1, 10 | 2, 3, 8, 7, -1, 11 | 3, 4, 9, 8, -1, 12 | 5, 6, 7, 8, 9, -1 13 | ] 14 | 15 | coord Coordinate { point [ 16 | 24 16 0, 17 | 24 5 15, 18 | 24 -13 9, 19 | 24 -13 -9, 20 | 24 5 -15, 21 | -24 16 0, 22 | -24 5 15, 23 | -24 -13 9, 24 | -24 -13 -9, 25 | -24 5 -15 26 | ] 27 | } 28 | 29 | solid FALSE 30 | } 31 | 32 | appearance Appearance { 33 | material Material { 34 | shininess 0.2 35 | specularColor 1 1 1 36 | diffuseColor 0.8 0.8 0.9 37 | } 38 | } 39 | } 40 | 41 | NavigationInfo { type "EXAMINE" } 42 | 43 | Viewpoint { 44 | position 0 0 600 45 | } 46 | -------------------------------------------------------------------------------- /examples/models/misc/coriolis.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 2, 3, -1, 7 | 0, 1, 5, -1, 8 | 0, 3, 4, -1, 9 | 0, 4, 8, 5, -1, 10 | 1, 2, 6, -1, 11 | 1, 6, 9, 5, -1, 12 | 2, 3, 7, -1, 13 | 2, 6, 10, 7, -1, 14 | 3, 4, 11, 7, -1, 15 | 4, 8, 11, -1, 16 | 5, 8, 9, -1, 17 | 6, 9, 10, -1, 18 | 7, 10, 11, -1, 19 | 8, 9, 10, 11, -1 20 | ] 21 | 22 | coord Coordinate { point [ 23 | 160 0 160, 24 | 0 160 160, 25 | -160 0 160, 26 | 0 -160 160, 27 | 160 -160 0, 28 | 160 160 0, 29 | -160 160 0, 30 | -160 -160 0, 31 | 160 0 -160, 32 | 0 160 -160, 33 | -160 0 -160, 34 | 0 -160 -160, 35 | 10 -30 160, 36 | 10 30 160, 37 | -10 30 160, 38 | -10 -30 160 39 | ] 40 | } 41 | 42 | solid FALSE 43 | } 44 | 45 | appearance Appearance { 46 | material Material { 47 | shininess 0.2 48 | specularColor 1 1 1 49 | diffuseColor 0.8 0.8 0.9 50 | } 51 | } 52 | } 53 | 54 | NavigationInfo { type "EXAMINE" } 55 | 56 | Viewpoint { 57 | position 0 0 1000 58 | } 59 | -------------------------------------------------------------------------------- /examples/models/misc/dodo.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 6, 10, 5, -1, 7 | 0, 1, 2, 3, 4, -1, 8 | 0, 5, 14, 9, 4, -1, 9 | 1, 2, 7, 11, 6, -1, 10 | 2, 3, 8, 12, 7, -1, 11 | 3, 4, 9, 13, 8, -1, 12 | 5, 10, 15, 19, 14, -1, 13 | 6, 11, 16, 15, 10, -1, 14 | 7, 12, 17, 16, 11, -1, 15 | 8, 13, 18, 17, 12, -1, 16 | 9, 14, 19, 18, 13, -1, 17 | 15, 16, 17, 18, 19, -1 18 | ] 19 | 20 | coord Coordinate { point [ 21 | 0 150 196, 22 | 143 46 196, 23 | 88 -121 196, 24 | -88 -121 196, 25 | -143 46 196, 26 | 0 243 46, 27 | 231 75 46, 28 | 143 -196 46, 29 | -143 -196 46, 30 | -231 75 46, 31 | 143 196 -46, 32 | 231 -75 -46, 33 | 0 -243 -46, 34 | -231 -75 -46, 35 | -143 196 -46, 36 | 88 121 -196, 37 | 143 -46 -196, 38 | 0 -150 -196, 39 | -143 -46 -196, 40 | -88 121 -196, 41 | -16 32 196, 42 | -16 -32 196, 43 | 16 32 196, 44 | 16 -32 196 45 | ] 46 | } 47 | 48 | solid FALSE 49 | } 50 | 51 | appearance Appearance { 52 | material Material { 53 | shininess 0.2 54 | specularColor 1 1 1 55 | diffuseColor 0.8 0.8 0.9 56 | } 57 | } 58 | } 59 | 60 | NavigationInfo { type "EXAMINE" } 61 | 62 | Viewpoint { 63 | position 0 0 1000 64 | } 65 | -------------------------------------------------------------------------------- /examples/models/misc/escape.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 2, -1, 7 | 0, 1, 3, -1, 8 | 0, 2, 3, -1, 9 | 1, 2, 3, -1 10 | ] 11 | 12 | coord Coordinate { point [ 13 | -7 0 36, 14 | -7 -14 -12, 15 | -7 14 -12, 16 | 21 0 0 17 | ] 18 | } 19 | 20 | solid FALSE 21 | } 22 | 23 | appearance Appearance { 24 | material Material { 25 | shininess 0.2 26 | specularColor 1 1 1 27 | diffuseColor 0.8 0.8 0.9 28 | } 29 | } 30 | } 31 | 32 | NavigationInfo { type "EXAMINE" } 33 | 34 | Viewpoint { 35 | position 0 0 600 36 | } 37 | -------------------------------------------------------------------------------- /examples/models/misc/missile.wrl: -------------------------------------------------------------------------------- 1 | #VRML V2.0 utf8 2 | 3 | Shape { 4 | geometry IndexedFaceSet { 5 | coordIndex [ 6 | 0, 1, 2, -1, 7 | 0, 2, 3, -1, 8 | 0, 3, 4, -1, 9 | 0, 4, 1, -1, 10 | 1, 4, 16, 13, -1, 11 | 2, 1, 13, 14, -1, 12 | 3, 2, 14, 15, -1, 13 | 4, 3, 15, 16, -1, 14 | 5, 6, 7, 8, -1, 15 | 5, 13, 16, 8, -1, 16 | 6, 14, 13, 5, -1, 17 | 7, 15, 14, 6, -1, 18 | 8, 16, 15, 7, -1, 19 | 5, 9, 13, -1, 20 | 6, 10, 14, -1, 21 | 7, 11, 15, -1, 22 | 8, 12, 16, -1 23 | 24 | ] 25 | 26 | coord Coordinate { point [ 27 | 0 0 64, 28 | 8 8 36, 29 | -8 8 36, 30 | -8 -8 36, 31 | 8 -8 36, 32 | 8 8 -44, 33 | -8 8 -44, 34 | -8 -8 -44, 35 | 8 -8 -44, 36 | 12 12 -44, 37 | -12 12 -44, 38 | -12 -12 -44, 39 | 12 -12 -44, 40 | 8 8 12, 41 | -8 8 12, 42 | -8 -8 12, 43 | 8 -8 12 44 | ] 45 | } 46 | 47 | solid FALSE 48 | } 49 | 50 | appearance Appearance { 51 | material Material { 52 | shininess 0.2 53 | specularColor 1 1 1 54 | diffuseColor 0.8 0.8 0.9 55 | } 56 | } 57 | } 58 | 59 | NavigationInfo { type "EXAMINE" } 60 | 61 | Viewpoint { 62 | position 0 0 600 63 | } 64 | -------------------------------------------------------------------------------- /examples/models/paper/adder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/adder.gif -------------------------------------------------------------------------------- /examples/models/paper/anaconda.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/anaconda.gif -------------------------------------------------------------------------------- /examples/models/paper/asp2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/asp2.gif -------------------------------------------------------------------------------- /examples/models/paper/boa.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/boa.gif -------------------------------------------------------------------------------- /examples/models/paper/cobra1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/cobra1.gif -------------------------------------------------------------------------------- /examples/models/paper/cobra3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/cobra3.gif -------------------------------------------------------------------------------- /examples/models/paper/constrictor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/constrictor.gif -------------------------------------------------------------------------------- /examples/models/paper/ferdelance.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/ferdelance.gif -------------------------------------------------------------------------------- /examples/models/paper/gecko.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/gecko.gif -------------------------------------------------------------------------------- /examples/models/paper/krait.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/krait.gif -------------------------------------------------------------------------------- /examples/models/paper/mamba.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/mamba.gif -------------------------------------------------------------------------------- /examples/models/paper/moray.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/moray.gif -------------------------------------------------------------------------------- /examples/models/paper/python.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/python.gif -------------------------------------------------------------------------------- /examples/models/paper/shuttle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/shuttle.gif -------------------------------------------------------------------------------- /examples/models/paper/sidewinder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/sidewinder.gif -------------------------------------------------------------------------------- /examples/models/paper/thargoid.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/thargoid.gif -------------------------------------------------------------------------------- /examples/models/paper/thargon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/thargon.gif -------------------------------------------------------------------------------- /examples/models/paper/transporter.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/transporter.gif -------------------------------------------------------------------------------- /examples/models/paper/viper.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/viper.gif -------------------------------------------------------------------------------- /examples/models/paper/worm.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/paper/worm.gif -------------------------------------------------------------------------------- /examples/models/untitled.b2l: -------------------------------------------------------------------------------- 1 | return { 2 | scenes = { 3 | ['Scene'] = { 4 | frame_start = 1.000000, 5 | frame_end= 250.000000, 6 | frame_step = 1.000000, 7 | objects = { 8 | ['Viewpoint'] = { 9 | num_frames = 1, 10 | object_transform_array_offset = 0, 11 | }, 12 | ['Shape_IndexedFaceSet'] = { 13 | num_frames = 1, 14 | object_transform_array_offset = 64, 15 | }, 16 | }, 17 | }, 18 | }, 19 | objects = { 20 | ['Shape_IndexedFaceSet'] = { 21 | type = 'MESH', 22 | data = 'Shape_IndexedFaceSet.002', 23 | }, 24 | ['Viewpoint'] = { 25 | type = 'CAMERA', 26 | data = 'Viewpoint.002', 27 | }, 28 | }, 29 | meshes={ 30 | ['Cube'] = { 31 | num_triangles = 12, 32 | num_verticies = 36, 33 | uv_layers = { 34 | }, 35 | weights_per_vertex = 0, 36 | submeshes = { 37 | { 38 | material_name = 'Material', 39 | triangle_no = 0, 40 | triangle_count = 12, 41 | }, 42 | }, 43 | index_array_offset = 128, 44 | vertex_co_array_offset = 200, 45 | vertex_normal_array_offset = 632, 46 | }, 47 | ['Shape_IndexedFaceSet'] = { 48 | num_triangles = 20, 49 | num_verticies = 60, 50 | uv_layers = { 51 | }, 52 | weights_per_vertex = 0, 53 | submeshes = { 54 | { 55 | material_name = 'Material', 56 | triangle_no = 0, 57 | triangle_count = 20, 58 | }, 59 | }, 60 | index_array_offset = 1064, 61 | vertex_co_array_offset = 1184, 62 | vertex_normal_array_offset = 1904, 63 | }, 64 | ['Shape_IndexedFaceSet.001'] = { 65 | num_triangles = 20, 66 | num_verticies = 60, 67 | uv_layers = { 68 | }, 69 | weights_per_vertex = 0, 70 | submeshes = { 71 | { 72 | material_name = 'Material', 73 | triangle_no = 0, 74 | triangle_count = 20, 75 | }, 76 | }, 77 | index_array_offset = 2624, 78 | vertex_co_array_offset = 2744, 79 | vertex_normal_array_offset = 3464, 80 | }, 81 | ['Shape_IndexedFaceSet.002'] = { 82 | num_triangles = 36, 83 | num_verticies = 108, 84 | uv_layers = { 85 | }, 86 | weights_per_vertex = 0, 87 | submeshes = { 88 | { 89 | material_name = 'Material', 90 | triangle_no = 0, 91 | triangle_count = 36, 92 | }, 93 | }, 94 | index_array_offset = 4184, 95 | vertex_co_array_offset = 4400, 96 | vertex_normal_array_offset = 5696, 97 | }, 98 | }, 99 | armatures={ 100 | }, 101 | materials={ 102 | 'Material', 103 | 'Shape', 104 | 'Shape.001', 105 | 'Shape.002', 106 | 'Shape.003', 107 | }, 108 | } 109 | -------------------------------------------------------------------------------- /examples/models/untitled.b2l.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asciimoo/lua-drawille/58f443fe7eb5fd2881f1712a37834042f1bd4246/examples/models/untitled.b2l.bin -------------------------------------------------------------------------------- /examples/polygon.lua: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env luajit 2 | package.path = package.path .. ";../?.lua" 3 | local Canvas = require "drawille" 4 | local curses = require "curses" 5 | os.setlocale('de_DE.utf-8') 6 | math.randomseed(os.time()) 7 | 8 | -- Start up curses. 9 | curses.initscr() -- Initialize the curses library and the terminal screen. 10 | curses.cbreak() -- Turn off input line buffering. 11 | curses.echo(false) -- Don't print out characters as the user types them. 12 | curses.nl(false) -- Turn off special-case return/newline handling. 13 | curses.curs_set(0) -- Hide the cursor. 14 | curses.raw() 15 | -- Area to draw 16 | local width = curses.cols() or 80 17 | local height = curses.lines() or 25 18 | width,height = (width-2)*1.7, (height-1)*4 19 | -- Setup Curses Colors 20 | if curses.has_colors() then 21 | curses.start_color() 22 | curses.use_default_colors() 23 | for i=0, curses.colors() do 24 | curses.init_pair(i + 1, i, -1) 25 | end 26 | else 27 | curses.endwin() 28 | error("Your terminal has no colors") 29 | end 30 | 31 | local stdscr = curses.stdscr() 32 | stdscr:nodelay(true) -- Make getch nonblocking. 33 | stdscr:keypad() -- Correctly catch key presses. 34 | stdscr:erase() -- use erase() not clear() to remove flickering 35 | local line={} 36 | local c = Canvas.new() 37 | repeat 38 | stdscr:mvaddstr(1,1,"") 39 | for i=1,10 do 40 | while #line>10 do 41 | for x,y in c.polygon(unpack(line[1])) do 42 | c:unset(x,y) 43 | end 44 | table.remove(line, 1) 45 | end 46 | local xm,ym,sides,radius= 47 | math.random(21,width-41), math.random(21,height-41), 48 | math.random(3,12), math.random(5,20) 49 | table.insert(line, {xm,ym,sides,radius}) 50 | local r = math.random(0,255) 51 | local g = math.random(0,255) 52 | local b = math.random(0,255) 53 | local a = math.random(0,255) 54 | for x,y in c.polygon(xm,ym, sides,radius) do 55 | c:set(x,y,r,g,b,a) 56 | end 57 | end 58 | c:set_text(10,10, "Press Q to Quit",255,255,255,255) 59 | -- draw frame the convenient way 60 | c:cframe(curses) 61 | 62 | -- handle key imput 63 | local key = stdscr:getch() -- Nonblocking; returns nil if no key was pressed. 64 | if key == tostring('q'):byte(1) then -- The q key quits. 65 | curses.endwin() 66 | os.exit(0) 67 | end 68 | 69 | curses.delay_output(100) 70 | until false 71 | -------------------------------------------------------------------------------- /examples/random_color.lua: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env luajit 2 | package.path = package.path .. ";../?.lua" 3 | local Canvas = require "drawille" 4 | local curses = require "curses" 5 | os.setlocale('') -- de_DE.utf-8 6 | math.randomseed(os.time()) 7 | 8 | -- Start up curses. 9 | curses.initscr() -- Initialize the curses library and the terminal screen. 10 | curses.cbreak() -- Turn off input line buffering. 11 | curses.echo(false) -- Don't print out characters as the user types them. 12 | curses.nl(false) -- Turn off special-case return/newline handling. 13 | curses.curs_set(0) -- Hide the cursor. 14 | -- Area to draw 15 | local width = curses.cols() or 80 16 | local height = curses.lines() or 25 17 | width,height=(width-2)*2,(height-2)*4 18 | 19 | 20 | -- Setup Curses Colors 21 | curses.start_color() 22 | curses.use_default_colors() 23 | for i=0, curses.colors() do 24 | curses.init_pair(i + 1, i, -1) 25 | end 26 | 27 | local stdscr = curses.stdscr() 28 | stdscr:nodelay(true) -- Make getch nonblocking. 29 | stdscr:keypad() -- Correctly catch key presses. 30 | local c = Canvas() 31 | repeat 32 | -- stdscr:erase() -- use erase() not clear() to remove flickering 33 | stdscr:mvaddstr(1,1,"Press Q to Quit.\n") 34 | for x=1, width do 35 | for y=1, height do 36 | local r = math.random(0,255) 37 | local g = math.random(0,255) 38 | local b = math.random(0,255) 39 | local a = math.random(0,255) 40 | if math.random(0,1) == 1 then 41 | c:set(x,y,r,g,b,a) 42 | else 43 | c:toggle(x,y,r,g,b,a) 44 | end 45 | end 46 | end 47 | -- draw frame the convenient way 48 | c:cframe(curses) 49 | 50 | -- handle key imput 51 | local key = stdscr:getch() -- Nonblocking; returns nil if no key was pressed. 52 | if key == tostring('q'):byte(1) then -- The q key quits. 53 | curses.endwin() 54 | os.exit(0) 55 | end 56 | 57 | curses.delay_output(100) 58 | until false 59 | -------------------------------------------------------------------------------- /examples/rotating_cube.lua: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env luajit 2 | os.setlocale('de_DE.utf-8') 3 | local Canvas=require"drawille" -- import Canvas, line 4 | local Point3D=require"point3d" 5 | local curses=require"curses" 6 | 7 | --local sleep=require"socket".sleep 8 | 9 | --stdscr = curses.initscr() 10 | curses.initscr() 11 | curses.cbreak() -- Turn off input line buffering. 12 | curses.echo(false) -- Don't print out characters as the user types them. 13 | curses.nl(false) -- Turn off special-case return/newline handling. 14 | curses.curs_set(0) -- Hide the cursor. 15 | curses.raw() 16 | -- Setup Curses Colors 17 | curses.start_color() 18 | curses.use_default_colors() 19 | for i=0, curses.colors() do 20 | curses.init_pair(i + 1, i, -1) 21 | end 22 | local stdscr = curses.stdscr() 23 | stdscr:refresh() 24 | stdscr:nodelay(true) -- Make getch nonblocking. 25 | stdscr:keypad() -- Correctly catch key presses. 26 | stdscr:clear() -- use erase() not clear() to remove flickering 27 | 28 | local vertices = { 29 | Point3D(20,20,-20), 30 | Point3D(20,-20,-20), 31 | Point3D(-20,-20,-20), 32 | Point3D(-20,20,-20), 33 | Point3D(20,20,20), 34 | Point3D(20,-20,20), 35 | Point3D(-20,-20,20), 36 | Point3D(-20,20,20), 37 | } 38 | 39 | -- Define the vertices that compose each of the 6 faces. These numbers are 40 | -- indices to the vertices list defined above. 41 | local faces = {{1,2,3,4},{1,5,6,2},{2,6,7,3},{3,7,8,4},{1,4,8,5},{5,8,7,6}} 42 | 43 | 44 | local function show_cube(projection) 45 | projection=projection or false 46 | local angleX, angleY, angleZ = 0, 0, 0 47 | local c = Canvas() 48 | repeat 49 | -- Will hold transformed vertices. 50 | local t = {} 51 | 52 | for _,v in ipairs(vertices) do 53 | -- Rotate the point around X axis, then around Y axis, and finally around Z axis. 54 | local p = v:rotateX(angleX):rotateY(angleY):rotateZ(angleZ) 55 | if projection then 56 | -- Transform the point from 3D to 2D 57 | p = p:project(50, 50, 50, 60) 58 | end 59 | -- Put the point in the list of transformed vertices 60 | t[#t+1]=p 61 | end 62 | for _,f in ipairs(faces) do 63 | if not Point3D.culling(t[f[1]], t[f[2]], t[f[3]]) then 64 | for i=1,#f do 65 | for x,y in c.line(t[f[i]].x, t[f[i]].y, t[f[i%#f+1]].x, t[f[i%#f+1]].y) do 66 | c:set(x,y) 67 | end 68 | end 69 | end 70 | end 71 | stdscr:erase() 72 | c:cframe(curses, -30, -10, 60, 30) 73 | --stdscr:addstr(0, 0, f) 74 | stdscr:refresh() 75 | c:clear() 76 | curses.delay_output(50) 77 | 78 | angleX = angleX+2 79 | angleY = angleY+3 80 | angleZ = angleZ+5 81 | 82 | -- handle key imput 83 | local key = stdscr:getch() -- Nonblocking; returns nil if no key was pressed. 84 | if key == tostring('q'):byte(1) then -- The q key quits. 85 | curses.endwin() 86 | os.exit(0) 87 | end 88 | until false 89 | end 90 | 91 | local projection = false 92 | for _,a in ipairs(arg) do if a=="-p" then projection=true end end 93 | show_cube(projection) 94 | -------------------------------------------------------------------------------- /examples/speed_test.lua: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env luajit 2 | 3 | Canvas=require"drawille" 4 | 5 | c = Canvas.new() 6 | 7 | local frames = 1000 * 10 8 | 9 | local sizes = {{0, 0},{10, 10},{20, 20},{20, 40},{40, 20},{40, 40},{100, 100}} 10 | 11 | for k,v in ipairs(sizes) do 12 | local x,y=v[1],v[2] 13 | c:set(0, 0) 14 | 15 | for i=1,y do 16 | c:set(x, i) 17 | end 18 | 19 | local now,r=os.clock(),0 20 | for i=1,1e5 do 21 | c:frame() 22 | end 23 | r=os.clock()-now 24 | print(string.format('%dx%d\t%f', x, y, r)) 25 | c:clear() 26 | end 27 | -------------------------------------------------------------------------------- /examples/starfield.lua: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env luajit 2 | os.setlocale('de_DE.utf-8') 3 | local Canvas=require"drawille" -- import Canvas, line 4 | local Point3D=require"point3d" 5 | local curses=require"curses" 6 | 7 | --local sleep=require"socket".sleep 8 | 9 | --stdscr = curses.initscr() 10 | curses.initscr() 11 | curses.cbreak() -- Turn off input line buffering. 12 | curses.echo(false) -- Don't print out characters as the user types them. 13 | curses.nl(false) -- Turn off special-case return/newline handling. 14 | curses.curs_set(0) -- Hide the cursor. 15 | curses.raw() 16 | -- Setup Curses Colors 17 | curses.start_color() 18 | curses.use_default_colors() 19 | for i=0, curses.colors() do 20 | curses.init_pair(i + 1, i, -1) 21 | end 22 | local stdscr = curses.stdscr() 23 | stdscr:refresh() 24 | stdscr:nodelay(true) -- Make getch nonblocking. 25 | stdscr:keypad() -- Correctly catch key presses. 26 | stdscr:clear() -- use erase() not clear() to remove flickering 27 | local width = curses.cols() or 80 28 | local height = curses.lines() or 25 29 | width,height=(width-4)*2,(height-2)*4 30 | 31 | local function addstars(t, num, z, size) 32 | num=num or 10 33 | z=z or 500 34 | size=size or 1000 35 | for i=1,num do 36 | local x=math.random(size)-size/2 37 | local y=math.random(size)-size/2 38 | local z=-z 39 | table.insert(t,1,Point3D(x,y,z)) 40 | table.insert(t,1,Point3D(x,y,z+10)) 41 | end 42 | end 43 | 44 | local vertices = {} 45 | -- initialize 46 | local size=1000 47 | for z=200,490,10 do addstars(vertices,30,z,size) end 48 | local function starfield() 49 | local angleX, angleY, angleZ = 0, 0, 0 50 | local c = Canvas() 51 | repeat 52 | addstars(vertices, 30, 500, size) 53 | -- Will hold transformed vertices. 54 | local t = {} 55 | 56 | for i=#vertices,2,-2 do 57 | v1,v2=vertices[i], vertices[i-1] 58 | t[#t+1]=v1:project(width*.6,height*.3,70,50) 59 | v1.z=v1.z+10 60 | t[#t+1]=v2:project(width*.6,height*.3,70,50) 61 | v2.z=v2.z+10 62 | if v1.z>-80 or v2.z>-80 then 63 | table.remove(vertices, i) 64 | table.remove(vertices, i-1) 65 | table.remove(t) 66 | table.remove(t) 67 | end 68 | end 69 | for i=#t,2,-2 do 70 | if t[i].x>-width/2 and t[i].x-height/2 and t[i].y-width/2 and t[i-1].x-height/2 and t[i-1].y