summaryrefslogtreecommitdiff
path: root/progs/demos
diff options
context:
space:
mode:
Diffstat (limited to 'progs/demos')
-rw-r--r--progs/demos/.gitignore68
-rw-r--r--progs/demos/Makefile173
-rw-r--r--progs/demos/Makefile.cygnus87
-rw-r--r--progs/demos/Makefile.win131
-rw-r--r--progs/demos/README230
-rw-r--r--progs/demos/SConscript71
-rw-r--r--progs/demos/Windows/all.dsp101
-rw-r--r--progs/demos/Windows/bounce.dsp112
-rw-r--r--progs/demos/Windows/clearspd.dsp112
-rw-r--r--progs/demos/Windows/cubemap.dsp112
-rw-r--r--progs/demos/Windows/demos.dsw782
-rw-r--r--progs/demos/Windows/drawpix.dsp112
-rw-r--r--progs/demos/Windows/fire.dsp112
-rw-r--r--progs/demos/Windows/gears.dsp112
-rw-r--r--progs/demos/Windows/geartrain.dsp112
-rw-r--r--progs/demos/Windows/glinfo.dsp112
-rw-r--r--progs/demos/Windows/gloss.dsp112
-rw-r--r--progs/demos/Windows/gltestperf.dsp112
-rw-r--r--progs/demos/Windows/glutfx.dsp112
-rw-r--r--progs/demos/Windows/ipers.dsp112
-rw-r--r--progs/demos/Windows/isosurf.dsp112
-rw-r--r--progs/demos/Windows/loadbias.dsp112
-rw-r--r--progs/demos/Windows/morph3d.dsp112
-rw-r--r--progs/demos/Windows/multiarb.dsp112
-rw-r--r--progs/demos/Windows/occlude.dsp112
-rw-r--r--progs/demos/Windows/osdemo.dsp112
-rw-r--r--progs/demos/Windows/paltex.dsp112
-rw-r--r--progs/demos/Windows/pixeltex.dsp112
-rw-r--r--progs/demos/Windows/pointblast.dsp112
-rw-r--r--progs/demos/Windows/rain.dsp112
-rw-r--r--progs/demos/Windows/ray.dsp112
-rw-r--r--progs/demos/Windows/readpix.dsp112
-rw-r--r--progs/demos/Windows/reflect.dsp112
-rw-r--r--progs/demos/Windows/renormal.dsp112
-rw-r--r--progs/demos/Windows/shadowtex.dsp112
-rw-r--r--progs/demos/Windows/spectex.dsp112
-rw-r--r--progs/demos/Windows/spriteblast.dsp112
-rw-r--r--progs/demos/Windows/stex3d.dsp112
-rw-r--r--progs/demos/Windows/teapot.dsp112
-rw-r--r--progs/demos/Windows/terrain.dsp112
-rw-r--r--progs/demos/Windows/tessdemo.dsp112
-rw-r--r--progs/demos/Windows/texcyl.dsp112
-rw-r--r--progs/demos/Windows/texdown.dsp112
-rw-r--r--progs/demos/Windows/texenv.dsp112
-rw-r--r--progs/demos/Windows/texobj.dsp112
-rw-r--r--progs/demos/Windows/trispd.dsp112
-rw-r--r--progs/demos/Windows/tunnel.dsp112
-rw-r--r--progs/demos/Windows/tunnel2.dsp112
-rw-r--r--progs/demos/Windows/winpos.dsp112
-rw-r--r--progs/demos/arbfplight.c404
-rw-r--r--progs/demos/arbfslight.c328
-rw-r--r--progs/demos/arbocclude.c287
-rw-r--r--progs/demos/arbocclude2.c314
-rw-r--r--progs/demos/bounce.c224
-rw-r--r--progs/demos/clearspd.c217
-rw-r--r--progs/demos/copypix.c269
-rw-r--r--progs/demos/cubemap.c631
-rw-r--r--progs/demos/descrip.mms90
-rw-r--r--progs/demos/dinoshade.c914
-rw-r--r--progs/demos/dissolve.c283
-rw-r--r--progs/demos/drawpix.c359
-rw-r--r--progs/demos/engine.c1343
-rw-r--r--progs/demos/fbo_firecube.c1071
-rw-r--r--progs/demos/fbotexture.c672
-rw-r--r--progs/demos/fire.c784
-rw-r--r--progs/demos/fogcoord.c418
-rw-r--r--progs/demos/fplight.c285
-rw-r--r--progs/demos/fslight.c619
-rw-r--r--progs/demos/gamma.c159
-rw-r--r--progs/demos/gearbox.c492
-rw-r--r--progs/demos/gears.c403
-rw-r--r--progs/demos/geartrain.c1085
-rw-r--r--progs/demos/geartrain.dat119
-rw-r--r--progs/demos/glinfo.c32
-rw-r--r--progs/demos/gloss.c475
-rw-r--r--progs/demos/gltestperf.c580
-rw-r--r--progs/demos/ipers.c731
-rw-r--r--progs/demos/isosurf.c1146
-rw-r--r--progs/demos/isosurf.dat7179
-rw-r--r--progs/demos/lodbias.c298
-rw-r--r--progs/demos/morph3d.c890
-rw-r--r--progs/demos/multiarb.c369
-rw-r--r--progs/demos/paltex.c268
-rw-r--r--progs/demos/particles.cxx219
-rw-r--r--progs/demos/particles.h81
-rw-r--r--progs/demos/pointblast.c504
-rw-r--r--progs/demos/projtex.c1031
-rw-r--r--progs/demos/rain.cxx393
-rw-r--r--progs/demos/ray.c905
-rw-r--r--progs/demos/readpix.c402
-rw-r--r--progs/demos/reflect.c591
-rw-r--r--progs/demos/renormal.c136
-rw-r--r--progs/demos/shadowtex.c1039
-rw-r--r--progs/demos/singlebuffer.c269
-rw-r--r--progs/demos/spectex.c268
-rw-r--r--progs/demos/spriteblast.c555
-rw-r--r--progs/demos/stex3d.c687
-rw-r--r--progs/demos/teapot.c685
-rw-r--r--progs/demos/terrain.c658
-rw-r--r--progs/demos/terrain.dat1
-rw-r--r--progs/demos/tessdemo.c523
-rw-r--r--progs/demos/texcyl.c290
-rw-r--r--progs/demos/texenv.c817
-rw-r--r--progs/demos/textures.c439
-rw-r--r--progs/demos/trispd.c250
-rw-r--r--progs/demos/tunnel.c543
-rw-r--r--progs/demos/tunnel2.c615
-rw-r--r--progs/demos/tunneldat.h395
-rw-r--r--progs/demos/vao_demo.c331
-rw-r--r--progs/demos/winpos.c116
110 files changed, 0 insertions, 42716 deletions
diff --git a/progs/demos/.gitignore b/progs/demos/.gitignore
deleted file mode 100644
index aecdd9a011..0000000000
--- a/progs/demos/.gitignore
+++ /dev/null
@@ -1,68 +0,0 @@
-arbfplight
-arbfslight
-arbocclude
-arbocclude2
-bounce
-clearspd
-copypix
-cubemap
-dinoshade
-dissolve
-drawpix
-engine
-extfuncs.h
-fbo_firecube
-fbotexture
-fire
-fogcoord
-fplight
-fslight
-gamma
-gearbox
-gears
-geartrain
-glinfo
-gloss
-glslnoise
-gltestperf
-glutfx
-ipers
-isosurf
-lodbias
-morph3d
-multiarb
-paltex
-pointblast
-projtex
-rain
-ray
-readpix
-readtex.c
-readtex.h
-reflect
-renormal
-shadowtex
-showbuffer.c
-showbuffer.h
-singlebuffer
-spectex
-spriteblast
-stex3d
-streaming_rect
-teapot
-terrain
-tessdemo
-texcyl
-texdown
-texenv
-texobj
-textures
-trackball.c
-trackball.h
-trispd
-tunnel
-tunnel2
-vao_demo
-Windows
-winpos
-*.rgb
diff --git a/progs/demos/Makefile b/progs/demos/Makefile
deleted file mode 100644
index a13a272ce9..0000000000
--- a/progs/demos/Makefile
+++ /dev/null
@@ -1,173 +0,0 @@
-# progs/demos/Makefile
-
-TOP = ../..
-include $(TOP)/configs/current
-
-INCDIR = $(TOP)/include
-
-LIB_DEP = $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) $(TOP)/$(LIB_DIR)/$(GLU_LIB_NAME) \
- $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME)
-
-LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLEW_LIB) -l$(GLU_LIB) -l$(GL_LIB) \
- $(APP_LIB_DEPS)
-
-PROGS = \
- arbfplight \
- arbfslight \
- arbocclude \
- arbocclude2 \
- bounce \
- clearspd \
- copypix \
- cubemap \
- dinoshade \
- dissolve \
- drawpix \
- engine \
- fbo_firecube \
- fbotexture \
- fire \
- fogcoord \
- fplight \
- fslight \
- gamma \
- gearbox \
- gears \
- geartrain \
- glinfo \
- gloss \
- gltestperf \
- isosurf \
- ipers \
- lodbias \
- morph3d \
- multiarb \
- paltex \
- pointblast \
- projtex \
- rain \
- ray \
- readpix \
- reflect \
- renormal \
- shadowtex \
- singlebuffer \
- spectex \
- spriteblast \
- stex3d \
- teapot \
- terrain \
- tessdemo \
- texcyl \
- texenv \
- textures \
- trispd \
- tunnel \
- tunnel2 \
- vao_demo \
- winpos
-
-
-##### RULES #####
-
-.SUFFIXES:
-.SUFFIXES: .c
-.SUFFIXES: .cxx
-
-# make executable from .c file:
-.c: $(LIB_DEP) readtex.o
- $(APP_CC) -I$(INCDIR) $(CFLAGS) $(LDFLAGS) $< readtex.o $(LIBS) -o $@
-
-
-##### TARGETS #####
-
-default: $(PROGS)
-
-$(PROGS): readtex.o
-
-readtex.c: $(TOP)/progs/util/readtex.c
- cp $< .
-
-readtex.h: $(TOP)/progs/util/readtex.h
- cp $< .
-
-readtex.o: readtex.c readtex.h
- $(APP_CC) -c -I$(INCDIR) $(CFLAGS) readtex.c
-
-
-showbuffer.c: $(TOP)/progs/util/showbuffer.c
- cp $< .
-
-showbuffer.h: $(TOP)/progs/util/showbuffer.h
- cp $< .
-
-showbuffer.o: showbuffer.c showbuffer.h
- $(APP_CC) -c -I$(INCDIR) $(CFLAGS) showbuffer.c
-
-
-trackball.c: $(TOP)/progs/util/trackball.c
- cp $< .
-
-trackball.h: $(TOP)/progs/util/trackball.h
- cp $< .
-
-trackball.o: trackball.c trackball.h
- $(APP_CC) -c -I$(INCDIR) $(CFLAGS) trackball.c
-
-
-extfuncs.h: $(TOP)/progs/util/extfuncs.h
- cp $< .
-
-
-reflect: reflect.o showbuffer.o readtex.o
- $(APP_CC) $(CFLAGS) $(LDFLAGS) reflect.o showbuffer.o readtex.o $(LIBS) -o $@
-
-reflect.o: reflect.c showbuffer.h
- $(APP_CC) -c -I$(INCDIR) $(CFLAGS) reflect.c
-
-
-gloss: gloss.o trackball.o readtex.o
- $(APP_CC) $(CFLAGS) $(LDFLAGS) gloss.o trackball.o readtex.o $(LIBS) -o $@
-
-gloss.o: gloss.c trackball.h
- $(APP_CC) -c -I$(INCDIR) $(CFLAGS) gloss.c
-
-
-engine: engine.o trackball.o readtex.o
- $(APP_CC) $(CFLAGS) $(LDFLAGS) engine.o trackball.o readtex.o $(LIBS) -o $@
-
-engine.o: engine.c trackball.h
- $(APP_CC) -c -I$(INCDIR) $(CFLAGS) engine.c
-
-
-fbotexture: fbotexture.o
- $(APP_CC) $(CFLAGS) $(LDFLAGS) fbotexture.o $(LIBS) -o $@
-
-fbotexture.o: fbotexture.c extfuncs.h
- $(APP_CC) -c -I$(INCDIR) $(CFLAGS) fbotexture.c
-
-
-fslight: fslight.o
- $(APP_CC) $(CFLAGS) $(LDFLAGS) fslight.o $(LIBS) -o $@
-
-fslight.o: fslight.c extfuncs.h
- $(APP_CC) -c -I$(INCDIR) $(CFLAGS) fslight.c
-
-rain: particles.o rain.o readtex.o
- $(CXX) $(CXXFLAGS) $(LDFLAGS) $^ $(LIBS) -o $@
-
-rain.o: rain.cxx readtex.h
- $(CXX) -c -I$(INCDIR) $(CXXFLAGS) $<
-
-particles.o: particles.cxx
- $(CXX) -c -I$(INCDIR) $(CXXFLAGS) $<
-
-
-viewdds: viewdds.c
- $(CC) -I$(INCDIR) $(CFLAGS) $< readtex.o $(LIBS) -L. -lgltc -o $@
-
-
-clean:
- -rm -f $(PROGS)
- -rm -f *.o *~
- -rm -f readtex.[ch] showbuffer.[ch]
diff --git a/progs/demos/Makefile.cygnus b/progs/demos/Makefile.cygnus
deleted file mode 100644
index 0efc1ab0c9..0000000000
--- a/progs/demos/Makefile.cygnus
+++ /dev/null
@@ -1,87 +0,0 @@
-
-# Mesa 3-D graphics library
-# Version: 3.3
-# Copyright (C) 1995-2000 Brian Paul
-
-
-# Makefile for demo programs for cygnus
-# Stephane Rehel (rehel@worldnet.fr) April 13 1997
-
-
-
-##### MACROS #####
-
-INCDIR = ../include
-LIBDIR = ../lib
-
-GL_LIBS = -L$(LIBDIR) -lglut -lMesaGLU -lMesaGL -lm $(WLIBS)
-
-LIB_DEP = $(LIBDIR)/$(GL_LIB) $(LIBDIR)/$(GLU_LIB) $(LIBDIR)/$(GLUT_LIB)
-
-PROGS = bounce \
- clearspd \
- cubemap \
- drawpix \
- fire \
- gamma \
- gears \
- geartrain \
- glinfo \
- gloss \
- gltestperf \
- glutfx \
- isosurf \
- ipers \
- lodbias \
- morph3d \
- multiarb \
- occlude \
- osdemo \
- paltex \
- pixeltex \
- pointblast \
- ray \
- readpix \
- reflect \
- renormal \
- spectex \
- stex3d \
- teapot \
- terrain \
- tessdemo \
- texcyl \
- texdown \
- texenv \
- texobj \
- trispd \
- tunnel \
- tunnel2 \
- winpos
-
-
-##### RULES #####
-
-.SUFFIXES:
-.SUFFIXES: .c
-
-.c: $(LIB_DEP)
- $(CC) -I$(INCDIR) -I../util $(CFLAGS) $< $(GL_LIBS) -o $@
-
-
-##### TARGETS #####
-
-default:
- @echo "Specify a target configuration"
-
-clean:
- -rm *.o *~
-
-realclean:
- -rm $(PROGS:=.exe)
- -rm *.o *~
-
-targets: $(PROGS)
-
-include ../Make-config
-
-
diff --git a/progs/demos/Makefile.win b/progs/demos/Makefile.win
deleted file mode 100644
index 0d0b19b9fe..0000000000
--- a/progs/demos/Makefile.win
+++ /dev/null
@@ -1,131 +0,0 @@
-
-# Mesa 3-D graphics library
-# Version: 6.5
-# Copyright (C) 1995-2006 Brian Paul
-
-# Makefile for GLUT-based demo programs for Windows
-
-# Build the Mesa and GLUT libraries by using the Visual Studio
-# Workspaces in this distribution before running this Makefile.
-
-# Invocation: nmake -f Makefile.win
-
-NODEBUG=1
-!include <win32.mak>
-
-##### MACROS #####
-
-TOP = ..\..
-INCDIR = ..\..\include
-LIBDIR = ..\..\lib
-LIBS = GLUT32.LIB OPENGL32.LIB
-
-all: OPENGL32.DLL GLU32.DLL GLUT32.DLL \
- readtex.h readtex.c showbuffer.h showbuffer.c \
- extfuncs.h trackball.h trackball.c \
- arbfplight.exe arbfslight.exe arbocclude.exe bounce.exe \
- clearspd.exe cubemap.exe drawpix.exe engine.exe \
- fire.exe fogcoord.exe \
- fplight.exe fslight.exe gamma.exe gearbox.exe \
- gears.exe geartrain.exe gloss.exe \
- glinfo.exe glslnoise.exe \
- gltestperf.exe glutfx.exe ipers.exe isosurf.exe lodbias.exe \
- morph3d.exe multiarb.exe occlude.exe paltex.exe pointblast.exe \
- ray.exe readpix.exe reflect.exe renormal.exe \
- shadowtex.exe singlebuffer.exe spectex.exe spriteblast.exe \
- stex3d.exe teapot.exe terrain.exe tessdemo.exe texcyl.exe \
- texdown.exe texenv.exe texobj.exe trispd.exe tunnel.exe tunnel2.exe \
- winpos.exe
-
-arbfplight.exe: arbfplight.obj
-arbfslight.exe: arbfslight.obj
-arbocclude.exe: arbocclude.obj
-bounce.exe: bounce.obj
-clearspd.exe: clearspd.obj
-cubemap.exe: cubemap.obj readtex.obj
-drawpix.exe: drawpix.obj readtex.obj
-engine.exe: engine.obj readtex.obj trackball.obj
-fire.exe: fire.obj readtex.obj
-fogcoord.exe: fogcoord.obj readtex.obj
-fplight.exe: fplight.obj
-fslight.exe: fslight.obj
-gamma.exe: gamma.obj
-gearbox.exe: gearbox.obj
-gears.exe: gears.obj
-geartrain.exe: geartrain.obj
-gloss.exe: gloss.obj readtex.obj trackball.obj
-glinfo.exe: glinfo.obj
-glslnoise.exe: glslnoise.obj
-gltestperf.exe: gltestperf.obj
-glutfx.exe: glutfx.obj
-ipers.exe: ipers.obj readtex.obj
-isosurf.exe: isosurf.obj readtex.obj
-lodbias.exe: lodbias.obj readtex.obj
-morph3d.exe: morph3d.obj
-multiarb.exe: multiarb.obj readtex.obj
-occlude.exe: occlude.obj
-paltex.exe: paltex.obj
-pointblast.exe: pointblast.obj
-ray.exe: ray.obj
-readpix.exe: readpix.obj readtex.obj
-reflect.exe: reflect.obj readtex.obj showbuffer.obj
-renormal.exe: renormal.obj
-shadowtex.exe: shadowtex.obj showbuffer.obj
-singlebuffer.exe: singlebuffer.obj
-spectex.exe: spectex.obj
-spriteblast.exe: spriteblast.obj
-stex3d.exe: stex3d.obj
-teapot.exe: teapot.obj readtex.obj
-terrain.exe: terrain.obj
-tessdemo.exe: tessdemo.obj
-texcyl.exe: texcyl.obj readtex.obj
-texdown.exe: texdown.obj
-texenv.exe: texenv.obj
-texobj.exe: texobj.obj
-trispd.exe: trispd.obj
-tunnel.exe: tunnel.obj readtex.obj
-tunnel2.exe: tunnel2.obj readtex.obj
-winpos.exe: winpos.obj readtex.obj
-
-
-OPENGL32.DLL: $(LIBDIR)\OPENGL32.DLL
- copy $? .
-
-GLU32.DLL: $(LIBDIR)\GLU32.DLL
- copy $? .
-
-GLUT32.DLL: $(LIBDIR)\GLUT32.DLL
- copy $? .
-
-readtex.c: $(TOP)\progs\util\readtex.c
- copy $** .
-
-readtex.h: $(TOP)\progs\util\readtex.h
- copy $** .
-
-showbuffer.c: $(TOP)\progs\util\showbuffer.c
- copy $** .
-
-showbuffer.h: $(TOP)\progs\util\showbuffer.h
- copy $** .
-
-trackball.c: $(TOP)\progs\util\trackball.c
- copy $** .
-
-trackball.h: $(TOP)\progs\util\trackball.h
- copy $** .
-
-extfuncs.h: $(TOP)\progs\util\extfuncs.h
- copy $** .
-
-.obj.exe:
- $(link) $(ldebug) -out:$@ $** /LIBPATH:$(LIBDIR) $(LIBS)
-
-.c.obj:
- $(cc) $(cdebug) $(cflags) $(cvars) -D_USE_MATH_DEFINES /I$(INCDIR) $*.c
-
-clean::
- del *.obj *.exe readtex.* showbuffer.* trackball.*
-
-clobber::
-
diff --git a/progs/demos/README b/progs/demos/README
deleted file mode 100644
index a3d0c18bb9..0000000000
--- a/progs/demos/README
+++ /dev/null
@@ -1,230 +0,0 @@
-INTRODUCTION
-------------
-
-This directory is usually included in the Mesa demos distribution or
-in the GLUT distribution.
-
-I have written the demos included in this directory mainly for showing
-the capabilities of the Mesa library when using the Voodoo driver.
-However all the demos are written using the GLUT and OpenGL so they
-work with any GLUT/OpenGL platform (tested: Linux+Mesa+Voodoo driver,
-Linux+Mesa+X11 driver, Win95+Mesa+Voodoo driver and SGI Onyx IR thanks
-to Mark Kilgard).
-
-All the demos make an heavy use of texture mapping, blending, etc. so
-you _need_ some kind of hardware support for the OpenGL otherwise they
-will run at ~1fps. You need also a OpenGL 1.1 compliant library.
-
-You can find some screenshot of these demos at
-http://www-hmw.caribel.pisa.it/fxmesa/fxdemos.hmtl
-
-Write me if you find some bug in the demos.
-
-David Bucciarelli (tech.hmw@plus.it)
-
-Humanware s.r.l.
-Via XXIV Maggio 62
-Pisa, Italy
-Tel./Fax +39-50-554108
-email: info.hmw@plus.it
-www: www-hmw.caribel.pisa.it
-
-
-A BRIEF DESCRIPTION OF THE DEMOS
---------------------------------
-
-
-IPERS
------
-
-Sources: ipers.c image.c
-
-A nice spinning fractal object.
-
-
-RAY
----
-
-Sources: ray.c
-
-I'm using ray tracing to dynamically generate texture maps with
-specular, diffuse, shadows, and mirror colors. Each frame the texture
-maps of the plane and of the sphere are partially updated. With this
-technique you can obtain true mirrors, shadows, specular highlights,
-bump mapping, etc. in realtime. This demo is really CPU intensive
-(~25fps on a PentiumII@300MHz with a Pure3D). Support on-the-fly
-switching between fullscreen and in-window rendering under Linux/Mesa
-(start your X server in 16 bpp mode and press the spacebar).
-
-
-TUNNEL
-------
-
-Sources: tunnel.c image.c sources.c
-Data: bw.rgb tile.rgb
-
-The model was designed and prelighted with Alias|Wavefront
-PowerAnimator V8. Triangle strips were built with a tool written by me
-and then statically included in the sources. This demo doesn't
-require the ZBuffer and use antialiased polygons. Support on-the-fly
-switching between fullscreen and in-window rendering under Linux/Mesa
-(start your X server in 16 bpp mode and press the spacebar).
-
-
-TUNNEL2
-------
-
-Sources: tunnel2.c image.c sources.c
-Data: bw.rgb tile.rgb
-
-The some tunnel demo but with two output channels. A nice
-example of the Mesa/Voodoo support for multiple boards in
-the some PC.
-
-
-TEAPOT
-------
-
-Sources: teapot.c image.c dteapot.c shadow.c
-Data: bw.rgb tile.rgb
-
-The shadow is drawn projecting the teapot geometry over the plane. All
-other light effects are drawn using the standard OpenGL capabilities.
-Support on-the-fly switching between fullscreen and in-window
-rendering under Linux/Mesa (start your X server in 16 bpp mode and
-press the spacebar).
-
-
-FIRE
-----
-
-Sources: fire.c image.c
-Data: s128.rgb tree2.rgb
-
-The demo use a small particle system to draw some nice visual effect.
-You can interactively change many parameters of the particle system
-and you can choose the number of particles at the startup ('fire
-4000'). This demo should be called fountain. Support on-the-fly
-switching between fullscreen and in-window rendering under Linux/Mesa
-(start your X server in 16 bpp mode and press the spacebar).
-
-
-TERRAIN
--------
-
-Sources: mesaland.c
-
-This demo is base on another demo written by Mikael SkiZoWalker. I
-have added the capabilities to freely fly around, view culling and
-some nice color. Support on-the-fly switching between fullscreen and
-in-window rendering under Linux/Mesa (start your X server in 16 bpp
-mode and press the spacebar).
-
-
-GLTEST
-------
-
-Sources: gltest.c
-
-This is a simple benchmark suite that I'm using in the development of
-the Mesa/Voodoo driver. Type 'gltest >my.res' and you will get some
-data about the performances of your OpenGL. Follow the results with my
-PC (Linux+Mesa-2.6+PentiumII@300MHz+Pure3D):
-
-Simple Points
-587900.080674 Pnts/sec
-
-Smooth Lines
-SIZE=480 => 39007.426183 Lins/sec
-SIZE=250 => 74575.016485 Lins/sec
-SIZE=100 => 179734.882409 Lins/sec
-SIZE=050 => 183987.795297 Lins/sec
-SIZE=025 => 183820.086309 Lins/sec
-
-
-ZSmooth Triangles
-SIZE=480 => 784.954997 Tris/sec
-SIZE=250 => 2862.325889 Tris/sec
-SIZE=100 => 17779.492938 Tris/sec
-SIZE=050 => 159339.829844 Tris/sec
-SIZE=025 => 428602.984008 Tris/sec
-
-
-ZSmooth Tex Blend Triangles
-SIZE=480 => 784.473931 Tris/sec
-SIZE=250 => 2853.781513 Tris/sec
-SIZE=100 => 17598.252146 Tris/sec
-SIZE=050 => 152632.578337 Tris/sec
-SIZE=025 => 377584.760048 Tris/sec
-
-
-ZSmooth Tex Blend TMesh Triangles
-SIZE=400 => 563.900695 Tris/sec, MPixel Fill/sec: 45.112056
-SIZE=250 => 1449.777225 Tris/sec, MPixel Fill/sec: 45.305538
-SIZE=100 => 8702.869121 Tris/sec, MPixel Fill/sec: 43.514346
-SIZE=050 => 31896.867466 Tris/sec, MPixel Fill/sec: 39.871084
-SIZE=025 => 114037.262894 Tris/sec, MPixel Fill/sec: 35.636645
-SIZE=010 => 220494.235839 Tris/sec, MPixel Fill/sec: 11.024712
-SIZE=005 => 225615.506651 Tris/sec, MPixel Fill/sec: 2.820194
-SIZE=002 => 225607.681439 Tris/sec, MPixel Fill/sec: 0.451215
-
-
-Color/Depth Buffer Clears
-295.042474 Clrs/sec, MPixel Fill/sec: 90.553256
-
-
-Follow the results with my
-PC (Linux+Mesa-3.0beta5+PentiumII@300MHz+Voodoo2):
-
-
-Simple Points
-1620113.525130 Pnts/sec
-
-Smooth Lines
-SIZE=480 => 73841.166065 Lins/sec
-SIZE=250 => 140794.035316 Lins/sec
-SIZE=100 => 344185.242157 Lins/sec
-SIZE=050 => 420399.008289 Lins/sec
-SIZE=025 => 420261.389773 Lins/sec
-
-
-ZSmooth Triangles
-SIZE=480 => 1434.668506 Tris/sec
-SIZE=250 => 5228.449614 Tris/sec
-SIZE=100 => 46603.815842 Tris/sec
-SIZE=050 => 325757.045961 Tris/sec
-SIZE=025 => 589022.403336 Tris/sec
-
-
-ZSmooth Tex Blend Triangles
-SIZE=480 => 1414.900041 Tris/sec
-SIZE=250 => 5006.055235 Tris/sec
-SIZE=100 => 43602.252031 Tris/sec
-SIZE=050 => 303497.092692 Tris/sec
-SIZE=025 => 517087.428669 Tris/sec
-
-
-ZSmooth Tex Blend TMesh Triangles
-SIZE=400 => 1023.273112 Tris/sec, MPixel Fill/sec: 81.861849
-SIZE=250 => 2595.692121 Tris/sec, MPixel Fill/sec: 81.115379
-SIZE=100 => 15788.198912 Tris/sec, MPixel Fill/sec: 78.940995
-SIZE=050 => 58784.121300 Tris/sec, MPixel Fill/sec: 73.480152
-SIZE=025 => 244233.873481 Tris/sec, MPixel Fill/sec: 76.323085
-SIZE=010 => 474995.004191 Tris/sec, MPixel Fill/sec: 23.749750
-SIZE=005 => 475124.354163 Tris/sec, MPixel Fill/sec: 5.939054
-SIZE=002 => 474959.089503 Tris/sec, MPixel Fill/sec: 0.949918
-
-
-Color/Depth Buffer Clears
-478.654830 Clrs/sec, MPixel Fill/sec: 146.906826
-
-
-PALTEX and GLBPALTX
--------------------
-
-Sources: paltex.c and glbpaltx.c
-
-The PALTEX example was written by Brian Paul and it shows the
-capabilities of the GL_EXT_paletted_texture extension. I have written
-the other example in order to show the capabilities of the
-gl3DfxSetPaletteEXT() (it used only by GLQuake and Quake2).
diff --git a/progs/demos/SConscript b/progs/demos/SConscript
deleted file mode 100644
index 20ec6a002a..0000000000
--- a/progs/demos/SConscript
+++ /dev/null
@@ -1,71 +0,0 @@
-Import('*')
-
-progs = [
- 'arbfplight',
- 'arbfslight',
- 'arbocclude',
- 'arbocclude2',
- 'bounce',
- 'clearspd',
- 'copypix',
- 'cubemap',
- 'dinoshade',
- 'dissolve',
- 'drawpix',
- 'engine',
- 'fbo_firecube',
- 'fbotexture',
- 'fire',
- 'fogcoord',
- 'fplight',
- 'fslight',
- 'gamma',
- 'gearbox',
- 'gears',
- 'geartrain',
- 'glinfo',
- 'gloss',
- 'gltestperf',
- 'ipers',
- 'isosurf',
- 'lodbias',
- 'morph3d',
- 'multiarb',
- 'paltex',
- 'pointblast',
- 'projtex',
- 'ray',
- 'readpix',
- 'reflect',
- 'renormal',
- 'shadowtex',
- 'singlebuffer',
- 'spectex',
- 'spriteblast',
- 'stex3d',
- 'teapot',
- 'terrain',
- 'tessdemo',
- 'texcyl',
- 'texenv',
- 'textures',
- 'trispd',
- 'tunnel',
- 'tunnel2',
- 'vao_demo',
- 'winpos',
-]
-
-for prog in progs:
- progs_env.Program(
- target = prog,
- source = prog + '.c',
- )
-
-progs_env.Program(
- target = 'rain',
- source = [
- 'rain.cxx',
- 'particles.cxx',
- ]
-)
diff --git a/progs/demos/Windows/all.dsp b/progs/demos/Windows/all.dsp
deleted file mode 100644
index 5c9b3450da..0000000000
--- a/progs/demos/Windows/all.dsp
+++ /dev/null
@@ -1,101 +0,0 @@
-# Microsoft Developer Studio Project File - Name="all" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Application" 0x0101
-
-CFG=all - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "all.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "all.mak" CFG="all - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "all - Win32 Release" (based on "Win32 (x86) Application")
-!MESSAGE "all - Win32 Debug" (based on "Win32 (x86) Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "all - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
-
-!ELSEIF "$(CFG)" == "all - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
-
-!ENDIF
-
-# Begin Target
-
-# Name "all - Win32 Release"
-# Name "all - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/bounce.dsp b/progs/demos/Windows/bounce.dsp
deleted file mode 100644
index ff33ba6e13..0000000000
--- a/progs/demos/Windows/bounce.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="bounce" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=bounce - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "bounce.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "bounce.mak" CFG="bounce - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "bounce - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "bounce - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "bounce - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../bounce.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "bounce - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../bounce.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "bounce - Win32 Release"
-# Name "bounce - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\bounce.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/clearspd.dsp b/progs/demos/Windows/clearspd.dsp
deleted file mode 100644
index 58fadcca2d..0000000000
--- a/progs/demos/Windows/clearspd.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="clearspd" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=clearspd - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "clearspd.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "clearspd.mak" CFG="clearspd - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "clearspd - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "clearspd - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "clearspd - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../clearspd.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "clearspd - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../clearspd.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "clearspd - Win32 Release"
-# Name "clearspd - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\clearspd.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/cubemap.dsp b/progs/demos/Windows/cubemap.dsp
deleted file mode 100644
index 7c37b1b3ea..0000000000
--- a/progs/demos/Windows/cubemap.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="cubemap" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=cubemap - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "cubemap.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "cubemap.mak" CFG="cubemap - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "cubemap - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "cubemap - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "cubemap - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../cubemap.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "cubemap - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../cubemap.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "cubemap - Win32 Release"
-# Name "cubemap - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\cubemap.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/demos.dsw b/progs/demos/Windows/demos.dsw
deleted file mode 100644
index d989e736de..0000000000
--- a/progs/demos/Windows/demos.dsw
+++ /dev/null
@@ -1,782 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "all"=".\all.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name bounce
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name clearspd
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name cubemap
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name drawpix
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name fire
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name gears
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name geartrain
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name glinfo
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name gloss
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name gltestperf
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name glutfx
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ipers
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name isosurf
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name lodbias
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name morph3d
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name multiarb
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name occlude
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name osdemo
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name paltex
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name pixeltex
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name pointblast
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name rain
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name ray
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name readpix
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name reflect
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name renormal
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name shadowtex
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name spectex
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name stex3d
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name teapot
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name terrain
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name tessdemo
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name texcyl
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name texdown
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name texenv
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name texobj
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name trispd
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name tunnel
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name tunnel2
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name winpos
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name spriteblast
- End Project Dependency
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "bounce"=".\bounce.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "clearspd"=".\clearspd.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "cubemap"=".\cubemap.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "drawpix"=".\drawpix.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "fire"=".\fire.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "gears"=".\gears.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "geartrain"=".\geartrain.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "glinfo"=".\glinfo.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "gloss"=".\gloss.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "gltestperf"=".\gltestperf.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "glut"="..\..\..\src\glut\glx\glut.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "glutfx"=".\glutfx.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ipers"=".\ipers.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "isosurf"=".\isosurf.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "lodbias"=".\loadbias.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "morph3d"=".\morph3d.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "multiarb"=".\multiarb.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "occlude"=".\occlude.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "osdemo"=".\osdemo.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "paltex"=".\paltex.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "pixeltex"=".\pixeltex.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "pointblast"=".\pointblast.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "rain"=".\rain.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ray"=".\ray.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "readpix"=".\readpix.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "reflect"=".\reflect.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "renormal"=".\renormal.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "shadowtex"=".\shadowtex.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "spectex"=".\spectex.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "spriteblast"=".\spriteblast.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "stex3d"=".\stex3d.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "teapot"=".\teapot.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "terrain"=".\terrain.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "tessdemo"=".\tessdemo.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "texcyl"=".\texcyl.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "texdown"=".\texdown.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "texenv"=".\texenv.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "texobj"=".\texobj.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "trispd"=".\trispd.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "tunnel"=".\tunnel.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "tunnel2"=".\tunnel2.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "winpos"=".\winpos.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name glut
- End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/progs/demos/Windows/drawpix.dsp b/progs/demos/Windows/drawpix.dsp
deleted file mode 100644
index f21be17792..0000000000
--- a/progs/demos/Windows/drawpix.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="drawpix" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=drawpix - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "drawpix.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "drawpix.mak" CFG="drawpix - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "drawpix - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "drawpix - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "drawpix - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../" /I "../../../include" /I "../../util" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../drawpix.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "drawpix - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../drawpix.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "drawpix - Win32 Release"
-# Name "drawpix - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\drawpix.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/fire.dsp b/progs/demos/Windows/fire.dsp
deleted file mode 100644
index 9d046a4c6e..0000000000
--- a/progs/demos/Windows/fire.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="fire" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=fire - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "fire.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "fire.mak" CFG="fire - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "fire - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "fire - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "fire - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../fire.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "fire - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../fire.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "fire - Win32 Release"
-# Name "fire - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\fire.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/gears.dsp b/progs/demos/Windows/gears.dsp
deleted file mode 100644
index 2cf6b1a826..0000000000
--- a/progs/demos/Windows/gears.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="gears" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=gears - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "gears.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "gears.mak" CFG="gears - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "gears - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "gears - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "gears - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../gears.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "gears - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../gears.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "gears - Win32 Release"
-# Name "gears - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\gears.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/geartrain.dsp b/progs/demos/Windows/geartrain.dsp
deleted file mode 100644
index f3e499fea0..0000000000
--- a/progs/demos/Windows/geartrain.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="geartrain" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=geartrain - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "geartrain.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "geartrain.mak" CFG="geartrain - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "geartrain - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "geartrain - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "geartrain - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../geartrain.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "geartrain - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../geartrain.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "geartrain - Win32 Release"
-# Name "geartrain - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\geartrain.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/glinfo.dsp b/progs/demos/Windows/glinfo.dsp
deleted file mode 100644
index 7a2c65a0d1..0000000000
--- a/progs/demos/Windows/glinfo.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="glinfo" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=glinfo - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "glinfo.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "glinfo.mak" CFG="glinfo - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "glinfo - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "glinfo - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "glinfo - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../glinfo.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "glinfo - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../glinfo.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "glinfo - Win32 Release"
-# Name "glinfo - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\glinfo.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/gloss.dsp b/progs/demos/Windows/gloss.dsp
deleted file mode 100644
index 9a6edd79b1..0000000000
--- a/progs/demos/Windows/gloss.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="gloss" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=gloss - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "gloss.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "gloss.mak" CFG="gloss - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "gloss - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "gloss - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "gloss - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../gloss.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "gloss - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../gloss.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "gloss - Win32 Release"
-# Name "gloss - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\gloss.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/gltestperf.dsp b/progs/demos/Windows/gltestperf.dsp
deleted file mode 100644
index e3d8df6b98..0000000000
--- a/progs/demos/Windows/gltestperf.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="gltestperf" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=gltestperf - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "gltestperf.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "gltestperf.mak" CFG="gltestperf - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "gltestperf - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "gltestperf - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "gltestperf - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../gltestperf.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "gltestperf - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../gltestperf.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "gltestperf - Win32 Release"
-# Name "gltestperf - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\gltestperf.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/glutfx.dsp b/progs/demos/Windows/glutfx.dsp
deleted file mode 100644
index 39bc8574af..0000000000
--- a/progs/demos/Windows/glutfx.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="glutfx" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=glutfx - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "glutfx.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "glutfx.mak" CFG="glutfx - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "glutfx - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "glutfx - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "glutfx - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../glutfx.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "glutfx - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../glutfx.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "glutfx - Win32 Release"
-# Name "glutfx - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\glutfx.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/ipers.dsp b/progs/demos/Windows/ipers.dsp
deleted file mode 100644
index b5ccb82afb..0000000000
--- a/progs/demos/Windows/ipers.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ipers" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ipers - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ipers.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ipers.mak" CFG="ipers - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ipers - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ipers - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ipers - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../ipers.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "ipers - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../ipers.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "ipers - Win32 Release"
-# Name "ipers - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\ipers.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/isosurf.dsp b/progs/demos/Windows/isosurf.dsp
deleted file mode 100644
index 5a112d457b..0000000000
--- a/progs/demos/Windows/isosurf.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="isosurf" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=isosurf - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "isosurf.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "isosurf.mak" CFG="isosurf - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "isosurf - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "isosurf - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "isosurf - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../isosurf.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "isosurf - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../isosurf.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "isosurf - Win32 Release"
-# Name "isosurf - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\isosurf.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/loadbias.dsp b/progs/demos/Windows/loadbias.dsp
deleted file mode 100644
index b7cfb5efcb..0000000000
--- a/progs/demos/Windows/loadbias.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="lodbias" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=lodbias - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "lodbias.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "lodbias.mak" CFG="lodbias - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "lodbias - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "lodbias - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "lodbias - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../lodbias.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "lodbias - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../lodbias.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "lodbias - Win32 Release"
-# Name "lodbias - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\lodbias.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/morph3d.dsp b/progs/demos/Windows/morph3d.dsp
deleted file mode 100644
index 05f7fea51a..0000000000
--- a/progs/demos/Windows/morph3d.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="morph3d" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=morph3d - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "morph3d.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "morph3d.mak" CFG="morph3d - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "morph3d - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "morph3d - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "morph3d - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../morph3d.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "morph3d - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../morph3d.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "morph3d - Win32 Release"
-# Name "morph3d - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\morph3d.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/multiarb.dsp b/progs/demos/Windows/multiarb.dsp
deleted file mode 100644
index ff13579a41..0000000000
--- a/progs/demos/Windows/multiarb.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="multiarb" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=multiarb - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "multiarb.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "multiarb.mak" CFG="multiarb - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "multiarb - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "multiarb - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "multiarb - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../multiarb.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "multiarb - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../multiarb.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "multiarb - Win32 Release"
-# Name "multiarb - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\multiarb.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/occlude.dsp b/progs/demos/Windows/occlude.dsp
deleted file mode 100644
index 98723303d9..0000000000
--- a/progs/demos/Windows/occlude.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="occlude" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=occlude - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "occlude.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "occlude.mak" CFG="occlude - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "occlude - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "occlude - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "occlude - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../occlude.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "occlude - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../occlude.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "occlude - Win32 Release"
-# Name "occlude - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\occlude.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/osdemo.dsp b/progs/demos/Windows/osdemo.dsp
deleted file mode 100644
index 2d1d437f71..0000000000
--- a/progs/demos/Windows/osdemo.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="osdemo" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=osdemo - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "osdemo.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "osdemo.mak" CFG="osdemo - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "osdemo - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "osdemo - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "osdemo - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB ../../../lib/OSMESA32.LIB /nologo /subsystem:console /machine:I386 /out:"../osdemo.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "osdemo - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB ../../../lib/OSMESA32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../osdemo.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "osdemo - Win32 Release"
-# Name "osdemo - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\osdemo.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/paltex.dsp b/progs/demos/Windows/paltex.dsp
deleted file mode 100644
index 6f43ff97cd..0000000000
--- a/progs/demos/Windows/paltex.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="paltex" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=paltex - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "paltex.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "paltex.mak" CFG="paltex - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "paltex - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "paltex - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "paltex - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../paltex.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "paltex - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../paltex.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "paltex - Win32 Release"
-# Name "paltex - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\paltex.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/pixeltex.dsp b/progs/demos/Windows/pixeltex.dsp
deleted file mode 100644
index d6e66c821a..0000000000
--- a/progs/demos/Windows/pixeltex.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="pixeltex" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=pixeltex - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "pixeltex.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "pixeltex.mak" CFG="pixeltex - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "pixeltex - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "pixeltex - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "pixeltex - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../pixeltex.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "pixeltex - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../pixeltex.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "pixeltex - Win32 Release"
-# Name "pixeltex - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\pixeltex.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/pointblast.dsp b/progs/demos/Windows/pointblast.dsp
deleted file mode 100644
index 0c6f26ca02..0000000000
--- a/progs/demos/Windows/pointblast.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="pointblast" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=pointblast - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "pointblast.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "pointblast.mak" CFG="pointblast - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "pointblast - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "pointblast - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "pointblast - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../pointblast.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "pointblast - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../pointblast.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "pointblast - Win32 Release"
-# Name "pointblast - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\pointblast.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/rain.dsp b/progs/demos/Windows/rain.dsp
deleted file mode 100644
index 63102f13a5..0000000000
--- a/progs/demos/Windows/rain.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="rain" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=rain - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "rain.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "rain.mak" CFG="rain - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "rain - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "rain - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "rain - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../rain.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "rain - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../rain.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "rain - Win32 Release"
-# Name "rain - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\rain.cxx
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/ray.dsp b/progs/demos/Windows/ray.dsp
deleted file mode 100644
index 425d4eb258..0000000000
--- a/progs/demos/Windows/ray.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ray" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ray - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "ray.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "ray.mak" CFG="ray - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ray - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ray - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ray - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../ray.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "ray - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../ray.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "ray - Win32 Release"
-# Name "ray - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\ray.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/readpix.dsp b/progs/demos/Windows/readpix.dsp
deleted file mode 100644
index ca0b30b604..0000000000
--- a/progs/demos/Windows/readpix.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="readpix" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=readpix - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "readpix.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "readpix.mak" CFG="readpix - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "readpix - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "readpix - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "readpix - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../readpix.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "readpix - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../readpix.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "readpix - Win32 Release"
-# Name "readpix - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\readpix.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/reflect.dsp b/progs/demos/Windows/reflect.dsp
deleted file mode 100644
index 74f411a47e..0000000000
--- a/progs/demos/Windows/reflect.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="reflect" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=reflect - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "reflect.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "reflect.mak" CFG="reflect - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "reflect - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "reflect - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "reflect - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../reflect.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "reflect - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../reflect.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "reflect - Win32 Release"
-# Name "reflect - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\reflect.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/renormal.dsp b/progs/demos/Windows/renormal.dsp
deleted file mode 100644
index e0059002b3..0000000000
--- a/progs/demos/Windows/renormal.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="renormal" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=renormal - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "renormal.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "renormal.mak" CFG="bounce - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "renormal - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "renormal - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "renormal - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../renormal.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "renormal - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../renormal.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "renormal - Win32 Release"
-# Name "renormal - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\renormal.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/shadowtex.dsp b/progs/demos/Windows/shadowtex.dsp
deleted file mode 100644
index 2618431ae1..0000000000
--- a/progs/demos/Windows/shadowtex.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="shadowtex" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=shadowtex - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "shadowtex.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "shadowtex.mak" CFG="bounce - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "shadowtex - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "shadowtex - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "shadowtex - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../shadowtex.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "shadowtex - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../shadowtex.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "shadowtex - Win32 Release"
-# Name "shadowtex - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\shadowtex.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/spectex.dsp b/progs/demos/Windows/spectex.dsp
deleted file mode 100644
index 9d385b2dc7..0000000000
--- a/progs/demos/Windows/spectex.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="spectex" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=spectex - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "spectex.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "spectex.mak" CFG="bounce - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "spectex - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "spectex - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "spectex - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../spectex.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "spectex - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../spectex.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "spectex - Win32 Release"
-# Name "spectex - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\spectex.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/spriteblast.dsp b/progs/demos/Windows/spriteblast.dsp
deleted file mode 100644
index 0a8ea1af5b..0000000000
--- a/progs/demos/Windows/spriteblast.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="spriteblast" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=spriteblast - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "spriteblast.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "spriteblast.mak" CFG="bounce - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "spriteblast - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "spriteblast - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "spriteblast - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../spriteblast.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "spriteblast - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../spriteblast.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "spriteblast - Win32 Release"
-# Name "spriteblast - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\spriteblast.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/stex3d.dsp b/progs/demos/Windows/stex3d.dsp
deleted file mode 100644
index 5d8c93b9e4..0000000000
--- a/progs/demos/Windows/stex3d.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="stex3d" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=stex3d - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "stex3d.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "stex3d.mak" CFG="bounce - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "stex3d - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "stex3d - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "stex3d - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../stex3d.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "stex3d - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../stex3d.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "stex3d - Win32 Release"
-# Name "stex3d - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\stex3d.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/teapot.dsp b/progs/demos/Windows/teapot.dsp
deleted file mode 100644
index 63cea20504..0000000000
--- a/progs/demos/Windows/teapot.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="teapot" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=teapot - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "teapot.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "teapot.mak" CFG="gloss - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "teapot - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "teapot - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "teapot - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../teapot.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "teapot - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../teapot.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "teapot - Win32 Release"
-# Name "teapot - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\teapot.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/terrain.dsp b/progs/demos/Windows/terrain.dsp
deleted file mode 100644
index 35c67a5f94..0000000000
--- a/progs/demos/Windows/terrain.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="terrain" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=terrain - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "terrain.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "terrain.mak" CFG="bounce - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "terrain - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "terrain - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "terrain - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../terrain.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "terrain - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../terrain.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "terrain - Win32 Release"
-# Name "terrain - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\terrain.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/tessdemo.dsp b/progs/demos/Windows/tessdemo.dsp
deleted file mode 100644
index 62815ea8ac..0000000000
--- a/progs/demos/Windows/tessdemo.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="tessdemo" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=tessdemo - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "tessdemo.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "tessdemo.mak" CFG="bounce - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "tessdemo - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "tessdemo - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "tessdemo - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../tessdemo.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "tessdemo - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../tessdemo.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "tessdemo - Win32 Release"
-# Name "tessdemo - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\tessdemo.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/texcyl.dsp b/progs/demos/Windows/texcyl.dsp
deleted file mode 100644
index 326a2728eb..0000000000
--- a/progs/demos/Windows/texcyl.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="texcyl" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=texcyl - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "texcyl.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "texcyl.mak" CFG="gloss - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "texcyl - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "texcyl - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "texcyl - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../texcyl.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "texcyl - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../texcyl.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "texcyl - Win32 Release"
-# Name "texcyl - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\texcyl.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/texdown.dsp b/progs/demos/Windows/texdown.dsp
deleted file mode 100644
index 926e72408b..0000000000
--- a/progs/demos/Windows/texdown.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="texdown" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=texdown - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "texdown.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "texdown.mak" CFG="bounce - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "texdown - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "texdown - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "texdown - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../texdown.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "texdown - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../texdown.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "texdown - Win32 Release"
-# Name "texdown - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\texdown.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/texenv.dsp b/progs/demos/Windows/texenv.dsp
deleted file mode 100644
index 964c6d207e..0000000000
--- a/progs/demos/Windows/texenv.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="texenv" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=texenv - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "texenv.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "texenv.mak" CFG="bounce - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "texenv - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "texenv - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "texenv - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../texenv.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "texenv - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../texenv.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "texenv - Win32 Release"
-# Name "texenv - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\texenv.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/texobj.dsp b/progs/demos/Windows/texobj.dsp
deleted file mode 100644
index 2a44dffd36..0000000000
--- a/progs/demos/Windows/texobj.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="texobj" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=texobj - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "texobj.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "texobj.mak" CFG="bounce - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "texobj - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "texobj - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "texobj - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../texobj.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "texobj - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../texobj.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "texobj - Win32 Release"
-# Name "texobj - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\texobj.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/trispd.dsp b/progs/demos/Windows/trispd.dsp
deleted file mode 100644
index 2ba95dc634..0000000000
--- a/progs/demos/Windows/trispd.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="trispd" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=trispd - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "trispd.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "trispd.mak" CFG="bounce - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "trispd - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "trispd - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "trispd - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../trispd.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "trispd - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../trispd.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "trispd - Win32 Release"
-# Name "trispd - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\trispd.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/tunnel.dsp b/progs/demos/Windows/tunnel.dsp
deleted file mode 100644
index 218d372866..0000000000
--- a/progs/demos/Windows/tunnel.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="tunnel" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=tunnel - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "tunnel.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "tunnel.mak" CFG="gloss - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "tunnel - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "tunnel - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "tunnel - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../tunnel.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "tunnel - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../tunnel.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "tunnel - Win32 Release"
-# Name "tunnel - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\tunnel.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/tunnel2.dsp b/progs/demos/Windows/tunnel2.dsp
deleted file mode 100644
index bd2b6c07f2..0000000000
--- a/progs/demos/Windows/tunnel2.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="tunnel2" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=tunnel2 - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "tunnel2.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "tunnel2.mak" CFG="gloss - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "tunnel2 - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "tunnel2 - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "tunnel2 - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../tunnel2.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "tunnel2 - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../tunnel2.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "tunnel2 - Win32 Release"
-# Name "tunnel2 - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\tunnel2.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/Windows/winpos.dsp b/progs/demos/Windows/winpos.dsp
deleted file mode 100644
index a388a425e9..0000000000
--- a/progs/demos/Windows/winpos.dsp
+++ /dev/null
@@ -1,112 +0,0 @@
-# Microsoft Developer Studio Project File - Name="winpos" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=winpos - Win32 Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "winpos.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "winpos.mak" CFG="gloss - Win32 Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "winpos - Win32 Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "winpos - Win32 Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "winpos - Win32 Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "Release"
-# PROP BASE Intermediate_Dir "Release"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "../../util" /I "../../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /machine:I386 /out:"../winpos.exe"
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ELSEIF "$(CFG)" == "winpos - Win32 Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "Debug"
-# PROP BASE Intermediate_Dir "Debug"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../util" /I "../../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../../../lib/GLUT32.LIB ../../../lib/GLU32.LIB ../../../lib/OPENGL32.LIB /nologo /subsystem:console /debug /machine:I386 /out:"../winpos.exe" /pdbtype:sept
-# Begin Special Build Tool
-SOURCE="$(InputPath)"
-PostBuild_Desc=Copy DLLs
-PostBuild_Cmds=copy ..\..\..\lib\*.dll ..
-# End Special Build Tool
-
-!ENDIF
-
-# Begin Target
-
-# Name "winpos - Win32 Release"
-# Name "winpos - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
-# Begin Source File
-
-SOURCE=..\winpos.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
-# End Group
-# End Target
-# End Project
diff --git a/progs/demos/arbfplight.c b/progs/demos/arbfplight.c
deleted file mode 100644
index 861b3b7252..0000000000
--- a/progs/demos/arbfplight.c
+++ /dev/null
@@ -1,404 +0,0 @@
-/*
- * Use GL_ARB_fragment_program and GL_ARB_vertex_program to implement
- * simple per-pixel lighting.
- *
- * Brian Paul
- * 17 April 2003
- */
-
-#include <assert.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <GL/glut.h>
-
-
-static GLfloat Diffuse[4] = { 0.5, 0.5, 1.0, 1.0 };
-static GLfloat Specular[4] = { 0.8, 0.8, 0.8, 1.0 };
-static GLfloat LightPos[4] = { 0.0, 10.0, 20.0, 1.0 };
-static GLfloat Delta = 1.0;
-
-static GLuint FragProg;
-static GLuint VertProg;
-static GLboolean Anim = GL_TRUE;
-static GLboolean Wire = GL_FALSE;
-static GLboolean PixelLight = GL_TRUE;
-static GLint Win;
-
-static GLint T0 = 0;
-static GLint Frames = 0;
-
-static GLfloat Xrot = 0, Yrot = 0;
-
-static PFNGLPROGRAMLOCALPARAMETER4FVARBPROC glProgramLocalParameter4fvARB_func;
-static PFNGLPROGRAMLOCALPARAMETER4DARBPROC glProgramLocalParameter4dARB_func;
-static PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC glGetProgramLocalParameterdvARB_func;
-static PFNGLGENPROGRAMSARBPROC glGenProgramsARB_func;
-static PFNGLPROGRAMSTRINGARBPROC glProgramStringARB_func;
-static PFNGLBINDPROGRAMARBPROC glBindProgramARB_func;
-static PFNGLISPROGRAMARBPROC glIsProgramARB_func;
-static PFNGLDELETEPROGRAMSARBPROC glDeleteProgramsARB_func;
-
-/* These must match the indexes used in the fragment program */
-#define LIGHTPOS 3
-
-/* Set to one to test ARB_fog_linear program option */
-#define DO_FRAGMENT_FOG 0
-
-static void normalize (GLfloat *dst, const GLfloat *src)
-{
- GLfloat len = sqrt (src[0] * src[0] + src[1] * src[1] + src[2] * src[2]);
- dst[0] = src[0] / len;
- dst[1] = src[1] / len;
- dst[2] = src[2] / len;
-}
-
-static void Redisplay( void )
-{
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
-
- if (PixelLight) {
- GLfloat pos[4];
-
- normalize( pos, LightPos );
- pos[3] = LightPos[3];
- glProgramLocalParameter4fvARB_func(GL_FRAGMENT_PROGRAM_ARB,
- LIGHTPOS, pos);
- glEnable(GL_FRAGMENT_PROGRAM_ARB);
- glEnable(GL_VERTEX_PROGRAM_ARB);
- glDisable(GL_LIGHTING);
- }
- else {
- glLightfv(GL_LIGHT0, GL_POSITION, LightPos);
- glDisable(GL_FRAGMENT_PROGRAM_ARB);
- glDisable(GL_VERTEX_PROGRAM_ARB);
- glEnable(GL_LIGHTING);
- }
-
- glPushMatrix();
- glRotatef(Xrot, 1, 0, 0);
- glRotatef(Yrot, 0, 1, 0);
- glutSolidSphere(2.0, 10, 5);
- glPopMatrix();
-
- glutSwapBuffers();
-
- Frames++;
-
- if (Anim) {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- if (t - T0 >= 5000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- printf("%d frames in %6.3f seconds = %6.3f FPS\n", Frames, seconds, fps);
- fflush(stdout);
- T0 = t;
- Frames = 0;
- }
- }
-}
-
-
-static void Idle(void)
-{
- LightPos[0] += Delta;
- if (LightPos[0] > 25.0)
- Delta = -1.0;
- else if (LightPos[0] <- 25.0)
- Delta = 1.0;
- glutPostRedisplay();
-}
-
-
-static void Reshape( int width, int height )
-{
- glViewport( 0, 0, width, height );
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 );
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
- glTranslatef( 0.0, 0.0, -15.0 );
-}
-
-
-static void Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case ' ':
- case 'a':
- Anim = !Anim;
- if (Anim)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- break;
- case 'x':
- LightPos[0] -= 1.0;
- break;
- case 'X':
- LightPos[0] += 1.0;
- break;
- case 'w':
- Wire = !Wire;
- if (Wire)
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- else
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- break;
- case 'p':
- PixelLight = !PixelLight;
- if (PixelLight) {
- printf("Per-pixel lighting\n");
- }
- else {
- printf("Conventional lighting\n");
- }
- break;
- case 27:
- glDeleteProgramsARB_func(1, &VertProg);
- glDeleteProgramsARB_func(1, &FragProg);
- glutDestroyWindow(Win);
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-static void SpecialKey( int key, int x, int y )
-{
- const GLfloat step = 3.0;
- (void) x;
- (void) y;
- switch (key) {
- case GLUT_KEY_UP:
- Xrot -= step;
- break;
- case GLUT_KEY_DOWN:
- Xrot += step;
- break;
- case GLUT_KEY_LEFT:
- Yrot -= step;
- break;
- case GLUT_KEY_RIGHT:
- Yrot += step;
- break;
- }
- glutPostRedisplay();
-}
-
-
-/* A helper for finding errors in program strings */
-static int FindLine( const char *program, int position )
-{
- int i, line = 1;
- for (i = 0; i < position; i++) {
- if (program[i] == '\n')
- line++;
- }
- return line;
-}
-
-
-static void Init( void )
-{
- GLint errorPos;
-
- /* Yes, this could be expressed more efficiently */
- static const char *fragProgramText =
- "!!ARBfp1.0\n"
-#if DO_FRAGMENT_FOG
- "OPTION ARB_fog_linear; \n"
-#endif
- "PARAM Diffuse = state.material.diffuse; \n"
- "PARAM Specular = state.material.specular; \n"
- "PARAM LightPos = program.local[3]; \n"
- "TEMP normal, len; \n"
- "TEMP dotProd, specAtten; \n"
- "TEMP diffuseColor, specularColor; \n"
-
- "# Compute normalized normal \n"
- "DP3 len.x, fragment.texcoord[0], fragment.texcoord[0]; \n"
- "RSQ len.y, len.x; \n"
- "MUL normal.xyz, fragment.texcoord[0], len.y; \n"
-
- "# Compute dot product of light direction and normal vector\n"
- "DP3_SAT dotProd.x, LightPos, normal; # limited to [0,1]\n"
-
- "MUL diffuseColor.xyz, Diffuse, dotProd.x; # diffuse attenuation\n"
-
- "POW specAtten.x, dotProd.x, {20.0}.x; # specular exponent\n"
-
- "MUL specularColor.xyz, Specular, specAtten.x; # specular attenuation\n"
-
- "MOV result.color.w, Diffuse; \n"
-#if DO_FRAGMENT_FOG
- "# need to clamp color to [0,1] before fogging \n"
- "ADD_SAT result.color.xyz, diffuseColor, specularColor; # add colors\n"
-#else
- "# clamping will be done after program's finished \n"
- "ADD result.color.xyz, diffuseColor, specularColor; # add colors\n"
-#endif
- "END \n"
- ;
-
- static const char *vertProgramText =
- "!!ARBvp1.0\n"
- "ATTRIB pos = vertex.position; \n"
- "ATTRIB norm = vertex.normal; \n"
- "PARAM modelview[4] = { state.matrix.modelview }; \n"
- "PARAM modelviewProj[4] = { state.matrix.mvp }; \n"
- "PARAM invModelview[4] = { state.matrix.modelview.invtrans }; \n"
-
- "# typical modelview/projection transform \n"
- "DP4 result.position.x, pos, modelviewProj[0]; \n"
- "DP4 result.position.y, pos, modelviewProj[1]; \n"
- "DP4 result.position.z, pos, modelviewProj[2]; \n"
- "DP4 result.position.w, pos, modelviewProj[3]; \n"
-
- "# transform normal by inv transpose of modelview, put in tex0 \n"
- "DP3 result.texcoord[0].x, norm, invModelview[0]; \n"
- "DP3 result.texcoord[0].y, norm, invModelview[1]; \n"
- "DP3 result.texcoord[0].z, norm, invModelview[2]; \n"
- "DP3 result.texcoord[0].w, norm, invModelview[3]; \n"
-
-#if DO_FRAGMENT_FOG
- "# compute fog coordinate = vertex eye-space Z coord (negated)\n"
- "DP4 result.fogcoord, -pos, modelview[2]; \n"
-#endif
- "END\n";
- ;
-
- if (!glutExtensionSupported("GL_ARB_vertex_program")) {
- printf("Sorry, this demo requires GL_ARB_vertex_program\n");
- exit(1);
- }
- if (!glutExtensionSupported("GL_ARB_fragment_program")) {
- printf("Sorry, this demo requires GL_ARB_fragment_program\n");
- exit(1);
- }
-
- /*
- * Get extension function pointers.
- */
- glProgramLocalParameter4fvARB_func = (PFNGLPROGRAMLOCALPARAMETER4FVARBPROC) glutGetProcAddress("glProgramLocalParameter4fvARB");
- assert(glProgramLocalParameter4fvARB_func);
-
- glProgramLocalParameter4dARB_func = (PFNGLPROGRAMLOCALPARAMETER4DARBPROC) glutGetProcAddress("glProgramLocalParameter4dARB");
- assert(glProgramLocalParameter4dARB_func);
-
- glGetProgramLocalParameterdvARB_func = (PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC) glutGetProcAddress("glGetProgramLocalParameterdvARB");
- assert(glGetProgramLocalParameterdvARB_func);
-
- glGenProgramsARB_func = (PFNGLGENPROGRAMSARBPROC) glutGetProcAddress("glGenProgramsARB");
- assert(glGenProgramsARB_func);
-
- glProgramStringARB_func = (PFNGLPROGRAMSTRINGARBPROC) glutGetProcAddress("glProgramStringARB");
- assert(glProgramStringARB_func);
-
- glBindProgramARB_func = (PFNGLBINDPROGRAMARBPROC) glutGetProcAddress("glBindProgramARB");
- assert(glBindProgramARB_func);
-
- glIsProgramARB_func = (PFNGLISPROGRAMARBPROC) glutGetProcAddress("glIsProgramARB");
- assert(glIsProgramARB_func);
-
- glDeleteProgramsARB_func = (PFNGLDELETEPROGRAMSARBPROC) glutGetProcAddress("glDeleteProgramsARB");
- assert(glDeleteProgramsARB_func);
-
- /*
- * Fragment program
- */
- glGenProgramsARB_func(1, &FragProg);
- assert(FragProg > 0);
- glBindProgramARB_func(GL_FRAGMENT_PROGRAM_ARB, FragProg);
- glProgramStringARB_func(GL_FRAGMENT_PROGRAM_ARB,
- GL_PROGRAM_FORMAT_ASCII_ARB,
- strlen(fragProgramText),
- (const GLubyte *) fragProgramText);
- glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorPos);
- if (glGetError() != GL_NO_ERROR || errorPos != -1) {
- int l = FindLine(fragProgramText, errorPos);
- printf("Fragment Program Error (pos=%d line=%d): %s\n", errorPos, l,
- (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB));
- exit(0);
- }
- assert(glIsProgramARB_func(FragProg));
-
- /*
- * Do some sanity tests
- */
- {
- GLdouble v[4];
- glProgramLocalParameter4dARB_func(GL_FRAGMENT_PROGRAM_ARB, 8,
- 10.0, 20.0, 30.0, 40.0);
- glGetProgramLocalParameterdvARB_func(GL_FRAGMENT_PROGRAM_ARB, 8, v);
- assert(v[0] == 10.0);
- assert(v[1] == 20.0);
- assert(v[2] == 30.0);
- assert(v[3] == 40.0);
- }
-
- /*
- * Vertex program
- */
- glGenProgramsARB_func(1, &VertProg);
- assert(VertProg > 0);
- glBindProgramARB_func(GL_VERTEX_PROGRAM_ARB, VertProg);
- glProgramStringARB_func(GL_VERTEX_PROGRAM_ARB,
- GL_PROGRAM_FORMAT_ASCII_ARB,
- strlen(vertProgramText),
- (const GLubyte *) vertProgramText);
- glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorPos);
- if (glGetError() != GL_NO_ERROR || errorPos != -1) {
- int l = FindLine(vertProgramText, errorPos);
- printf("Vertex Program Error (pos=%d line=%d): %s\n", errorPos, l,
- (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB));
- exit(0);
- }
- assert(glIsProgramARB_func(VertProg));
-
- /*
- * Misc init
- */
- glClearColor(0.3, 0.3, 0.3, 0.0);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_LIGHT0);
- glEnable(GL_LIGHTING);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Diffuse);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, Specular);
- glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 20.0);
-
-#if DO_FRAGMENT_FOG
- {
- /* Green-ish fog color */
- static const GLfloat fogColor[4] = {0.5, 1.0, 0.5, 0};
- glFogfv(GL_FOG_COLOR, fogColor);
- glFogf(GL_FOG_START, 5.0);
- glFogf(GL_FOG_END, 25.0);
- }
-#endif
-
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
- printf("Press p to toggle between per-pixel and per-vertex lighting\n");
-}
-
-
-int main( int argc, char *argv[] )
-{
- glutInitWindowSize( 200, 200 );
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
- Win = glutCreateWindow(argv[0]);
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutSpecialFunc( SpecialKey );
- glutDisplayFunc( Redisplay );
- if (Anim)
- glutIdleFunc(Idle);
- Init();
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/arbfslight.c b/progs/demos/arbfslight.c
deleted file mode 100644
index a0ce7f3f5b..0000000000
--- a/progs/demos/arbfslight.c
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- * Use GL_ARB_fragment_shader and GL_ARB_vertex_shader to implement
- * simple per-pixel lighting.
- *
- * Michal Krol
- * 20 February 2006
- *
- * Based on the original demo by:
- * Brian Paul
- * 17 April 2003
- */
-
-#ifdef WIN32
-#include <windows.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <GL/gl.h>
-#include <GL/glut.h>
-#include <GL/glext.h>
-
-#ifdef WIN32
-#define GETPROCADDRESS wglGetProcAddress
-#else
-#define GETPROCADDRESS glutGetProcAddress
-#endif
-
-static GLfloat diffuse[4] = { 0.5f, 0.5f, 1.0f, 1.0f };
-static GLfloat specular[4] = { 0.8f, 0.8f, 0.8f, 1.0f };
-static GLfloat lightPos[4] = { 0.0f, 10.0f, 20.0f, 1.0f };
-static GLfloat delta = 1.0f;
-
-static GLhandleARB fragShader;
-static GLhandleARB vertShader;
-static GLhandleARB program;
-
-static GLint uLightPos;
-static GLint uDiffuse;
-static GLint uSpecular;
-
-static GLboolean anim = GL_TRUE;
-static GLboolean wire = GL_FALSE;
-static GLboolean pixelLight = GL_TRUE;
-
-static GLint t0 = 0;
-static GLint frames = 0;
-
-static GLfloat xRot = 0.0f, yRot = 0.0f;
-
-static PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB = NULL;
-static PFNGLSHADERSOURCEARBPROC glShaderSourceARB = NULL;
-static PFNGLCOMPILESHADERARBPROC glCompileShaderARB = NULL;
-static PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB = NULL;
-static PFNGLATTACHOBJECTARBPROC glAttachObjectARB = NULL;
-static PFNGLLINKPROGRAMARBPROC glLinkProgramARB = NULL;
-static PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB = NULL;
-static PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB = NULL;
-static PFNGLUNIFORM3FVARBPROC glUniform3fvARB = NULL;
-static PFNGLUNIFORM3FVARBPROC glUniform4fvARB = NULL;
-
-static void normalize (GLfloat *dst, const GLfloat *src)
-{
- GLfloat len = sqrt (src[0] * src[0] + src[1] * src[1] + src[2] * src[2]);
- dst[0] = src[0] / len;
- dst[1] = src[1] / len;
- dst[2] = src[2] / len;
-}
-
-static void Redisplay (void)
-{
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- if (pixelLight)
- {
- GLfloat vec[3];
-
- glUseProgramObjectARB (program);
- normalize (vec, lightPos);
- glUniform3fvARB (uLightPos, 1, vec);
- glDisable(GL_LIGHTING);
- }
- else
- {
- glUseProgramObjectARB (0);
- glLightfv (GL_LIGHT0, GL_POSITION, lightPos);
- glEnable(GL_LIGHTING);
- }
-
- glPushMatrix ();
- glRotatef (xRot, 1.0f, 0.0f, 0.0f);
- glRotatef (yRot, 0.0f, 1.0f, 0.0f);
- glutSolidSphere (2.0, 10, 5);
- glPopMatrix ();
-
- glutSwapBuffers();
- frames++;
-
- if (anim)
- {
- GLint t = glutGet (GLUT_ELAPSED_TIME);
- if (t - t0 >= 5000)
- {
- GLfloat seconds = (GLfloat) (t - t0) / 1000.0f;
- GLfloat fps = frames / seconds;
- printf ("%d frames in %6.3f seconds = %6.3f FPS\n", frames, seconds, fps);
- fflush(stdout);
- t0 = t;
- frames = 0;
- }
- }
-}
-
-static void Idle (void)
-{
- lightPos[0] += delta;
- if (lightPos[0] > 25.0f || lightPos[0] < -25.0f)
- delta = -delta;
- glutPostRedisplay ();
-}
-
-static void Reshape (int width, int height)
-{
- glViewport (0, 0, width, height);
- glMatrixMode (GL_PROJECTION);
- glLoadIdentity ();
- glFrustum (-1.0, 1.0, -1.0, 1.0, 5.0, 25.0);
- glMatrixMode (GL_MODELVIEW);
- glLoadIdentity ();
- glTranslatef (0.0f, 0.0f, -15.0f);
-}
-
-static void Key (unsigned char key, int x, int y)
-{
- (void) x;
- (void) y;
-
- switch (key)
- {
- case ' ':
- case 'a':
- anim = !anim;
- if (anim)
- glutIdleFunc (Idle);
- else
- glutIdleFunc (NULL);
- break;
- case 'x':
- lightPos[0] -= 1.0f;
- break;
- case 'X':
- lightPos[0] += 1.0f;
- break;
- case 'w':
- wire = !wire;
- if (wire)
- glPolygonMode (GL_FRONT_AND_BACK, GL_LINE);
- else
- glPolygonMode (GL_FRONT_AND_BACK, GL_FILL);
- break;
- case 'p':
- pixelLight = !pixelLight;
- if (pixelLight)
- printf ("Per-pixel lighting\n");
- else
- printf ("Conventional lighting\n");
- break;
- case 27:
- exit(0);
- break;
- }
- glutPostRedisplay ();
-}
-
-static void SpecialKey (int key, int x, int y)
-{
- const GLfloat step = 3.0f;
-
- (void) x;
- (void) y;
-
- switch (key)
- {
- case GLUT_KEY_UP:
- xRot -= step;
- break;
- case GLUT_KEY_DOWN:
- xRot += step;
- break;
- case GLUT_KEY_LEFT:
- yRot -= step;
- break;
- case GLUT_KEY_RIGHT:
- yRot += step;
- break;
- }
- glutPostRedisplay ();
-}
-
-static void Init (void)
-{
- static const char *fragShaderText =
- "uniform vec3 lightPos;\n"
- "uniform vec4 diffuse;\n"
- "uniform vec4 specular;\n"
- "varying vec3 normal;\n"
- "void main () {\n"
- " // Compute dot product of light direction and normal vector\n"
- " float dotProd = max (dot (lightPos, normalize (normal)), 0.0);\n"
- " // Compute diffuse and specular contributions\n"
-#if 1
- " gl_FragColor = diffuse * dotProd + specular * pow (dotProd, 20.0);\n"
-#elif 1 /* test IF/ELSE/ENDIF */
- " if (normal.y > 0.0) { \n"
- " gl_FragColor = diffuse * dotProd + specular * pow (dotProd, 20.0);\n"
- " } \n"
- " else { \n"
- " if (normal.x < 0.0) { \n"
- " gl_FragColor = vec4(1, 0, 0, 0); \n"
- " } \n"
- " else { \n"
- " gl_FragColor = vec4(1, 1, 0, 0); \n"
- " } \n"
- " } \n"
-#elif 1 /* test LOOP */
- " while (1) { \n"
- " if (normal.y >= 0.0) { \n"
- " gl_FragColor = vec4(1, 0, 0, 0); \n"
- " break; \n"
- " } else { \n"
- " gl_FragColor = diffuse * dotProd + specular * pow (dotProd, 20.0);\n"
- " break; \n"
- " } \n"
- " } \n"
-#endif
- "}\n"
- ;
- static const char *vertShaderText =
- "varying vec3 normal;\n"
- "void main () {\n"
- " gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n"
- " normal = gl_NormalMatrix * gl_Normal;\n"
- "}\n"
- ;
-
- if (!glutExtensionSupported ("GL_ARB_fragment_shader"))
- {
- printf ("Sorry, this demo requires GL_ARB_fragment_shader\n");
- exit(1);
- }
- if (!glutExtensionSupported ("GL_ARB_shader_objects"))
- {
- printf ("Sorry, this demo requires GL_ARB_shader_objects\n");
- exit(1);
- }
- if (!glutExtensionSupported ("GL_ARB_shading_language_100"))
- {
- printf ("Sorry, this demo requires GL_ARB_shading_language_100\n");
- exit(1);
- }
- if (!glutExtensionSupported ("GL_ARB_vertex_shader"))
- {
- printf ("Sorry, this demo requires GL_ARB_vertex_shader\n");
- exit(1);
- }
-
- glCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC) GETPROCADDRESS ("glCreateShaderObjectARB");
- glShaderSourceARB = (PFNGLSHADERSOURCEARBPROC) GETPROCADDRESS ("glShaderSourceARB");
- glCompileShaderARB = (PFNGLCOMPILESHADERARBPROC) GETPROCADDRESS ("glCompileShaderARB");
- glCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC) GETPROCADDRESS ("glCreateProgramObjectARB");
- glAttachObjectARB = (PFNGLATTACHOBJECTARBPROC) GETPROCADDRESS ("glAttachObjectARB");
- glLinkProgramARB = (PFNGLLINKPROGRAMARBPROC) GETPROCADDRESS ("glLinkProgramARB");
- glUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC) GETPROCADDRESS ("glUseProgramObjectARB");
- glGetUniformLocationARB = (PFNGLGETUNIFORMLOCATIONARBPROC) GETPROCADDRESS ("glGetUniformLocationARB");
- glUniform3fvARB = (PFNGLUNIFORM3FVARBPROC) GETPROCADDRESS ("glUniform3fvARB");
- glUniform4fvARB = (PFNGLUNIFORM3FVARBPROC) GETPROCADDRESS ("glUniform4fvARB");
-
- fragShader = glCreateShaderObjectARB (GL_FRAGMENT_SHADER_ARB);
- glShaderSourceARB (fragShader, 1, &fragShaderText, NULL);
- glCompileShaderARB (fragShader);
-
- vertShader = glCreateShaderObjectARB (GL_VERTEX_SHADER_ARB);
- glShaderSourceARB (vertShader, 1, &vertShaderText, NULL);
- glCompileShaderARB (vertShader);
-
- program = glCreateProgramObjectARB ();
- glAttachObjectARB (program, fragShader);
- glAttachObjectARB (program, vertShader);
- glLinkProgramARB (program);
- glUseProgramObjectARB (program);
-
- uLightPos = glGetUniformLocationARB (program, "lightPos");
- uDiffuse = glGetUniformLocationARB (program, "diffuse");
- uSpecular = glGetUniformLocationARB (program, "specular");
-
- glUniform4fvARB (uDiffuse, 1, diffuse);
- glUniform4fvARB (uSpecular, 1, specular);
-
- glClearColor (0.3f, 0.3f, 0.3f, 0.0f);
- glEnable (GL_DEPTH_TEST);
- glEnable (GL_LIGHT0);
- glEnable (GL_LIGHTING);
- glMaterialfv (GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse);
- glMaterialfv (GL_FRONT_AND_BACK, GL_SPECULAR, specular);
- glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, 20.0f);
-
- printf ("GL_RENDERER = %s\n", (const char *) glGetString (GL_RENDERER));
- printf ("Press p to toggle between per-pixel and per-vertex lighting\n");
-}
-
-int main (int argc, char *argv[])
-{
- glutInitWindowSize (200, 200);
- glutInit (&argc, argv);
- glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
- glutCreateWindow (argv[0]);
- glutReshapeFunc (Reshape);
- glutKeyboardFunc (Key);
- glutSpecialFunc (SpecialKey);
- glutDisplayFunc (Redisplay);
- if (anim)
- glutIdleFunc (Idle);
- Init ();
- glutMainLoop ();
- return 0;
-}
-
diff --git a/progs/demos/arbocclude.c b/progs/demos/arbocclude.c
deleted file mode 100644
index cc787eeb8a..0000000000
--- a/progs/demos/arbocclude.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * GL_ARB_occlusion_query demo
- *
- * Brian Paul
- * 12 June 2003
- *
- * Copyright (C) 2003 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <GL/glew.h>
-#include <GL/glut.h>
-
-#define NUM_OCC 10
-
-static GLboolean Anim = GL_TRUE;
-static GLfloat Xpos[NUM_OCC], Ypos[NUM_OCC];
-static GLfloat Sign[NUM_OCC];
-static GLuint OccQuery[NUM_OCC];
-static GLint Win = 0;
-
-
-static void
-PrintString(const char *s)
-{
- while (*s) {
- glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s);
- s++;
- }
-}
-
-
-
-static void Idle(void)
-{
- static int lastTime = 0;
- int time = glutGet(GLUT_ELAPSED_TIME);
- float step;
- int i;
-
- if (lastTime == 0)
- lastTime = time;
- else if (time - lastTime < 20) /* 50Hz update */
- return;
-
- for (i = 0; i < NUM_OCC; i++) {
-
- step = (time - lastTime) / 1000.0 * Sign[i];
-
- Xpos[i] += step;
-
- if (Xpos[i] > 2.5) {
- Xpos[i] = 2.5;
- Sign[i] = -1;
- }
- else if (Xpos[i] < -2.5) {
- Xpos[i] = -2.5;
- Sign[i] = +1;
- }
-
- }
-
- lastTime = time;
-
- glutPostRedisplay();
-}
-
-
-static void Display( void )
-{
- int i;
-
- glClearColor(0.25, 0.25, 0.25, 0.0);
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
-
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 );
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
- glTranslatef( 0.0, 0.0, -15.0 );
-
- /* draw the occluding polygons */
- glColor3f(0, 0.4, 0.6);
- glBegin(GL_QUADS);
- glVertex2f(-1.6, -2.5);
- glVertex2f(-0.4, -2.5);
- glVertex2f(-0.4, 2.5);
- glVertex2f(-1.6, 2.5);
- glVertex2f( 0.4, -2.5);
- glVertex2f( 1.6, -2.5);
- glVertex2f( 1.6, 2.5);
- glVertex2f( 0.4, 2.5);
- glEnd();
-
-
- glColorMask(0, 0, 0, 0);
- glDepthMask(GL_FALSE);
-
- /* draw the test polygons with occlusion testing */
- for (i = 0; i < NUM_OCC; i++) {
- glPushMatrix();
- glTranslatef(Xpos[i], Ypos[i], -0.5);
- glScalef(0.2, 0.2, 1.0);
- glRotatef(-90.0 * Xpos[i], 0, 0, 1);
-
- glBeginQueryARB(GL_SAMPLES_PASSED_ARB, OccQuery[i]);
- glBegin(GL_POLYGON);
- glVertex3f(-1, -1, 0);
- glVertex3f( 1, -1, 0);
- glVertex3f( 1, 1, 0);
- glVertex3f(-1, 1, 0);
- glEnd();
- glEndQueryARB(GL_SAMPLES_PASSED_ARB);
-
- glPopMatrix();
- }
-
- glColorMask(1, 1, 1, 1);
- glDepthMask(GL_TRUE);
-
- /* Draw the rectangles now.
- * Draw orange if result was ready
- * Draw red if result was not ready.
- */
- for (i = 0; i < NUM_OCC; i++) {
- GLuint passed;
- GLint ready;
-
- glGetQueryObjectivARB(OccQuery[i], GL_QUERY_RESULT_AVAILABLE_ARB, &ready);
-
- glGetQueryObjectuivARB(OccQuery[i], GL_QUERY_RESULT_ARB, &passed);
-
- if (!ready)
- glColor3f(1, 0, 0);
- else
- glColor3f(0.8, 0.5, 0);
-
- if (!ready || passed) {
- glPushMatrix();
- glTranslatef(Xpos[i], Ypos[i], -0.5);
- glScalef(0.2, 0.2, 1.0);
- glRotatef(-90.0 * Xpos[i], 0, 0, 1);
-
- glBegin(GL_POLYGON);
- glVertex3f(-1, -1, 0);
- glVertex3f( 1, -1, 0);
- glVertex3f( 1, 1, 0);
- glVertex3f(-1, 1, 0);
- glEnd();
-
- glPopMatrix();
- }
-
- {
- char s[10];
- glRasterPos3f(0.45, Ypos[i], 1.0);
- sprintf(s, "%4d", passed);
- PrintString(s);
- }
- }
-
- glutSwapBuffers();
-}
-
-
-static void Reshape( int width, int height )
-{
- glViewport( 0, 0, width, height );
-}
-
-
-static void Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case 27:
- glutDestroyWindow(Win);
- exit(0);
- break;
- case ' ':
- Anim = !Anim;
- if (Anim)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void SpecialKey( int key, int x, int y )
-{
- const GLfloat step = 0.1;
- int i;
- (void) x;
- (void) y;
- switch (key) {
- case GLUT_KEY_LEFT:
- for (i = 0; i < NUM_OCC; i++)
- Xpos[i] -= step;
- break;
- case GLUT_KEY_RIGHT:
- for (i = 0; i < NUM_OCC; i++)
- Xpos[i] += step;
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void Init( void )
-{
- const char *ext = (const char *) glGetString(GL_EXTENSIONS);
- GLint bits;
- int i;
-
- if (!strstr(ext, "GL_ARB_occlusion_query")) {
- printf("Sorry, this demo requires the GL_ARB_occlusion_query extension\n");
- exit(-1);
- }
-
- glGetQueryivARB(GL_SAMPLES_PASSED_ARB, GL_QUERY_COUNTER_BITS_ARB, &bits);
- if (!bits) {
- printf("Hmmm, GL_QUERY_COUNTER_BITS_ARB is zero!\n");
- exit(-1);
- }
-
- glGetIntegerv(GL_DEPTH_BITS, &bits);
- printf("Depthbits: %d\n", bits);
-
- glGenQueriesARB(NUM_OCC, OccQuery);
-
- glEnable(GL_DEPTH_TEST);
-
- for (i = 0; i < NUM_OCC; i++) {
- float t = (float) i / (NUM_OCC - 1);
- Xpos[i] = 2.5 * t;
- Ypos[i] = 4.0 * (t - 0.5);
- Sign[i] = 1.0;
- }
-
-}
-
-
-int main( int argc, char *argv[] )
-{
- glutInitWindowSize( 400, 400 );
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
- Win = glutCreateWindow(argv[0]);
- glewInit();
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutSpecialFunc( SpecialKey );
- if (Anim)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- glutDisplayFunc( Display );
- Init();
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/arbocclude2.c b/progs/demos/arbocclude2.c
deleted file mode 100644
index 195a23803a..0000000000
--- a/progs/demos/arbocclude2.c
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- * GL_ARB_occlusion_query demo
- *
- * Brian Paul
- * 12 June 2003
- *
- * Copyright (C) 2003 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <GL/glew.h>
-#include <GL/glut.h>
-
-static GLboolean Anim = GL_TRUE;
-static GLfloat Xpos = 0;
-static GLuint OccQuery1;
-static GLuint OccQuery2;
-static GLint Win = 0;
-
-
-static void
-PrintString(const char *s)
-{
- while (*s) {
- glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s);
- s++;
- }
-}
-
-
-
-static void Idle(void)
-{
- static int lastTime = 0;
- static int sign = +1;
- int time = glutGet(GLUT_ELAPSED_TIME);
- float step;
-
- if (lastTime == 0)
- lastTime = time;
- else if (time - lastTime < 20) /* 50Hz update */
- return;
-
- step = (time - lastTime) / 1000.0 * sign;
- lastTime = time;
-
- Xpos += step;
-
- if (Xpos > 2.5) {
- Xpos = 2.5;
- sign = -1;
- }
- else if (Xpos < -2.5) {
- Xpos = -2.5;
- sign = +1;
- }
- glutPostRedisplay();
-}
-
-
-static void Display( void )
-{
- GLuint passed1, passed2;
- GLint ready;
- char s[100];
-
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
-
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 );
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
- glTranslatef( 0.0, 0.0, -15.0 );
-
- /* draw the occluding polygons */
- glColor3f(0, 0.6, 0.8);
- glBegin(GL_QUADS);
- glVertex2f(-1.6, -1.5);
- glVertex2f(-0.4, -1.5);
- glVertex2f(-0.4, 1.5);
- glVertex2f(-1.6, 1.5);
-
- glVertex2f( 0.4, -1.5);
- glVertex2f( 1.6, -1.5);
- glVertex2f( 1.6, 1.5);
- glVertex2f( 0.4, 1.5);
- glEnd();
-
-#if defined(GL_ARB_occlusion_query)
- glColorMask(0, 0, 0, 0);
- glDepthMask(GL_FALSE);
-
- /* draw the first polygon with occlusion testing */
- glPushMatrix();
- glTranslatef(Xpos, 0.4, -0.5);
- glScalef(0.3, 0.3, 1.0);
- glRotatef(-90.0 * Xpos, 0, 0, 1);
-
- glBeginQueryARB(GL_SAMPLES_PASSED_ARB, OccQuery1);
-
- glBegin(GL_POLYGON);
- glVertex3f(-1, -1, 0);
- glVertex3f( 1, -1, 0);
- glVertex3f( 1, 1, 0);
- glVertex3f(-1, 1, 0);
- glEnd();
-
- glEndQueryARB(GL_SAMPLES_PASSED_ARB);
-
- /* draw the second polygon with occlusion testing */
- glPopMatrix();
- glPushMatrix();
- glTranslatef(Xpos, -0.4, -0.5);
- glScalef(0.3, 0.3, 1.0);
-
- glBeginQueryARB(GL_SAMPLES_PASSED_ARB, OccQuery2);
-
- glBegin(GL_POLYGON);
- glVertex3f(-1, -1, 0);
- glVertex3f( 1, -1, 0);
- glVertex3f( 1, 1, 0);
- glVertex3f(-1, 1, 0);
- glEnd();
-
- glEndQueryARB(GL_SAMPLES_PASSED_ARB);
-
- /* turn off occlusion testing */
- glColorMask(1, 1, 1, 1);
- glDepthMask(GL_TRUE);
-
- do {
- /* do useful work here, if any */
- glGetQueryObjectivARB(OccQuery1, GL_QUERY_RESULT_AVAILABLE_ARB, &ready);
- } while (!ready);
- glGetQueryObjectuivARB(OccQuery1, GL_QUERY_RESULT_ARB, &passed1);
-
- do {
- /* do useful work here, if any */
- glGetQueryObjectivARB(OccQuery2, GL_QUERY_RESULT_AVAILABLE_ARB, &ready);
- } while (!ready);
- glGetQueryObjectuivARB(OccQuery2, GL_QUERY_RESULT_ARB, &passed2);
-#endif /* GL_ARB_occlusion_query */
-
- /* draw the second rect, so we can see what's going on */
- glColor3f(0.8, 0.5, 0);
- glBegin(GL_POLYGON);
- glVertex3f(-1, -1, 0);
- glVertex3f( 1, -1, 0);
- glVertex3f( 1, 1, 0);
- glVertex3f(-1, 1, 0);
- glEnd();
-
- glPopMatrix();
- glPushMatrix();
- glTranslatef(Xpos, 0.4, -0.5);
- glScalef(0.3, 0.3, 1.0);
- glRotatef(-90.0 * Xpos, 0, 0, 1);
-
- /* draw the first rect, so we can see what's going on */
- glBegin(GL_POLYGON);
- glVertex3f(-1, -1, 0);
- glVertex3f( 1, -1, 0);
- glVertex3f( 1, 1, 0);
- glVertex3f(-1, 1, 0);
- glEnd();
-
- glPopMatrix();
-
- /* Print result message */
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glOrtho( -1.0, 1.0, -1.0, 1.0, -1.0, 1.0 );
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
-
- glColor3f(1, 1, 1);
-#if defined(GL_ARB_occlusion_query)
- sprintf(s, " %4d Fragments Visible", passed1);
- glRasterPos3f(-0.50, -0.6, 0);
- PrintString(s);
- if (!passed1) {
- glRasterPos3f(-0.25, -0.7, 0);
- PrintString("Fully Occluded");
- }
- sprintf(s, " %4d Fragments Visible", passed2);
- glRasterPos3f(-0.50, -0.8, 0);
- PrintString(s);
- if (!passed2) {
- glRasterPos3f(-0.25, -0.9, 0);
- PrintString("Fully Occluded");
- }
-#else
- glRasterPos3f(-0.25, -0.8, 0);
- PrintString("GL_ARB_occlusion_query not available at compile time");
-#endif /* GL_ARB_occlusion_query */
-
- glutSwapBuffers();
-}
-
-
-static void Reshape( int width, int height )
-{
- glViewport( 0, 0, width, height );
-}
-
-
-static void Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case 27:
- glutDestroyWindow(Win);
- exit(0);
- break;
- case ' ':
- Anim = !Anim;
- if (Anim)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void SpecialKey( int key, int x, int y )
-{
- const GLfloat step = 0.1;
- (void) x;
- (void) y;
- switch (key) {
- case GLUT_KEY_LEFT:
- Xpos -= step;
- break;
- case GLUT_KEY_RIGHT:
- Xpos += step;
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void Init( void )
-{
- const char *ext = (const char *) glGetString(GL_EXTENSIONS);
- GLint bits;
-
- if (!strstr(ext, "GL_ARB_occlusion_query")) {
- printf("Sorry, this demo requires the GL_ARB_occlusion_query extension\n");
- exit(-1);
- }
-
-#if defined(GL_ARB_occlusion_query)
- glGetQueryivARB(GL_SAMPLES_PASSED_ARB, GL_QUERY_COUNTER_BITS_ARB, &bits);
- if (!bits) {
- printf("Hmmm, GL_QUERY_COUNTER_BITS_ARB is zero!\n");
- exit(-1);
- }
-#endif /* GL_ARB_occlusion_query */
-
- glGetIntegerv(GL_DEPTH_BITS, &bits);
- printf("Depthbits: %d\n", bits);
-
-#if defined(GL_ARB_occlusion_query)
- glGenQueriesARB(1, &OccQuery1);
- assert(OccQuery1 > 0);
- glGenQueriesARB(1, &OccQuery2);
- assert(OccQuery2 > 0);
-#endif /* GL_ARB_occlusion_query */
-
- glEnable(GL_DEPTH_TEST);
-}
-
-
-int main( int argc, char *argv[] )
-{
- glutInitWindowSize( 400, 400 );
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
- Win = glutCreateWindow(argv[0]);
- glewInit();
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutSpecialFunc( SpecialKey );
- glutIdleFunc( Idle );
- glutDisplayFunc( Display );
- Init();
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/bounce.c b/progs/demos/bounce.c
deleted file mode 100644
index a9a291e0a6..0000000000
--- a/progs/demos/bounce.c
+++ /dev/null
@@ -1,224 +0,0 @@
-
-/*
- * Bouncing ball demo.
- *
- * This program is in the public domain
- *
- * Brian Paul
- *
- * Conversion to GLUT by Mark J. Kilgard
- */
-
-
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
-#include <GL/glut.h>
-
-#define COS(X) cos( (X) * 3.14159/180.0 )
-#define SIN(X) sin( (X) * 3.14159/180.0 )
-
-#define RED 1
-#define WHITE 2
-#define CYAN 3
-
-GLboolean IndexMode = GL_FALSE;
-GLuint Ball;
-GLenum Mode;
-GLfloat Zrot = 0.0, Zstep = 180.0;
-GLfloat Xpos = 0.0, Ypos = 1.0;
-GLfloat Xvel = 2.0, Yvel = 0.0;
-GLfloat Xmin = -4.0, Xmax = 4.0;
-GLfloat Ymin = -3.8, Ymax = 4.0;
-GLfloat G = -9.8;
-
-static GLuint
-make_ball(void)
-{
- GLuint list;
- GLfloat a, b;
- GLfloat da = 18.0, db = 18.0;
- GLfloat radius = 1.0;
- GLuint color;
- GLfloat x, y, z;
-
- list = glGenLists(1);
-
- glNewList(list, GL_COMPILE);
-
- color = 0;
- for (a = -90.0; a + da <= 90.0; a += da) {
-
- glBegin(GL_QUAD_STRIP);
- for (b = 0.0; b <= 360.0; b += db) {
-
- if (color) {
- glIndexi(RED);
- glColor3f(1, 0, 0);
- } else {
- glIndexi(WHITE);
- glColor3f(1, 1, 1);
- }
-
- x = radius * COS(b) * COS(a);
- y = radius * SIN(b) * COS(a);
- z = radius * SIN(a);
- glVertex3f(x, y, z);
-
- x = radius * COS(b) * COS(a + da);
- y = radius * SIN(b) * COS(a + da);
- z = radius * SIN(a + da);
- glVertex3f(x, y, z);
-
- color = 1 - color;
- }
- glEnd();
-
- }
-
- glEndList();
-
- return list;
-}
-
-static void
-reshape(int width, int height)
-{
- float aspect = (float) width / (float) height;
- glViewport(0, 0, (GLint) width, (GLint) height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-6.0 * aspect, 6.0 * aspect, -6.0, 6.0, -6.0, 6.0);
- glMatrixMode(GL_MODELVIEW);
-}
-
-/* ARGSUSED1 */
-static void
-key(unsigned char k, int x, int y)
-{
- switch (k) {
- case 27: /* Escape */
- exit(0);
- }
-}
-
-static void
-draw(void)
-{
- GLint i;
-
- glClear(GL_COLOR_BUFFER_BIT);
-
- glIndexi(CYAN);
- glColor3f(0, 1, 1);
- glBegin(GL_LINES);
- for (i = -5; i <= 5; i++) {
- glVertex2i(i, -5);
- glVertex2i(i, 5);
- }
- for (i = -5; i <= 5; i++) {
- glVertex2i(-5, i);
- glVertex2i(5, i);
- }
- for (i = -5; i <= 5; i++) {
- glVertex2i(i, -5);
- glVertex2f(i * 1.15, -5.9);
- }
- glVertex2f(-5.3, -5.35);
- glVertex2f(5.3, -5.35);
- glVertex2f(-5.75, -5.9);
- glVertex2f(5.75, -5.9);
- glEnd();
-
- glPushMatrix();
- glTranslatef(Xpos, Ypos, 0.0);
- glScalef(2.0, 2.0, 2.0);
- glRotatef(8.0, 0.0, 0.0, 1.0);
- glRotatef(90.0, 1.0, 0.0, 0.0);
- glRotatef(Zrot, 0.0, 0.0, 1.0);
-
- glCallList(Ball);
-
- glPopMatrix();
-
- glFlush();
- glutSwapBuffers();
-}
-
-static void
-idle(void)
-{
- static float vel0 = -100.0;
- static double t0 = -1.;
- double t, dt;
- t = glutGet(GLUT_ELAPSED_TIME) / 1000.;
- if (t0 < 0.)
- t0 = t;
- dt = t - t0;
- t0 = t;
-
- Zrot += Zstep*dt;
-
- Xpos += Xvel*dt;
- if (Xpos >= Xmax) {
- Xpos = Xmax;
- Xvel = -Xvel;
- Zstep = -Zstep;
- }
- if (Xpos <= Xmin) {
- Xpos = Xmin;
- Xvel = -Xvel;
- Zstep = -Zstep;
- }
- Ypos += Yvel*dt;
- Yvel += G*dt;
- if (Ypos < Ymin) {
- Ypos = Ymin;
- if (vel0 == -100.0)
- vel0 = fabs(Yvel);
- Yvel = vel0;
- }
- glutPostRedisplay();
-}
-
-static void
-visible(int vis)
-{
- if (vis == GLUT_VISIBLE)
- glutIdleFunc(idle);
- else
- glutIdleFunc(NULL);
-}
-
-int main(int argc, char *argv[])
-{
- glutInitWindowSize(600, 450);
- glutInit(&argc, argv);
-
- IndexMode = argc > 1 && strcmp(argv[1], "-ci") == 0;
- if (IndexMode)
- glutInitDisplayMode(GLUT_INDEX | GLUT_DOUBLE);
- else
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
-
- glutCreateWindow("Bounce");
- Ball = make_ball();
- glCullFace(GL_BACK);
- glEnable(GL_CULL_FACE);
- glDisable(GL_DITHER);
- glShadeModel(GL_FLAT);
-
- glutDisplayFunc(draw);
- glutReshapeFunc(reshape);
- glutVisibilityFunc(visible);
- glutKeyboardFunc(key);
-
- if (IndexMode) {
- glutSetColor(RED, 1.0, 0.0, 0.0);
- glutSetColor(WHITE, 1.0, 1.0, 1.0);
- glutSetColor(CYAN, 0.0, 1.0, 1.0);
- }
-
- glutMainLoop();
- return 0; /* ANSI C requires main to return int. */
-}
diff --git a/progs/demos/clearspd.c b/progs/demos/clearspd.c
deleted file mode 100644
index c40f118a64..0000000000
--- a/progs/demos/clearspd.c
+++ /dev/null
@@ -1,217 +0,0 @@
-
-/*
- * Simple GLUT program to measure glClear() and glutSwapBuffers() speed.
- * Brian Paul February 15, 1997 This file in public domain.
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-#include <GL/glut.h>
-
-
-static float MinPeriod = 2.0; /* 2 seconds */
-static int ColorMode = GLUT_RGB;
-static int Width = 400.0;
-static int Height = 400.0;
-static int Loops = 100;
-static float ClearColor = 0.0;
-static GLbitfield BufferMask = GL_COLOR_BUFFER_BIT;
-static GLboolean SwapFlag = GL_FALSE;
-
-
-
-static void Idle( void )
-{
- glutPostRedisplay();
-}
-
-
-static void Display( void )
-{
- double t0, t1;
- double clearRate;
- double pixelRate;
- int i;
-
- glClearColor( ClearColor, ClearColor, ClearColor, 0.0 );
- ClearColor += 0.1;
- if (ClearColor>1.0)
- ClearColor = 0.0;
-
- if (SwapFlag) {
- t0 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
- for (i=0;i<Loops;i++) {
- glClear( BufferMask );
- glutSwapBuffers();
- }
- glFinish();
- t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
- }
- else {
- t0 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
- for (i=0;i<Loops;i++) {
- glClear( BufferMask );
- }
- glFinish();
- t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
- glutSwapBuffers();
- }
-
- /* NOTE: If clearspd doesn't map it's window immediately on
- * starting, swaps will be istantaneous, so this will send Loops
- * towards infinity. When a window is finally mapped, it may be
- * minutes before the first call to glutSwapBuffers, making it look
- * like there's a driver bug.
- */
- if (t1-t0 < MinPeriod) {
- /* Next time do more clears to get longer elapsed time */
- Loops *= 2;
- return;
- }
-
- clearRate = Loops / (t1-t0);
- pixelRate = clearRate * Width * Height;
- if (SwapFlag) {
- printf("Rate: %d clears+swaps in %gs = %g clears+swaps/s %g pixels/s\n",
- Loops, t1-t0, clearRate, pixelRate );
- }
- else {
- printf("Rate: %d clears in %gs = %g clears/s %g pixels/s\n",
- Loops, t1-t0, clearRate, pixelRate);
- }
-}
-
-
-static void Reshape( int width, int height )
-{
- Width = width;
- Height = height;
- glViewport( 0, 0, width, height );
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glOrtho(0.0, width, 0.0, height, -1.0, 1.0);
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
-}
-
-
-static void Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case 27:
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void Init( int argc, char *argv[] )
-{
- int i;
- for (i=1; i<argc; i++) {
- if (strcmp(argv[i],"+rgb")==0)
- ColorMode = GLUT_RGB;
- else if (strcmp(argv[i],"+ci")==0)
- ColorMode = GLUT_INDEX;
- else if (strcmp(argv[i],"-color")==0)
- BufferMask = 0;
- else if (strcmp(argv[i],"+depth")==0)
- BufferMask |= GL_DEPTH_BUFFER_BIT;
- else if (strcmp(argv[i],"+alpha")==0)
- ColorMode = GLUT_RGB | GLUT_ALPHA;
- else if (strcmp(argv[i],"+stencil")==0)
- BufferMask |= GL_STENCIL_BUFFER_BIT;
- else if (strcmp(argv[i],"+accum")==0)
- BufferMask |= GL_ACCUM_BUFFER_BIT;
- else if (strcmp(argv[i],"-width")==0) {
- Width = atoi(argv[i+1]);
- i++;
- }
- else if (strcmp(argv[i],"-height")==0) {
- Height = atoi(argv[i+1]);
- i++;
- }
- else if (strcmp(argv[i],"+swap")==0) {
- SwapFlag = GL_TRUE;
- }
- else if (strcmp(argv[i],"-swap")==0) {
- SwapFlag = GL_FALSE;
- }
- else
- printf("Unknown option: %s\n", argv[i]);
- }
-
- if (ColorMode & GLUT_ALPHA)
- printf("Mode: RGB + Alpha\n");
- else if (ColorMode==GLUT_RGB)
- printf("Mode: RGB\n");
- else
- printf("Mode: Color Index\n");
- printf("SwapBuffers: %s\n", SwapFlag ? "yes" : "no" );
- printf("Size: %d x %d\n", Width, Height);
- printf("Buffers: ");
- if (BufferMask & GL_COLOR_BUFFER_BIT) printf("color ");
- if (BufferMask & GL_DEPTH_BUFFER_BIT) printf("depth ");
- if (BufferMask & GL_STENCIL_BUFFER_BIT) printf("stencil ");
- if (BufferMask & GL_ACCUM_BUFFER_BIT) printf("accum ");
- printf("\n");
-}
-
-
-static void Help( const char *program )
-{
- printf("%s options:\n", program);
- printf(" +rgb RGB mode\n");
- printf(" +ci color index mode\n");
- printf(" -color don't clear color buffer\n");
- printf(" +alpha clear alpha buffer\n");
- printf(" +depth clear depth buffer\n");
- printf(" +stencil clear stencil buffer\n");
- printf(" +accum clear accum buffer\n");
- printf(" +swap also do SwapBuffers\n");
- printf(" -swap don't do SwapBuffers\n");
-}
-
-
-int main( int argc, char *argv[] )
-{
- GLint mode;
-
- printf("For options: %s -help\n", argv[0]);
-
- Init( argc, argv );
-
- glutInitWindowSize( (int) Width, (int) Height );
- glutInit( &argc, argv );
-
- mode = ColorMode | GLUT_DOUBLE;
- if (BufferMask & GL_STENCIL_BUFFER_BIT)
- mode |= GLUT_STENCIL;
- if (BufferMask & GL_ACCUM_BUFFER_BIT)
- mode |= GLUT_ACCUM;
- if (BufferMask & GL_DEPTH_BUFFER_BIT)
- mode |= GLUT_DEPTH;
-
- glutInitDisplayMode(mode);
-
- glutCreateWindow( argv[0] );
-
- if (argc==2 && strcmp(argv[1],"-help")==0) {
- Help(argv[0]);
- return 0;
- }
-
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutDisplayFunc( Display );
- glutIdleFunc( Idle );
-
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/copypix.c b/progs/demos/copypix.c
deleted file mode 100644
index 98c835f44f..0000000000
--- a/progs/demos/copypix.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/**
- * glCopyPixels test
- *
- * Brian Paul
- * 14 Sep 2007
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <GL/glew.h>
-#include <GL/glut.h>
-
-#include "readtex.h"
-
-#define IMAGE_FILE "../images/arch.rgb"
-
-static int ImgWidth, ImgHeight;
-static GLenum ImgFormat;
-static GLubyte *Image = NULL;
-
-static int WinWidth = 800, WinHeight = 800;
-static int Xpos, Ypos;
-static int Scissor = 0;
-static float Xzoom, Yzoom;
-static GLboolean DrawFront = GL_FALSE;
-static GLboolean Dither = GL_TRUE;
-static GLboolean Invert = GL_FALSE;
-
-
-static void Reset( void )
-{
- Xpos = Ypos = 20;
- Scissor = 0;
- Xzoom = Yzoom = 1.0;
-}
-
-
-static void Display( void )
-{
- const int dx = (WinWidth - ImgWidth) / 2;
- const int dy = (WinHeight - ImgHeight) / 2;
-
- if (DrawFront) {
- glDrawBuffer(GL_FRONT);
- glReadBuffer(GL_FRONT);
- }
- else {
- glDrawBuffer(GL_BACK);
- glReadBuffer(GL_BACK);
- }
-
- glClear( GL_COLOR_BUFFER_BIT );
-
- /* draw original image */
- glWindowPos2iARB(dx, dy);
- glDrawPixels(ImgWidth, ImgHeight, ImgFormat, GL_UNSIGNED_BYTE, Image);
-
- if (Scissor)
- glEnable(GL_SCISSOR_TEST);
-
- if (Invert) {
- glPixelTransferf(GL_RED_SCALE, -1.0);
- glPixelTransferf(GL_GREEN_SCALE, -1.0);
- glPixelTransferf(GL_BLUE_SCALE, -1.0);
- glPixelTransferf(GL_RED_BIAS, 1.0);
- glPixelTransferf(GL_GREEN_BIAS, 1.0);
- glPixelTransferf(GL_BLUE_BIAS, 1.0);
- }
-
- /* draw copy */
- glPixelZoom(Xzoom, Yzoom);
- glWindowPos2iARB(Xpos, Ypos);
- glCopyPixels(dx, dy, ImgWidth, ImgHeight, GL_COLOR);
- glPixelZoom(1, 1);
-
- glDisable(GL_SCISSOR_TEST);
-
- if (Invert) {
- glPixelTransferf(GL_RED_SCALE, 1.0);
- glPixelTransferf(GL_GREEN_SCALE, 1.0);
- glPixelTransferf(GL_BLUE_SCALE, 1.0);
- glPixelTransferf(GL_RED_BIAS, 0.0);
- glPixelTransferf(GL_GREEN_BIAS, 0.0);
- glPixelTransferf(GL_BLUE_BIAS, 0.0);
- }
-
- if (DrawFront)
- glFinish();
- else
- glutSwapBuffers();
-}
-
-
-static void Reshape( int width, int height )
-{
- WinWidth = width;
- WinHeight = height;
-
- glViewport( 0, 0, width, height );
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glOrtho( 0.0, width, 0.0, height, 0.0, 2.0 );
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
-
- glScissor(width/4, height/4, width/2, height/2);
-}
-
-
-static void Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case ' ':
- Reset();
- break;
- case 'd':
- Dither = !Dither;
- if (Dither)
- glEnable(GL_DITHER);
- else
- glDisable(GL_DITHER);
- break;
- case 'i':
- Invert = !Invert;
- break;
- case 's':
- Scissor = !Scissor;
- break;
- case 'x':
- Xzoom -= 0.1;
- break;
- case 'X':
- Xzoom += 0.1;
- break;
- case 'y':
- Yzoom -= 0.1;
- break;
- case 'Y':
- Yzoom += 0.1;
- break;
- case 'f':
- DrawFront = !DrawFront;
- printf("glDrawBuffer(%s)\n", DrawFront ? "GL_FRONT" : "GL_BACK");
- break;
- case 27:
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void SpecialKey( int key, int x, int y )
-{
- const int step = (glutGetModifiers() & GLUT_ACTIVE_SHIFT) ? 10 : 1;
- (void) x;
- (void) y;
- switch (key) {
- case GLUT_KEY_UP:
- Ypos += step;
- break;
- case GLUT_KEY_DOWN:
- Ypos -= step;
- break;
- case GLUT_KEY_LEFT:
- Xpos -= step;
- break;
- case GLUT_KEY_RIGHT:
- Xpos += step;
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void Init( GLboolean ciMode, const char *filename )
-{
- printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
-
- Image = LoadRGBImage( filename, &ImgWidth, &ImgHeight, &ImgFormat );
- if (!Image) {
- printf("Couldn't read %s\n", filename);
- exit(0);
- }
-
- if (ciMode) {
- /* Convert RGB image to grayscale */
- GLubyte *indexImage = (GLubyte *) malloc( ImgWidth * ImgHeight );
- GLint i;
- for (i=0; i<ImgWidth*ImgHeight; i++) {
- int gray = Image[i*3] + Image[i*3+1] + Image[i*3+2];
- indexImage[i] = gray / 3;
- }
- free(Image);
- Image = indexImage;
- ImgFormat = GL_COLOR_INDEX;
-
- for (i=0;i<255;i++) {
- float g = i / 255.0;
- glutSetColor(i, g, g, g);
- }
- }
-
- printf("Loaded %d by %d image\n", ImgWidth, ImgHeight );
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- glPixelStorei(GL_UNPACK_ROW_LENGTH, ImgWidth);
-
- Reset();
-}
-
-
-static void Usage(void)
-{
- printf("Keys:\n");
- printf(" SPACE Reset Parameters\n");
- printf(" Up/Down Move image up/down (SHIFT for large step)\n");
- printf(" Left/Right Move image left/right (SHIFT for large step)\n");
- printf(" x Decrease X-axis PixelZoom\n");
- printf(" X Increase X-axis PixelZoom\n");
- printf(" y Decrease Y-axis PixelZoom\n");
- printf(" Y Increase Y-axis PixelZoom\n");
- printf(" s Toggle GL_SCISSOR_TEST\n");
- printf(" f Toggle front/back buffer drawing\n");
- printf(" ESC Exit\n");
-}
-
-
-int main( int argc, char *argv[] )
-{
- GLboolean ciMode = GL_FALSE;
- const char *filename = IMAGE_FILE;
- int i = 1;
-
- glutInitWindowSize( WinWidth, WinHeight );
- glutInit( &argc, argv );
-
- if (argc > i && strcmp(argv[i], "-ci")==0) {
- ciMode = GL_TRUE;
- i++;
- }
- if (argc > i) {
- filename = argv[i];
- }
-
- if (ciMode)
- glutInitDisplayMode( GLUT_INDEX | GLUT_DOUBLE );
- else
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE);
-
- glutCreateWindow(argv[0]);
- glewInit();
-
- Init(ciMode, filename);
- Usage();
-
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutSpecialFunc( SpecialKey );
- glutDisplayFunc( Display );
-
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/cubemap.c b/progs/demos/cubemap.c
deleted file mode 100644
index 3e79d6a558..0000000000
--- a/progs/demos/cubemap.c
+++ /dev/null
@@ -1,631 +0,0 @@
-/*
- * GL_ARB_texture_cube_map demo
- *
- * Brian Paul
- * May 2000
- *
- *
- * Copyright (C) 2000 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-/*
- * This is a pretty minimalistic demo for now. Eventually, use some
- * interesting cube map textures and 3D objects.
- * For now, we use 6 checkerboard "walls" and a sphere (good for
- * verification purposes).
- */
-
-
-#include <assert.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <GL/glew.h>
-#include "GL/glut.h"
-#include "readtex.h"
-
-#ifndef GL_TEXTURE_CUBE_MAP_SEAMLESS
-#define GL_TEXTURE_CUBE_MAP_SEAMLESS 0x884F
-#endif
-
-static GLfloat Xrot = 0, Yrot = 0;
-static GLfloat EyeDist = 10;
-static GLboolean use_vertex_arrays = GL_FALSE;
-static GLboolean anim = GL_TRUE;
-static GLboolean NoClear = GL_FALSE;
-static GLint FrameParity = 0;
-static GLenum FilterIndex = 0;
-static GLint ClampIndex = 0;
-static GLboolean supportFBO = GL_FALSE;
-static GLboolean supportSeamless = GL_FALSE;
-static GLboolean seamless = GL_FALSE;
-static GLuint TexObj = 0;
-static GLint T0 = 0;
-static GLint Frames = 0;
-
-
-static struct {
- GLenum mode;
- const char *name;
-} ClampModes[] = {
- { GL_CLAMP_TO_EDGE, "GL_CLAMP_TO_EDGE" },
- { GL_CLAMP_TO_BORDER, "GL_CLAMP_TO_BORDER" },
- { GL_CLAMP, "GL_CLAMP" },
- { GL_REPEAT, "GL_REPEAT" }
-};
-
-#define NUM_CLAMP_MODES (sizeof(ClampModes) / sizeof(ClampModes[0]))
-
-
-static struct {
- GLenum mag_mode, min_mode;
- const char *name;
-} FilterModes[] = {
- { GL_NEAREST, GL_NEAREST, "GL_NEAREST, GL_NEAREST" },
- { GL_NEAREST, GL_LINEAR, "GL_NEAREST, GL_LINEAR" },
- { GL_NEAREST, GL_NEAREST_MIPMAP_NEAREST, "GL_NEAREST, GL_NEAREST_MIPMAP_NEAREST" },
- { GL_NEAREST, GL_NEAREST_MIPMAP_LINEAR, "GL_NEAREST, GL_NEAREST_MIPMAP_LINEAR" },
- { GL_NEAREST, GL_LINEAR_MIPMAP_NEAREST, "GL_NEAREST, GL_LINEAR_MIPMAP_NEAREST" },
- { GL_NEAREST, GL_LINEAR_MIPMAP_LINEAR, "GL_NEAREST, GL_LINEAR_MIPMAP_LINEAR" },
-
- { GL_LINEAR, GL_NEAREST, "GL_LINEAR, GL_NEAREST" },
- { GL_LINEAR, GL_LINEAR, "GL_LINEAR, GL_LINEAR" },
- { GL_LINEAR, GL_NEAREST_MIPMAP_NEAREST, "GL_LINEAR, GL_NEAREST_MIPMAP_NEAREST" },
- { GL_LINEAR, GL_NEAREST_MIPMAP_LINEAR, "GL_LINEAR, GL_NEAREST_MIPMAP_LINEAR" },
- { GL_LINEAR, GL_LINEAR_MIPMAP_NEAREST, "GL_LINEAR, GL_LINEAR_MIPMAP_NEAREST" },
- { GL_LINEAR, GL_LINEAR_MIPMAP_LINEAR, "GL_LINEAR, GL_LINEAR_MIPMAP_LINEAR" }
-};
-
-#define NUM_FILTER_MODES (sizeof(FilterModes) / sizeof(FilterModes[0]))
-
-
-
-/* The effects of GL_ARB_seamless_cube_map don't show up unless eps1 is 1.0.
- */
-#define eps1 1.0 /*0.99*/
-#define br 20.0 /* box radius */
-
-static const GLfloat tex_coords[] = {
- /* +X side */
- 1.0, -eps1, -eps1,
- 1.0, -eps1, eps1,
- 1.0, eps1, eps1,
- 1.0, eps1, -eps1,
-
- /* -X side */
- -1.0, eps1, -eps1,
- -1.0, eps1, eps1,
- -1.0, -eps1, eps1,
- -1.0, -eps1, -eps1,
-
- /* +Y side */
- -eps1, 1.0, -eps1,
- -eps1, 1.0, eps1,
- eps1, 1.0, eps1,
- eps1, 1.0, -eps1,
-
- /* -Y side */
- -eps1, -1.0, -eps1,
- -eps1, -1.0, eps1,
- eps1, -1.0, eps1,
- eps1, -1.0, -eps1,
-
- /* +Z side */
- eps1, -eps1, 1.0,
- -eps1, -eps1, 1.0,
- -eps1, eps1, 1.0,
- eps1, eps1, 1.0,
-
- /* -Z side */
- eps1, eps1, -1.0,
- -eps1, eps1, -1.0,
- -eps1, -eps1, -1.0,
- eps1, -eps1, -1.0,
-};
-
-static const GLfloat vtx_coords[] = {
- /* +X side */
- br, -br, -br,
- br, -br, br,
- br, br, br,
- br, br, -br,
-
- /* -X side */
- -br, br, -br,
- -br, br, br,
- -br, -br, br,
- -br, -br, -br,
-
- /* +Y side */
- -br, br, -br,
- -br, br, br,
- br, br, br,
- br, br, -br,
-
- /* -Y side */
- -br, -br, -br,
- -br, -br, br,
- br, -br, br,
- br, -br, -br,
-
- /* +Z side */
- br, -br, br,
- -br, -br, br,
- -br, br, br,
- br, br, br,
-
- /* -Z side */
- br, br, -br,
- -br, br, -br,
- -br, -br, -br,
- br, -br, -br,
-};
-
-static void draw_skybox( void )
-{
- if ( use_vertex_arrays ) {
- glTexCoordPointer( 3, GL_FLOAT, 0, tex_coords );
- glVertexPointer( 3, GL_FLOAT, 0, vtx_coords );
-
- glEnableClientState( GL_TEXTURE_COORD_ARRAY );
- glEnableClientState( GL_VERTEX_ARRAY );
-
- glDrawArrays( GL_QUADS, 0, 24 );
-
- glDisableClientState( GL_TEXTURE_COORD_ARRAY );
- glDisableClientState( GL_VERTEX_ARRAY );
- }
- else {
- unsigned i;
-
- glBegin(GL_QUADS);
- for ( i = 0 ; i < 24 ; i++ ) {
- glTexCoord3fv( & tex_coords[ i * 3 ] );
- glVertex3fv ( & vtx_coords[ i * 3 ] );
- }
- glEnd();
- }
-}
-
-
-static void draw( void )
-{
- GLenum wrap;
-
- if (NoClear) {
- /* This demonstrates how we can avoid calling glClear.
- * This method only works if every pixel in the window is painted for
- * every frame.
- * We can simply skip clearing of the color buffer in this case.
- * For the depth buffer, we alternately use a different subrange of
- * the depth buffer for each frame. For the odd frame use the range
- * [0, 0.5] with GL_LESS. For the even frames, use the range [1, 0.5]
- * with GL_GREATER.
- */
- FrameParity = 1 - FrameParity;
- if (FrameParity) {
- glDepthRange(0.0, 0.5);
- glDepthFunc(GL_LESS);
- }
- else {
- glDepthRange(1.0, 0.5);
- glDepthFunc(GL_GREATER);
- }
- }
- else {
- /* ordinary clearing */
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- }
-
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MIN_FILTER,
- FilterModes[FilterIndex].min_mode);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MAG_FILTER,
- FilterModes[FilterIndex].mag_mode);
-
- if (supportSeamless) {
- if (seamless) {
- glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS);
- } else {
- glDisable(GL_TEXTURE_CUBE_MAP_SEAMLESS);
- }
- }
- wrap = ClampModes[ClampIndex].mode;
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_S, wrap);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_T, wrap);
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_R, wrap);
-
- glPushMatrix(); /*MODELVIEW*/
- glTranslatef( 0.0, 0.0, -EyeDist );
-
- /* skybox */
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- glDisable(GL_TEXTURE_GEN_R);
-
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
- glRotatef(Xrot, 1, 0, 0);
- glRotatef(Yrot, 0, 1, 0);
- draw_skybox();
- glPopMatrix();
-
- /* sphere */
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glRotatef(-Yrot, 0, 1, 0);
- glRotatef(-Xrot, 1, 0, 0);
-
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glEnable(GL_TEXTURE_GEN_R);
- glutSolidSphere(2.0, 20, 20);
-
- glLoadIdentity(); /* texture */
-
- glMatrixMode(GL_MODELVIEW);
- glPopMatrix();
-
- glutSwapBuffers();
-
- Frames++;
-
- {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- if (t - T0 >= 5000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- printf("%d frames in %6.3f seconds = %6.3f FPS\n", Frames, seconds, fps);
- fflush(stdout);
- T0 = t;
- Frames = 0;
- }
- }
-}
-
-
-static void idle(void)
-{
- GLfloat t = 0.05 * glutGet(GLUT_ELAPSED_TIME);
- Yrot = t;
- glutPostRedisplay();
-}
-
-
-static void set_mode(GLuint mode)
-{
- if (mode == 0) {
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_ARB);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_ARB);
- glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_REFLECTION_MAP_ARB);
- printf("GL_REFLECTION_MAP_ARB mode\n");
- }
- else if (mode == 1) {
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_ARB);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_ARB);
- glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_ARB);
- printf("GL_NORMAL_MAP_ARB mode\n");
- }
-}
-
-
-static void key(unsigned char k, int x, int y)
-{
- static GLuint mode = 0;
- (void) x;
- (void) y;
- switch (k) {
- case ' ':
- anim = !anim;
- if (anim)
- glutIdleFunc(idle);
- else
- glutIdleFunc(NULL);
- break;
- case 'f':
- FilterIndex = (FilterIndex + 1) % NUM_FILTER_MODES;
- printf("Tex filter: %s\n", FilterModes[FilterIndex].name);
- break;
- case 'c':
- ClampIndex = (ClampIndex + 1) % NUM_CLAMP_MODES;
- printf("Tex wrap mode: %s\n", ClampModes[ClampIndex].name);
- break;
- case 'm':
- mode = !mode;
- set_mode(mode);
- break;
- case 's':
- seamless = ! seamless;
- printf("Seamless cube map filtering is %sabled\n",
- (seamless) ? "en" : "dis" );
- break;
- case 'v':
- use_vertex_arrays = ! use_vertex_arrays;
- printf( "Vertex arrays are %sabled\n",
- (use_vertex_arrays) ? "en" : "dis" );
- break;
- case 'z':
- EyeDist -= 0.5;
- if (EyeDist < 6.0)
- EyeDist = 6.0;
- break;
- case 'Z':
- EyeDist += 0.5;
- if (EyeDist > 90.0)
- EyeDist = 90;
- break;
- case 27:
- exit(0);
- }
- glutPostRedisplay();
-}
-
-
-static void specialkey(int key, int x, int y)
-{
- GLfloat step = 5;
- (void) x;
- (void) y;
- switch (key) {
- case GLUT_KEY_UP:
- Xrot += step;
- break;
- case GLUT_KEY_DOWN:
- Xrot -= step;
- break;
- case GLUT_KEY_LEFT:
- Yrot -= step;
- break;
- case GLUT_KEY_RIGHT:
- Yrot += step;
- break;
- }
- glutPostRedisplay();
-}
-
-
-/* new window size or exposure */
-static void reshape(int width, int height)
-{
- GLfloat ar = (float) width / (float) height;
- glViewport(0, 0, (GLint)width, (GLint)height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum( -2.0*ar, 2.0*ar, -2.0, 2.0, 4.0, 100.0 );
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-}
-
-
-static void init_checkers( void )
-{
-#define CUBE_TEX_SIZE 64
- GLubyte image[CUBE_TEX_SIZE][CUBE_TEX_SIZE][4];
- static const GLubyte colors[6][3] = {
- { 255, 0, 0 }, /* face 0 - red */
- { 0, 255, 255 }, /* face 1 - cyan */
- { 0, 255, 0 }, /* face 2 - green */
- { 255, 0, 255 }, /* face 3 - purple */
- { 0, 0, 255 }, /* face 4 - blue */
- { 255, 255, 0 } /* face 5 - yellow */
- };
- static const GLenum targets[6] = {
- GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB,
- GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB,
- GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB,
- GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB,
- GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB,
- GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB
- };
-
- GLint i, j, f;
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-
- if (!supportFBO)
- glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_GENERATE_MIPMAP_SGIS, GL_TRUE);
-
-
- /* make colored checkerboard cube faces */
- for (f = 0; f < 6; f++) {
- for (i = 0; i < CUBE_TEX_SIZE; i++) {
- for (j = 0; j < CUBE_TEX_SIZE; j++) {
- if ((i/4 + j/4) & 1) {
- image[i][j][0] = colors[f][2];
- image[i][j][1] = colors[f][1];
- image[i][j][2] = colors[f][0];
- image[i][j][3] = 255;
- }
- else {
- image[i][j][0] = 255;
- image[i][j][1] = 255;
- image[i][j][2] = 255;
- image[i][j][3] = 255;
- }
- }
- }
-
- glTexImage2D(targets[f], 0, GL_RGBA8, CUBE_TEX_SIZE, CUBE_TEX_SIZE, 0,
- GL_BGRA, GL_UNSIGNED_BYTE, image);
- }
-
- if (supportFBO)
- glGenerateMipmapEXT(GL_TEXTURE_CUBE_MAP_ARB);
-}
-
-
-static void load(GLenum target, const char *filename,
- GLboolean flipTB, GLboolean flipLR)
-{
- GLint w, h;
- GLenum format;
- GLubyte *img = LoadRGBImage( filename, &w, &h, &format );
- if (!img) {
- printf("Error: couldn't load texture image %s\n", filename);
- exit(1);
- }
- assert(format == GL_RGB);
-
- /* <sigh> the way the texture cube mapping works, we have to flip
- * images to make things look right.
- */
- if (flipTB) {
- const int stride = 3 * w;
- GLubyte temp[3*1024];
- int i;
- for (i = 0; i < h / 2; i++) {
- memcpy(temp, img + i * stride, stride);
- memcpy(img + i * stride, img + (h - i - 1) * stride, stride);
- memcpy(img + (h - i - 1) * stride, temp, stride);
- }
- }
- if (flipLR) {
- const int stride = 3 * w;
- GLubyte temp[3];
- GLubyte *row;
- int i, j;
- for (i = 0; i < h; i++) {
- row = img + i * stride;
- for (j = 0; j < w / 2; j++) {
- int k = w - j - 1;
- temp[0] = row[j*3+0];
- temp[1] = row[j*3+1];
- temp[2] = row[j*3+2];
- row[j*3+0] = row[k*3+0];
- row[j*3+1] = row[k*3+1];
- row[j*3+2] = row[k*3+2];
- row[k*3+0] = temp[0];
- row[k*3+1] = temp[1];
- row[k*3+2] = temp[2];
- }
- }
- }
-
- gluBuild2DMipmaps(target, GL_RGB, w, h, format, GL_UNSIGNED_BYTE, img);
- free(img);
-}
-
-
-static void load_envmaps(void)
-{
- load(GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB, "right.rgb", GL_TRUE, GL_FALSE);
- load(GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB, "left.rgb", GL_TRUE, GL_FALSE);
- load(GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB, "top.rgb", GL_FALSE, GL_TRUE);
- load(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB, "bottom.rgb", GL_FALSE, GL_TRUE);
- load(GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB, "front.rgb", GL_TRUE, GL_FALSE);
- load(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB, "back.rgb", GL_TRUE, GL_FALSE);
-}
-
-
-static void init( GLboolean useImageFiles )
-{
- /* check for extensions */
- if (!GLEW_ARB_texture_cube_map) {
- printf("Sorry, this demo requires GL_ARB_texture_cube_map\n");
- exit(0);
- }
-
- /* Needed for glGenerateMipmapEXT / auto mipmapping
- */
- supportFBO = GLEW_EXT_framebuffer_object;
-
- if (!supportFBO && !GLEW_SGIS_generate_mipmap) {
- printf("Sorry, this demo requires GL_EXT_framebuffer_object or "
- "GL_SGIS_generate_mipmap\n");
- exit(0);
- }
-
- /* GLEW doesn't know about this extension yet, so use the old GLUT function
- * to check for availability.
- */
- supportSeamless = glutExtensionSupported("GL_ARB_seamless_cube_map");
-
- printf("GL_RENDERER: %s\n", (char *) glGetString(GL_RENDERER));
-
-
- glGenTextures(1, &TexObj);
- glBindTexture(GL_TEXTURE_CUBE_MAP_ARB, TexObj);
-
- if (useImageFiles) {
- load_envmaps();
- }
- else {
- init_checkers();
- }
-
- glEnable(GL_TEXTURE_CUBE_MAP_ARB);
- glEnable(GL_DEPTH_TEST);
-
- glClearColor(.3, .3, .3, 0);
- glColor3f( 1.0, 1.0, 1.0 );
-
- set_mode(0);
-}
-
-
-static void usage(void)
-{
- printf("keys:\n");
- printf(" SPACE - toggle animation\n");
- printf(" CURSOR KEYS - rotation\n");
- printf(" c - toggle texture clamp/wrap mode\n");
- printf(" f - toggle texture filter mode\n");
- printf(" m - toggle texgen reflection mode\n");
- printf(" z/Z - change viewing distance\n");
-}
-
-
-static void parse_args(int argc, char *argv[])
-{
- int initFlag = 0;
- int i;
-
- for (i = 1; i < argc; i++) {
- if (strcmp(argv[i], "-i") == 0)
- initFlag = 1;
- else if (strcmp(argv[i], "--noclear") == 0)
- NoClear = GL_TRUE;
- else {
- fprintf(stderr, "Bad option: %s\n", argv[i]);
- exit(1);
- }
- }
- init (initFlag);
-}
-
-int main( int argc, char *argv[] )
-{
- glutInitWindowSize(600, 500);
- glutInit(&argc, argv);
- glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE );
- glutCreateWindow("Texture Cube Mapping");
- glewInit();
- glutReshapeFunc( reshape );
- glutKeyboardFunc( key );
- glutSpecialFunc( specialkey );
- glutDisplayFunc( draw );
- if (anim)
- glutIdleFunc(idle);
- parse_args(argc, argv);
- usage();
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/descrip.mms b/progs/demos/descrip.mms
deleted file mode 100644
index d7a912133a..0000000000
--- a/progs/demos/descrip.mms
+++ /dev/null
@@ -1,90 +0,0 @@
-# Makefile for GLUT-based demo programs for VMS
-# contributed by Jouk Jansen joukj@hrem.nano.tudelft.nl
-# Last update : 30 November 2007
-
-.first
- define gl [--.include.gl]
-
-.include [--]mms-config.
-
-##### MACROS #####
-
-INCDIR = ([--.include],[-.util])
-CFLAGS =/include=$(INCDIR)/prefix=all/name=(as_is,short)/float=ieee/ieee=denorm
-
-.ifdef SHARE
-GL_LIBS = $(XLIBS)
-LIB_DEP = [--.lib]$(GL_SHAR) [--.lib]$(GLU_SHAR) [--.lib]$(GLUT_SHAR)
-.else
-GL_LIBS = [--.lib]libGLUT/l,libMesaGLU/l,libMesaGL/l,$(XLIBS)
-LIB_DEP = [--.lib]$(GL_LIB) [--.lib]$(GLU_LIB) [--.lib]$(GLUT_LIB)
-.endif
-
-
-PROGS = bounce.exe,clearspd.exe,drawpix.exe,gamma.exe,gears.exe,\
- glinfo.exe,glutfx.exe,isosurf.exe,morph3d.exe,\
- paltex.exe,pointblast.exe,reflect.exe,spectex.exe,stex3d.exe,\
- tessdemo.exe,texcyl.exe,texobj.exe,trispd.exe,winpos.exe
-
-
-##### RULES #####
-.obj.exe :
- cxxlink $(MMS$TARGET_NAME),$(GL_LIBS)
-
-##### TARGETS #####
-default :
- $(MMS)$(MMSQUALIFIERS) $(PROGS)
-
-clean :
- delete *.obj;*
-
-realclean :
- delete *.exe;*
- delete *.obj;*
-
-bounce.exe : bounce.obj $(LIB_DEP)
-clearspd.exe : clearspd.obj $(LIB_DEP)
-drawpix.exe : drawpix.obj $(LIB_DEP) [-.util]readtex.obj
- cxxlink $(MMS$TARGET_NAME),[-.util]readtex.obj,$(GL_LIBS)
-gamma.exe : gamma.obj $(LIB_DEP)
-gears.exe : gears.obj $(LIB_DEP)
-glinfo.exe : glinfo.obj $(LIB_DEP)
-glutfx.exe : glutfx.obj $(LIB_DEP)
-isosurf.exe : isosurf.obj $(LIB_DEP) [-.util]readtex.obj
- cxxlink $(MMS$TARGET_NAME),[-.util]readtex.obj,$(GL_LIBS)
-morph3d.exe : morph3d.obj $(LIB_DEP)
-paltex.exe : paltex.obj $(LIB_DEP)
-pointblast.exe : pointblast.obj $(LIB_DEP)
-reflect.exe : reflect.obj [-.util]readtex.obj [-.util]showbuffer.obj\
- $(LIB_DEP)
- cxxlink $(MMS$TARGET_NAME),[-.util]readtex,showbuffer,$(GL_LIBS)
-spectex.exe : spectex.obj $(LIB_DEP)
-stex3d.exe : stex3d.obj $(LIB_DEP)
-tessdemo.exe : tessdemo.obj $(LIB_DEP)
-texcyl.exe : texcyl.obj [-.util]readtex.obj $(LIB_DEP)
- cxxlink $(MMS$TARGET_NAME),[-.util]readtex.obj,$(GL_LIBS)
-texobj.exe : texobj.obj $(LIB_DEP)
-trispd.exe : trispd.obj $(LIB_DEP)
-winpos.exe : winpos.obj [-.util]readtex.obj $(LIB_DEP)
- cxxlink $(MMS$TARGET_NAME),[-.util]readtex.obj,$(GL_LIBS)
-
-
-bounce.obj : bounce.c
-clearspd.obj : clearspd.c
-drawpix.obj : drawpix.c
-gamma.obj : gamma.c
-gears.obj : gears.c
-glinfo.obj : glinfo.c
-glutfx.obj : glutfx.c
-isosurf.obj : isosurf.c
-morph3d.obj : morph3d.c
-paltex.obj : paltex.c
-pointblast.obj : pointblast.c
-reflect.obj : reflect.c
-spectex.obj : spectex.c
-stex3d.obj : stex3d.c
-tessdemo.obj : tessdemo.c
-texcyl.obj : texcyl.c
-texobj.obj : texobj.c
-trispd.obj : trispd.c
-winpos.obj : winpos.c
diff --git a/progs/demos/dinoshade.c b/progs/demos/dinoshade.c
deleted file mode 100644
index cbf8751e25..0000000000
--- a/progs/demos/dinoshade.c
+++ /dev/null
@@ -1,914 +0,0 @@
-
-/* Copyright (c) Mark J. Kilgard, 1994, 1997. */
-
-/* This program is freely distributable without licensing fees
- and is provided without guarantee or warrantee expressed or
- implied. This program is -not- in the public domain. */
-
-/* Example for PC game developers to show how to *combine* texturing,
- reflections, and projected shadows all in real-time with OpenGL.
- Robust reflections use stenciling. Robust projected shadows
- use both stenciling and polygon offset. PC game programmers
- should realize that neither stenciling nor polygon offset are
- supported by Direct3D, so these real-time rendering algorithms
- are only really viable with OpenGL.
-
- The program has modes for disabling the stenciling and polygon
- offset uses. It is worth running this example with these features
- toggled off so you can see the sort of artifacts that result.
-
- Notice that the floor texturing, reflections, and shadowing
- all co-exist properly. */
-
-/* When you run this program: Left mouse button controls the
- view. Middle mouse button controls light position (left &
- right rotates light around dino; up & down moves light
- position up and down). Right mouse button pops up menu. */
-
-/* Check out the comments in the "redraw" routine to see how the
- reflection blending and surface stenciling is done. You can
- also see in "redraw" how the projected shadows are rendered,
- including the use of stenciling and polygon offset. */
-
-/* This program is derived from glutdino.c */
-
-/* Compile: cc -o dinoshade dinoshade.c -lglut -lGLU -lGL -lXmu -lXext -lX11 -lm */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h> /* for cos(), sin(), and sqrt() */
-#include <stddef.h> /* for ptrdiff_t, referenced by GL.h when GL_GLEXT_LEGACY defined */
-#ifdef _WIN32
-#include <windows.h>
-#endif
-#define GL_GLEXT_LEGACY
-#include <GL/glew.h> /* OpenGL Utility Toolkit header */
-#include <GL/glut.h> /* OpenGL Utility Toolkit header */
-
-/* Some <math.h> files do not define M_PI... */
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-/* Variable controlling various rendering modes. */
-static int stencilReflection = 1, stencilShadow = 1, offsetShadow = 1;
-static int renderShadow = 1, renderDinosaur = 1, renderReflection = 1;
-static int linearFiltering = 0, useMipmaps = 0, useTexture = 1;
-static int reportSpeed = 0;
-static int animation = 1;
-static GLboolean lightSwitch = GL_TRUE;
-static int directionalLight = 1;
-static int forceExtension = 0;
-
-/* Time varying or user-controled variables. */
-static float jump = 0.0;
-static float lightAngle = 0.0, lightHeight = 20;
-GLfloat angle = -150; /* in degrees */
-GLfloat angle2 = 30; /* in degrees */
-
-int moving, startx, starty;
-int lightMoving = 0, lightStartX, lightStartY;
-
-enum {
- MISSING, EXTENSION, ONE_DOT_ONE
-};
-int polygonOffsetVersion;
-
-static GLdouble bodyWidth = 3.0;
-/* *INDENT-OFF* */
-static GLfloat body[][2] = { {0, 3}, {1, 1}, {5, 1}, {8, 4}, {10, 4}, {11, 5},
- {11, 11.5}, {13, 12}, {13, 13}, {10, 13.5}, {13, 14}, {13, 15}, {11, 16},
- {8, 16}, {7, 15}, {7, 13}, {8, 12}, {7, 11}, {6, 6}, {4, 3}, {3, 2},
- {1, 2} };
-static GLfloat arm[][2] = { {8, 10}, {9, 9}, {10, 9}, {13, 8}, {14, 9}, {16, 9},
- {15, 9.5}, {16, 10}, {15, 10}, {15.5, 11}, {14.5, 10}, {14, 11}, {14, 10},
- {13, 9}, {11, 11}, {9, 11} };
-static GLfloat leg[][2] = { {8, 6}, {8, 4}, {9, 3}, {9, 2}, {8, 1}, {8, 0.5}, {9, 0},
- {12, 0}, {10, 1}, {10, 2}, {12, 4}, {11, 6}, {10, 7}, {9, 7} };
-static GLfloat eye[][2] = { {8.75, 15}, {9, 14.7}, {9.6, 14.7}, {10.1, 15},
- {9.6, 15.25}, {9, 15.25} };
-static GLfloat lightPosition[4];
-static GLfloat lightColor[] = {0.8, 1.0, 0.8, 1.0}; /* green-tinted */
-static GLfloat skinColor[] = {0.1, 1.0, 0.1, 1.0}, eyeColor[] = {1.0, 0.2, 0.2, 1.0};
-/* *INDENT-ON* */
-
-/* Nice floor texture tiling pattern. */
-static char *circles[] = {
- "....xxxx........",
- "..xxxxxxxx......",
- ".xxxxxxxxxx.....",
- ".xxx....xxx.....",
- "xxx......xxx....",
- "xxx......xxx....",
- "xxx......xxx....",
- "xxx......xxx....",
- ".xxx....xxx.....",
- ".xxxxxxxxxx.....",
- "..xxxxxxxx......",
- "....xxxx........",
- "................",
- "................",
- "................",
- "................",
-};
-
-static void
-makeFloorTexture(void)
-{
- GLubyte floorTexture[16][16][3];
- GLubyte *loc;
- int s, t;
-
- /* Setup RGB image for the texture. */
- loc = (GLubyte*) floorTexture;
- for (t = 0; t < 16; t++) {
- for (s = 0; s < 16; s++) {
- if (circles[t][s] == 'x') {
- /* Nice green. */
- loc[0] = 0x1f;
- loc[1] = 0x8f;
- loc[2] = 0x1f;
- } else {
- /* Light gray. */
- loc[0] = 0xaa;
- loc[1] = 0xaa;
- loc[2] = 0xaa;
- }
- loc += 3;
- }
- }
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-
- if (useMipmaps) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_LINEAR);
- gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 16, 16,
- GL_RGB, GL_UNSIGNED_BYTE, floorTexture);
- } else {
- if (linearFiltering) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- } else {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- }
- glTexImage2D(GL_TEXTURE_2D, 0, 3, 16, 16, 0,
- GL_RGB, GL_UNSIGNED_BYTE, floorTexture);
- }
-}
-
-enum {
- X, Y, Z, W
-};
-enum {
- A, B, C, D
-};
-
-/* Create a matrix that will project the desired shadow. */
-static void
-shadowMatrix(GLfloat shadowMat[4][4],
- GLfloat groundplane[4],
- GLfloat lightpos[4])
-{
- GLfloat dot;
-
- /* Find dot product between light position vector and ground plane normal. */
- dot = groundplane[X] * lightpos[X] +
- groundplane[Y] * lightpos[Y] +
- groundplane[Z] * lightpos[Z] +
- groundplane[W] * lightpos[W];
-
- shadowMat[0][0] = dot - lightpos[X] * groundplane[X];
- shadowMat[1][0] = 0.f - lightpos[X] * groundplane[Y];
- shadowMat[2][0] = 0.f - lightpos[X] * groundplane[Z];
- shadowMat[3][0] = 0.f - lightpos[X] * groundplane[W];
-
- shadowMat[X][1] = 0.f - lightpos[Y] * groundplane[X];
- shadowMat[1][1] = dot - lightpos[Y] * groundplane[Y];
- shadowMat[2][1] = 0.f - lightpos[Y] * groundplane[Z];
- shadowMat[3][1] = 0.f - lightpos[Y] * groundplane[W];
-
- shadowMat[X][2] = 0.f - lightpos[Z] * groundplane[X];
- shadowMat[1][2] = 0.f - lightpos[Z] * groundplane[Y];
- shadowMat[2][2] = dot - lightpos[Z] * groundplane[Z];
- shadowMat[3][2] = 0.f - lightpos[Z] * groundplane[W];
-
- shadowMat[X][3] = 0.f - lightpos[W] * groundplane[X];
- shadowMat[1][3] = 0.f - lightpos[W] * groundplane[Y];
- shadowMat[2][3] = 0.f - lightpos[W] * groundplane[Z];
- shadowMat[3][3] = dot - lightpos[W] * groundplane[W];
-
-}
-
-/* Find the plane equation given 3 points. */
-static void
-findPlane(GLfloat plane[4],
- GLfloat v0[3], GLfloat v1[3], GLfloat v2[3])
-{
- GLfloat vec0[3], vec1[3];
-
- /* Need 2 vectors to find cross product. */
- vec0[X] = v1[X] - v0[X];
- vec0[Y] = v1[Y] - v0[Y];
- vec0[Z] = v1[Z] - v0[Z];
-
- vec1[X] = v2[X] - v0[X];
- vec1[Y] = v2[Y] - v0[Y];
- vec1[Z] = v2[Z] - v0[Z];
-
- /* find cross product to get A, B, and C of plane equation */
- plane[A] = vec0[Y] * vec1[Z] - vec0[Z] * vec1[Y];
- plane[B] = -(vec0[X] * vec1[Z] - vec0[Z] * vec1[X]);
- plane[C] = vec0[X] * vec1[Y] - vec0[Y] * vec1[X];
-
- plane[D] = -(plane[A] * v0[X] + plane[B] * v0[Y] + plane[C] * v0[Z]);
-}
-
-static void
-extrudeSolidFromPolygon(GLfloat data[][2], unsigned int dataSize,
- GLdouble thickness, GLuint side, GLuint edge, GLuint whole)
-{
- static GLUtriangulatorObj *tobj = NULL;
- GLdouble vertex[3], dx, dy, len;
- int i;
- int count = (int) (dataSize / (2 * sizeof(GLfloat)));
-
- if (tobj == NULL) {
- tobj = gluNewTess(); /* create and initialize a GLU
- polygon tesselation object */
- gluTessCallback(tobj, GLU_BEGIN, glBegin);
- gluTessCallback(tobj, GLU_VERTEX, glVertex2fv); /* semi-tricky */
- gluTessCallback(tobj, GLU_END, glEnd);
- }
- glNewList(side, GL_COMPILE);
- glShadeModel(GL_SMOOTH); /* smooth minimizes seeing
- tessellation */
- gluBeginPolygon(tobj);
- for (i = 0; i < count; i++) {
- vertex[0] = data[i][0];
- vertex[1] = data[i][1];
- vertex[2] = 0;
- gluTessVertex(tobj, vertex, data[i]);
- }
- gluEndPolygon(tobj);
- glEndList();
- glNewList(edge, GL_COMPILE);
- glShadeModel(GL_FLAT); /* flat shade keeps angular hands
- from being "smoothed" */
- glBegin(GL_QUAD_STRIP);
- for (i = 0; i <= count; i++) {
-#if 1 /* weird, but seems to be legal */
- /* mod function handles closing the edge */
- glVertex3f(data[i % count][0], data[i % count][1], 0.0);
- glVertex3f(data[i % count][0], data[i % count][1], thickness);
- /* Calculate a unit normal by dividing by Euclidean
- distance. We * could be lazy and use
- glEnable(GL_NORMALIZE) so we could pass in * arbitrary
- normals for a very slight performance hit. */
- dx = data[(i + 1) % count][1] - data[i % count][1];
- dy = data[i % count][0] - data[(i + 1) % count][0];
- len = sqrt(dx * dx + dy * dy);
- glNormal3f(dx / len, dy / len, 0.0);
-#else /* the nice way of doing it */
- /* Calculate a unit normal by dividing by Euclidean
- distance. We * could be lazy and use
- glEnable(GL_NORMALIZE) so we could pass in * arbitrary
- normals for a very slight performance hit. */
- dx = data[i % count][1] - data[(i - 1 + count) % count][1];
- dy = data[(i - 1 + count) % count][0] - data[i % count][0];
- len = sqrt(dx * dx + dy * dy);
- glNormal3f(dx / len, dy / len, 0.0);
- /* mod function handles closing the edge */
- glVertex3f(data[i % count][0], data[i % count][1], 0.0);
- glVertex3f(data[i % count][0], data[i % count][1], thickness);
-#endif
- }
- glEnd();
- glEndList();
- glNewList(whole, GL_COMPILE);
- glFrontFace(GL_CW);
- glCallList(edge);
- glNormal3f(0.0, 0.0, -1.0); /* constant normal for side */
- glCallList(side);
- glPushMatrix();
- glTranslatef(0.0, 0.0, thickness);
- glFrontFace(GL_CCW);
- glNormal3f(0.0, 0.0, 1.0); /* opposite normal for other side */
- glCallList(side);
- glPopMatrix();
- glEndList();
-}
-
-/* Enumerants for refering to display lists. */
-typedef enum {
- RESERVED, BODY_SIDE, BODY_EDGE, BODY_WHOLE, ARM_SIDE, ARM_EDGE, ARM_WHOLE,
- LEG_SIDE, LEG_EDGE, LEG_WHOLE, EYE_SIDE, EYE_EDGE, EYE_WHOLE
-} displayLists;
-
-static void
-makeDinosaur(void)
-{
- extrudeSolidFromPolygon(body, sizeof(body), bodyWidth,
- BODY_SIDE, BODY_EDGE, BODY_WHOLE);
- extrudeSolidFromPolygon(arm, sizeof(arm), bodyWidth / 4,
- ARM_SIDE, ARM_EDGE, ARM_WHOLE);
- extrudeSolidFromPolygon(leg, sizeof(leg), bodyWidth / 2,
- LEG_SIDE, LEG_EDGE, LEG_WHOLE);
- extrudeSolidFromPolygon(eye, sizeof(eye), bodyWidth + 0.2,
- EYE_SIDE, EYE_EDGE, EYE_WHOLE);
-}
-
-static void
-drawDinosaur(void)
-
-{
- glPushMatrix();
- /* Translate the dinosaur to be at (0,8,0). */
- glTranslatef(-8, 0, -bodyWidth / 2);
- glTranslatef(0.0, jump, 0.0);
- glMaterialfv(GL_FRONT, GL_DIFFUSE, skinColor);
- glCallList(BODY_WHOLE);
- glTranslatef(0.0, 0.0, bodyWidth);
- glCallList(ARM_WHOLE);
- glCallList(LEG_WHOLE);
- glTranslatef(0.0, 0.0, -bodyWidth - bodyWidth / 4);
- glCallList(ARM_WHOLE);
- glTranslatef(0.0, 0.0, -bodyWidth / 4);
- glCallList(LEG_WHOLE);
- glTranslatef(0.0, 0.0, bodyWidth / 2 - 0.1);
- glMaterialfv(GL_FRONT, GL_DIFFUSE, eyeColor);
- glCallList(EYE_WHOLE);
- glPopMatrix();
-}
-
-static GLfloat floorVertices[4][3] = {
- { -20.0, 0.0, 20.0 },
- { 20.0, 0.0, 20.0 },
- { 20.0, 0.0, -20.0 },
- { -20.0, 0.0, -20.0 },
-};
-
-/* Draw a floor (possibly textured). */
-static void
-drawFloor(void)
-{
- glDisable(GL_LIGHTING);
-
- if (useTexture) {
- glEnable(GL_TEXTURE_2D);
- }
-
- glBegin(GL_QUADS);
- glTexCoord2f(0.0, 0.0);
- glVertex3fv(floorVertices[0]);
- glTexCoord2f(0.0, 16.0);
- glVertex3fv(floorVertices[1]);
- glTexCoord2f(16.0, 16.0);
- glVertex3fv(floorVertices[2]);
- glTexCoord2f(16.0, 0.0);
- glVertex3fv(floorVertices[3]);
- glEnd();
-
- if (useTexture) {
- glDisable(GL_TEXTURE_2D);
- }
-
- glEnable(GL_LIGHTING);
-}
-
-static GLfloat floorPlane[4];
-static GLfloat floorShadow[4][4];
-
-static void
-redraw(void)
-{
- int start = 0, end = 0;
-
- if (reportSpeed) {
- start = glutGet(GLUT_ELAPSED_TIME);
- }
-
- /* Clear; default stencil clears to zero. */
- if ((stencilReflection && renderReflection) || (stencilShadow && renderShadow)) {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
- } else {
- /* Avoid clearing stencil when not using it. */
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- }
-
- /* Reposition the light source. */
- lightPosition[0] = 12*cos(lightAngle);
- lightPosition[1] = lightHeight;
- lightPosition[2] = 12*sin(lightAngle);
- if (directionalLight) {
- lightPosition[3] = 0.0;
- } else {
- lightPosition[3] = 1.0;
- }
-
- shadowMatrix(floorShadow, floorPlane, lightPosition);
-
- glPushMatrix();
- /* Perform scene rotations based on user mouse input. */
- glRotatef(angle2, 1.0, 0.0, 0.0);
- glRotatef(angle, 0.0, 1.0, 0.0);
-
- /* Tell GL new light source position. */
- glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
-
- if (renderReflection) {
- if (stencilReflection) {
- /* We can eliminate the visual "artifact" of seeing the "flipped"
- dinosaur underneath the floor by using stencil. The idea is
- draw the floor without color or depth update but so that
- a stencil value of one is where the floor will be. Later when
- rendering the dinosaur reflection, we will only update pixels
- with a stencil value of 1 to make sure the reflection only
- lives on the floor, not below the floor. */
-
- /* Don't update color or depth. */
- glDisable(GL_DEPTH_TEST);
- glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
-
- /* Draw 1 into the stencil buffer. */
- glEnable(GL_STENCIL_TEST);
- glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
- glStencilFunc(GL_ALWAYS, 1, 0xffffffff);
-
- /* Now render floor; floor pixels just get their stencil set to 1. */
- drawFloor();
-
- /* Re-enable update of color and depth. */
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
- glEnable(GL_DEPTH_TEST);
-
- /* Now, only render where stencil is set to 1. */
- glStencilFunc(GL_EQUAL, 1, 0xffffffff); /* draw if ==1 */
- glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
- }
-
- glPushMatrix();
-
- /* The critical reflection step: Reflect dinosaur through the floor
- (the Y=0 plane) to make a relection. */
- glScalef(1.0, -1.0, 1.0);
-
- /* Reflect the light position. */
- glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
-
- /* To avoid our normals getting reversed and hence botched lighting
- on the reflection, turn on normalize. */
- glEnable(GL_NORMALIZE);
- glCullFace(GL_FRONT);
-
- /* Draw the reflected dinosaur. */
- drawDinosaur();
-
- /* Disable noramlize again and re-enable back face culling. */
- glDisable(GL_NORMALIZE);
- glCullFace(GL_BACK);
-
- glPopMatrix();
-
- /* Switch back to the unreflected light position. */
- glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
-
- if (stencilReflection) {
- glDisable(GL_STENCIL_TEST);
- }
- }
-
- /* Back face culling will get used to only draw either the top or the
- bottom floor. This let's us get a floor with two distinct
- appearances. The top floor surface is reflective and kind of red.
- The bottom floor surface is not reflective and blue. */
-
- /* Draw "bottom" of floor in blue. */
- glFrontFace(GL_CW); /* Switch face orientation. */
- glColor4f(0.1, 0.1, 0.7, 1.0);
- drawFloor();
- glFrontFace(GL_CCW);
-
- if (renderShadow) {
- if (stencilShadow) {
- /* Draw the floor with stencil value 3. This helps us only
- draw the shadow once per floor pixel (and only on the
- floor pixels). */
- glEnable(GL_STENCIL_TEST);
- glStencilFunc(GL_ALWAYS, 3, 0xffffffff);
- glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
- }
- }
-
- /* Draw "top" of floor. Use blending to blend in reflection. */
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glColor4f(0.7, 0.0, 0.0, 0.3);
- glColor4f(1.0, 1.0, 1.0, 0.3);
- drawFloor();
- glDisable(GL_BLEND);
-
- if (renderDinosaur) {
- /* Draw "actual" dinosaur, not its reflection. */
- drawDinosaur();
- }
-
- if (renderShadow) {
-
- /* Render the projected shadow. */
-
- if (stencilShadow) {
-
- /* Now, only render where stencil is set above 2 (ie, 3 where
- the top floor is). Update stencil with 2 where the shadow
- gets drawn so we don't redraw (and accidently reblend) the
- shadow). */
- glStencilFunc(GL_LESS, 2, 0xffffffff); /* draw if ==1 */
- glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
- }
-
- /* To eliminate depth buffer artifacts, we use polygon offset
- to raise the depth of the projected shadow slightly so
- that it does not depth buffer alias with the floor. */
- if (offsetShadow) {
- switch (polygonOffsetVersion) {
- case EXTENSION:
-#ifdef GL_EXT_polygon_offset
- glEnable(GL_POLYGON_OFFSET_EXT);
- break;
-#endif
-#ifdef GL_VERSION_1_1
- case ONE_DOT_ONE:
- glEnable(GL_POLYGON_OFFSET_FILL);
- break;
-#endif
- case MISSING:
- /* Oh well. */
- break;
- }
- }
-
- /* Render 50% black shadow color on top of whatever the
- floor appareance is. */
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glDisable(GL_LIGHTING); /* Force the 50% black. */
- glColor4f(0.0, 0.0, 0.0, 0.5);
-
- glPushMatrix();
- /* Project the shadow. */
- glMultMatrixf((GLfloat *) floorShadow);
- drawDinosaur();
- glPopMatrix();
-
- glDisable(GL_BLEND);
- glEnable(GL_LIGHTING);
-
- if (offsetShadow) {
- switch (polygonOffsetVersion) {
-#ifdef GL_EXT_polygon_offset
- case EXTENSION:
- glDisable(GL_POLYGON_OFFSET_EXT);
- break;
-#endif
-#ifdef GL_VERSION_1_1
- case ONE_DOT_ONE:
- glDisable(GL_POLYGON_OFFSET_FILL);
- break;
-#endif
- case MISSING:
- /* Oh well. */
- break;
- }
- }
- if (stencilShadow) {
- glDisable(GL_STENCIL_TEST);
- }
- }
-
- glPushMatrix();
- glDisable(GL_LIGHTING);
- glColor3f(1.0, 1.0, 0.0);
- if (directionalLight) {
- /* Draw an arrowhead. */
- glDisable(GL_CULL_FACE);
- glTranslatef(lightPosition[0], lightPosition[1], lightPosition[2]);
- glRotatef(lightAngle * -180.0 / M_PI, 0, 1, 0);
- glRotatef(atan(lightHeight/12) * 180.0 / M_PI, 0, 0, 1);
- glBegin(GL_TRIANGLE_FAN);
- glVertex3f(0, 0, 0);
- glVertex3f(2, 1, 1);
- glVertex3f(2, -1, 1);
- glVertex3f(2, -1, -1);
- glVertex3f(2, 1, -1);
- glVertex3f(2, 1, 1);
- glEnd();
- /* Draw a white line from light direction. */
- glColor3f(1.0, 1.0, 1.0);
- glBegin(GL_LINES);
- glVertex3f(0, 0, 0);
- glVertex3f(5, 0, 0);
- glEnd();
- glEnable(GL_CULL_FACE);
- } else {
- /* Draw a yellow ball at the light source. */
- glTranslatef(lightPosition[0], lightPosition[1], lightPosition[2]);
- glutSolidSphere(1.0, 5, 5);
- }
- glEnable(GL_LIGHTING);
- glPopMatrix();
-
- glPopMatrix();
-
- if (reportSpeed) {
- glFinish();
- end = glutGet(GLUT_ELAPSED_TIME);
- printf("Speed %.3g frames/sec (%d ms)\n", 1000.0/(end-start), end-start);
- fflush(stdout);
- }
-
- glutSwapBuffers();
-}
-
-/* ARGSUSED2 */
-static void
-mouse(int button, int state, int x, int y)
-{
- if (button == GLUT_LEFT_BUTTON) {
- if (state == GLUT_DOWN) {
- moving = 1;
- startx = x;
- starty = y;
- }
- if (state == GLUT_UP) {
- moving = 0;
- }
- }
- if (button == GLUT_MIDDLE_BUTTON) {
- if (state == GLUT_DOWN) {
- lightMoving = 1;
- lightStartX = x;
- lightStartY = y;
- }
- if (state == GLUT_UP) {
- lightMoving = 0;
- }
- }
-}
-
-/* ARGSUSED1 */
-static void
-motion(int x, int y)
-{
- if (moving) {
- angle = angle + (x - startx);
- angle2 = angle2 + (y - starty);
- startx = x;
- starty = y;
- glutPostRedisplay();
- }
- if (lightMoving) {
- lightAngle += (x - lightStartX)/40.0;
- lightHeight += (lightStartY - y)/20.0;
- lightStartX = x;
- lightStartY = y;
- glutPostRedisplay();
- }
-}
-
-/* Advance time varying state when idle callback registered. */
-static void
-idle(void)
-{
- static float time = 0.0;
-
- time = glutGet(GLUT_ELAPSED_TIME) / 500.0;
-
- jump = 4.0 * fabs(sin(time)*0.5);
- if (!lightMoving) {
- lightAngle += 0.03;
- }
- glutPostRedisplay();
-}
-
-enum {
- M_NONE, M_MOTION, M_LIGHT, M_TEXTURE, M_SHADOWS, M_REFLECTION, M_DINOSAUR,
- M_STENCIL_REFLECTION, M_STENCIL_SHADOW, M_OFFSET_SHADOW,
- M_POSITIONAL, M_DIRECTIONAL, M_PERFORMANCE
-};
-
-static void
-controlLights(int value)
-{
- switch (value) {
- case M_NONE:
- return;
- case M_MOTION:
- animation = 1 - animation;
- if (animation) {
- glutIdleFunc(idle);
- } else {
- glutIdleFunc(NULL);
- }
- break;
- case M_LIGHT:
- lightSwitch = !lightSwitch;
- if (lightSwitch) {
- glEnable(GL_LIGHT0);
- } else {
- glDisable(GL_LIGHT0);
- }
- break;
- case M_TEXTURE:
- useTexture = !useTexture;
- break;
- case M_SHADOWS:
- renderShadow = 1 - renderShadow;
- break;
- case M_REFLECTION:
- renderReflection = 1 - renderReflection;
- break;
- case M_DINOSAUR:
- renderDinosaur = 1 - renderDinosaur;
- break;
- case M_STENCIL_REFLECTION:
- stencilReflection = 1 - stencilReflection;
- break;
- case M_STENCIL_SHADOW:
- stencilShadow = 1 - stencilShadow;
- break;
- case M_OFFSET_SHADOW:
- offsetShadow = 1 - offsetShadow;
- break;
- case M_POSITIONAL:
- directionalLight = 0;
- break;
- case M_DIRECTIONAL:
- directionalLight = 1;
- break;
- case M_PERFORMANCE:
- reportSpeed = 1 - reportSpeed;
- break;
- }
- glutPostRedisplay();
-}
-
-/* When not visible, stop animating. Restart when visible again. */
-static void
-visible(int vis)
-{
- if (vis == GLUT_VISIBLE) {
- if (animation)
- glutIdleFunc(idle);
- } else {
- if (!animation)
- glutIdleFunc(NULL);
- }
-}
-
-/* Press any key to redraw; good when motion stopped and
- performance reporting on. */
-/* ARGSUSED */
-static void
-key(unsigned char c, int x, int y)
-{
- if (c == 27) {
- exit(0); /* IRIS GLism, Escape quits. */
- }
- glutPostRedisplay();
-}
-
-/* Press any key to redraw; good when motion stopped and
- performance reporting on. */
-/* ARGSUSED */
-static void
-special(int k, int x, int y)
-{
- glutPostRedisplay();
-}
-
-static int
-supportsOneDotOne(void)
-{
- const char *version;
- int major, minor;
-
- version = (char *) glGetString(GL_VERSION);
- if (sscanf(version, "%d.%d", &major, &minor) == 2)
- return major * 10 + minor >= 11;
- return 0; /* OpenGL version string malformed! */
-}
-
-int
-main(int argc, char **argv)
-{
- int i;
-
- glutInit(&argc, argv);
-
- for (i=1; i<argc; i++) {
- if (!strcmp("-linear", argv[i])) {
- linearFiltering = 1;
- } else if (!strcmp("-mipmap", argv[i])) {
- useMipmaps = 1;
- } else if (!strcmp("-ext", argv[i])) {
- forceExtension = 1;
- }
- }
-
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL);
-
-#if 0
- /* In GLUT 4.0, you'll be able to do this an be sure to
- get 2 bits of stencil if the machine has it for you. */
- glutInitDisplayString("samples stencil>=2 rgb double depth");
-#endif
-
- glutCreateWindow("Shadowy Leapin' Lizards");
- glewInit();
-
- if (glutGet(GLUT_WINDOW_STENCIL_SIZE) <= 1) {
- printf("dinoshade: Sorry, I need at least 2 bits of stencil.\n");
- exit(1);
- }
-
- /* Register GLUT callbacks. */
- glutDisplayFunc(redraw);
- glutMouseFunc(mouse);
- glutMotionFunc(motion);
- glutVisibilityFunc(visible);
- glutKeyboardFunc(key);
- glutSpecialFunc(special);
-
- glutCreateMenu(controlLights);
-
- glutAddMenuEntry("Toggle motion", M_MOTION);
- glutAddMenuEntry("-----------------------", M_NONE);
- glutAddMenuEntry("Toggle light", M_LIGHT);
- glutAddMenuEntry("Toggle texture", M_TEXTURE);
- glutAddMenuEntry("Toggle shadows", M_SHADOWS);
- glutAddMenuEntry("Toggle reflection", M_REFLECTION);
- glutAddMenuEntry("Toggle dinosaur", M_DINOSAUR);
- glutAddMenuEntry("-----------------------", M_NONE);
- glutAddMenuEntry("Toggle reflection stenciling", M_STENCIL_REFLECTION);
- glutAddMenuEntry("Toggle shadow stenciling", M_STENCIL_SHADOW);
- glutAddMenuEntry("Toggle shadow offset", M_OFFSET_SHADOW);
- glutAddMenuEntry("----------------------", M_NONE);
- glutAddMenuEntry("Positional light", M_POSITIONAL);
- glutAddMenuEntry("Directional light", M_DIRECTIONAL);
- glutAddMenuEntry("-----------------------", M_NONE);
- glutAddMenuEntry("Toggle performance", M_PERFORMANCE);
- glutAttachMenu(GLUT_RIGHT_BUTTON);
- makeDinosaur();
-
-#ifdef GL_VERSION_1_1
- if (supportsOneDotOne() && !forceExtension) {
- polygonOffsetVersion = ONE_DOT_ONE;
- glPolygonOffset(-2.0, -9.0);
- } else
-#endif
- {
-#ifdef GL_EXT_polygon_offset
- /* check for the polygon offset extension */
- if (glutExtensionSupported("GL_EXT_polygon_offset")) {
- polygonOffsetVersion = EXTENSION;
- glPolygonOffsetEXT(-2.0, -0.002);
- } else
-#endif
- {
- polygonOffsetVersion = MISSING;
- printf("\ndinoshine: Missing polygon offset.\n");
- printf(" Expect shadow depth aliasing artifacts.\n\n");
- fflush(stdout);
- }
- }
-
- glEnable(GL_CULL_FACE);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_TEXTURE_2D);
- glLineWidth(3.0);
-
- glMatrixMode(GL_PROJECTION);
- gluPerspective( /* field of view in degree */ 40.0,
- /* aspect ratio */ 1.0,
- /* Z near */ 20.0, /* Z far */ 100.0);
- glMatrixMode(GL_MODELVIEW);
- gluLookAt(0.0, 8.0, 60.0, /* eye is at (0,8,60) */
- 0.0, 8.0, 0.0, /* center is at (0,8,0) */
- 0.0, 1.0, 0.); /* up is in postivie Y direction */
-
- glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor);
- glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.1);
- glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.05);
- glEnable(GL_LIGHT0);
- glEnable(GL_LIGHTING);
-
- makeFloorTexture();
-
- /* Setup floor plane for projected shadow calculations. */
- findPlane(floorPlane, floorVertices[1], floorVertices[2], floorVertices[3]);
-
- glutMainLoop();
- return 0; /* ANSI C requires main to return int. */
-}
diff --git a/progs/demos/dissolve.c b/progs/demos/dissolve.c
deleted file mode 100644
index 8ab5242d91..0000000000
--- a/progs/demos/dissolve.c
+++ /dev/null
@@ -1,283 +0,0 @@
-/**
- * Dissolve between two images using randomized/patterned stencil buffer
- * and varying stencil ref.
- *
- * Brian Paul
- * 29 Jan 2010
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <GL/glut.h>
-#include "readtex.h"
-
-#define FILE1 "../images/bw.rgb"
-#define FILE2 "../images/arch.rgb"
-
-
-static int Win;
-static int WinWidth = 400, WinHeight = 400;
-static GLboolean Anim = GL_TRUE;
-
-static int ImgWidth[2], ImgHeight[2];
-static GLenum ImgFormat[2];
-static GLubyte *Image[2];
-static GLfloat ScaleX[2], ScaleY[2];
-
-static GLubyte StencilRef = 0;
-
-static int Mode = 0;
-
-
-static void
-Idle(void)
-{
- StencilRef = (GLint) (glutGet(GLUT_ELAPSED_TIME) / 10);
- glutPostRedisplay();
-}
-
-
-static void
-FillRandomPixels(GLubyte *b)
-{
- int i;
- for (i = 0; i < WinWidth * WinHeight; i++) {
- b[i] = rand() & 0xff;
- }
-}
-
-
-static void
-FillRandomRects(GLubyte *b)
-{
- int i;
-
- memset(b, 0, WinWidth * WinHeight);
-
- for (i = 0; i < 256; i++) {
- int x = rand() % WinWidth;
- int y = rand() % WinHeight;
- int w = rand() % 60;
- int h = rand() % 60;
- int ix, iy;
-
- if (x + w > WinWidth)
- w = WinWidth - x;
- if (y + h > WinHeight)
- h = WinHeight - y;
-
- for (iy = 0; iy < h; iy++) {
- for (ix = 0; ix < w; ix++) {
- int p = (y + iy) * WinWidth + x + ix;
- b[p] = i;
- }
- }
- }
-}
-
-
-static void
-FillWipe(GLubyte *b)
-{
- int iy, ix;
-
- memset(b, 0, WinWidth * WinHeight);
-
- for (iy = 0; iy < WinHeight; iy++) {
- for (ix = 0; ix < WinWidth; ix++) {
- int p = iy * WinWidth + ix;
- b[p] = 2 * ix + iy / 2;
- }
- }
-}
-
-
-static void
-FillMoire(GLubyte *b)
-{
- int iy, ix;
-
- memset(b, 0, WinWidth * WinHeight);
-
- for (iy = 0; iy < WinHeight; iy++) {
- for (ix = 0; ix < WinWidth; ix++) {
- int p = iy * WinWidth + ix;
- b[p] = (ix / 2) * (ix / 2) - (iy / 2) * (iy / 2);
- }
- }
-}
-
-
-static void
-FillWaves(GLubyte *b)
-{
- int iy, ix;
-
- memset(b, 0, WinWidth * WinHeight);
-
- for (iy = 0; iy < WinHeight; iy++) {
- for (ix = 0; ix < WinWidth; ix++) {
- int p = iy * WinWidth + ix;
- float x = 8.0 * 3.1415 * ix / (float) WinWidth;
- b[p] = (int) (25.0 * sin(x) ) - iy*2;
- }
- }
-}
-
-
-typedef void (*FillFunc)(GLubyte *b);
-
-
-static FillFunc Funcs[] = {
- FillRandomPixels,
- FillRandomRects,
- FillWipe,
- FillMoire,
- FillWaves
-};
-
-#define NUM_MODES (sizeof(Funcs) / sizeof(Funcs[0]))
-
-
-
-static void
-InitStencilBuffer(void)
-{
- GLubyte *b = malloc(WinWidth * WinHeight);
-
- Funcs[Mode](b);
-
- glStencilFunc(GL_ALWAYS, 0, ~0);
- glPixelZoom(1.0, 1.0);
- glDrawPixels(WinWidth, WinHeight, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, b);
-
- free(b);
-}
-
-
-static void
-Draw(void)
-{
- glClear(GL_COLOR_BUFFER_BIT);
-
- glPixelZoom(ScaleX[0], ScaleY[0]);
- glStencilFunc(GL_LESS, StencilRef, ~0);
- glDrawPixels(ImgWidth[0], ImgHeight[0], ImgFormat[0], GL_UNSIGNED_BYTE, Image[0]);
-
- glPixelZoom(ScaleX[1], ScaleY[1]);
- glStencilFunc(GL_GEQUAL, StencilRef, ~0);
- glDrawPixels(ImgWidth[1], ImgHeight[1], ImgFormat[1], GL_UNSIGNED_BYTE, Image[1]);
-
- glutSwapBuffers();
-}
-
-
-static void
-Reshape(int width, int height)
-{
- WinWidth = width;
- WinHeight = height;
- glViewport(0, 0, width, height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.0, 0.0, -15.0);
-
- InitStencilBuffer();
-
- ScaleX[0] = (float) width / ImgWidth[0];
- ScaleY[0] = (float) height / ImgHeight[0];
-
- ScaleX[1] = (float) width / ImgWidth[1];
- ScaleY[1] = (float) height / ImgHeight[1];
-}
-
-
-static void
-Key(unsigned char key, int x, int y)
-{
- (void) x;
- (void) y;
- switch (key) {
- case 'a':
- case ' ':
- Anim = !Anim;
- if (Anim)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- break;
- case 'i':
- InitStencilBuffer();
- break;
- case '-':
- StencilRef--;
- break;
- case '+':
- StencilRef++;
- break;
- case 'm':
- Mode = (Mode + 1) % NUM_MODES;
- InitStencilBuffer();
- break;
- case 27:
- glutDestroyWindow(Win);
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-
-
-static void
-Init(void)
-{
- Image[0] = LoadRGBImage(FILE1, &ImgWidth[0], &ImgHeight[0], &ImgFormat[0]);
- if (!Image[0]) {
- printf("Couldn't read %s\n", FILE1);
- exit(0);
- }
-
- Image[1] = LoadRGBImage(FILE2, &ImgWidth[1], &ImgHeight[1], &ImgFormat[1]);
- if (!Image[1]) {
- printf("Couldn't read %s\n", FILE2);
- exit(0);
- }
-
- glEnable(GL_STENCIL_TEST);
- glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-}
-
-
-int
-main(int argc, char *argv[])
-{
- glutInitWindowSize(WinWidth, WinHeight);
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL);
- Win = glutCreateWindow(argv[0]);
- glutReshapeFunc(Reshape);
- glutKeyboardFunc(Key);
- glutDisplayFunc(Draw);
- if (Anim)
- glutIdleFunc(Idle);
- Init();
-
- printf("Keys:\n");
- printf(" a/SPACE toggle animation\n");
- printf(" +/- single step\n");
- printf(" i re-init pattern\n");
- printf(" m change pattern/dissolve mode\n");
- printf(" ESC exit\n");
-
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/drawpix.c b/progs/demos/drawpix.c
deleted file mode 100644
index 9bc7086e04..0000000000
--- a/progs/demos/drawpix.c
+++ /dev/null
@@ -1,359 +0,0 @@
-
-/*
- * glDrawPixels demo/test/benchmark
- *
- * Brian Paul September 25, 1997 This file is in the public domain.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-#include <GL/glut.h>
-
-#include "readtex.h"
-
-#define IMAGE_FILE "../images/girl.rgb"
-
-static int ImgWidth, ImgHeight;
-static GLenum ImgFormat;
-static GLubyte *Image = NULL;
-
-static int Xpos, Ypos;
-static int SkipPixels, SkipRows;
-static int DrawWidth, DrawHeight;
-static int Scissor = 0;
-static int Fog = 0;
-static GLfloat Zpos = -1.0;
-static float Xzoom, Yzoom;
-static GLboolean DrawFront = GL_FALSE;
-static GLboolean Dither = GL_TRUE;
-static int win = 0;
-
-
-static void Reset( void )
-{
- Xpos = Ypos = 20;
- DrawWidth = ImgWidth;
- DrawHeight = ImgHeight;
- SkipPixels = SkipRows = 0;
- Scissor = 0;
- Fog = 0;
- Zpos = -1.0;
- Xzoom = Yzoom = 1.0;
-}
-
-
-static void Display( void )
-{
- glClear( GL_COLOR_BUFFER_BIT );
-
-#if 0
- glRasterPos2i(Xpos, Ypos);
-#else
- /* This allows negative raster positions: */
- glRasterPos3f(0, 0, Zpos);
- glBitmap(0, 0, 0, 0, Xpos, Ypos, NULL);
-#endif
-
- glPixelStorei(GL_UNPACK_SKIP_PIXELS, SkipPixels);
- glPixelStorei(GL_UNPACK_SKIP_ROWS, SkipRows);
-
- glPixelZoom( Xzoom, Yzoom );
-
- if (Scissor)
- glEnable(GL_SCISSOR_TEST);
-
- if (Fog)
- glEnable(GL_FOG);
-
- glDrawPixels(DrawWidth, DrawHeight, ImgFormat, GL_UNSIGNED_BYTE, Image);
-
- glDisable(GL_SCISSOR_TEST);
- glDisable(GL_FOG);
-
- if (DrawFront)
- glFinish();
- else
- glutSwapBuffers();
-}
-
-
-static void Benchmark( void )
-{
- int startTime, endTime;
- int draws = 500;
- double seconds, pixelsPerSecond;
-
- printf("Benchmarking...\n");
- /* GL set-up */
- glPixelStorei(GL_UNPACK_SKIP_PIXELS, SkipPixels);
- glPixelStorei(GL_UNPACK_SKIP_ROWS, SkipRows);
- glPixelZoom( Xzoom, Yzoom );
- if (Scissor)
- glEnable(GL_SCISSOR_TEST);
- if (Fog)
- glEnable(GL_FOG);
-
- if (DrawFront)
- glDrawBuffer(GL_FRONT);
- else
- glDrawBuffer(GL_BACK);
-
- /* Run timing test */
- draws = 0;
- startTime = glutGet(GLUT_ELAPSED_TIME);
- do {
- glDrawPixels(DrawWidth, DrawHeight, ImgFormat, GL_UNSIGNED_BYTE, Image);
- draws++;
- endTime = glutGet(GLUT_ELAPSED_TIME);
- } while (endTime - startTime < 4000); /* 4 seconds */
-
- /* GL clean-up */
- glDisable(GL_SCISSOR_TEST);
- glDisable(GL_FOG);
-
- /* Results */
- seconds = (double) (endTime - startTime) / 1000.0;
- pixelsPerSecond = draws * DrawWidth * DrawHeight / seconds;
- printf("Result: %d draws in %f seconds = %f pixels/sec\n",
- draws, seconds, pixelsPerSecond);
-}
-
-
-static void Reshape( int width, int height )
-{
- glViewport( 0, 0, width, height );
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glOrtho( 0.0, width, 0.0, height, 0.0, 2.0 );
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
-
- glScissor(width/4, height/4, width/2, height/2);
-}
-
-
-static void Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case ' ':
- Reset();
- break;
- case 'd':
- Dither = !Dither;
- if (Dither)
- glEnable(GL_DITHER);
- else
- glDisable(GL_DITHER);
- break;
- case 'w':
- if (DrawWidth > 0)
- DrawWidth--;
- break;
- case 'W':
- DrawWidth++;
- break;
- case 'h':
- if (DrawHeight > 0)
- DrawHeight--;
- break;
- case 'H':
- DrawHeight++;
- break;
- case 'p':
- if (SkipPixels > 0)
- SkipPixels--;
- break;
- case 'P':
- SkipPixels++;
- break;
- case 'r':
- if (SkipRows > 0)
- SkipRows--;
- break;
- case 'R':
- SkipRows++;
- break;
- case 's':
- Scissor = !Scissor;
- break;
- case 'x':
- Xzoom -= 0.1;
- break;
- case 'X':
- Xzoom += 0.1;
- break;
- case 'y':
- Yzoom -= 0.1;
- break;
- case 'Y':
- Yzoom += 0.1;
- break;
- case 'z':
- Zpos -= 0.1;
- printf("RasterPos Z = %g\n", Zpos);
- break;
- case 'Z':
- Zpos += 0.1;
- printf("RasterPos Z = %g\n", Zpos);
- break;
- case 'b':
- Benchmark();
- break;
- case 'F':
- Fog = !Fog;
- printf("Fog %d\n", Fog);
- break;
- case 'f':
- DrawFront = !DrawFront;
- if (DrawFront)
- glDrawBuffer(GL_FRONT);
- else
- glDrawBuffer(GL_BACK);
- printf("glDrawBuffer(%s)\n", DrawFront ? "GL_FRONT" : "GL_BACK");
- break;
- case 27:
- glutDestroyWindow(win);
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void SpecialKey( int key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case GLUT_KEY_UP:
- Ypos += 1;
- break;
- case GLUT_KEY_DOWN:
- Ypos -= 1;
- break;
- case GLUT_KEY_LEFT:
- Xpos -= 1;
- break;
- case GLUT_KEY_RIGHT:
- Xpos += 1;
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void Init( GLboolean ciMode, const char *filename )
-{
- static const GLfloat fogColor[4] = {0, 1, 0, 0};
-
- printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
-
- Image = LoadRGBImage( filename, &ImgWidth, &ImgHeight, &ImgFormat );
- if (!Image) {
- printf("Couldn't read %s\n", filename);
- exit(0);
- }
-
- if (ciMode) {
- /* Convert RGB image to grayscale */
- GLubyte *indexImage = (GLubyte *) malloc( ImgWidth * ImgHeight );
- GLint i;
- for (i=0; i<ImgWidth*ImgHeight; i++) {
- int gray = Image[i*3] + Image[i*3+1] + Image[i*3+2];
- indexImage[i] = gray / 3;
- }
- free(Image);
- Image = indexImage;
- ImgFormat = GL_COLOR_INDEX;
-
- for (i=0;i<255;i++) {
- float g = i / 255.0;
- glutSetColor(i, g, g, g);
- }
- }
-
- printf("Loaded %d by %d image\n", ImgWidth, ImgHeight );
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- glPixelStorei(GL_UNPACK_ROW_LENGTH, ImgWidth);
-
- glFogi(GL_FOG_MODE, GL_LINEAR);
- glFogf(GL_FOG_START, 0);
- glFogf(GL_FOG_END, 2);
- glFogfv(GL_FOG_COLOR, fogColor);
-
- Reset();
-}
-
-
-static void Usage(void)
-{
- printf("Keys:\n");
- printf(" SPACE Reset Parameters\n");
- printf(" Up/Down Move image up/down\n");
- printf(" Left/Right Move image left/right\n");
- printf(" x Decrease X-axis PixelZoom\n");
- printf(" X Increase X-axis PixelZoom\n");
- printf(" y Decrease Y-axis PixelZoom\n");
- printf(" Y Increase Y-axis PixelZoom\n");
- printf(" w Decrease glDrawPixels width*\n");
- printf(" W Increase glDrawPixels width*\n");
- printf(" h Decrease glDrawPixels height*\n");
- printf(" H Increase glDrawPixels height*\n");
- printf(" p Decrease GL_UNPACK_SKIP_PIXELS*\n");
- printf(" P Increase GL_UNPACK_SKIP_PIXELS*\n");
- printf(" r Decrease GL_UNPACK_SKIP_ROWS*\n");
- printf(" R Increase GL_UNPACK_SKIP_ROWS*\n");
- printf(" s Toggle GL_SCISSOR_TEST\n");
- printf(" F Toggle GL_FOG\n");
- printf(" z Decrease RasterPos Z\n");
- printf(" Z Increase RasterPos Z\n");
-
- printf(" f Toggle front/back buffer drawing\n");
- printf(" b Benchmark test\n");
- printf(" ESC Exit\n");
- printf("* Warning: no limits are imposed on these parameters so it's\n");
- printf(" possible to cause a segfault if you go too far.\n");
-}
-
-
-int main( int argc, char *argv[] )
-{
- GLboolean ciMode = GL_FALSE;
- const char *filename = IMAGE_FILE;
- int i = 1;
-
- glutInitWindowSize( 500, 400 );
- glutInit( &argc, argv );
-
- if (argc > i && strcmp(argv[i], "-ci")==0) {
- ciMode = GL_TRUE;
- i++;
- }
- if (argc > i) {
- filename = argv[i];
- }
-
- if (ciMode)
- glutInitDisplayMode( GLUT_INDEX | GLUT_DOUBLE );
- else
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE);
-
- win = glutCreateWindow(argv[0]);
-
- Init(ciMode, filename);
- Usage();
-
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutSpecialFunc( SpecialKey );
- glutDisplayFunc( Display );
-
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/engine.c b/progs/demos/engine.c
deleted file mode 100644
index ee7d5c154a..0000000000
--- a/progs/demos/engine.c
+++ /dev/null
@@ -1,1343 +0,0 @@
-/**
- * Simple engine demo (crankshaft, pistons, connecting rods)
- *
- * Brian Paul
- * June 2006
- */
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <GL/glew.h>
-#include <GL/glut.h>
-#include "readtex.h"
-#include "trackball.h"
-
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-#define DEG_TO_RAD(DEG) ((DEG) * M_PI / 180.0)
-
-#define TEXTURE_FILE "../images/reflect.rgb"
-
-/* Target engine speed: */
-const int RPM = 100.0;
-
-static int Win = 0;
-
-
-/**
- * Engine description.
- */
-typedef struct
-{
- const char *Name;
- int Pistons;
- int Cranks;
- float V_Angle;
- float PistonRadius;
- float PistonHeight;
- float WristPinRadius;
- float Throw;
- float CrankPlateThickness;
- float CrankPinRadius;
- float CrankJournalRadius;
- float CrankJournalLength;
- float ConnectingRodLength;
- float ConnectingRodThickness;
- /* display list IDs */
- GLuint CrankList;
- GLuint ConnRodList;
- GLuint PistonList;
- GLuint BlockList;
-} Engine;
-
-
-typedef struct
-{
- float CurQuat[4];
- float Distance;
- /* When mouse is moving: */
- GLboolean Rotating, Translating;
- GLint StartX, StartY;
- float StartDistance;
-} ViewInfo;
-
-
-typedef enum
-{
- LIT,
- WIREFRAME,
- TEXTURED
-} RenderMode;
-
-
-typedef struct
-{
- RenderMode Mode;
- GLboolean Anim;
- GLboolean Wireframe;
- GLboolean Blend;
- GLboolean Antialias;
- GLboolean Texture;
- GLboolean UseLists;
- GLboolean DrawBox;
- GLboolean ShowInfo;
- GLboolean ShowBlock;
-} RenderInfo;
-
-
-static GLUquadric *Q;
-
-static GLfloat Theta = 0.0;
-
-static const GLfloat PistonColor[4] = { 1.0, 0.5, 0.5, 1.0 };
-static const GLfloat ConnRodColor[4] = { 0.7, 1.0, 0.7, 1.0 };
-static const GLfloat CrankshaftColor[4] = { 0.7, 0.7, 1.0, 1.0 };
-static const GLfloat BlockColor[4] = {0.8, 0.8, 0.8, 0.75 };
-
-static GLuint TextureObj;
-static GLint WinWidth = 800, WinHeight = 500;
-
-static ViewInfo View;
-static RenderInfo Render;
-
-#define NUM_ENGINES 3
-static Engine Engines[NUM_ENGINES] =
-{
- {
- "V-6",
- 6, /* Pistons */
- 3, /* Cranks */
- 90.0, /* V_Angle */
- 0.5, /* PistonRadius */
- 0.6, /* PistonHeight */
- 0.1, /* WristPinRadius */
- 0.5, /* Throw */
- 0.2, /* CrankPlateThickness */
- 0.25, /* CrankPinRadius */
- 0.3, /* CrankJournalRadius */
- 0.4, /* CrankJournalLength */
- 1.5, /* ConnectingRodLength */
- 0.1, /* ConnectingRodThickness */
- 0, /* CrankList */
- 0, /* ConnRodList */
- 0, /* PistonList */
- 0 /* BlockList */
- },
- {
- "Inline-4",
- 4, /* Pistons */
- 4, /* Cranks */
- 0.0, /* V_Angle */
- 0.5, /* PistonRadius */
- 0.6, /* PistonHeight */
- 0.1, /* WristPinRadius */
- 0.5, /* Throw */
- 0.2, /* CrankPlateThickness */
- 0.25, /* CrankPinRadius */
- 0.3, /* CrankJournalRadius */
- 0.4, /* CrankJournalLength */
- 1.5, /* ConnectingRodLength */
- 0.1, /* ConnectingRodThickness */
- 0, /* CrankList */
- 0, /* ConnRodList */
- 0, /* PistonList */
- 0 /* BlockList */
- },
- {
- "Boxer-6",
- 6, /* Pistons */
- 3, /* Cranks */
- 180.0,/* V_Angle */
- 0.5, /* PistonRadius */
- 0.6, /* PistonHeight */
- 0.1, /* WristPinRadius */
- 0.5, /* Throw */
- 0.2, /* CrankPlateThickness */
- 0.25, /* CrankPinRadius */
- 0.3, /* CrankJournalRadius */
- 0.4, /* CrankJournalLength */
- 1.5, /* ConnectingRodLength */
- 0.1, /* ConnectingRodThickness */
- 0, /* CrankList */
- 0, /* ConnRodList */
- 0, /* PistonList */
- 0 /* BlockList */
- }
-};
-
-static int CurEngine = 0;
-
-
-
-static void
-InitViewInfo(ViewInfo *view)
-{
- view->Rotating = GL_FALSE;
- view->Translating = GL_FALSE;
- view->StartX = view->StartY = 0;
- view->Distance = 12.0;
- view->StartDistance = 0.0;
- view->CurQuat[0] = -0.194143;
- view->CurQuat[1] = 0.507848;
- view->CurQuat[2] = 0.115245;
- view->CurQuat[3] = 0.831335;
-}
-
-
-static void
-InitRenderInfo(RenderInfo *render)
-{
- render->Mode = LIT;
- render->Anim = GL_TRUE;
- render->Wireframe = GL_FALSE;
- render->Blend = GL_FALSE;
- render->Antialias = GL_FALSE;
- render->Texture = GL_FALSE;
- render->DrawBox = GL_FALSE;
- render->ShowInfo = GL_TRUE;
- render->ShowBlock = GL_FALSE;
- render->UseLists = GL_FALSE;
-}
-
-
-/**
- * Set GL for given rendering mode.
- */
-static void
-SetRenderState(RenderMode mode)
-{
- static const GLfloat gray2[4] = { 0.2, 0.2, 0.2, 1.0 };
- static const GLfloat gray4[4] = { 0.4, 0.4, 0.4, 1.0 };
-
- /* defaults */
- glDisable(GL_LIGHTING);
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_BLEND);
- glDisable(GL_LINE_SMOOTH);
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT, gray2);
-
- switch (mode) {
- case LIT:
- glEnable(GL_LIGHTING);
- break;
- case WIREFRAME:
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- glEnable(GL_LINE_SMOOTH);
- glEnable(GL_BLEND);
- glLineWidth(1.5);
- break;
- case TEXTURED:
- glEnable(GL_LIGHTING);
- glEnable(GL_TEXTURE_2D);
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT, gray4);
- break;
- default:
- ;
- }
-}
-
-
-/**
- * Animate the engine parts.
- */
-static void
-Idle(void)
-{
- /* convert degrees per millisecond to RPM: */
- const float m = 360.0 / 1000.0 / 60.0;
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- Theta = ((int) (t * RPM * m)) % 360;
- glutPostRedisplay();
-}
-
-
-/**
- * Compute piston's position along its stroke.
- */
-static float
-PistonStrokePosition(float throwDist, float crankAngle, float connRodLength)
-{
- float x = throwDist * cos(DEG_TO_RAD(crankAngle));
- float y = throwDist * sin(DEG_TO_RAD(crankAngle));
- float pos = y + sqrt(connRodLength * connRodLength - x * x);
- return pos;
-}
-
-
-/**
- * Compute position of nth piston along the crankshaft.
- */
-static float
-PistonShaftPosition(const Engine *eng, int piston)
-{
- const int i = piston / (eng->Pistons / eng->Cranks);
- float z;
- assert(piston < eng->Pistons);
- z = 1.5 * eng->CrankJournalLength + eng->CrankPlateThickness
- + i * (2.0 * (eng->CrankJournalLength + eng->CrankPlateThickness));
- if (eng->Pistons > eng->Cranks) {
- if (piston & 1)
- z += eng->ConnectingRodThickness;
- else
- z -= eng->ConnectingRodThickness;
- }
- return z;
-}
-
-
-/**
- * Compute distance between two adjacent pistons
- */
-static float
-PistonSpacing(const Engine *eng)
-{
- const int pistonsPerCrank = eng->Pistons / eng->Cranks;
- const float z0 = PistonShaftPosition(eng, 0);
- const float z1 = PistonShaftPosition(eng, pistonsPerCrank);
- return z1 - z0;
-}
-
-
-/**
- * (x0, y0) = position of big end on crankshaft
- * (x1, y1) = position of small end on piston
- */
-static void
-ComputeConnectingRodPosition(float throwDist, float crankAngle,
- float connRodLength,
- float *x0, float *y0, float *x1, float *y1)
-{
- *x0 = throwDist * cos(DEG_TO_RAD(crankAngle));
- *y0 = throwDist * sin(DEG_TO_RAD(crankAngle));
- *x1 = 0.0;
- *y1 = PistonStrokePosition(throwDist, crankAngle, connRodLength);
-}
-
-
-/**
- * Compute total length of the crankshaft.
- */
-static float
-CrankshaftLength(const Engine *eng)
-{
- float len = (eng->Cranks * 2 + 1) * eng->CrankJournalLength
- + 2 * eng->Cranks * eng->CrankPlateThickness;
- return len;
-}
-
-
-/**
- * Draw a piston.
- * Axis of piston = Z axis. Wrist pin is centered on (0, 0, 0).
- */
-static void
-DrawPiston(const Engine *eng)
-{
- const int slices = 30, stacks = 4, loops = 4;
- const float innerRadius = 0.9 * eng->PistonRadius;
- const float innerHeight = eng->PistonHeight - 0.15;
- const float wristPinLength = 1.8 * eng->PistonRadius;
-
- assert(Q);
-
- glPushMatrix();
- glTranslatef(0, 0, -1.1 * eng->WristPinRadius);
-
- gluQuadricOrientation(Q, GLU_INSIDE);
-
- /* bottom rim */
- gluDisk(Q, innerRadius, eng->PistonRadius, slices, 1/*loops*/);
-
- /* inner cylinder */
- gluCylinder(Q, innerRadius, innerRadius, innerHeight, slices, stacks);
-
- /* inside top */
- glPushMatrix();
- glTranslatef(0, 0, innerHeight);
- gluDisk(Q, 0, innerRadius, slices, loops);
- glPopMatrix();
-
- gluQuadricOrientation(Q, GLU_OUTSIDE);
-
- /* outer cylinder */
- gluCylinder(Q, eng->PistonRadius, eng->PistonRadius, eng->PistonHeight,
- slices, stacks);
-
- /* top */
- glTranslatef(0, 0, eng->PistonHeight);
- gluDisk(Q, 0, eng->PistonRadius, slices, loops);
-
- glPopMatrix();
-
- /* wrist pin */
- glPushMatrix();
- glTranslatef(0, 0.5 * wristPinLength, 0.0);
- glRotatef(90, 1, 0, 0);
- gluCylinder(Q, eng->WristPinRadius, eng->WristPinRadius, wristPinLength,
- slices, stacks);
- glPopMatrix();
-}
-
-
-/**
- * Draw piston at particular position.
- */
-static void
-DrawPositionedPiston(const Engine *eng, float crankAngle)
-{
- const float pos = PistonStrokePosition(eng->Throw, crankAngle,
- eng->ConnectingRodLength);
- glPushMatrix();
- glRotatef(-90, 1, 0, 0);
- glTranslatef(0, 0, pos);
- if (eng->PistonList)
- glCallList(eng->PistonList);
- else
- DrawPiston(eng);
- glPopMatrix();
-}
-
-
-/**
- * Draw connector plate. Used for crankshaft and connecting rods.
- */
-static void
-DrawConnector(float length, float thickness,
- float bigEndRadius, float smallEndRadius)
-{
- const float bigRadius = 1.2 * bigEndRadius;
- const float smallRadius = 1.2 * smallEndRadius;
- const float z0 = -0.5 * thickness, z1 = -z0;
- GLfloat points[36][2], normals[36][2];
- int i;
-
- /* compute vertex locations, normals */
- for (i = 0; i < 36; i++) {
- const int angle = i * 10;
- float x = cos(DEG_TO_RAD(angle));
- float y = sin(DEG_TO_RAD(angle));
- normals[i][0] = x;
- normals[i][1] = y;
- if (angle >= 0 && angle <= 180) {
- x *= smallRadius;
- y = y * smallRadius + length;
- }
- else {
- x *= bigRadius;
- y *= bigRadius;
- }
- points[i][0] = x;
- points[i][1] = y;
- }
-
- /* front face */
- glNormal3f(0, 0, 1);
- glBegin(GL_POLYGON);
- for (i = 0; i < 36; i++) {
- glVertex3f(points[i][0], points[i][1], z1);
- }
- glEnd();
-
- /* back face */
- glNormal3f(0, 0, -1);
- glBegin(GL_POLYGON);
- for (i = 0; i < 36; i++) {
- glVertex3f(points[35-i][0], points[35-i][1], z0);
- }
- glEnd();
-
- /* edge */
- glBegin(GL_QUAD_STRIP);
- for (i = 0; i <= 36; i++) {
- const int j = i % 36;
- glNormal3f(normals[j][0], normals[j][1], 0);
- glVertex3f(points[j][0], points[j][1], z1);
- glVertex3f(points[j][0], points[j][1], z0);
- }
- glEnd();
-}
-
-
-/**
- * Draw a crankshaft. Shaft lies along +Z axis, starting at zero.
- */
-static void
-DrawCrankshaft(const Engine *eng)
-{
- const int slices = 20, stacks = 2;
- const int n = eng->Cranks * 4 + 1;
- const float phiStep = 360 / eng->Cranks;
- float phi = -90.0;
- int i;
- float z = 0.0;
-
- for (i = 0; i < n; i++) {
- glPushMatrix();
- glTranslatef(0, 0, z);
- if (i & 1) {
- /* draw a crank plate */
- glRotatef(phi, 0, 0, 1);
- glTranslatef(0, 0, 0.5 * eng->CrankPlateThickness);
- DrawConnector(eng->Throw, eng->CrankPlateThickness,
- eng->CrankJournalRadius, eng->CrankPinRadius);
- z += 0.2;
- if (i % 4 == 3)
- phi += phiStep;
- }
- else if (i % 4 == 0) {
- /* draw crank journal segment */
- gluCylinder(Q, eng->CrankJournalRadius, eng->CrankJournalRadius,
- eng->CrankJournalLength, slices, stacks);
- z += eng->CrankJournalLength;
- }
- else if (i % 4 == 2) {
- /* draw crank pin segment */
- glRotatef(phi, 0, 0, 1);
- glTranslatef(0, eng->Throw, 0);
- gluCylinder(Q, eng->CrankPinRadius, eng->CrankPinRadius,
- eng->CrankJournalLength, slices, stacks);
- z += eng->CrankJournalLength;
- }
- glPopMatrix();
- }
-}
-
-
-/**
- * Draw crankshaft at a particular rotation.
- * \param crankAngle current crankshaft rotation, in radians
- */
-static void
-DrawPositionedCrankshaft(const Engine *eng, float crankAngle)
-{
- glPushMatrix();
- glRotatef(crankAngle, 0, 0, 1);
- if (eng->CrankList)
- glCallList(eng->CrankList);
- else
- DrawCrankshaft(eng);
- glPopMatrix();
-}
-
-
-/**
- * Draw a connecting rod at particular position.
- * \param eng description of connecting rod to draw
- * \param crankAngle current crankshaft rotation, in radians
- */
-static void
-DrawPositionedConnectingRod(const Engine *eng, float crankAngle)
-{
- float x0, y0, x1, y1;
- float d, phi;
-
- ComputeConnectingRodPosition(eng->Throw, crankAngle,
- eng->ConnectingRodLength,
- &x0, &y0, &x1, &y1);
- d = sqrt(eng->ConnectingRodLength * eng->ConnectingRodLength - x0 * x0);
- phi = atan(x0 / d) * 180.0 / M_PI;
-
- glPushMatrix();
- glTranslatef(x0, y0, 0);
- glRotatef(phi, 0, 0, 1);
- if (eng->ConnRodList)
- glCallList(eng->ConnRodList);
- else
- DrawConnector(eng->ConnectingRodLength, eng->ConnectingRodThickness,
- eng->CrankPinRadius, eng->WristPinRadius);
- glPopMatrix();
-}
-
-
-/**
- * Draw a square with a hole in middle.
- */
-static void
-SquareWithHole(float squareSize, float holeRadius)
-{
- int i;
- glBegin(GL_QUAD_STRIP);
- glNormal3f(0, 0, 1);
- for (i = 0; i <= 360; i += 5) {
- const float x1 = holeRadius * cos(DEG_TO_RAD(i));
- const float y1 = holeRadius * sin(DEG_TO_RAD(i));
- float x2 = 0.0F, y2 = 0.0F;
- if (i > 315 || i <= 45) {
- x2 = squareSize;
- y2 = squareSize * tan(DEG_TO_RAD(i));
- }
- else if (i > 45 && i <= 135) {
- x2 = -squareSize * tan(DEG_TO_RAD(i - 90));
- y2 = squareSize;
- }
- else if (i > 135 && i <= 225) {
- x2 = -squareSize;
- y2 = -squareSize * tan(DEG_TO_RAD(i-180));
- }
- else if (i > 225 && i <= 315) {
- x2 = squareSize * tan(DEG_TO_RAD(i - 270));
- y2 = -squareSize;
- }
- glVertex2f(x1, y1); /* inner circle */
- glVertex2f(x2, y2); /* outer square */
- }
- glEnd();
-}
-
-
-/**
- * Draw block with hole through middle.
- * Hole is centered on Z axis.
- * Bottom of block is at z=0, top of block is at z = blockHeight.
- * index is in [0, count - 1] to determine which block faces are drawn.
- */
-static void
-DrawBlockWithHole(float blockSize, float blockHeight, float holeRadius,
- int index, int count)
-{
- const int slices = 30, stacks = 4;
- const float x = blockSize;
- const float y = blockSize;
- const float z0 = 0;
- const float z1 = blockHeight;
-
- assert(index < count);
- assert(Q);
- gluQuadricOrientation(Q, GLU_INSIDE);
-
- glBegin(GL_QUADS);
- /* +X face */
- glNormal3f(1, 0, 0);
- glVertex3f( x, -y, z0);
- glVertex3f( x, y, z0);
- glVertex3f( x, y, z1);
- glVertex3f( x, -y, z1);
- /* -X face */
- glNormal3f(-1, 0, 0);
- glVertex3f(-x, -y, z1);
- glVertex3f(-x, y, z1);
- glVertex3f(-x, y, z0);
- glVertex3f(-x, -y, z0);
- if (index == 0) {
- /* +Y face */
- glNormal3f(0, 1, 0);
- glVertex3f(-x, y, z1);
- glVertex3f( x, y, z1);
- glVertex3f( x, y, z0);
- glVertex3f(-x, y, z0);
- }
- if (index == count - 1) {
- /* -Y face */
- glNormal3f(0, -1, 0);
- glVertex3f(-x, -y, z0);
- glVertex3f( x, -y, z0);
- glVertex3f( x, -y, z1);
- glVertex3f(-x, -y, z1);
- }
- glEnd();
-
- /* cylinder / hole */
- gluCylinder(Q, holeRadius, holeRadius, blockHeight, slices, stacks);
-
- /* face at z0 */
- glPushMatrix();
- glRotatef(180, 1, 0, 0);
- SquareWithHole(blockSize, holeRadius);
- glPopMatrix();
-
- /* face at z1 */
- glTranslatef(0, 0, z1);
- SquareWithHole(blockSize, holeRadius);
-
- gluQuadricOrientation(Q, GLU_OUTSIDE);
-}
-
-
-/**
- * Draw the engine block.
- */
-static void
-DrawEngineBlock(const Engine *eng)
-{
- const float blockHeight = eng->Throw + 1.5 * eng->PistonHeight;
- const float cylRadius = 1.01 * eng->PistonRadius;
- const float blockSize = 0.5 * PistonSpacing(eng);
- const int pistonsPerCrank = eng->Pistons / eng->Cranks;
- int i;
-
- for (i = 0; i < eng->Pistons; i++) {
- const float z = PistonShaftPosition(eng, i);
- const int crank = i / pistonsPerCrank;
- int k;
-
- glPushMatrix();
- glTranslatef(0, 0, z);
-
- /* additional rotation for kth piston per crank */
- k = i % pistonsPerCrank;
- glRotatef(k * -eng->V_Angle, 0, 0, 1);
-
- /* the block */
- glRotatef(-90, 1, 0, 0);
- glTranslatef(0, 0, eng->Throw * 2);
- DrawBlockWithHole(blockSize, blockHeight, cylRadius,
- crank, eng->Cranks);
- glPopMatrix();
- }
-}
-
-
-/**
- * Generate display lists for engine parts.
- */
-static void
-GenerateDisplayLists(Engine *eng)
-{
- eng->CrankList = glGenLists(1);
- glNewList(eng->CrankList, GL_COMPILE);
- DrawCrankshaft(eng);
- glEndList();
-
- eng->ConnRodList = glGenLists(1);
- glNewList(eng->ConnRodList, GL_COMPILE);
- DrawConnector(eng->ConnectingRodLength, eng->ConnectingRodThickness,
- eng->CrankPinRadius, eng->WristPinRadius);
- glEndList();
-
- eng->PistonList = glGenLists(1);
- glNewList(eng->PistonList, GL_COMPILE);
- DrawPiston(eng);
- glEndList();
-
- eng->BlockList = glGenLists(1);
- glNewList(eng->BlockList, GL_COMPILE);
- DrawEngineBlock(eng);
- glEndList();
-}
-
-
-/**
- * Free engine display lists (render with immediate mode).
- */
-static void
-FreeDisplayLists(Engine *eng)
-{
- glDeleteLists(eng->CrankList, 1);
- eng->CrankList = 0;
- glDeleteLists(eng->ConnRodList, 1);
- eng->ConnRodList = 0;
- glDeleteLists(eng->PistonList, 1);
- eng->PistonList = 0;
- glDeleteLists(eng->BlockList, 1);
- eng->BlockList = 0;
-}
-
-
-/**
- * Draw complete engine.
- * \param eng description of engine to draw
- * \param crankAngle current crankshaft angle, in radians
- */
-static void
-DrawEngine(const Engine *eng, float crankAngle)
-{
- const float crankDelta = 360.0 / eng->Cranks;
- const float crankLen = CrankshaftLength(eng);
- const int pistonsPerCrank = eng->Pistons / eng->Cranks;
- int i;
-
- glPushMatrix();
- glRotatef(eng->V_Angle * 0.5, 0, 0, 1);
- glTranslatef(0, 0, -0.5 * crankLen);
-
- /* crankshaft */
- glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, CrankshaftColor);
- glColor4fv(CrankshaftColor);
- DrawPositionedCrankshaft(eng, crankAngle);
-
- for (i = 0; i < eng->Pistons; i++) {
- const float z = PistonShaftPosition(eng, i);
- const int crank = i / pistonsPerCrank;
- float rot = crankAngle + crank * crankDelta;
- int k;
-
- glPushMatrix();
- glTranslatef(0, 0, z);
-
- /* additional rotation for kth piston per crank */
- k = i % pistonsPerCrank;
- glRotatef(k * -eng->V_Angle, 0, 0, 1);
- rot += k * eng->V_Angle;
-
- /* piston */
- glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, PistonColor);
- glColor4fv(PistonColor);
- DrawPositionedPiston(eng, rot);
-
- /* connecting rod */
- glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, ConnRodColor);
- glColor4fv(ConnRodColor);
- DrawPositionedConnectingRod(eng, rot);
- glPopMatrix();
- }
-
- if (Render.ShowBlock) {
- const GLboolean blend = glIsEnabled(GL_BLEND);
-
- glDepthMask(GL_FALSE);
- if (!blend) {
- glEnable(GL_BLEND);
- }
- glEnable(GL_CULL_FACE);
-
- glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, BlockColor);
- glColor4fv(BlockColor);
- if (eng->CrankList)
- glCallList(eng->BlockList);
- else
- DrawEngineBlock(eng);
-
- glDisable(GL_CULL_FACE);
- glDepthMask(GL_TRUE);
- if (!blend) {
- glDisable(GL_BLEND);
- }
- }
-
- glPopMatrix();
-}
-
-
-static void
-DrawBox(void)
-{
- const float xmin = -3.0, xmax = 3.0;
- const float ymin = -1.0, ymax = 3.0;
- const float zmin = -4.0, zmax = 4.0;
- const float step = 0.5;
- const float d = 0.01;
- float x, y, z;
- GLboolean lit = glIsEnabled(GL_LIGHTING);
- GLboolean tex = glIsEnabled(GL_TEXTURE_2D);
-
- glDisable(GL_LIGHTING);
- glDisable(GL_TEXTURE_2D);
- glLineWidth(1.0);
-
- glColor3f(1, 1, 1);
-
- /* Z min */
- glBegin(GL_LINES);
- for (x = xmin; x <= xmax; x += step) {
- glVertex3f(x, ymin, zmin);
- glVertex3f(x, ymax, zmin);
- }
- glEnd();
- glBegin(GL_LINES);
- for (y = ymin; y <= ymax; y += step) {
- glVertex3f(xmin, y, zmin);
- glVertex3f(xmax, y, zmin);
- }
- glEnd();
-
- /* Y min */
- glBegin(GL_LINES);
- for (x = xmin; x <= xmax; x += step) {
- glVertex3f(x, ymin, zmin);
- glVertex3f(x, ymin, zmax);
- }
- glEnd();
- glBegin(GL_LINES);
- for (z = zmin; z <= zmax; z += step) {
- glVertex3f(xmin, ymin, z);
- glVertex3f(xmax, ymin, z);
- }
- glEnd();
-
- /* X min */
- glBegin(GL_LINES);
- for (y = ymin; y <= ymax; y += step) {
- glVertex3f(xmin, y, zmin);
- glVertex3f(xmin, y, zmax);
- }
- glEnd();
- glBegin(GL_LINES);
- for (z = zmin; z <= zmax; z += step) {
- glVertex3f(xmin, ymin, z);
- glVertex3f(xmin, ymax, z);
- }
- glEnd();
-
- glColor3f(0.4, 0.4, 0.6);
- glBegin(GL_QUADS);
- /* xmin */
- glVertex3f(xmin-d, ymin, zmin);
- glVertex3f(xmin-d, ymax, zmin);
- glVertex3f(xmin-d, ymax, zmax);
- glVertex3f(xmin-d, ymin, zmax);
- /* ymin */
- glVertex3f(xmin, ymin-d, zmin);
- glVertex3f(xmax, ymin-d, zmin);
- glVertex3f(xmax, ymin-d, zmax);
- glVertex3f(xmin, ymin-d, zmax);
- /* zmin */
- glVertex3f(xmin, ymin, zmin-d);
- glVertex3f(xmax, ymin, zmin-d);
- glVertex3f(xmax, ymax, zmin-d);
- glVertex3f(xmin, ymax, zmin-d);
- glEnd();
-
- if (lit)
- glEnable(GL_LIGHTING);
- if (tex)
- glEnable(GL_TEXTURE_2D);
-}
-
-
-static void
-PrintString(const char *s)
-{
- while (*s) {
- glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s);
- s++;
- }
-}
-
-
-static int
-ComputeFPS(void)
-{
- static double t0 = -1.0;
- static int frames = 0;
- double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- static int fps = 0;
-
- frames++;
-
- if (t0 < 0.0) {
- t0 = t;
- fps = 0;
- }
- else if (t - t0 >= 1.0) {
- fps = (int) (frames / (t - t0) + 0.5);
- t0 = t;
- frames = 0;
- }
-
- return fps;
-}
-
-
-static void
-Draw(void)
-{
- int fps;
- GLfloat rot[4][4];
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glPushMatrix();
-
- glTranslatef(0.0, 0.0, -View.Distance);
- build_rotmatrix(rot, View.CurQuat);
- glMultMatrixf(&rot[0][0]);
-
- glPushMatrix();
- glTranslatef(0, -0.75, 0);
- if (Render.DrawBox)
- DrawBox();
- DrawEngine(Engines + CurEngine, Theta);
- glPopMatrix();
-
- glPopMatrix();
-
- fps = ComputeFPS();
- if (Render.ShowInfo) {
- GLboolean lit = glIsEnabled(GL_LIGHTING);
- GLboolean tex = glIsEnabled(GL_TEXTURE_2D);
- char s[100];
- sprintf(s, "%s %d FPS %s", Engines[CurEngine].Name, fps,
- Render.UseLists ? "Display Lists" : "Immediate mode");
- glDisable(GL_LIGHTING);
- glDisable(GL_TEXTURE_2D);
- glColor3f(1, 1 , 1);
- glWindowPos2iARB(10, 10);
- PrintString(s);
- if (lit)
- glEnable(GL_LIGHTING);
- if (tex)
- glEnable(GL_TEXTURE_2D);
- }
-
- /* also print out a periodic fps to stdout. useful for trying to
- * figure out the performance impact of rendering the string above
- * with glBitmap.
- */
- {
- static GLint T0 = 0;
- static GLint Frames = 0;
- GLint t = glutGet(GLUT_ELAPSED_TIME);
-
- Frames++;
-
- if (t - T0 >= 5000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- printf("%d frames in %6.3f seconds = %6.3f FPS\n", Frames, seconds, fps);
- fflush(stdout);
- T0 = t;
- Frames = 0;
- }
- }
-
-
- glutSwapBuffers();
-}
-
-
-/**
- * Handle window resize.
- */
-static void
-Reshape(int width, int height)
-{
- float ar = (float) width / height;
- float s = 0.5;
- glViewport(0, 0, width, height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-ar * s, ar * s, -s, s, 2.0, 50.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- WinWidth = width;
- WinHeight = height;
-}
-
-
-/**
- * Handle mouse button.
- */
-static void
-Mouse(int button, int state, int x, int y)
-{
- if (button == GLUT_LEFT_BUTTON) {
- if (state == GLUT_DOWN) {
- View.StartX = x;
- View.StartY = y;
- View.Rotating = GL_TRUE;
- }
- else if (state == GLUT_UP) {
- View.Rotating = GL_FALSE;
- }
- }
- else if (button == GLUT_MIDDLE_BUTTON) {
- if (state == GLUT_DOWN) {
- View.StartX = x;
- View.StartY = y;
- View.StartDistance = View.Distance;
- View.Translating = GL_TRUE;
- }
- else if (state == GLUT_UP) {
- View.Translating = GL_FALSE;
- }
- }
-}
-
-
-/**
- * Handle mouse motion
- */
-static void
-Motion(int x, int y)
-{
- int i;
- if (View.Rotating) {
- float x0 = (2.0 * View.StartX - WinWidth) / WinWidth;
- float y0 = (WinHeight - 2.0 * View.StartY) / WinHeight;
- float x1 = (2.0 * x - WinWidth) / WinWidth;
- float y1 = (WinHeight - 2.0 * y) / WinHeight;
- float q[4];
-
- trackball(q, x0, y0, x1, y1);
- View.StartX = x;
- View.StartY = y;
- for (i = 0; i < 1; i++)
- add_quats(q, View.CurQuat, View.CurQuat);
-
- glutPostRedisplay();
- }
- else if (View.Translating) {
- float dz = 0.01 * (y - View.StartY);
- View.Distance = View.StartDistance + dz;
- glutPostRedisplay();
- }
-}
-
-
-/**
- ** Menu Callbacks
- **/
-
-static void
-OptAnimation(void)
-{
- Render.Anim = !Render.Anim;
- if (Render.Anim)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
-}
-
-static void
-OptChangeEngine(void)
-{
- CurEngine = (CurEngine + 1) % NUM_ENGINES;
-}
-
-static void
-OptRenderMode(void)
-{
- Render.Mode++;
- if (Render.Mode > TEXTURED)
- Render.Mode = 0;
- SetRenderState(Render.Mode);
-}
-
-static void
-OptDisplayLists(void)
-{
- int i;
- Render.UseLists = !Render.UseLists;
- if (Render.UseLists) {
- for (i = 0; i < NUM_ENGINES; i++) {
- GenerateDisplayLists(Engines + i);
- }
- }
- else {
- for (i = 0; i < NUM_ENGINES; i++) {
- FreeDisplayLists(Engines + i);
- }
- }
-}
-
-static void
-OptShowBlock(void)
-{
- Render.ShowBlock = !Render.ShowBlock;
-}
-
-static void
-OptShowInfo(void)
-{
- Render.ShowInfo = !Render.ShowInfo;
-}
-
-static void
-OptShowBox(void)
-{
- Render.DrawBox = !Render.DrawBox;
-}
-
-static void
-OptRotate(void)
-{
- Theta += 5.0;
-}
-
-static void
-OptExit(void)
-{
- glutDestroyWindow(Win);
- exit(0);
-}
-
-
-/**
- * Define menu entries (w/ keyboard shortcuts)
- */
-
-typedef struct
-{
- const char *Text;
- const char Key;
- void (*Function)(void);
-} MenuInfo;
-
-static const MenuInfo MenuItems[] = {
- { "Animation", 'a', OptAnimation },
- { "Change Engine", 'e', OptChangeEngine },
- { "Rendering Style", 'm', OptRenderMode },
- { "Display Lists", 'd', OptDisplayLists },
- { "Show Block", 'b', OptShowBlock },
- { "Show Info", 'i', OptShowInfo },
- { "Show Box", 'x', OptShowBox },
- { "Exit", 27, OptExit },
- { NULL, 'r', OptRotate },
- { NULL, 0, NULL }
-};
-
-
-/**
- * Handle menu selection.
- */
-static void
-MenuHandler(int entry)
-{
- MenuItems[entry].Function();
- glutPostRedisplay();
-}
-
-
-/**
- * Make pop-up menu.
- */
-static void
-MakeMenu(void)
-{
- int i;
- glutCreateMenu(MenuHandler);
- for (i = 0; MenuItems[i].Text; i++) {
- glutAddMenuEntry(MenuItems[i].Text, i);
- }
- glutAttachMenu(GLUT_RIGHT_BUTTON);
-}
-
-
-/**
- * Handle keyboard event.
- */
-static void
-Key(unsigned char key, int x, int y)
-{
- int i;
- (void) x; (void) y;
- for (i = 0; MenuItems[i].Key; i++) {
- if (MenuItems[i].Key == key) {
- MenuItems[i].Function();
- glutPostRedisplay();
- break;
- }
- }
-}
-
-
-static
-void LoadTexture(void)
-{
- GLboolean convolve = GL_FALSE;
-
- glGenTextures(1, &TextureObj);
- glBindTexture(GL_TEXTURE_2D, TextureObj);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
-
- if (convolve) {
-#define FILTER_SIZE 7
- /* use convolution to blur the texture to simulate a dull finish
- * on the object.
- */
- GLubyte *img;
- GLenum format;
- GLint w, h;
- GLfloat filter[FILTER_SIZE][FILTER_SIZE][4];
-
- for (h = 0; h < FILTER_SIZE; h++) {
- for (w = 0; w < FILTER_SIZE; w++) {
- const GLfloat k = 1.0 / (FILTER_SIZE * FILTER_SIZE);
- filter[h][w][0] = k;
- filter[h][w][1] = k;
- filter[h][w][2] = k;
- filter[h][w][3] = k;
- }
- }
-
- glEnable(GL_CONVOLUTION_2D);
- glConvolutionParameteri(GL_CONVOLUTION_2D,
- GL_CONVOLUTION_BORDER_MODE, GL_CONSTANT_BORDER);
- glConvolutionFilter2D(GL_CONVOLUTION_2D, GL_RGBA,
- FILTER_SIZE, FILTER_SIZE,
- GL_RGBA, GL_FLOAT, filter);
-
- img = LoadRGBImage(TEXTURE_FILE, &w, &h, &format);
- if (!img) {
- printf("Error: couldn't load texture image file %s\n", TEXTURE_FILE);
- exit(1);
- }
-
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, w, h, 0,
- format, GL_UNSIGNED_BYTE, img);
- free(img);
- }
- else {
- if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) {
- printf("Error: couldn't load texture image file %s\n", TEXTURE_FILE);
- exit(1);
- }
- }
-}
-
-
-static void
-Init(void)
-{
- const GLfloat lightColor[4] = { 0.7, 0.7, 0.7, 1.0 };
- const GLfloat specular[4] = { 0.8, 0.8, 0.8, 1.0 };
- const GLfloat backColor[4] = { 1, 1, 0, 0 };
-
- Q = gluNewQuadric();
- gluQuadricNormals(Q, GLU_SMOOTH);
-
- LoadTexture();
-
- glClearColor(0.3, 0.3, 0.3, 0.0);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT0);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor);
- glMaterialf(GL_FRONT, GL_SHININESS, 40);
- glMaterialfv(GL_FRONT, GL_SPECULAR, specular);
- glEnable(GL_NORMALIZE);
-
- glMaterialfv(GL_BACK, GL_DIFFUSE, backColor);
-#if 0
- glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 1);
-#endif
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- InitViewInfo(&View);
- InitRenderInfo(&Render);
-}
-
-
-int
-main(int argc, char *argv[])
-{
- glutInitWindowSize(WinWidth, WinHeight);
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
- Win = glutCreateWindow("OpenGL Engine Demo");
- glewInit();
- glutReshapeFunc(Reshape);
- glutMouseFunc(Mouse);
- glutMotionFunc(Motion);
- glutKeyboardFunc(Key);
- glutDisplayFunc(Draw);
- MakeMenu();
- Init();
- if (Render.Anim)
- glutIdleFunc(Idle);
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/fbo_firecube.c b/progs/demos/fbo_firecube.c
deleted file mode 100644
index 17767a148f..0000000000
--- a/progs/demos/fbo_firecube.c
+++ /dev/null
@@ -1,1071 +0,0 @@
-/*
- * Draw the "fire" test program on the six faces of a cube using
- * fbo render-to-texture.
- *
- * Much of the code comes from David Bucciarelli's "fire"
- * test program. The rest basically from Brian Paul's "gearbox" and
- * fbotexture programs.
- *
- * By pressing the 'q' key, you can make the driver choose different
- * internal texture RGBA formats by giving it different "format" and "type"
- * arguments to the glTexImage2D function that creates the texture
- * image being rendered to. If the driver doesn't support a texture image
- * format as a render target, it will usually fall back to software when
- * drawing the "fire" image, and frame-rate should drop considerably.
- *
- * Performance:
- * The rendering speed of this program is usually dictated by fill rate
- * and the fact that software fallbacks for glBitMap makes the driver
- * operate synchronously. Low-end UMA hardware will probably see around
- * 35 fps with the help screen disabled and 32bpp window- and user
- * frame-buffers (2008).
- *
- * This program is released under GPL, following the "fire" licensing.
- *
- * Authors:
- * David Bucciarelli ("fire")
- * Brian Paul ("gearbox", "fbotexture")
- * Thomas Hellstrom (Putting it together)
- *
- */
-
-#include <math.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <GL/glew.h>
-#include <GL/glut.h>
-#include "readtex.h"
-
-
-/*
- * Format of texture we render to.
- */
-
-#define TEXINTFORMAT GL_RGBA
-
-static GLuint texTypes[] =
- {GL_UNSIGNED_BYTE,
- GL_UNSIGNED_INT_8_8_8_8_REV,
- GL_UNSIGNED_SHORT_1_5_5_5_REV,
- GL_UNSIGNED_SHORT_4_4_4_4_REV,
- GL_UNSIGNED_INT_8_8_8_8,
- GL_UNSIGNED_SHORT_5_5_5_1,
- GL_UNSIGNED_SHORT_4_4_4_4,
- GL_UNSIGNED_INT_8_8_8_8_REV,
- GL_UNSIGNED_SHORT_1_5_5_5_REV,
- GL_UNSIGNED_SHORT_4_4_4_4_REV,
- GL_UNSIGNED_INT_8_8_8_8,
- GL_UNSIGNED_SHORT_5_5_5_1,
- GL_UNSIGNED_SHORT_4_4_4_4,
- GL_UNSIGNED_SHORT_5_6_5,
- GL_UNSIGNED_SHORT_5_6_5_REV,
- GL_UNSIGNED_SHORT_5_6_5,
- GL_UNSIGNED_SHORT_5_6_5_REV};
-
-static GLuint texFormats[] =
- {GL_RGBA,
- GL_RGBA,
- GL_RGBA,
- GL_RGBA,
- GL_RGBA,
- GL_RGBA,
- GL_RGBA,
- GL_BGRA,
- GL_BGRA,
- GL_BGRA,
- GL_BGRA,
- GL_BGRA,
- GL_BGRA,
- GL_RGB,
- GL_RGB,
- GL_BGR,
- GL_BGR};
-
-static const char *texNames[] =
- {"GL_RGBA GL_UNSIGNED_BYTE",
- "GL_RGBA GL_UNSIGNED_INT_8_8_8_8_REV",
- "GL_RGBA GL_UNSIGNED_SHORT_1_5_5_5_REV",
- "GL_RGBA GL_UNSIGNED_SHORT_4_4_4_4_REV",
- "GL_RGBA GL_UNSIGNED_INT_8_8_8_8",
- "GL_RGBA GL_UNSIGNED_INT_5_5_5_1",
- "GL_RGBA GL_UNSIGNED_INT_4_4_4_4",
- "GL_BGRA GL_UNSIGNED_INT_8_8_8_8_REV",
- "GL_BGRA GL_UNSIGNED_SHORT_1_5_5_5_REV",
- "GL_BGRA GL_UNSIGNED_SHORT_4_4_4_4_REV",
- "GL_BGRA GL_UNSIGNED_INT_8_8_8_8",
- "GL_BGRA GL_UNSIGNED_INT_5_5_5_1",
- "GL_BGRA GL_UNSIGNED_INT_4_4_4_4",
- "GL_RGB GL_UNSIGNED_INT_5_6_5",
- "GL_RGB GL_UNSIGNED_INT_5_6_5_REV",
- "GL_BGR GL_UNSIGNED_INT_5_6_5",
- "GL_BGR GL_UNSIGNED_INT_5_6_5_REV"};
-
-
-
-
-#ifndef M_PI
-#define M_PI 3.1415926535
-#endif
-
-#define vinit(a,i,j,k) { \
- (a)[0]=i; \
- (a)[1]=j; \
- (a)[2]=k; \
- }
-
-#define vinit4(a,i,j,k,w) { \
- (a)[0]=i; \
- (a)[1]=j; \
- (a)[2]=k; \
- (a)[3]=w; \
- }
-
-
-#define vadds(a,dt,b) { \
- (a)[0]+=(dt)*(b)[0]; \
- (a)[1]+=(dt)*(b)[1]; \
- (a)[2]+=(dt)*(b)[2]; \
- }
-
-#define vequ(a,b) { \
- (a)[0]=(b)[0]; \
- (a)[1]=(b)[1]; \
- (a)[2]=(b)[2]; \
- }
-
-#define vinter(a,dt,b,c) { \
- (a)[0]=(dt)*(b)[0]+(1.0-dt)*(c)[0]; \
- (a)[1]=(dt)*(b)[1]+(1.0-dt)*(c)[1]; \
- (a)[2]=(dt)*(b)[2]+(1.0-dt)*(c)[2]; \
- }
-
-#define clamp(a) ((a) < 0.0 ? 0.0 : ((a) < 1.0 ? (a) : 1.0))
-
-#define vclamp(v) { \
- (v)[0]=clamp((v)[0]); \
- (v)[1]=clamp((v)[1]); \
- (v)[2]=clamp((v)[2]); \
- }
-
-static GLint WinWidth = 800, WinHeight = 800;
-static GLint TexWidth, TexHeight;
-static GLuint TexObj;
-static GLuint MyFB;
-static GLuint DepthRB;
-static GLboolean WireFrame = GL_FALSE;
-static GLboolean Anim = GL_TRUE;
-static GLint texType = 0;
-
-static GLint T0 = 0;
-static GLint Frames = 0;
-static GLint Win = 0;
-
-static GLfloat ViewRotX = 20.0, ViewRotY = 30.0, ViewRotZ = 0.0;
-static GLfloat CubeRot = 0.0;
-
-
-static void
-idle(void);
-
-
-static void
-CheckError(int line)
-{
- GLenum err = glGetError();
- if (err) {
- printf("GL Error 0x%x at line %d\n", (int) err, line);
- exit(1);
- }
-}
-
-
-static void
-cleanup(void)
-{
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
- glDeleteFramebuffersEXT(1, &MyFB);
- glDeleteRenderbuffersEXT(1, &DepthRB);
- glDeleteTextures(1, &TexObj);
- glutDestroyWindow(Win);
-}
-
-static GLint NiceFog = 1;
-
-#define DIMP 20.0
-#define DIMTP 16.0
-
-#define RIDCOL 0.4
-
-#define NUMTREE 50
-#define TREEINR 2.5
-#define TREEOUTR 8.0
-
-#define AGRAV -9.8
-
-typedef struct
-{
- int age;
- float p[3][3];
- float v[3];
- float c[3][4];
-}
- part;
-
-static float treepos[NUMTREE][3];
-
-static float black[3] = { 0.0, 0.0, 0.0 };
-static float blu[3] = { 1.0, 0.2, 0.0 };
-static float blu2[3] = { 1.0, 1.0, 0.0 };
-
-static float fogcolor[4] = { 1.0, 1.0, 1.0, 1.0 };
-
-static float q[4][3] = {
- {-DIMP, 0.0, -DIMP},
- {DIMP, 0.0, -DIMP},
- {DIMP, 0.0, DIMP},
- {-DIMP, 0.0, DIMP}
-};
-
-static float qt[4][2] = {
- {-DIMTP, -DIMTP},
- {DIMTP, -DIMTP},
- {DIMTP, DIMTP},
- {-DIMTP, DIMTP}
-};
-
-static int np;
-static float eject_r, dt, maxage, eject_vy, eject_vl;
-static short shadows;
-static float ridtri;
-static int fog = 0;
-static int help = 1;
-
-static part *p;
-
-static GLuint groundid;
-static GLuint treeid;
-
-static float obs[3] = { 2.0, 1.0, 0.0 };
-static float dir[3];
-static float v = 0.0;
-static float alpha = -84.0;
-static float beta = 90.0;
-
-static float
-vrnd(void)
-{
- return (((float) rand()) / RAND_MAX);
-}
-
-static void
-setnewpart(part * p)
-{
- float a, v[3], *c;
-
- p->age = 0;
-
- a = vrnd() * 3.14159265359 * 2.0;
-
- vinit(v, sin(a) * eject_r * vrnd(), 0.15, cos(a) * eject_r * vrnd());
- vinit(p->p[0], v[0] + vrnd() * ridtri, v[1] + vrnd() * ridtri,
- v[2] + vrnd() * ridtri);
- vinit(p->p[1], v[0] + vrnd() * ridtri, v[1] + vrnd() * ridtri,
- v[2] + vrnd() * ridtri);
- vinit(p->p[2], v[0] + vrnd() * ridtri, v[1] + vrnd() * ridtri,
- v[2] + vrnd() * ridtri);
-
- vinit(p->v, v[0] * eject_vl / (eject_r / 2),
- vrnd() * eject_vy + eject_vy / 2, v[2] * eject_vl / (eject_r / 2));
-
- c = blu;
-
- vinit4(p->c[0], c[0] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
- c[1] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
- c[2] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), 1.0);
- vinit4(p->c[1], c[0] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
- c[1] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
- c[2] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), 1.0);
- vinit4(p->c[2], c[0] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
- c[1] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
- c[2] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), 1.0);
-}
-
-static void
-setpart(part * p)
-{
- float fact;
-
- if (p->p[0][1] < 0.1) {
- setnewpart(p);
- return;
- }
-
- p->v[1] += AGRAV * dt;
-
- vadds(p->p[0], dt, p->v);
- vadds(p->p[1], dt, p->v);
- vadds(p->p[2], dt, p->v);
-
- p->age++;
-
- if ((p->age) > maxage) {
- vequ(p->c[0], blu2);
- vequ(p->c[1], blu2);
- vequ(p->c[2], blu2);
- }
- else {
- fact = 1.0 / maxage;
- vadds(p->c[0], fact, blu2);
- vclamp(p->c[0]);
- p->c[0][3] = fact * (maxage - p->age);
-
- vadds(p->c[1], fact, blu2);
- vclamp(p->c[1]);
- p->c[1][3] = fact * (maxage - p->age);
-
- vadds(p->c[2], fact, blu2);
- vclamp(p->c[2]);
- p->c[2][3] = fact * (maxage - p->age);
- }
-}
-
-static void
-drawtree(float x, float y, float z)
-{
- glBegin(GL_QUADS);
- glTexCoord2f(0.0, 0.0);
- glVertex3f(x - 1.5, y + 0.0, z);
-
- glTexCoord2f(1.0, 0.0);
- glVertex3f(x + 1.5, y + 0.0, z);
-
- glTexCoord2f(1.0, 1.0);
- glVertex3f(x + 1.5, y + 3.0, z);
-
- glTexCoord2f(0.0, 1.0);
- glVertex3f(x - 1.5, y + 3.0, z);
-
-
- glTexCoord2f(0.0, 0.0);
- glVertex3f(x, y + 0.0, z - 1.5);
-
- glTexCoord2f(1.0, 0.0);
- glVertex3f(x, y + 0.0, z + 1.5);
-
- glTexCoord2f(1.0, 1.0);
- glVertex3f(x, y + 3.0, z + 1.5);
-
- glTexCoord2f(0.0, 1.0);
- glVertex3f(x, y + 3.0, z - 1.5);
-
- glEnd();
-
-}
-
-static void
-calcposobs(void)
-{
- dir[0] = sin(alpha * M_PI / 180.0);
- dir[2] = cos(alpha * M_PI / 180.0) * sin(beta * M_PI / 180.0);
- dir[1] = cos(beta * M_PI / 180.0);
-
- if (dir[0] < 1.0e-5 && dir[0] > -1.0e-5)
- dir[0] = 0;
- if (dir[1] < 1.0e-5 && dir[1] > -1.0e-5)
- dir[1] = 0;
- if (dir[2] < 1.0e-5 && dir[2] > -1.0e-5)
- dir[2] = 0;
-
- obs[0] += v * dir[0];
- obs[1] += v * dir[1];
- obs[2] += v * dir[2];
-}
-
-static void
-printstring(void *font, const char *string)
-{
- int len, i;
-
- len = (int) strlen(string);
- for (i = 0; i < len; i++)
- glutBitmapCharacter(font, string[i]);
-}
-
-
-static void
-printhelp(void)
-{
- glColor4f(0.0, 0.0, 0.0, 0.5);
- glRecti(40, 40, 600, 440);
-
- glColor3f(1.0, 0.0, 0.0);
- glRasterPos2i(300, 420);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Help");
-
- glRasterPos2i(60, 390);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "h - Toggle Help");
-
- glRasterPos2i(60, 360);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "t - Increase particle size");
- glRasterPos2i(60, 330);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "T - Decrease particle size");
-
- glRasterPos2i(60, 300);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "r - Increase emission radius");
- glRasterPos2i(60, 270);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "R - Decrease emission radius");
-
- glRasterPos2i(60, 240);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "f - Toggle Fog");
- glRasterPos2i(60, 210);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "s - Toggle shadows");
- glRasterPos2i(60, 180);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "q - Toggle texture format & type");
- glRasterPos2i(60, 150);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "a - Increase velocity");
- glRasterPos2i(60, 120);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "z - Decrease velocity");
- glRasterPos2i(60, 90);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Arrow Keys - Rotate");
-}
-
-
-static void
-drawfire(void)
-{
- static char frbuf[80] = "";
- int j;
- static double t0 = -1.;
- double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = (t - t0) * 1.0;
- t0 = t;
-
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB);
-
- glDisable(GL_LIGHTING);
-
- glShadeModel(GL_FLAT);
-
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- glEnable(GL_FOG);
- glFogi(GL_FOG_MODE, GL_EXP);
- glFogfv(GL_FOG_COLOR, fogcolor);
- glFogf(GL_FOG_DENSITY, 0.1);
-
-
- glViewport(0, 0, (GLint) TexWidth, (GLint) TexHeight);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(70.0, TexWidth/ (float) TexHeight, 0.1, 30.0);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- if (NiceFog)
- glHint(GL_FOG_HINT, GL_NICEST);
- else
- glHint(GL_FOG_HINT, GL_DONT_CARE);
-
- glEnable(GL_DEPTH_TEST);
-
- if (fog)
- glEnable(GL_FOG);
- else
- glDisable(GL_FOG);
-
- glDepthMask(GL_TRUE);
- glClearColor(1.0, 1.0, 1.0, 1.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
-
- glPushMatrix();
- calcposobs();
- gluLookAt(obs[0], obs[1], obs[2],
- obs[0] + dir[0], obs[1] + dir[1], obs[2] + dir[2],
- 0.0, 1.0, 0.0);
-
- glColor4f(1.0, 1.0, 1.0, 1.0);
-
- glEnable(GL_TEXTURE_2D);
-
- glBindTexture(GL_TEXTURE_2D, groundid);
- glBegin(GL_QUADS);
- glTexCoord2fv(qt[0]);
- glVertex3fv(q[0]);
- glTexCoord2fv(qt[1]);
- glVertex3fv(q[1]);
- glTexCoord2fv(qt[2]);
- glVertex3fv(q[2]);
- glTexCoord2fv(qt[3]);
- glVertex3fv(q[3]);
- glEnd();
-
- glEnable(GL_ALPHA_TEST);
- glAlphaFunc(GL_GEQUAL, 0.9);
-
- glBindTexture(GL_TEXTURE_2D, treeid);
- for (j = 0; j < NUMTREE; j++)
- drawtree(treepos[j][0], treepos[j][1], treepos[j][2]);
-
- glDisable(GL_TEXTURE_2D);
- glDepthMask(GL_FALSE);
- glDisable(GL_ALPHA_TEST);
-
- if (shadows) {
- glBegin(GL_TRIANGLES);
- for (j = 0; j < np; j++) {
- glColor4f(black[0], black[1], black[2], p[j].c[0][3]);
- glVertex3f(p[j].p[0][0], 0.1, p[j].p[0][2]);
-
- glColor4f(black[0], black[1], black[2], p[j].c[1][3]);
- glVertex3f(p[j].p[1][0], 0.1, p[j].p[1][2]);
-
- glColor4f(black[0], black[1], black[2], p[j].c[2][3]);
- glVertex3f(p[j].p[2][0], 0.1, p[j].p[2][2]);
- }
- glEnd();
- }
-
- glBegin(GL_TRIANGLES);
- for (j = 0; j < np; j++) {
- glColor4fv(p[j].c[0]);
- glVertex3fv(p[j].p[0]);
-
- glColor4fv(p[j].c[1]);
- glVertex3fv(p[j].p[1]);
-
- glColor4fv(p[j].c[2]);
- glVertex3fv(p[j].p[2]);
-
- setpart(&p[j]);
- }
- glEnd();
-
-
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_ALPHA_TEST);
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_FOG);
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-0.5, 639.5, -0.5, 479.5
- , -1.0, 1.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- glColor3f(1.0, 0.0, 0.0);
- glRasterPos2i(10, 10);
- printstring(GLUT_BITMAP_HELVETICA_18, frbuf);
- glColor3f(0.0, 0.0, 1.0);
- glRasterPos2i(10, 450);
- printstring(GLUT_BITMAP_HELVETICA_18, texNames[texType]);
- glColor3f(1.0, 0.0, 0.0);
- glRasterPos2i(10, 470);
- printstring(GLUT_BITMAP_HELVETICA_10,
- "Fire V1.5 Written by David Bucciarelli (tech.hmw@plus.it)");
-
- if (help)
- printhelp();
-
- glPopMatrix();
- glDepthMask(GL_TRUE);
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
- Frames++;
-
- {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- if (t - T0 >= 2000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- sprintf(frbuf, "Frame rate: %f", fps);
- T0 = t;
- Frames = 0;
- }
- }
-
-}
-
-static void
-regen_texImage(void)
-{
- glBindTexture(GL_TEXTURE_2D, TexObj);
- glTexImage2D(GL_TEXTURE_2D, 0, TEXINTFORMAT, TexWidth, TexHeight, 0,
- texFormats[texType], texTypes[texType], NULL);
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB);
- glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
- GL_TEXTURE_2D, TexObj, 0);
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
-}
-
-static void
-key(unsigned char key, int x, int y)
-{
- switch (key) {
- case 27:
- cleanup();
- exit(0);
- break;
- case ' ':
- Anim = !Anim;
- glutIdleFunc(Anim ? idle : NULL);
- break;
- case 'a':
- v += 0.0005;
- break;
- case 'z':
- v -= 0.0005;
- break;
- case 'h':
- help = (!help);
- break;
- case 'f':
- fog = (!fog);
- break;
- case 's':
- shadows = !shadows;
- break;
- case 'R':
- eject_r -= 0.03;
- break;
- case 'r':
- eject_r += 0.03;
- break;
- case 't':
- ridtri += 0.005;
- break;
- case 'T':
- ridtri -= 0.005;
- break;
- case 'v':
- ViewRotZ += 5.0;
- break;
- case 'V':
- ViewRotZ -= 5.0;
- break;
- case 'w':
- WireFrame = !WireFrame;
- break;
- case 'q':
- if (++texType > 16)
- texType = 0;
- regen_texImage();
- break;
- case 'n':
- NiceFog = !NiceFog;
- printf("NiceFog %d\n", NiceFog);
- break;
- }
- glutPostRedisplay();
-}
-
-static void
-inittextures(void)
-{
- GLenum gluerr;
- GLubyte tex[128][128][4];
-
- glGenTextures(1, &groundid);
- glBindTexture(GL_TEXTURE_2D, groundid);
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
- if (!LoadRGBMipmaps("../images/s128.rgb", GL_RGB)) {
- fprintf(stderr, "Error reading a texture.\n");
- exit(-1);
- }
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
-
- glGenTextures(1, &treeid);
- glBindTexture(GL_TEXTURE_2D, treeid);
-
- if (1)
- {
- int w, h;
- GLenum format;
- int x, y;
- GLubyte *image = LoadRGBImage("../images/tree3.rgb", &w, &h, &format);
-
- if (!image) {
- fprintf(stderr, "Error reading a texture.\n");
- exit(-1);
- }
-
- for (y = 0; y < 128; y++)
- for (x = 0; x < 128; x++) {
- tex[x][y][0] = image[(y + x * 128) * 3];
- tex[x][y][1] = image[(y + x * 128) * 3 + 1];
- tex[x][y][2] = image[(y + x * 128) * 3 + 2];
- if ((tex[x][y][0] == tex[x][y][1]) &&
- (tex[x][y][1] == tex[x][y][2]) && (tex[x][y][2] == 255))
- tex[x][y][3] = 0;
- else
- tex[x][y][3] = 255;
- }
-
- if ((gluerr = gluBuild2DMipmaps(GL_TEXTURE_2D, 4, 128, 128, GL_RGBA,
- GL_UNSIGNED_BYTE, (GLvoid *) (tex)))) {
- fprintf(stderr, "GLULib%s\n", (char *) gluErrorString(gluerr));
- exit(-1);
- }
- }
- else {
- if (!LoadRGBMipmaps("../images/tree2.rgba", GL_RGBA)) {
- fprintf(stderr, "Error reading a texture.\n");
- exit(-1);
- }
- }
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-}
-
-static void
-inittree(void)
-{
- int i;
- float dist;
-
- for (i = 0; i < NUMTREE; i++)
- do {
- treepos[i][0] = vrnd() * TREEOUTR * 2.0 - TREEOUTR;
- treepos[i][1] = 0.0;
- treepos[i][2] = vrnd() * TREEOUTR * 2.0 - TREEOUTR;
- dist =
- sqrt(treepos[i][0] * treepos[i][0] +
- treepos[i][2] * treepos[i][2]);
- } while ((dist < TREEINR) || (dist > TREEOUTR));
-}
-
-static int
-init_fire(int ac, char *av[])
-{
- int i;
-
- np = 800;
- eject_r = -0.65;
- dt = 0.015;
- eject_vy = 4;
- eject_vl = 1;
- shadows = 1;
- ridtri = 0.25;
-
- maxage = 1.0 / dt;
-
- if (ac == 2)
- np = atoi(av[1]);
-
-
- inittextures();
-
- p = (part *) malloc(sizeof(part) * np);
-
- for (i = 0; i < np; i++)
- setnewpart(&p[i]);
-
- inittree();
-
- return (0);
-}
-
-
-
-
-
-
-static void
-DrawCube(void)
-{
- static const GLfloat texcoords[4][2] = {
- { 0, 0 }, { 1, 0 }, { 1, 1 }, { 0, 1 }
- };
- static const GLfloat vertices[4][2] = {
- { -1, -1 }, { 1, -1 }, { 1, 1 }, { -1, 1 }
- };
- static const GLfloat xforms[6][4] = {
- { 0, 0, 1, 0 },
- { 90, 0, 1, 0 },
- { 180, 0, 1, 0 },
- { 270, 0, 1, 0 },
- { 90, 1, 0, 0 },
- { -90, 1, 0, 0 }
- };
- static const GLfloat mat[4] = { 1.0, 1.0, 0.5, 1.0 };
- GLint i, j;
-
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat);
- glEnable(GL_TEXTURE_2D);
-
- glPushMatrix();
- glRotatef(ViewRotX, 1.0, 0.0, 0.0);
- glRotatef(15, 1, 0, 0);
- glRotatef(CubeRot, 0, 1, 0);
- glScalef(4, 4, 4);
-
- for (i = 0; i < 6; i++) {
- glPushMatrix();
- glRotatef(xforms[i][0], xforms[i][1], xforms[i][2], xforms[i][3]);
- glTranslatef(0, 0, 1.1);
- glBegin(GL_POLYGON);
- glNormal3f(0, 0, 1);
- for (j = 0; j < 4; j++) {
- glTexCoord2fv(texcoords[j]);
- glVertex2fv(vertices[j]);
- }
- glEnd();
- glPopMatrix();
- }
- glPopMatrix();
-
- glDisable(GL_TEXTURE_2D);
-}
-
-
-static void
-draw(void)
-{
- float ar;
- static GLfloat pos[4] = {5.0, 5.0, 10.0, 0.0};
-
- drawfire();
-
- glLightfv(GL_LIGHT0, GL_POSITION, pos);
- glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL,
- GL_SEPARATE_SPECULAR_COLOR);
-
- glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT0);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_NORMALIZE);
- glDisable(GL_BLEND);
- glDisable(GL_FOG);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.0, 0.0, -40.0);
-
- glClear(GL_DEPTH_BUFFER_BIT);
-
- /* draw textured cube */
-
- glViewport(0, 0, WinWidth, WinHeight);
- glClearColor(0.5, 0.5, 0.8, 0.0);
- glClear(GL_COLOR_BUFFER_BIT);
-
- ar = (float) (WinWidth) / WinHeight;
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-ar, ar, -1.0, 1.0, 5.0, 60.0);
- glMatrixMode(GL_MODELVIEW);
- glBindTexture(GL_TEXTURE_2D, TexObj);
-
- DrawCube();
-
- /* finish up */
- glutSwapBuffers();
-}
-
-
-static void
-idle(void)
-{
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
-
- CubeRot = fmod(CubeRot + 15.0 * dt, 360.0); /* 15 deg/sec */
-
- glutPostRedisplay();
-}
-
-
-/* change view angle */
-static void
-special(int k, int x, int y)
-{
- (void) x;
- (void) y;
- switch (k) {
- case GLUT_KEY_UP:
- ViewRotX += 5.0;
- break;
- case GLUT_KEY_DOWN:
- ViewRotX -= 5.0;
- break;
- case GLUT_KEY_LEFT:
- ViewRotY += 5.0;
- break;
- case GLUT_KEY_RIGHT:
- ViewRotY -= 5.0;
- break;
- default:
- return;
- }
- glutPostRedisplay();
-}
-
-
-/* new window size or exposure */
-static void
-reshape(int width, int height)
-{
- WinWidth = width;
- WinHeight = height;
-}
-
-
-static void
-init_fbotexture()
-{
- static const GLenum depthFormats[] = {
- GL_DEPTH_COMPONENT,
- GL_DEPTH_COMPONENT16,
- GL_DEPTH_COMPONENT32
- };
- static int numDepthFormats = sizeof(depthFormats) / sizeof(depthFormats[0]);
- GLint i;
- GLenum stat;
-
- /* gen framebuffer id, delete it, do some assertions, just for testing */
- glGenFramebuffersEXT(1, &MyFB);
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, MyFB);
- glGetIntegerv(GL_FRAMEBUFFER_BINDING_EXT, &i);
-
- /* Make texture object/image */
- glGenTextures(1, &TexObj);
- glBindTexture(GL_TEXTURE_2D, TexObj);
- /* make one image level. */
- glTexImage2D(GL_TEXTURE_2D, 0, TEXINTFORMAT, TexWidth, TexHeight, 0,
- texFormats[texType], texTypes[texType], NULL);
-
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
-
- CheckError(__LINE__);
-
- /* Render color to texture */
- glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
- GL_TEXTURE_2D, TexObj, 0);
- CheckError(__LINE__);
-
-
- /* make depth renderbuffer */
- glGenRenderbuffersEXT(1, &DepthRB);
- glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, DepthRB);
- /* we may have to try several formats */
- for (i = 0; i < numDepthFormats; i++) {
- glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, depthFormats[i],
- TexWidth, TexHeight);
- CheckError(__LINE__);
-
- glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
- GL_RENDERBUFFER_EXT, DepthRB);
- CheckError(__LINE__);
- stat = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
- if (stat == GL_FRAMEBUFFER_COMPLETE_EXT) {
- break;
- }
- }
-
- if (stat != GL_FRAMEBUFFER_COMPLETE_EXT) {
- fprintf(stderr, "Error: unable to get usable FBO combination!\n");
- exit(1);
- }
-
- glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT,
- GL_RENDERBUFFER_DEPTH_SIZE_EXT, &i);
- CheckError(__LINE__);
- printf("Depth renderbuffer size = %d bits\n", i);
-
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
-
- /*
- * Check for completeness.
- */
-
-}
-
-
-static void
-init(int argc, char *argv[])
-{
- GLint i;
-
- if (!glutExtensionSupported("GL_EXT_framebuffer_object")) {
- fprintf(stderr, "Sorry, GL_EXT_framebuffer_object is required!\n");
- exit(1);
- }
-
- TexWidth = 512;
- TexHeight = 512;
-
- init_fbotexture();
- init_fire(argc, argv);
-
-
- for ( i=1; i<argc; i++ ) {
- if (strcmp(argv[i], "-info")==0) {
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
- printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
- printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR));
- printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS));
- }
- }
-}
-
-
-static void
-visible(int vis)
-{
- if (vis == GLUT_VISIBLE)
- glutIdleFunc(Anim ? idle : NULL);
- else
- glutIdleFunc(NULL);
-}
-
-
-int
-main(int argc, char *argv[])
-{
- glutInitWindowSize(WinWidth, WinHeight);
- glutInit(&argc, argv);
-
- glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
-
- Win = glutCreateWindow("fbo_firecube");
- glewInit();
- init(argc, argv);
-
- glutDisplayFunc(draw);
- glutReshapeFunc(reshape);
- glutKeyboardFunc(key);
- glutSpecialFunc(special);
- glutVisibilityFunc(visible);
-
- glutMainLoop();
- return 0; /* ANSI C requires main to return int. */
-}
diff --git a/progs/demos/fbotexture.c b/progs/demos/fbotexture.c
deleted file mode 100644
index 46bf1c5f6a..0000000000
--- a/progs/demos/fbotexture.c
+++ /dev/null
@@ -1,672 +0,0 @@
-/*
- * Test GL_EXT_framebuffer_object render-to-texture
- *
- * Draw a teapot into a texture image with stenciling.
- * Then draw a textured quad using that texture.
- *
- * Brian Paul
- * 18 Apr 2005
- */
-
-
-#include <GL/glut.h>
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "extfuncs.h"
-
-/* For debug */
-#define DEPTH 1
-#define STENCIL 1
-#define DRAW 1
-
-
-static int Win = 0;
-static int Width = 400, Height = 400;
-
-#if 1
-static GLenum TexTarget = GL_TEXTURE_2D;
-static int TexWidth = 512, TexHeight = 512;
-static GLenum TexIntFormat = GL_RGB; /* either GL_RGB or GL_RGBA */
-#else
-static GLenum TexTarget = GL_TEXTURE_RECTANGLE_ARB;
-static int TexWidth = 200, TexHeight = 200;
-static GLenum TexIntFormat = GL_RGB5; /* either GL_RGB or GL_RGBA */
-#endif
-static GLuint TextureLevel = 0; /* which texture level to render to */
-
-static GLuint MyFB;
-static GLuint TexObj;
-static GLuint DepthRB = 0, StencilRB = 0;
-static GLboolean Anim = GL_FALSE;
-static GLfloat Rot = 0.0;
-static GLboolean UsePackedDepthStencil = GL_FALSE;
-static GLboolean UsePackedDepthStencilBoth = GL_FALSE;
-static GLboolean Use_ARB_fbo = GL_FALSE;
-static GLboolean Cull = GL_FALSE;
-static GLboolean Wireframe = GL_FALSE;
-
-
-static void
-CheckError(int line)
-{
- GLenum err = glGetError();
- if (err) {
- printf("GL Error 0x%x at line %d\n", (int) err, line);
- }
-}
-
-
-static void
-Idle(void)
-{
- Rot = glutGet(GLUT_ELAPSED_TIME) * 0.1;
- glutPostRedisplay();
-}
-
-
-static void
-RenderTexture(void)
-{
- GLenum status;
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.0, 0.0, -15.0);
-
- /* draw to texture image */
- glBindFramebuffer_func(GL_FRAMEBUFFER_EXT, MyFB);
-
- status = glCheckFramebufferStatus_func(GL_FRAMEBUFFER_EXT);
- if (status != GL_FRAMEBUFFER_COMPLETE_EXT) {
- printf("Framebuffer incomplete!!!\n");
- }
-
- glViewport(0, 0, TexWidth, TexHeight);
-
- glClearColor(0.5, 0.5, 1.0, 0.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
- CheckError(__LINE__);
-
-#if DEPTH
- glEnable(GL_DEPTH_TEST);
-#endif
-
-#if STENCIL
- glEnable(GL_STENCIL_TEST);
- glStencilFunc(GL_NEVER, 1, ~0);
- glStencilOp(GL_REPLACE, GL_KEEP, GL_REPLACE);
-#endif
-
- CheckError(__LINE__);
-
-#if DEPTH || STENCIL
- /* draw diamond-shaped stencil pattern */
- glColor3f(0, 1, 0);
- glBegin(GL_POLYGON);
- glVertex2f(-0.2, 0.0);
- glVertex2f( 0.0, -0.2);
- glVertex2f( 0.2, 0.0);
- glVertex2f( 0.0, 0.2);
- glEnd();
-#endif
-
- /* draw teapot where stencil != 1 */
-#if STENCIL
- glStencilFunc(GL_NOTEQUAL, 1, ~0);
- glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
-#endif
-
- CheckError(__LINE__);
-
- if (Wireframe) {
- glPolygonMode(GL_FRONT, GL_LINE);
- }
- else {
- glPolygonMode(GL_FRONT, GL_FILL);
- }
-
- if (Cull) {
- /* cull back */
- glCullFace(GL_BACK);
- glEnable(GL_CULL_FACE);
- }
- else {
- glDisable(GL_CULL_FACE);
- }
-
-#if 0
- glBegin(GL_POLYGON);
- glColor3f(1, 0, 0);
- glVertex2f(-1, -1);
- glColor3f(0, 1, 0);
- glVertex2f(1, -1);
- glColor3f(0, 0, 1);
- glVertex2f(0, 1);
- glEnd();
-#else
- glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT0);
- glPushMatrix();
- glRotatef(0.5 * Rot, 1.0, 0.0, 0.0);
- glFrontFace(GL_CW); /* Teapot patches backward */
- glutSolidTeapot(0.5);
- glFrontFace(GL_CCW);
- glPopMatrix();
- glDisable(GL_LIGHTING);
- /*
- PrintStencilHistogram(TexWidth, TexHeight);
- */
-#endif
-
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_STENCIL_TEST);
- glDisable(GL_CULL_FACE);
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
-
-#if DRAW
- /* Bind normal framebuffer */
- glBindFramebuffer_func(GL_FRAMEBUFFER_EXT, 0);
-#endif
-
- CheckError(__LINE__);
-}
-
-
-
-static void
-Display(void)
-{
- float ar = (float) Width / (float) Height;
-
- RenderTexture();
-
- /* draw textured quad in the window */
-#if DRAW
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-ar, ar, -1.0, 1.0, 5.0, 25.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.0, 0.0, -7.0);
-
- glViewport(0, 0, Width, Height);
-
- glClearColor(0.25, 0.25, 0.25, 0);
- glClear(GL_COLOR_BUFFER_BIT);
-
- glPushMatrix();
- glRotatef(Rot, 0, 1, 0);
- glEnable(TexTarget);
- glBindTexture(TexTarget, TexObj);
- glBegin(GL_POLYGON);
- glColor3f(0.25, 0.25, 0.25);
- if (TexTarget == GL_TEXTURE_2D) {
- glTexCoord2f(0, 0);
- glVertex2f(-1, -1);
- glTexCoord2f(1, 0);
- glVertex2f(1, -1);
- glColor3f(1.0, 1.0, 1.0);
- glTexCoord2f(1, 1);
- glVertex2f(1, 1);
- glTexCoord2f(0, 1);
- glVertex2f(-1, 1);
- }
- else {
- assert(TexTarget == GL_TEXTURE_RECTANGLE_ARB);
- glTexCoord2f(0, 0);
- glVertex2f(-1, -1);
- glTexCoord2f(TexWidth, 0);
- glVertex2f(1, -1);
- glColor3f(1.0, 1.0, 1.0);
- glTexCoord2f(TexWidth, TexHeight);
- glVertex2f(1, 1);
- glTexCoord2f(0, TexHeight);
- glVertex2f(-1, 1);
- }
- glEnd();
- glPopMatrix();
- glDisable(TexTarget);
-#endif
-
- glutSwapBuffers();
- CheckError(__LINE__);
-}
-
-
-static void
-Reshape(int width, int height)
-{
- glViewport(0, 0, width, height);
- Width = width;
- Height = height;
-}
-
-
-static void
-CleanUp(void)
-{
-#if DEPTH
- glDeleteRenderbuffers_func(1, &DepthRB);
-#endif
-#if STENCIL
- glDeleteRenderbuffers_func(1, &StencilRB);
-#endif
- glDeleteFramebuffers_func(1, &MyFB);
-
- glDeleteTextures(1, &TexObj);
-
- glutDestroyWindow(Win);
-
- exit(0);
-}
-
-
-static void
-Key(unsigned char key, int x, int y)
-{
- (void) x;
- (void) y;
- switch (key) {
- case 'a':
- Anim = !Anim;
- if (Anim)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- break;
- case 'c':
- Cull = !Cull;
- break;
- case 'w':
- Wireframe = !Wireframe;
- break;
- case 's':
- Rot += 2.0;
- break;
- case 'S':
- Rot -= 2.0;
- break;
- case 27:
- CleanUp();
- break;
- }
- glutPostRedisplay();
-}
-
-
-/**
- * Attach depth and stencil renderbuffer(s) to the given framebuffer object.
- * \param tryDepthStencil if true, try to use a combined depth+stencil buffer
- * \param bindDepthStencil if true, and tryDepthStencil is true, bind with
- * the GL_DEPTH_STENCIL_ATTACHMENT target.
- * \return GL_TRUE for success, GL_FALSE for failure
- */
-static GLboolean
-AttachDepthAndStencilBuffers(GLuint fbo,
- GLsizei width, GLsizei height,
- GLboolean tryDepthStencil,
- GLboolean bindDepthStencil,
- GLuint *depthRbOut, GLuint *stencilRbOut)
-{
- GLenum status;
-
- *depthRbOut = *stencilRbOut = 0;
-
- glBindFramebuffer_func(GL_FRAMEBUFFER_EXT, fbo);
-
- if (tryDepthStencil) {
- GLuint rb;
-
- glGenRenderbuffers_func(1, &rb);
- glBindRenderbuffer_func(GL_RENDERBUFFER_EXT, rb);
- glRenderbufferStorage_func(GL_RENDERBUFFER_EXT,
- GL_DEPTH24_STENCIL8_EXT,
- width, height);
- if (glGetError())
- return GL_FALSE;
-
- if (bindDepthStencil) {
- /* attach to both depth and stencil at once */
- glFramebufferRenderbuffer_func(GL_FRAMEBUFFER_EXT,
- GL_DEPTH_STENCIL_ATTACHMENT,
- GL_RENDERBUFFER_EXT, rb);
- if (glGetError())
- return GL_FALSE;
- }
- else {
- /* attach to depth attachment point */
- glFramebufferRenderbuffer_func(GL_FRAMEBUFFER_EXT,
- GL_DEPTH_ATTACHMENT_EXT,
- GL_RENDERBUFFER_EXT, rb);
- if (glGetError())
- return GL_FALSE;
-
- /* and attach to stencil attachment point */
- glFramebufferRenderbuffer_func(GL_FRAMEBUFFER_EXT,
- GL_STENCIL_ATTACHMENT_EXT,
- GL_RENDERBUFFER_EXT, rb);
- if (glGetError())
- return GL_FALSE;
- }
-
- status = glCheckFramebufferStatus_func(GL_FRAMEBUFFER_EXT);
- if (status != GL_FRAMEBUFFER_COMPLETE_EXT)
- return GL_FALSE;
-
- *depthRbOut = *stencilRbOut = rb;
- return GL_TRUE;
- }
-
- /* just depth renderbuffer */
- {
- GLuint rb;
-
- glGenRenderbuffers_func(1, &rb);
- glBindRenderbuffer_func(GL_RENDERBUFFER_EXT, rb);
- glRenderbufferStorage_func(GL_RENDERBUFFER_EXT,
- GL_DEPTH_COMPONENT,
- width, height);
- if (glGetError())
- return GL_FALSE;
-
- /* attach to depth attachment point */
- glFramebufferRenderbuffer_func(GL_FRAMEBUFFER_EXT,
- GL_DEPTH_ATTACHMENT_EXT,
- GL_RENDERBUFFER_EXT, rb);
- if (glGetError())
- return GL_FALSE;
-
- status = glCheckFramebufferStatus_func(GL_FRAMEBUFFER_EXT);
- if (status != GL_FRAMEBUFFER_COMPLETE_EXT)
- return GL_FALSE;
-
- *depthRbOut = rb;
- }
-
- /* just stencil renderbuffer */
- {
- GLuint rb;
-
- glGenRenderbuffers_func(1, &rb);
- glBindRenderbuffer_func(GL_RENDERBUFFER_EXT, rb);
- glRenderbufferStorage_func(GL_RENDERBUFFER_EXT,
- GL_STENCIL_INDEX,
- width, height);
- if (glGetError())
- return GL_FALSE;
-
- /* attach to depth attachment point */
- glFramebufferRenderbuffer_func(GL_FRAMEBUFFER_EXT,
- GL_STENCIL_ATTACHMENT_EXT,
- GL_RENDERBUFFER_EXT, rb);
- if (glGetError())
- return GL_FALSE;
-
- status = glCheckFramebufferStatus_func(GL_FRAMEBUFFER_EXT);
- if (status != GL_FRAMEBUFFER_COMPLETE_EXT) {
- glDeleteRenderbuffers_func(1, depthRbOut);
- *depthRbOut = 0;
- glDeleteRenderbuffers_func(1, &rb);
- return GL_FALSE;
- }
-
- *stencilRbOut = rb;
- }
-
- return GL_TRUE;
-}
-
-
-static void
-ParseArgs(int argc, char *argv[])
-{
- GLint i;
- for (i = 1; i < argc; i++) {
- if (strcmp(argv[i], "-ds") == 0) {
- if (!glutExtensionSupported("GL_EXT_packed_depth_stencil")) {
- printf("GL_EXT_packed_depth_stencil not found!\n");
- exit(0);
- }
- UsePackedDepthStencil = GL_TRUE;
- printf("Using GL_EXT_packed_depth_stencil\n");
- }
- else if (strcmp(argv[i], "-ds2") == 0) {
- if (!glutExtensionSupported("GL_EXT_packed_depth_stencil")) {
- printf("GL_EXT_packed_depth_stencil not found!\n");
- exit(0);
- }
- if (!glutExtensionSupported("GL_ARB_framebuffer_object")) {
- printf("GL_ARB_framebuffer_object not found!\n");
- exit(0);
- }
- UsePackedDepthStencilBoth = GL_TRUE;
- printf("Using GL_EXT_packed_depth_stencil and GL_DEPTH_STENCIL attachment point\n");
- }
- else if (strcmp(argv[i], "-arb") == 0) {
- if (!glutExtensionSupported("GL_ARB_framebuffer_object")) {
- printf("Sorry, GL_ARB_framebuffer object not supported!\n");
- }
- else {
- Use_ARB_fbo = GL_TRUE;
- }
- }
- else {
- printf("Unknown option: %s\n", argv[i]);
- }
- }
-}
-
-
-static void
-SetupFunctionPointers(void)
-{
- GetExtensionFuncs();
-
- if (Use_ARB_fbo) {
- /* no-op: use the ARB functions as-is */
- }
- else {
- /* set the ARB-flavor function pointers to point to the EXT functions */
- glIsRenderbuffer_func = glIsRenderbufferEXT_func;
- glBindRenderbuffer_func = glBindRenderbufferEXT_func;
- glDeleteRenderbuffers_func = glDeleteRenderbuffersEXT_func;
- glGenRenderbuffers_func = glGenRenderbuffersEXT_func;
- glRenderbufferStorage_func = glRenderbufferStorageEXT_func;
- glGetRenderbufferParameteriv_func = glGetRenderbufferParameterivEXT_func;
- glIsFramebuffer_func = glIsFramebufferEXT_func;
- glBindFramebuffer_func = glBindFramebufferEXT_func;
- glDeleteFramebuffers_func = glDeleteFramebuffersEXT_func;
- glGenFramebuffers_func = glGenFramebuffersEXT_func;
- glCheckFramebufferStatus_func = glCheckFramebufferStatusEXT_func;
- glFramebufferTexture1D_func = glFramebufferTexture1DEXT_func;
- glFramebufferTexture2D_func = glFramebufferTexture2DEXT_func;
- glFramebufferTexture3D_func = glFramebufferTexture3DEXT_func;
- glFramebufferRenderbuffer_func = glFramebufferRenderbufferEXT_func;
- glGetFramebufferAttachmentParameteriv_func = glGetFramebufferAttachmentParameterivEXT_func;
- glGenerateMipmap_func = glGenerateMipmapEXT_func;
- }
-}
-
-
-/*
- * Make FBO to render into given texture.
- */
-static GLuint
-MakeFBO_RenderTexture(GLuint texObj)
-{
- GLuint fb;
- GLint sizeFudge = 0;
-
- glGenFramebuffers_func(1, &fb);
- glBindFramebuffer_func(GL_FRAMEBUFFER_EXT, fb);
- /* Render color to texture */
- glFramebufferTexture2D_func(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
- TexTarget, texObj, TextureLevel);
-
- if (Use_ARB_fbo) {
- /* use a smaller depth buffer to see what happens */
- sizeFudge = 90;
- }
-
- /* Setup depth and stencil buffers */
- {
- GLboolean b;
- b = AttachDepthAndStencilBuffers(fb,
- TexWidth - sizeFudge,
- TexHeight - sizeFudge,
- UsePackedDepthStencil,
- UsePackedDepthStencilBoth,
- &DepthRB, &StencilRB);
- if (!b) {
- /* try !UsePackedDepthStencil */
- b = AttachDepthAndStencilBuffers(fb,
- TexWidth - sizeFudge,
- TexHeight - sizeFudge,
- !UsePackedDepthStencil,
- UsePackedDepthStencilBoth,
- &DepthRB, &StencilRB);
- }
- if (!b) {
- printf("Unable to create/attach depth and stencil renderbuffers "
- " to FBO!\n");
- exit(1);
- }
- }
-
- /* queries */
- {
- GLint bits, w, h, name;
-
- glBindRenderbuffer_func(GL_RENDERBUFFER_EXT, DepthRB);
- glGetRenderbufferParameteriv_func(GL_RENDERBUFFER_EXT,
- GL_RENDERBUFFER_WIDTH_EXT, &w);
- glGetRenderbufferParameteriv_func(GL_RENDERBUFFER_EXT,
- GL_RENDERBUFFER_HEIGHT_EXT, &h);
- printf("Color/Texture size: %d x %d\n", TexWidth, TexHeight);
- printf("Depth buffer size: %d x %d\n", w, h);
-
- glGetRenderbufferParameteriv_func(GL_RENDERBUFFER_EXT,
- GL_RENDERBUFFER_DEPTH_SIZE_EXT, &bits);
- printf("Depth renderbuffer size = %d bits\n", bits);
-
- glBindRenderbuffer_func(GL_RENDERBUFFER_EXT, StencilRB);
- glGetRenderbufferParameteriv_func(GL_RENDERBUFFER_EXT,
- GL_RENDERBUFFER_STENCIL_SIZE_EXT, &bits);
- printf("Stencil renderbuffer size = %d bits\n", bits);
-
- glGetFramebufferAttachmentParameteriv_func(GL_FRAMEBUFFER_EXT,
- GL_COLOR_ATTACHMENT0,
- GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT,
- &name);
- printf("Render to texture name: %d\n", texObj);
- printf("Color attachment[0] name: %d\n", name);
- assert(texObj == name);
-
- glGetFramebufferAttachmentParameteriv_func(GL_FRAMEBUFFER_EXT,
- GL_STENCIL_ATTACHMENT,
- GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT,
- &name);
- printf("Stencil attachment name: %d\n", name);
-
- glGetFramebufferAttachmentParameteriv_func(GL_FRAMEBUFFER_EXT,
- GL_DEPTH_ATTACHMENT,
- GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT,
- &name);
- printf("Depth attachment name: %d\n", name);
-
- }
- /* bind the regular framebuffer */
- glBindFramebuffer_func(GL_FRAMEBUFFER_EXT, 0);
-
- return fb;
-}
-
-
-static void
-Init(void)
-{
- if (!glutExtensionSupported("GL_EXT_framebuffer_object")) {
- printf("GL_EXT_framebuffer_object not found!\n");
- exit(0);
- }
-
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
-
- SetupFunctionPointers();
-
- /* lighting */
- {
- static const GLfloat mat[4] = { 1.0, 0.5, 0.5, 1.0 };
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat);
- }
-
- /*
- * Make texture object/image (we'll render into this texture)
- */
- {
- glGenTextures(1, &TexObj);
- glBindTexture(TexTarget, TexObj);
-
- /* make two image levels */
- glTexImage2D(TexTarget, 0, TexIntFormat, TexWidth, TexHeight, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- if (TexTarget == GL_TEXTURE_2D) {
- glTexImage2D(TexTarget, 1, TexIntFormat, TexWidth/2, TexHeight/2, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- TexWidth = TexWidth >> TextureLevel;
- TexHeight = TexHeight >> TextureLevel;
- glTexParameteri(TexTarget, GL_TEXTURE_MAX_LEVEL, TextureLevel);
- }
-
- glTexParameteri(TexTarget, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(TexTarget, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameteri(TexTarget, GL_TEXTURE_BASE_LEVEL, TextureLevel);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
- }
-
- MyFB = MakeFBO_RenderTexture(TexObj);
-}
-
-
-static void
-Usage(void)
-{
- printf("Usage:\n");
- printf(" -ds Use combined depth/stencil renderbuffer\n");
- printf(" -arb Try GL_ARB_framebuffer_object's mismatched buffer sizes\n");
- printf(" -ds2 Try GL_ARB_framebuffer_object's GL_DEPTH_STENCIL_ATTACHMENT\n");
- printf("Keys:\n");
- printf(" a Toggle animation\n");
- printf(" s/s Step/rotate\n");
- printf(" c Toggle back-face culling\n");
- printf(" w Toggle wireframe mode (front-face only)\n");
- printf(" Esc Exit\n");
-}
-
-
-int
-main(int argc, char *argv[])
-{
- glutInit(&argc, argv);
- glutInitWindowPosition(0, 0);
- glutInitWindowSize(Width, Height);
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
- Win = glutCreateWindow(argv[0]);
- glutReshapeFunc(Reshape);
- glutKeyboardFunc(Key);
- glutDisplayFunc(Display);
- if (Anim)
- glutIdleFunc(Idle);
-
- ParseArgs(argc, argv);
- Init();
- Usage();
-
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/fire.c b/progs/demos/fire.c
deleted file mode 100644
index bb912fb447..0000000000
--- a/progs/demos/fire.c
+++ /dev/null
@@ -1,784 +0,0 @@
-/*
- * This program is under the GNU GPL.
- * Use at your own risk.
- *
- * written by David Bucciarelli (tech.hmw@plus.it)
- * Humanware s.r.l.
- */
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <time.h>
-#include <string.h>
-
-#ifdef WIN32
-#include <windows.h>
-#include <mmsystem.h>
-#endif
-
-#include <GL/glut.h>
-#include "readtex.h"
-
-#ifdef XMESA
-#include "GL/xmesa.h"
-static int fullscreen = 1;
-#endif
-
-#ifndef M_PI
-#define M_PI 3.1415926535
-#endif
-
-#define vinit(a,i,j,k) {\
- (a)[0]=i;\
- (a)[1]=j;\
- (a)[2]=k;\
-}
-
-#define vinit4(a,i,j,k,w) {\
- (a)[0]=i;\
- (a)[1]=j;\
- (a)[2]=k;\
- (a)[3]=w;\
-}
-
-
-#define vadds(a,dt,b) {\
- (a)[0]+=(dt)*(b)[0];\
- (a)[1]+=(dt)*(b)[1];\
- (a)[2]+=(dt)*(b)[2];\
-}
-
-#define vequ(a,b) {\
- (a)[0]=(b)[0];\
- (a)[1]=(b)[1];\
- (a)[2]=(b)[2];\
-}
-
-#define vinter(a,dt,b,c) {\
- (a)[0]=(dt)*(b)[0]+(1.0-dt)*(c)[0];\
- (a)[1]=(dt)*(b)[1]+(1.0-dt)*(c)[1];\
- (a)[2]=(dt)*(b)[2]+(1.0-dt)*(c)[2];\
-}
-
-#define clamp(a) ((a) < 0.0 ? 0.0 : ((a) < 1.0 ? (a) : 1.0))
-
-#define vclamp(v) {\
- (v)[0]=clamp((v)[0]);\
- (v)[1]=clamp((v)[1]);\
- (v)[2]=clamp((v)[2]);\
-}
-
-static int WIDTH = 640;
-static int HEIGHT = 480;
-
-static GLint T0 = 0;
-static GLint Frames = 0;
-static GLint NiceFog = 1;
-
-#define DIMP 20.0
-#define DIMTP 16.0
-
-#define RIDCOL 0.4
-
-#define NUMTREE 50
-#define TREEINR 2.5
-#define TREEOUTR 8.0
-
-#define AGRAV -9.8
-
-typedef struct
-{
- int age;
- float p[3][3];
- float v[3];
- float c[3][4];
-}
-part;
-
-static float treepos[NUMTREE][3];
-
-static float black[3] = { 0.0, 0.0, 0.0 };
-static float blu[3] = { 1.0, 0.2, 0.0 };
-static float blu2[3] = { 1.0, 1.0, 0.0 };
-
-static float fogcolor[4] = { 1.0, 1.0, 1.0, 1.0 };
-
-static float q[4][3] = {
- {-DIMP, 0.0, -DIMP},
- {DIMP, 0.0, -DIMP},
- {DIMP, 0.0, DIMP},
- {-DIMP, 0.0, DIMP}
-};
-
-static float qt[4][2] = {
- {-DIMTP, -DIMTP},
- {DIMTP, -DIMTP},
- {DIMTP, DIMTP},
- {-DIMTP, DIMTP}
-};
-
-static int win = 0;
-
-static int np;
-static float eject_r, dt, maxage, eject_vy, eject_vl;
-static short shadows;
-static float ridtri;
-static int fog = 1;
-static int help = 1;
-static int joyavailable = 0;
-static int joyactive = 0;
-
-static part *p;
-
-static GLuint groundid;
-static GLuint treeid;
-
-static float obs[3] = { 2.0, 1.0, 0.0 };
-static float dir[3];
-static float v = 0.0;
-static float alpha = -84.0;
-static float beta = 90.0;
-
-static float
-vrnd(void)
-{
- return (((float) rand()) / RAND_MAX);
-}
-
-static void
-setnewpart(part * p)
-{
- float a, v[3], *c;
-
- p->age = 0;
-
- a = vrnd() * 3.14159265359 * 2.0;
-
- vinit(v, sin(a) * eject_r * vrnd(), 0.15, cos(a) * eject_r * vrnd());
- vinit(p->p[0], v[0] + vrnd() * ridtri, v[1] + vrnd() * ridtri,
- v[2] + vrnd() * ridtri);
- vinit(p->p[1], v[0] + vrnd() * ridtri, v[1] + vrnd() * ridtri,
- v[2] + vrnd() * ridtri);
- vinit(p->p[2], v[0] + vrnd() * ridtri, v[1] + vrnd() * ridtri,
- v[2] + vrnd() * ridtri);
-
- vinit(p->v, v[0] * eject_vl / (eject_r / 2),
- vrnd() * eject_vy + eject_vy / 2, v[2] * eject_vl / (eject_r / 2));
-
- c = blu;
-
- vinit4(p->c[0], c[0] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
- c[1] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
- c[2] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), 1.0);
- vinit4(p->c[1], c[0] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
- c[1] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
- c[2] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), 1.0);
- vinit4(p->c[2], c[0] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
- c[1] * ((1.0 - RIDCOL) + vrnd() * RIDCOL),
- c[2] * ((1.0 - RIDCOL) + vrnd() * RIDCOL), 1.0);
-}
-
-static void
-setpart(part * p)
-{
- float fact;
-
- if (p->p[0][1] < 0.1) {
- setnewpart(p);
- return;
- }
-
- p->v[1] += AGRAV * dt;
-
- vadds(p->p[0], dt, p->v);
- vadds(p->p[1], dt, p->v);
- vadds(p->p[2], dt, p->v);
-
- p->age++;
-
- if ((p->age) > maxage) {
- vequ(p->c[0], blu2);
- vequ(p->c[1], blu2);
- vequ(p->c[2], blu2);
- }
- else {
- fact = 1.0 / maxage;
- vadds(p->c[0], fact, blu2);
- vclamp(p->c[0]);
- p->c[0][3] = fact * (maxage - p->age);
-
- vadds(p->c[1], fact, blu2);
- vclamp(p->c[1]);
- p->c[1][3] = fact * (maxage - p->age);
-
- vadds(p->c[2], fact, blu2);
- vclamp(p->c[2]);
- p->c[2][3] = fact * (maxage - p->age);
- }
-}
-
-static void
-drawtree(float x, float y, float z)
-{
- glBegin(GL_QUADS);
- glTexCoord2f(0.0, 0.0);
- glVertex3f(x - 1.5, y + 0.0, z);
-
- glTexCoord2f(1.0, 0.0);
- glVertex3f(x + 1.5, y + 0.0, z);
-
- glTexCoord2f(1.0, 1.0);
- glVertex3f(x + 1.5, y + 3.0, z);
-
- glTexCoord2f(0.0, 1.0);
- glVertex3f(x - 1.5, y + 3.0, z);
-
-
- glTexCoord2f(0.0, 0.0);
- glVertex3f(x, y + 0.0, z - 1.5);
-
- glTexCoord2f(1.0, 0.0);
- glVertex3f(x, y + 0.0, z + 1.5);
-
- glTexCoord2f(1.0, 1.0);
- glVertex3f(x, y + 3.0, z + 1.5);
-
- glTexCoord2f(0.0, 1.0);
- glVertex3f(x, y + 3.0, z - 1.5);
-
- glEnd();
-
-}
-
-static void
-calcposobs(void)
-{
- dir[0] = sin(alpha * M_PI / 180.0);
- dir[2] = cos(alpha * M_PI / 180.0) * sin(beta * M_PI / 180.0);
- dir[1] = cos(beta * M_PI / 180.0);
-
- if (dir[0] < 1.0e-5 && dir[0] > -1.0e-5)
- dir[0] = 0;
- if (dir[1] < 1.0e-5 && dir[1] > -1.0e-5)
- dir[1] = 0;
- if (dir[2] < 1.0e-5 && dir[2] > -1.0e-5)
- dir[2] = 0;
-
- obs[0] += v * dir[0];
- obs[1] += v * dir[1];
- obs[2] += v * dir[2];
-}
-
-static void
-printstring(void *font, char *string)
-{
- int len, i;
-
- len = (int) strlen(string);
- for (i = 0; i < len; i++)
- glutBitmapCharacter(font, string[i]);
-}
-
-static void
-reshape(int width, int height)
-{
- WIDTH = width;
- HEIGHT = height;
- glViewport(0, 0, (GLint) width, (GLint) height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(70.0, width / (float) height, 0.1, 30.0);
-
- glMatrixMode(GL_MODELVIEW);
-}
-
-static void
-printhelp(void)
-{
- glColor4f(0.0, 0.0, 0.0, 0.5);
- glRecti(40, 40, 600, 440);
-
- glColor3f(1.0, 0.0, 0.0);
- glRasterPos2i(300, 420);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Help");
-
- glRasterPos2i(60, 390);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "h - Toggle Help");
-
- glRasterPos2i(60, 360);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "t - Increase particle size");
- glRasterPos2i(60, 330);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "T - Decrease particle size");
-
- glRasterPos2i(60, 300);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "r - Increase emission radius");
- glRasterPos2i(60, 270);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "R - Decrease emission radius");
-
- glRasterPos2i(60, 240);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "f - Toggle Fog");
- glRasterPos2i(60, 210);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "s - Toggle shadows");
- glRasterPos2i(60, 180);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Arrow Keys - Rotate");
- glRasterPos2i(60, 150);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "a - Increase velocity");
- glRasterPos2i(60, 120);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "z - Decrease velocity");
-
- glRasterPos2i(60, 90);
- if (joyavailable)
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,
- "j - Toggle jostick control (Joystick control available)");
- else
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,
- "(No Joystick control available)");
-}
-
-static void
-dojoy(void)
-{
-#ifdef WIN32
- static UINT max[2] = { 0, 0 };
- static UINT min[2] = { 0xffffffff, 0xffffffff }, center[2];
- MMRESULT res;
- JOYINFO joy;
-
- res = joyGetPos(JOYSTICKID1, &joy);
-
- if (res == JOYERR_NOERROR) {
- joyavailable = 1;
-
- if (max[0] < joy.wXpos)
- max[0] = joy.wXpos;
- if (min[0] > joy.wXpos)
- min[0] = joy.wXpos;
- center[0] = (max[0] + min[0]) / 2;
-
- if (max[1] < joy.wYpos)
- max[1] = joy.wYpos;
- if (min[1] > joy.wYpos)
- min[1] = joy.wYpos;
- center[1] = (max[1] + min[1]) / 2;
-
- if (joyactive) {
- if (fabs(center[0] - (float) joy.wXpos) > 0.1 * (max[0] - min[0]))
- alpha +=
- 2.5 * (center[0] - (float) joy.wXpos) / (max[0] - min[0]);
- if (fabs(center[1] - (float) joy.wYpos) > 0.1 * (max[1] - min[1]))
- beta += 2.5 * (center[1] - (float) joy.wYpos) / (max[1] - min[1]);
-
- if (joy.wButtons & JOY_BUTTON1)
- v += 0.01;
- if (joy.wButtons & JOY_BUTTON2)
- v -= 0.01;
- }
- }
- else
- joyavailable = 0;
-#endif
-}
-
-static void
-drawfire(void)
-{
- static char frbuf[80] = "";
- int j;
- static double t0 = -1.;
- double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = (t - t0) * 1.0;
- t0 = t;
-
- dojoy();
-
- if (NiceFog)
- glHint(GL_FOG_HINT, GL_NICEST);
- else
- glHint(GL_FOG_HINT, GL_DONT_CARE);
-
- glEnable(GL_DEPTH_TEST);
-
- if (fog)
- glEnable(GL_FOG);
- else
- glDisable(GL_FOG);
-
- glDepthMask(GL_TRUE);
- glClearColor(1.0, 1.0, 1.0, 1.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glPushMatrix();
- calcposobs();
- gluLookAt(obs[0], obs[1], obs[2],
- obs[0] + dir[0], obs[1] + dir[1], obs[2] + dir[2],
- 0.0, 1.0, 0.0);
-
- glColor4f(1.0, 1.0, 1.0, 1.0);
-
- glEnable(GL_TEXTURE_2D);
-
- glBindTexture(GL_TEXTURE_2D, groundid);
-#if 1
- glBegin(GL_QUADS);
- glTexCoord2fv(qt[0]);
- glVertex3fv(q[0]);
- glTexCoord2fv(qt[1]);
- glVertex3fv(q[1]);
- glTexCoord2fv(qt[2]);
- glVertex3fv(q[2]);
- glTexCoord2fv(qt[3]);
- glVertex3fv(q[3]);
- glEnd();
-#else
- /* Subdivide the ground into a bunch of quads. This improves fog
- * if GL_FOG_HINT != GL_NICEST
- */
- {
- float x, y;
- float dx = 1.0, dy = 1.0;
- glBegin(GL_QUADS);
- for (y = -DIMP; y < DIMP; y += 1.0) {
- for (x = -DIMP; x < DIMP; x += 1.0) {
- glTexCoord2f(0, 0); glVertex3f(x, 0, y);
- glTexCoord2f(1, 0); glVertex3f(x+dx, 0, y);
- glTexCoord2f(1, 1); glVertex3f(x+dx, 0, y+dy);
- glTexCoord2f(0, 1); glVertex3f(x, 0, y+dy);
- }
- }
- glEnd();
- }
-#endif
-
-
- glEnable(GL_ALPHA_TEST);
- glAlphaFunc(GL_GEQUAL, 0.9);
-
- glBindTexture(GL_TEXTURE_2D, treeid);
- for (j = 0; j < NUMTREE; j++)
- drawtree(treepos[j][0], treepos[j][1], treepos[j][2]);
-
- glDisable(GL_TEXTURE_2D);
- glDepthMask(GL_FALSE);
- glDisable(GL_ALPHA_TEST);
-
- if (shadows) {
- glBegin(GL_TRIANGLES);
- for (j = 0; j < np; j++) {
- glColor4f(black[0], black[1], black[2], p[j].c[0][3]);
- glVertex3f(p[j].p[0][0], 0.1, p[j].p[0][2]);
-
- glColor4f(black[0], black[1], black[2], p[j].c[1][3]);
- glVertex3f(p[j].p[1][0], 0.1, p[j].p[1][2]);
-
- glColor4f(black[0], black[1], black[2], p[j].c[2][3]);
- glVertex3f(p[j].p[2][0], 0.1, p[j].p[2][2]);
- }
- glEnd();
- }
-
- glBegin(GL_TRIANGLES);
- for (j = 0; j < np; j++) {
- glColor4fv(p[j].c[0]);
- glVertex3fv(p[j].p[0]);
-
- glColor4fv(p[j].c[1]);
- glVertex3fv(p[j].p[1]);
-
- glColor4fv(p[j].c[2]);
- glVertex3fv(p[j].p[2]);
-
- setpart(&p[j]);
- }
- glEnd();
-
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_ALPHA_TEST);
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_FOG);
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-0.5, 639.5, -0.5, 479.5, -1.0, 1.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- glColor3f(1.0, 0.0, 0.0);
- glRasterPos2i(10, 10);
- printstring(GLUT_BITMAP_HELVETICA_18, frbuf);
- glRasterPos2i(370, 470);
- printstring(GLUT_BITMAP_HELVETICA_10,
- "Fire V1.5 Written by David Bucciarelli (tech.hmw@plus.it)");
-
- if (help)
- printhelp();
-
- reshape(WIDTH, HEIGHT);
- glPopMatrix();
-
- glutSwapBuffers();
-
- Frames++;
- {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- if (t - T0 >= 2000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- sprintf(frbuf, "Frame rate: %f", fps);
- T0 = t;
- Frames = 0;
- }
- }
-}
-
-
-static void
-idle(void)
-{
- glutPostRedisplay();
-}
-
-
-static void
-special(int key, int x, int y)
-{
- switch (key) {
- case GLUT_KEY_LEFT:
- alpha += 2.0;
- break;
- case GLUT_KEY_RIGHT:
- alpha -= 2.0;
- break;
- case GLUT_KEY_DOWN:
- beta -= 2.0;
- break;
- case GLUT_KEY_UP:
- beta += 2.0;
- break;
- }
- glutPostRedisplay();
-}
-
-static void
-key(unsigned char key, int x, int y)
-{
- switch (key) {
- case 27:
- exit(0);
- break;
-
- case 'a':
- v += 0.0005;
- break;
- case 'z':
- v -= 0.0005;
- break;
-
- case 'j':
- joyactive = (!joyactive);
- break;
- case 'h':
- help = (!help);
- break;
- case 'f':
- fog = (!fog);
- break;
- case 's':
- shadows = !shadows;
- break;
- case 'R':
- eject_r -= 0.03;
- break;
- case 'r':
- eject_r += 0.03;
- break;
- case 't':
- ridtri += 0.005;
- break;
- case 'T':
- ridtri -= 0.005;
- break;
-#ifdef XMESA
- case ' ':
- XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW);
- fullscreen = (!fullscreen);
- break;
-#endif
- case 'n':
- NiceFog = !NiceFog;
- printf("NiceFog %d\n", NiceFog);
- break;
- }
- glutPostRedisplay();
-}
-
-static void
-inittextures(void)
-{
- GLenum gluerr;
- GLubyte tex[128][128][4];
-
- glGenTextures(1, &groundid);
- glBindTexture(GL_TEXTURE_2D, groundid);
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
- if (!LoadRGBMipmaps("../images/s128.rgb", GL_RGB)) {
- fprintf(stderr, "Error reading a texture.\n");
- exit(-1);
- }
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
-
- glGenTextures(1, &treeid);
- glBindTexture(GL_TEXTURE_2D, treeid);
-
- if (1)
- {
- int w, h;
- GLenum format;
- int x, y;
- GLubyte *image = LoadRGBImage("../images/tree3.rgb", &w, &h, &format);
-
- if (!image) {
- fprintf(stderr, "Error reading a texture.\n");
- exit(-1);
- }
-
- for (y = 0; y < 128; y++)
- for (x = 0; x < 128; x++) {
- tex[x][y][0] = image[(y + x * 128) * 3];
- tex[x][y][1] = image[(y + x * 128) * 3 + 1];
- tex[x][y][2] = image[(y + x * 128) * 3 + 2];
- if ((tex[x][y][0] == tex[x][y][1]) &&
- (tex[x][y][1] == tex[x][y][2]) && (tex[x][y][2] == 255))
- tex[x][y][3] = 0;
- else
- tex[x][y][3] = 255;
- }
-
- if ((gluerr = gluBuild2DMipmaps(GL_TEXTURE_2D, 4, 128, 128, GL_RGBA,
- GL_UNSIGNED_BYTE, (GLvoid *) (tex)))) {
- fprintf(stderr, "GLULib%s\n", (char *) gluErrorString(gluerr));
- exit(-1);
- }
- }
- else {
- if (!LoadRGBMipmaps("../images/tree2.rgba", GL_RGBA)) {
- fprintf(stderr, "Error reading a texture.\n");
- exit(-1);
- }
- }
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-}
-
-static void
-inittree(void)
-{
- int i;
- float dist;
-
- for (i = 0; i < NUMTREE; i++)
- do {
- treepos[i][0] = vrnd() * TREEOUTR * 2.0 - TREEOUTR;
- treepos[i][1] = 0.0;
- treepos[i][2] = vrnd() * TREEOUTR * 2.0 - TREEOUTR;
- dist =
- sqrt(treepos[i][0] * treepos[i][0] +
- treepos[i][2] * treepos[i][2]);
- } while ((dist < TREEINR) || (dist > TREEOUTR));
-}
-
-int
-main(int ac, char **av)
-{
- int i;
-
- fprintf(stderr,
- "Fire V1.5\nWritten by David Bucciarelli (tech.hmw@plus.it)\n");
-
- /* Default settings */
-
- np = 800;
- eject_r = -0.65;
- dt = 0.015;
- eject_vy = 4;
- eject_vl = 1;
- shadows = 1;
- ridtri = 0.25;
-
- maxage = 1.0 / dt;
-
- if (ac == 2) {
- np = atoi(av[1]);
- if (np <= 0 || np > 1000000) {
- fprintf(stderr, "Invalid input.\n");
- exit(-1);
- }
- }
-
- if (ac == 4) {
- WIDTH = atoi(av[2]);
- HEIGHT = atoi(av[3]);
- }
-
- glutInitWindowSize(WIDTH, HEIGHT);
- glutInit(&ac, av);
-
- glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
-
- if (!(win = glutCreateWindow("Fire"))) {
- fprintf(stderr, "Error opening a window.\n");
- exit(-1);
- }
-
- reshape(WIDTH, HEIGHT);
-
- inittextures();
-
- glShadeModel(GL_FLAT);
- glEnable(GL_DEPTH_TEST);
-
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- glEnable(GL_FOG);
- glFogi(GL_FOG_MODE, GL_EXP);
- glFogfv(GL_FOG_COLOR, fogcolor);
- glFogf(GL_FOG_DENSITY, 0.1);
-
- assert(np > 0);
- p = (part *) malloc(sizeof(part) * np);
- assert(p);
-
- for (i = 0; i < np; i++)
- setnewpart(&p[i]);
-
- inittree();
-
- glutKeyboardFunc(key);
- glutSpecialFunc(special);
- glutDisplayFunc(drawfire);
- glutIdleFunc(idle);
- glutReshapeFunc(reshape);
- glutMainLoop();
-
- return (0);
-}
diff --git a/progs/demos/fogcoord.c b/progs/demos/fogcoord.c
deleted file mode 100644
index 336aa58075..0000000000
--- a/progs/demos/fogcoord.c
+++ /dev/null
@@ -1,418 +0,0 @@
-/*
- * EXT_fog_coord.
- *
- * Based on glutskel.c by Brian Paul
- * and NeHe's Volumetric fog tutorial!
- *
- * Daniel Borca
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <GL/glew.h>
-#include <GL/glut.h>
-
-#define DEPTH 5.0f
-
-static GLfloat camz;
-
-static GLint fogMode;
-static GLboolean fogCoord;
-static GLfloat fogDensity = 0.75;
-static GLfloat fogStart = 1.0, fogEnd = DEPTH;
-static GLfloat fogColor[4] = {0.6f, 0.3f, 0.0f, 1.0f};
-static const char *ModeStr = NULL;
-static GLboolean Arrays = GL_FALSE;
-static GLboolean Texture = GL_TRUE;
-
-
-static void
-Reset(void)
-{
- fogMode = 1;
- fogCoord = 1;
- fogDensity = 0.75;
- fogStart = 1.0;
- fogEnd = DEPTH;
- Arrays = GL_FALSE;
- Texture = GL_TRUE;
-}
-
-
-static void
-glFogCoordf_ext (GLfloat f)
-{
- if (fogCoord)
- glFogCoordfEXT(f);
-}
-
-
-static void
-PrintString(const char *s)
-{
- while (*s) {
- glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s);
- s++;
- }
-}
-
-
-static void
-PrintInfo(void)
-{
- char s[100];
-
- glDisable(GL_FOG);
- glColor3f(0, 1, 1);
-
- sprintf(s, "Mode(m): %s Start(s/S): %g End(e/E): %g Density(d/D): %g",
- ModeStr, fogStart, fogEnd, fogDensity);
- glWindowPos2iARB(5, 20);
- PrintString(s);
-
- sprintf(s, "Arrays(a): %s glFogCoord(c): %s EyeZ(z/z): %g",
- (Arrays ? "Yes" : "No"),
- (fogCoord ? "Yes" : "No"),
- camz);
- glWindowPos2iARB(5, 5);
- PrintString(s);
-}
-
-
-static int
-SetFogMode(GLint fogMode)
-{
- fogMode &= 3;
- switch (fogMode) {
- case 0:
- ModeStr = "Off";
- glDisable(GL_FOG);
- break;
- case 1:
- ModeStr = "GL_LINEAR";
- glEnable(GL_FOG);
- glFogi(GL_FOG_MODE, GL_LINEAR);
- glFogf(GL_FOG_START, fogStart);
- glFogf(GL_FOG_END, fogEnd);
- break;
- case 2:
- ModeStr = "GL_EXP";
- glEnable(GL_FOG);
- glFogi(GL_FOG_MODE, GL_EXP);
- glFogf(GL_FOG_DENSITY, fogDensity);
- break;
- case 3:
- ModeStr = "GL_EXP2";
- glEnable(GL_FOG);
- glFogi(GL_FOG_MODE, GL_EXP2);
- glFogf(GL_FOG_DENSITY, fogDensity);
- break;
- }
- return fogMode;
-}
-
-
-static GLboolean
-SetFogCoord(GLboolean fogCoord)
-{
- if (!GLEW_EXT_fog_coord) {
- return GL_FALSE;
- }
-
- if (fogCoord) {
- glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FOG_COORDINATE_EXT);
- }
- else {
- glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT);
- }
- return fogCoord;
-}
-
-
-/* could reuse vertices */
-static GLuint vertex_index[] = {
- /* Back */
- 0, 1, 2, 3,
-
- /* Floor */
- 4, 5, 6, 7,
-
- /* Roof */
- 8, 9, 10, 11,
-
- /* Right */
- 12, 13, 14, 15,
-
- /* Left */
- 16, 17, 18, 19
-};
-
-static GLfloat vertex_pointer[][3] = {
- /* Back */
- {-1.0f,-1.0f,-DEPTH}, { 1.0f,-1.0f,-DEPTH}, { 1.0f, 1.0f,-DEPTH}, {-1.0f, 1.0f,-DEPTH},
-
- /* Floor */
- {-1.0f,-1.0f,-DEPTH}, { 1.0f,-1.0f,-DEPTH}, { 1.0f,-1.0f, 0.0}, {-1.0f,-1.0f, 0.0},
-
- /* Roof */
- {-1.0f, 1.0f,-DEPTH}, { 1.0f, 1.0f,-DEPTH}, { 1.0f, 1.0f, 0.0}, {-1.0f, 1.0f, 0.0},
-
- /* Right */
- { 1.0f,-1.0f, 0.0}, { 1.0f, 1.0f, 0.0}, { 1.0f, 1.0f,-DEPTH}, { 1.0f,-1.0f,-DEPTH},
-
- /* Left */
- {-1.0f,-1.0f, 0.0}, {-1.0f, 1.0f, 0.0}, {-1.0f, 1.0f,-DEPTH}, {-1.0f,-1.0f,-DEPTH}
-};
-
-static GLfloat texcoord_pointer[][2] = {
- /* Back */
- {0.0f, 0.0f}, {1.0f, 0.0f}, {1.0f, 1.0f}, {0.0f, 1.0f},
-
- /* Floor */
- {0.0f, 0.0f}, {1.0f, 0.0f}, {1.0f, DEPTH}, {0.0f, DEPTH},
-
- /* Roof */
- {1.0f, 0.0f}, {0.0f, 0.0f}, {0.0f, DEPTH}, {1.0f, DEPTH},
-
- /* Right */
- {0.0f, 1.0f}, {0.0f, 0.0f}, {DEPTH, 0.0f}, {DEPTH, 1.0f},
-
- /* Left */
- {0.0f, 0.0f}, {0.0f, 1.0f}, {DEPTH, 1.0f}, {DEPTH, 0.0f}
-};
-
-static GLfloat fogcoord_pointer[] = {
- /* Back */
- DEPTH, DEPTH, DEPTH, DEPTH,
-
- /* Floor */
- DEPTH, DEPTH, 0.0, 0.0,
-
- /* Roof */
- DEPTH, DEPTH, 0.0, 0.0,
-
- /* Right */
- 0.0, 0.0, DEPTH, DEPTH,
-
- /* Left */
- 0.0, 0.0, DEPTH, DEPTH
-};
-
-
-static void
-Display( void )
-{
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glLoadIdentity ();
-
- glTranslatef(0.0f, 0.0f, -camz);
-
- SetFogMode(fogMode);
-
- glColor3f(1, 1, 1);
-
- if (Texture)
- glEnable(GL_TEXTURE_2D);
-
- if (Arrays) {
- glEnableClientState(GL_VERTEX_ARRAY);
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- glDrawElements(GL_QUADS, sizeof(vertex_index) / sizeof(vertex_index[0]),
- GL_UNSIGNED_INT, vertex_index);
- glDisableClientState(GL_VERTEX_ARRAY);
- glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- }
- else {
- /* Back */
- glBegin(GL_QUADS);
- glFogCoordf_ext(DEPTH); glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f,-1.0f,-DEPTH);
- glFogCoordf_ext(DEPTH); glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f,-1.0f,-DEPTH);
- glFogCoordf_ext(DEPTH); glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f,-DEPTH);
- glFogCoordf_ext(DEPTH); glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f,-DEPTH);
- glEnd();
-
- /* Floor */
- glBegin(GL_QUADS);
- glFogCoordf_ext(DEPTH); glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f,-1.0f,-DEPTH);
- glFogCoordf_ext(DEPTH); glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f,-1.0f,-DEPTH);
- glFogCoordf_ext(0.0f); glTexCoord2f(1.0f, DEPTH); glVertex3f( 1.0f,-1.0f,0.0);
- glFogCoordf_ext(0.0f); glTexCoord2f(0.0f, DEPTH); glVertex3f(-1.0f,-1.0f,0.0);
- glEnd();
-
- /* Roof */
- glBegin(GL_QUADS);
- glFogCoordf_ext(DEPTH); glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, 1.0f,-DEPTH);
- glFogCoordf_ext(DEPTH); glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, 1.0f,-DEPTH);
- glFogCoordf_ext(0.0f); glTexCoord2f(0.0f, DEPTH); glVertex3f( 1.0f, 1.0f,0.0);
- glFogCoordf_ext(0.0f); glTexCoord2f(1.0f, DEPTH); glVertex3f(-1.0f, 1.0f,0.0);
- glEnd();
-
- /* Right */
- glBegin(GL_QUADS);
- glFogCoordf_ext(0.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f,-1.0f,0.0);
- glFogCoordf_ext(0.0f); glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, 1.0f,0.0);
- glFogCoordf_ext(DEPTH); glTexCoord2f(DEPTH, 0.0f); glVertex3f( 1.0f, 1.0f,-DEPTH);
- glFogCoordf_ext(DEPTH); glTexCoord2f(DEPTH, 1.0f); glVertex3f( 1.0f,-1.0f,-DEPTH);
- glEnd();
-
- /* Left */
- glBegin(GL_QUADS);
- glFogCoordf_ext(0.0f); glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f,-1.0f,0.0);
- glFogCoordf_ext(0.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f,0.0);
- glFogCoordf_ext(DEPTH); glTexCoord2f(DEPTH, 1.0f); glVertex3f(-1.0f, 1.0f,-DEPTH);
- glFogCoordf_ext(DEPTH); glTexCoord2f(DEPTH, 0.0f); glVertex3f(-1.0f,-1.0f,-DEPTH);
- glEnd();
- }
-
- glDisable(GL_TEXTURE_2D);
-
- PrintInfo();
-
- glutSwapBuffers();
-}
-
-
-static void
-Reshape( int width, int height )
-{
- glViewport(0, 0, width, height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-1, 1, -1, 1, 1.0, 100);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-}
-
-
-static void
-Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case 'a':
- Arrays = !Arrays;
- break;
- case 'f':
- case 'm':
- fogMode = SetFogMode(fogMode + 1);
- break;
- case 'D':
- fogDensity += 0.05;
- SetFogMode(fogMode);
- break;
- case 'd':
- if (fogDensity > 0.0) {
- fogDensity -= 0.05;
- }
- SetFogMode(fogMode);
- break;
- case 's':
- if (fogStart > 0.0) {
- fogStart -= 0.25;
- }
- SetFogMode(fogMode);
- break;
- case 'S':
- if (fogStart < 100.0) {
- fogStart += 0.25;
- }
- SetFogMode(fogMode);
- break;
- case 'e':
- if (fogEnd > 0.0) {
- fogEnd -= 0.25;
- }
- SetFogMode(fogMode);
- break;
- case 'E':
- if (fogEnd < 100.0) {
- fogEnd += 0.25;
- }
- SetFogMode(fogMode);
- break;
- case 'c':
- fogCoord = SetFogCoord(fogCoord ^ GL_TRUE);
- break;
- case 't':
- Texture = !Texture;
- break;
- case 'z':
- camz -= 0.1;
- break;
- case 'Z':
- camz += 0.1;
- break;
- case 'r':
- Reset();
- break;
- case 27:
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void
-Init(void)
-{
- static const GLubyte teximage[2][2][4] = {
- { { 255, 255, 255, 255}, { 128, 128, 128, 255} },
- { { 128, 128, 128, 255}, { 255, 255, 255, 255} }
- };
-
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
-
- if (!GLEW_EXT_fog_coord) {
- printf("GL_EXT_fog_coord not supported!\n");
- }
-
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, teximage);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-
- glClearColor(0.1f, 0.1f, 0.1f, 0.0f);
-
- glDepthFunc(GL_LEQUAL);
- glEnable(GL_DEPTH_TEST);
- glShadeModel(GL_SMOOTH);
- glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
-
- glFogfv(GL_FOG_COLOR, fogColor);
- glHint(GL_FOG_HINT, GL_NICEST);
- fogCoord = SetFogCoord(GL_TRUE); /* try to enable fog_coord */
- fogMode = SetFogMode(1);
-
- glEnableClientState(GL_VERTEX_ARRAY);
- glVertexPointer(3, GL_FLOAT, 0, vertex_pointer);
-
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- glTexCoordPointer(2, GL_FLOAT, 0, texcoord_pointer);
-
- if (GLEW_EXT_fog_coord) {
- glEnableClientState(GL_FOG_COORDINATE_ARRAY_EXT);
- glFogCoordPointerEXT(GL_FLOAT, 0, fogcoord_pointer);
- }
-
- Reset();
-}
-
-
-int
-main( int argc, char *argv[] )
-{
- glutInitWindowSize( 600, 600 );
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
- glutCreateWindow(argv[0]);
- glewInit();
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutDisplayFunc( Display );
- Init();
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/fplight.c b/progs/demos/fplight.c
deleted file mode 100644
index f52a4f7868..0000000000
--- a/progs/demos/fplight.c
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Use GL_NV_fragment_program to implement per-pixel lighting.
- *
- * Brian Paul
- * 7 April 2003
- */
-
-#include <assert.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <GL/glew.h>
-#include <GL/glut.h>
-
-
-static GLfloat Diffuse[4] = { 0.5, 0.5, 1.0, 1.0 };
-static GLfloat Specular[4] = { 0.8, 0.8, 0.8, 1.0 };
-static GLfloat LightPos[4] = { 0.0, 10.0, 20.0, 1.0 };
-static GLfloat Delta = 1.0;
-
-static GLuint FragProg;
-static GLuint VertProg;
-static GLboolean Anim = GL_TRUE;
-static GLboolean Wire = GL_FALSE;
-static GLboolean PixelLight = GL_TRUE;
-static GLint Win;
-static GLfloat Xrot = 0, Yrot = 0;
-
-
-#define NAMED_PARAMETER4FV(prog, name, v) \
- glProgramNamedParameter4fvNV(prog, strlen(name), (const GLubyte *) name, v)
-
-
-static void Display( void )
-{
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
-
- if (PixelLight) {
-#if defined(GL_NV_fragment_program)
- NAMED_PARAMETER4FV(FragProg, "LightPos", LightPos);
- glEnable(GL_FRAGMENT_PROGRAM_NV);
- glEnable(GL_VERTEX_PROGRAM_NV);
-#endif
- glDisable(GL_LIGHTING);
- }
- else {
- glLightfv(GL_LIGHT0, GL_POSITION, LightPos);
-#if defined(GL_NV_fragment_program)
- glDisable(GL_FRAGMENT_PROGRAM_NV);
- glDisable(GL_VERTEX_PROGRAM_NV);
-#endif
- glEnable(GL_LIGHTING);
- }
-
- glPushMatrix();
- glRotatef(Xrot, 1, 0, 0);
- glRotatef(Yrot, 0, 1, 0);
-
-#if 1
- glutSolidSphere(2.0, 10, 5);
-#else
- {
- GLUquadricObj *q = gluNewQuadric();
- gluQuadricNormals(q, GL_SMOOTH);
- gluQuadricTexture(q, GL_TRUE);
- glRotatef(90, 1, 0, 0);
- glTranslatef(0, 0, -1);
- gluCylinder(q, 1.0, 1.0, 2.0, 24, 1);
- gluDeleteQuadric(q);
- }
-#endif
-
- glPopMatrix();
-
- glutSwapBuffers();
-}
-
-
-static void Idle(void)
-{
- LightPos[0] += Delta;
- if (LightPos[0] > 25.0)
- Delta = -1.0;
- else if (LightPos[0] <- 25.0)
- Delta = 1.0;
- glutPostRedisplay();
-}
-
-
-static void Reshape( int width, int height )
-{
- glViewport( 0, 0, width, height );
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 );
- /*glOrtho( -2.0, 2.0, -2.0, 2.0, 5.0, 25.0 );*/
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
- glTranslatef( 0.0, 0.0, -15.0 );
-}
-
-
-static void Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case ' ':
- Anim = !Anim;
- if (Anim)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- break;
- case 'x':
- LightPos[0] -= 1.0;
- break;
- case 'X':
- LightPos[0] += 1.0;
- break;
- case 'w':
- Wire = !Wire;
- if (Wire)
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- else
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- break;
- case 'p':
- PixelLight = !PixelLight;
- if (PixelLight) {
- printf("Per-pixel lighting\n");
- }
- else {
- printf("Conventional lighting\n");
- }
- break;
- case 27:
- glutDestroyWindow(Win);
- exit(0);
- }
- glutPostRedisplay();
-}
-
-static void SpecialKey( int key, int x, int y )
-{
- const GLfloat step = 3.0;
- (void) x;
- (void) y;
- switch (key) {
- case GLUT_KEY_UP:
- Xrot -= step;
- break;
- case GLUT_KEY_DOWN:
- Xrot += step;
- break;
- case GLUT_KEY_LEFT:
- Yrot -= step;
- break;
- case GLUT_KEY_RIGHT:
- Yrot += step;
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void Init( void )
-{
- static const char *fragProgramText =
- "!!FP1.0\n"
- "DECLARE Diffuse; \n"
- "DECLARE Specular; \n"
- "DECLARE LightPos; \n"
-
- "# Compute normalized LightPos, put it in R0\n"
- "DP3 R0.x, LightPos, LightPos;\n"
- "RSQ R0.y, R0.x;\n"
- "MUL R0, LightPos, R0.y;\n"
-
- "# Compute normalized normal, put it in R1\n"
- "DP3 R1, f[TEX0], f[TEX0]; \n"
- "RSQ R1.y, R1.x;\n"
- "MUL R1, f[TEX0], R1.y;\n"
-
- "# Compute dot product of light direction and normal vector\n"
- "DP3_SAT R2, R0, R1;"
-
- "MUL R3, Diffuse, R2; # diffuse attenuation\n"
-
- "POW R4, R2.x, {20.0}.x; # specular exponent\n"
-
- "MUL R5, Specular, R4; # specular attenuation\n"
-
- "ADD o[COLR], R3, R5; # add diffuse and specular colors\n"
- "END \n"
- ;
-
- static const char *vertProgramText =
- "!!VP1.0\n"
- "# typical modelview/projection transform\n"
- "DP4 o[HPOS].x, c[0], v[OPOS] ;\n"
- "DP4 o[HPOS].y, c[1], v[OPOS] ;\n"
- "DP4 o[HPOS].z, c[2], v[OPOS] ;\n"
- "DP4 o[HPOS].w, c[3], v[OPOS] ;\n"
- "# transform normal by inv transpose of modelview, put in tex0\n"
- "DP3 o[TEX0].x, c[4], v[NRML] ;\n"
- "DP3 o[TEX0].y, c[5], v[NRML] ;\n"
- "DP3 o[TEX0].z, c[6], v[NRML] ;\n"
- "DP3 o[TEX0].w, c[7], v[NRML] ;\n"
- "END\n";
- ;
-
- if (!glutExtensionSupported("GL_NV_vertex_program")) {
- printf("Sorry, this demo requires GL_NV_vertex_program\n");
- exit(1);
- }
- if (!glutExtensionSupported("GL_NV_fragment_program")) {
- printf("Sorry, this demo requires GL_NV_fragment_program\n");
- exit(1);
- }
-
-#if defined(GL_NV_fragment_program)
- glGenProgramsNV(1, &FragProg);
- assert(FragProg > 0);
- glGenProgramsNV(1, &VertProg);
- assert(VertProg > 0);
-
- /*
- * Fragment program
- */
- glLoadProgramNV(GL_FRAGMENT_PROGRAM_NV, FragProg,
- strlen(fragProgramText),
- (const GLubyte *) fragProgramText);
- assert(glIsProgramNV(FragProg));
- glBindProgramNV(GL_FRAGMENT_PROGRAM_NV, FragProg);
-
- NAMED_PARAMETER4FV(FragProg, "Diffuse", Diffuse);
- NAMED_PARAMETER4FV(FragProg, "Specular", Specular);
-
- /*
- * Vertex program
- */
- glLoadProgramNV(GL_VERTEX_PROGRAM_NV, VertProg,
- strlen(vertProgramText),
- (const GLubyte *) vertProgramText);
- assert(glIsProgramNV(VertProg));
- glBindProgramNV(GL_VERTEX_PROGRAM_NV, VertProg);
- glTrackMatrixNV(GL_VERTEX_PROGRAM_NV, 0, GL_MODELVIEW_PROJECTION_NV, GL_IDENTITY_NV);
- glTrackMatrixNV(GL_VERTEX_PROGRAM_NV, 4, GL_MODELVIEW, GL_INVERSE_TRANSPOSE_NV);
-#endif
-
- /*
- * Misc init
- */
- glClearColor(0.3, 0.3, 0.3, 0.0);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_LIGHT0);
- glEnable(GL_LIGHTING);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, Diffuse);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, Specular);
- glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 20.0);
-
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
- printf("Press p to toggle between per-pixel and per-vertex lighting\n");
-}
-
-
-int main( int argc, char *argv[] )
-{
- glutInitWindowSize( 200, 200 );
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
- Win = glutCreateWindow(argv[0]);
- glewInit();
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutSpecialFunc( SpecialKey );
- glutDisplayFunc( Display );
- if (Anim)
- glutIdleFunc(Idle);
- Init();
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/fslight.c b/progs/demos/fslight.c
deleted file mode 100644
index 91a5a80132..0000000000
--- a/progs/demos/fslight.c
+++ /dev/null
@@ -1,619 +0,0 @@
-/**
- * Test OpenGL 2.0 vertex/fragment shaders.
- * Brian Paul
- * 1 November 2006
- *
- * Based on ARB version by:
- * Michal Krol
- * 20 February 2006
- *
- * Based on the original demo by:
- * Brian Paul
- * 17 April 2003
- */
-
-#include <assert.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <GL/gl.h>
-#include <GL/glut.h>
-#include <GL/glext.h>
-#include "extfuncs.h"
-
-
-#define TEXTURE 0
-
-static GLint CoordAttrib = 0;
-
-static char *FragProgFile = NULL;
-static char *VertProgFile = NULL;
-
-static GLfloat diffuse[4] = { 0.5f, 0.5f, 1.0f, 1.0f };
-static GLfloat specular[4] = { 0.8f, 0.8f, 0.8f, 1.0f };
-static GLfloat lightPos[4] = { 0.0f, 10.0f, 20.0f, 0.0f };
-static GLfloat delta = 1.0f;
-
-static GLuint fragShader;
-static GLuint vertShader;
-static GLuint program;
-
-static GLint uDiffuse;
-static GLint uSpecular;
-static GLint uTexture;
-
-static GLuint SphereList, RectList, CurList;
-static GLint win = 0;
-static GLboolean anim = GL_TRUE;
-static GLboolean wire = GL_FALSE;
-static GLboolean pixelLight = GL_TRUE;
-
-static GLint t0 = 0;
-static GLint frames = 0;
-
-static GLfloat xRot = 90.0f, yRot = 0.0f;
-
-
-static void
-normalize(GLfloat *dst, const GLfloat *src)
-{
- GLfloat len = sqrt(src[0] * src[0] + src[1] * src[1] + src[2] * src[2]);
- dst[0] = src[0] / len;
- dst[1] = src[1] / len;
- dst[2] = src[2] / len;
- dst[3] = src[3];
-}
-
-
-static void
-Redisplay(void)
-{
- GLfloat vec[4];
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- /* update light position */
- normalize(vec, lightPos);
- glLightfv(GL_LIGHT0, GL_POSITION, vec);
-
- if (pixelLight) {
- glUseProgram_func(program);
- glDisable(GL_LIGHTING);
- }
- else {
- glUseProgram_func(0);
- glEnable(GL_LIGHTING);
- }
-
- glPushMatrix();
- glRotatef(xRot, 1.0f, 0.0f, 0.0f);
- glRotatef(yRot, 0.0f, 1.0f, 0.0f);
- /*
- glutSolidSphere(2.0, 10, 5);
- */
- glCallList(CurList);
- glPopMatrix();
-
- glutSwapBuffers();
- frames++;
-
- if (anim) {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- if (t - t0 >= 5000) {
- GLfloat seconds =(GLfloat)(t - t0) / 1000.0f;
- GLfloat fps = frames / seconds;
- printf("%d frames in %6.3f seconds = %6.3f FPS\n",
- frames, seconds, fps);
- fflush(stdout);
- t0 = t;
- frames = 0;
- }
- }
-}
-
-
-static void
-Idle(void)
-{
- lightPos[0] += delta;
- if (lightPos[0] > 25.0f || lightPos[0] < -25.0f)
- delta = -delta;
- glutPostRedisplay();
-}
-
-
-static void
-Reshape(int width, int height)
-{
- glViewport(0, 0, width, height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 25.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.0f, 0.0f, -15.0f);
-}
-
-
-static void
-CleanUp(void)
-{
- glDeleteShader_func(fragShader);
- glDeleteShader_func(vertShader);
- glDeleteProgram_func(program);
- glutDestroyWindow(win);
-}
-
-
-static void
-Key(unsigned char key, int x, int y)
-{
- (void) x;
- (void) y;
-
- switch(key) {
- case ' ':
- case 'a':
- anim = !anim;
- if (anim)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- break;
- case 'x':
- lightPos[0] -= 1.0f;
- break;
- case 'X':
- lightPos[0] += 1.0f;
- break;
- case 'w':
- wire = !wire;
- if (wire)
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- else
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- break;
- case 'o':
- if (CurList == SphereList)
- CurList = RectList;
- else
- CurList = SphereList;
- break;
- case 'p':
- pixelLight = !pixelLight;
- if (pixelLight)
- printf("Per-pixel lighting\n");
- else
- printf("Conventional lighting\n");
- break;
- case 27:
- CleanUp();
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void
-SpecialKey(int key, int x, int y)
-{
- const GLfloat step = 3.0f;
-
- (void) x;
- (void) y;
-
- switch(key) {
- case GLUT_KEY_UP:
- xRot -= step;
- break;
- case GLUT_KEY_DOWN:
- xRot += step;
- break;
- case GLUT_KEY_LEFT:
- yRot -= step;
- break;
- case GLUT_KEY_RIGHT:
- yRot += step;
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void
-TestFunctions(void)
-{
- printf("Error 0x%x at line %d\n", glGetError(), __LINE__);
-
- assert(glIsProgram_func(program));
- assert(glIsShader_func(fragShader));
- assert(glIsShader_func(vertShader));
-
- /* attached shaders */
- {
- GLuint shaders[20];
- GLsizei count;
- int i;
- glGetAttachedShaders_func(program, 20, &count, shaders);
- for (i = 0; i < count; i++) {
- printf("Attached: %u\n", shaders[i]);
- assert(shaders[i] == fragShader ||
- shaders[i] == vertShader);
- }
- }
-
- {
- GLchar log[1000];
- GLsizei len;
- glGetShaderInfoLog_func(vertShader, 1000, &len, log);
- printf("Vert Shader Info Log: %s\n", log);
- glGetShaderInfoLog_func(fragShader, 1000, &len, log);
- printf("Frag Shader Info Log: %s\n", log);
- glGetProgramInfoLog_func(program, 1000, &len, log);
- printf("Program Info Log: %s\n", log);
- }
-
- /* active uniforms */
- {
- GLint n, max, i;
- glGetProgramiv_func(program, GL_ACTIVE_UNIFORMS, &n);
- glGetProgramiv_func(program, GL_ACTIVE_UNIFORM_MAX_LENGTH, &max);
- printf("Num uniforms: %d Max name length: %d\n", n, max);
- for (i = 0; i < n; i++) {
- GLint size, len;
- GLenum type;
- char name[100];
- glGetActiveUniform_func(program, i, 100, &len, &size, &type, name);
- printf(" %d: %s nameLen=%d size=%d type=0x%x\n",
- i, name, len, size, type);
- }
- }
-}
-
-
-#if TEXTURE
-static void
-MakeTexture(void)
-{
-#define SZ0 64
-#define SZ1 32
- GLubyte image0[SZ0][SZ0][SZ0][4];
- GLubyte image1[SZ1][SZ1][SZ1][4];
- GLuint i, j, k;
-
- /* level 0: two-tone gray checkboard */
- for (i = 0; i < SZ0; i++) {
- for (j = 0; j < SZ0; j++) {
- for (k = 0; k < SZ0; k++) {
- if ((i/8 + j/8 + k/8) & 1) {
- image0[i][j][k][0] =
- image0[i][j][k][1] =
- image0[i][j][k][2] = 200;
- }
- else {
- image0[i][j][k][0] =
- image0[i][j][k][1] =
- image0[i][j][k][2] = 100;
- }
- image0[i][j][k][3] = 255;
- }
- }
- }
-
- /* level 1: two-tone green checkboard */
- for (i = 0; i < SZ1; i++) {
- for (j = 0; j < SZ1; j++) {
- for (k = 0; k < SZ1; k++) {
- if ((i/8 + j/8 + k/8) & 1) {
- image1[i][j][k][0] = 0;
- image1[i][j][k][1] = 250;
- image1[i][j][k][2] = 0;
- }
- else {
- image1[i][j][k][0] = 0;
- image1[i][j][k][1] = 200;
- image1[i][j][k][2] = 0;
- }
- image1[i][j][k][3] = 255;
- }
- }
- }
-
- glActiveTexture(GL_TEXTURE2); /* unit 2 */
- glBindTexture(GL_TEXTURE_2D, 42);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, SZ0, SZ0, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, image0);
- glTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA, SZ1, SZ1, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, image1);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 1);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-
- glActiveTexture(GL_TEXTURE4); /* unit 4 */
- glBindTexture(GL_TEXTURE_3D, 43);
- glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA, SZ0, SZ0, SZ0, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, image0);
- glTexImage3D(GL_TEXTURE_3D, 1, GL_RGBA, SZ1, SZ1, SZ1, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, image1);
- glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAX_LEVEL, 1);
- glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-}
-#endif
-
-
-static void
-MakeSphere(void)
-{
- GLUquadricObj *obj = gluNewQuadric();
- SphereList = glGenLists(1);
- gluQuadricTexture(obj, GL_TRUE);
- glNewList(SphereList, GL_COMPILE);
- gluSphere(obj, 2.0f, 10, 5);
- glEndList();
- gluDeleteQuadric(obj);
-}
-
-static void
-VertAttrib(GLint index, float x, float y)
-{
-#if 1
- glVertexAttrib2f_func(index, x, y);
-#else
- glTexCoord2f(x, y);
-#endif
-}
-
-static void
-MakeRect(void)
-{
- RectList = glGenLists(1);
- glNewList(RectList, GL_COMPILE);
- glNormal3f(0, 0, 1);
- glBegin(GL_POLYGON);
- VertAttrib(CoordAttrib, 0, 0); glVertex2f(-2, -2);
- VertAttrib(CoordAttrib, 1, 0); glVertex2f( 2, -2);
- VertAttrib(CoordAttrib, 1, 1); glVertex2f( 2, 2);
- VertAttrib(CoordAttrib, 0, 1); glVertex2f(-2, 2);
- glEnd(); /* XXX omit this and crash! */
- glEndList();
-}
-
-
-
-static void
-LoadAndCompileShader(GLuint shader, const char *text)
-{
- GLint stat;
-
- glShaderSource_func(shader, 1, (const GLchar **) &text, NULL);
-
- glCompileShader_func(shader);
-
- glGetShaderiv_func(shader, GL_COMPILE_STATUS, &stat);
- if (!stat) {
- GLchar log[1000];
- GLsizei len;
- glGetShaderInfoLog_func(shader, 1000, &len, log);
- fprintf(stderr, "fslight: problem compiling shader:\n%s\n", log);
- exit(1);
- }
-}
-
-
-/**
- * Read a shader from a file.
- */
-static void
-ReadShader(GLuint shader, const char *filename)
-{
- const int max = 100*1000;
- int n;
- char *buffer = (char*) malloc(max);
- FILE *f = fopen(filename, "r");
- if (!f) {
- fprintf(stderr, "fslight: Unable to open shader file %s\n", filename);
- exit(1);
- }
-
- n = fread(buffer, 1, max, f);
- printf("fslight: read %d bytes from shader file %s\n", n, filename);
- if (n > 0) {
- buffer[n] = 0;
- LoadAndCompileShader(shader, buffer);
- }
-
- fclose(f);
- free(buffer);
-}
-
-
-static void
-CheckLink(GLuint prog)
-{
- GLint stat;
- glGetProgramiv_func(prog, GL_LINK_STATUS, &stat);
- if (!stat) {
- GLchar log[1000];
- GLsizei len;
- glGetProgramInfoLog_func(prog, 1000, &len, log);
- fprintf(stderr, "Linker error:\n%s\n", log);
- }
-}
-
-
-static void
-Init(void)
-{
- static const char *fragShaderText =
- "uniform vec4 diffuse;\n"
- "uniform vec4 specular;\n"
- "varying vec3 normal;\n"
- "void main() {\n"
- " // Compute dot product of light direction and normal vector\n"
- " float dotProd = max(dot(gl_LightSource[0].position.xyz, \n"
- " normalize(normal)), 0.0);\n"
- " // Compute diffuse and specular contributions\n"
- " gl_FragColor = diffuse * dotProd + specular * pow(dotProd, 20.0);\n"
- "}\n";
- static const char *vertShaderText =
- "varying vec3 normal;\n"
- "void main() {\n"
- " gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;\n"
- " normal = gl_NormalMatrix * gl_Normal;\n"
- "}\n";
- const char *version;
-
- version = (const char *) glGetString(GL_VERSION);
- if (version[0] == '1') {
- printf("This program requires OpenGL 2.x or higher, found %s\n", version);
- exit(1);
- }
-
- GetExtensionFuncs();
-
- fragShader = glCreateShader_func(GL_FRAGMENT_SHADER);
- if (FragProgFile)
- ReadShader(fragShader, FragProgFile);
- else
- LoadAndCompileShader(fragShader, fragShaderText);
-
-
- vertShader = glCreateShader_func(GL_VERTEX_SHADER);
- if (VertProgFile)
- ReadShader(vertShader, VertProgFile);
- else
- LoadAndCompileShader(vertShader, vertShaderText);
-
- program = glCreateProgram_func();
- glAttachShader_func(program, fragShader);
- glAttachShader_func(program, vertShader);
- glLinkProgram_func(program);
- CheckLink(program);
- glUseProgram_func(program);
-
- uDiffuse = glGetUniformLocation_func(program, "diffuse");
- uSpecular = glGetUniformLocation_func(program, "specular");
- uTexture = glGetUniformLocation_func(program, "texture");
- printf("DiffusePos %d SpecularPos %d TexturePos %d\n",
- uDiffuse, uSpecular, uTexture);
-
- glUniform4fv_func(uDiffuse, 1, diffuse);
- glUniform4fv_func(uSpecular, 1, specular);
- /* assert(glGetError() == 0);*/
-#if TEXTURE
- glUniform1i_func(uTexture, 2); /* use texture unit 2 */
-#endif
- /*assert(glGetError() == 0);*/
-
- if (CoordAttrib) {
- int i;
- glBindAttribLocation_func(program, CoordAttrib, "coord");
- i = glGetAttribLocation_func(program, "coord");
- assert(i >= 0);
- if (i != CoordAttrib) {
- printf("Hmmm, NVIDIA bug?\n");
- CoordAttrib = i;
- }
- else {
- printf("Mesa bind attrib: coord = %d\n", i);
- }
- }
-
- /*assert(glGetError() == 0);*/
-
- glClearColor(0.3f, 0.3f, 0.3f, 0.0f);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_LIGHT0);
- glEnable(GL_LIGHTING);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diffuse);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, specular);
- glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 20.0f);
-
- MakeSphere();
- MakeRect();
-
- CurList = SphereList;
-
-#if TEXTURE
- MakeTexture();
-#endif
-
- printf("GL_RENDERER = %s\n",(const char *) glGetString(GL_RENDERER));
- printf("Press p to toggle between per-pixel and per-vertex lighting\n");
-
- /* test glGetShaderSource() */
- if (0) {
- GLsizei len = strlen(fragShaderText) + 1;
- GLsizei lenOut;
- GLchar *src =(GLchar *) malloc(len * sizeof(GLchar));
- glGetShaderSource_func(fragShader, 0, NULL, src);
- glGetShaderSource_func(fragShader, len, &lenOut, src);
- assert(len == lenOut + 1);
- assert(strcmp(src, fragShaderText) == 0);
- free(src);
- }
-
- assert(glIsProgram_func(program));
- assert(glIsShader_func(fragShader));
- assert(glIsShader_func(vertShader));
-
- glColor3f(1, 0, 0);
-
- /* for testing state vars */
- {
- static GLfloat fc[4] = { 1, 1, 0, 0 };
- static GLfloat amb[4] = { 1, 0, 1, 0 };
- glFogfv(GL_FOG_COLOR, fc);
- glLightfv(GL_LIGHT1, GL_AMBIENT, amb);
- }
-
-#if 0
- TestFunctions();
-#else
- (void) TestFunctions;
-#endif
-}
-
-
-static void
-ParseOptions(int argc, char *argv[])
-{
- int i;
- for (i = 1; i < argc; i++) {
- if (strcmp(argv[i], "-fs") == 0) {
- FragProgFile = argv[++i];
- }
- else if (strcmp(argv[i], "-vs") == 0) {
- VertProgFile = argv[++i];
- }
- else {
- fprintf(stderr, "unknown option %s\n", argv[i]);
- break;
- }
- }
-}
-
-
-int
-main(int argc, char *argv[])
-{
- glutInitWindowSize(200, 200);
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
- win = glutCreateWindow(argv[0]);
- glutReshapeFunc(Reshape);
- glutKeyboardFunc(Key);
- glutSpecialFunc(SpecialKey);
- glutDisplayFunc(Redisplay);
- if (anim)
- glutIdleFunc(Idle);
- ParseOptions(argc, argv);
- Init();
- glutMainLoop();
- return 0;
-}
-
-
diff --git a/progs/demos/gamma.c b/progs/demos/gamma.c
deleted file mode 100644
index 61c6d125fb..0000000000
--- a/progs/demos/gamma.c
+++ /dev/null
@@ -1,159 +0,0 @@
-
-/* Draw test patterns to help determine correct gamma value for a display.
- When the intensities of the inner squares nearly match the intensities
- of their frames (from some distance the borders should disappear) then
- you've found the right gamma value.
-
- You can set Mesa's gamma values (for red, green and blue) with the
- MESA_GAMMA environment variable. But only on X windows!
- For example:
- setenv MESA_GAMMA 1.5 1.6 1.4
- Sets the red gamma value to 1.5, green to 1.6 and blue to 1.4.
- See the main README file for more information.
-
- For more info about gamma correction see:
- http://www.inforamp.net/~poynton/notes/colour_and_gamma/GammaFAQ.html
-
- This program is in the public domain
-
- Brian Paul 19 Oct 1995
- Kai Schuetz 05 Jun 1999 */
-
-/* Conversion to GLUT by Mark J. Kilgard */
-
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <GL/glut.h>
-
-static void
-Reshape(int width, int height)
-{
- glViewport(0, 0, (GLint) width, (GLint) height);
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
- glMatrixMode(GL_MODELVIEW);
- glShadeModel(GL_FLAT);
-}
-
-/* ARGSUSED1 */
-static void
-key_esc(unsigned char key, int x, int y)
-{
- if(key == 27) exit(0); /* Exit on Escape */
-}
-
-static GLubyte p25[] = {
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x00, 0x00, 0x00, 0x00,
-};
-
-static GLubyte p50[] = {
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
- 0xaa, 0xaa, 0xaa, 0xaa, 0x55, 0x55, 0x55, 0x55,
-};
-
-static GLubyte p75[] = {
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
- 0xaa, 0xaa, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xff,
-};
-
-static GLubyte *stippletab[4] = {NULL, p25, p50, p75};
-
-static void
-gamma_ramp(GLfloat yoffs, GLfloat r, GLfloat g, GLfloat b)
-{
- GLint d;
-
- glColor3f(0.0, 0.0, 0.0); /* solid black, no stipple */
- glRectf(-1.0, yoffs, -0.6, yoffs + 0.5);
-
- for(d = 1; d < 4; d++) { /* increasing density from 25% to 75% */
- GLfloat xcoord = (-1.0 + d*0.4);
- GLfloat t = d * 0.25;
-
- glColor3f(r*t, g*t, b*t); /* draw outer rect */
- glRectf(xcoord, yoffs, xcoord+0.4, yoffs + 0.5);
-
- glColor3f(0.0, 0.0, 0.0); /* "clear" inner rect */
- glRectf(xcoord + 0.1, yoffs + 0.125, xcoord + 0.3, yoffs + 0.375);
-
- glColor3f(r, g, b); /* draw stippled inner rect */
- glEnable(GL_POLYGON_STIPPLE);
- glPolygonStipple(stippletab[d]);
- glRectf(xcoord + 0.1, yoffs + 0.125, xcoord + 0.3, yoffs + 0.375);
- glDisable(GL_POLYGON_STIPPLE);
- }
- glColor3f(r, g, b); /* solid color, no stipple */
- glRectf(0.6, yoffs, 1.0, yoffs + 0.5);
-}
-
-static void
-display(void)
-{
- gamma_ramp( 0.5, 1.0, 1.0, 1.0); /* white ramp */
- gamma_ramp( 0.0, 1.0, 0.0, 0.0); /* red ramp */
- gamma_ramp(-0.5, 0.0, 1.0, 0.0); /* green ramp */
- gamma_ramp(-1.0, 0.0, 0.0, 1.0); /* blue ramp */
- glFlush();
-}
-
-int
-main(int argc, char **argv)
-{
- glutInitWindowSize(500, 400);
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
- glutCreateWindow("gamma test patterns");
- glutReshapeFunc(Reshape);
- glutDisplayFunc(display);
- glutKeyboardFunc(key_esc);
-
- glutMainLoop();
- return 0; /* ANSI C requires main to return int. */
-}
diff --git a/progs/demos/gearbox.c b/progs/demos/gearbox.c
deleted file mode 100644
index 71d0281904..0000000000
--- a/progs/demos/gearbox.c
+++ /dev/null
@@ -1,492 +0,0 @@
-/*
- * Use glCopyTexSubImage2D to draw animated gears on the sides of a box.
- *
- * Brian Paul
- * 27 January 2006
- */
-
-#include <math.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <GL/glut.h>
-
-#ifndef M_PI
-#define M_PI 3.14159265
-#endif
-
-static GLint WinWidth = 800, WinHeight = 500;
-static GLint TexWidth, TexHeight;
-static GLuint TexObj = 1;
-static GLenum IntFormat = GL_RGB;
-
-static GLboolean WireFrame = GL_FALSE;
-
-static GLint T0 = 0;
-static GLint Frames = 0;
-static GLint Win = 0;
-
-static GLfloat ViewRotX = 20.0, ViewRotY = 30.0, ViewRotZ = 0.0;
-static GLint Gear1, Gear2, Gear3;
-static GLfloat GearRot = 0.0;
-static GLfloat CubeRot = 0.0;
-
-
-/**
- Draw a gear wheel. You'll probably want to call this function when
- building a display list since we do a lot of trig here.
-
- Input: inner_radius - radius of hole at center
- outer_radius - radius at center of teeth
- width - width of gear
- teeth - number of teeth
- tooth_depth - depth of tooth
- **/
-static void
-gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width,
- GLint teeth, GLfloat tooth_depth)
-{
- GLint i;
- GLfloat r0, r1, r2;
- GLfloat angle, da;
- GLfloat u, v, len;
-
- r0 = inner_radius;
- r1 = outer_radius - tooth_depth / 2.0;
- r2 = outer_radius + tooth_depth / 2.0;
-
- da = 2.0 * M_PI / teeth / 4.0;
-
- glShadeModel(GL_FLAT);
-
- glNormal3f(0.0, 0.0, 1.0);
-
- /* draw front face */
- glBegin(GL_QUAD_STRIP);
- for (i = 0; i <= teeth; i++) {
- angle = i * 2.0 * M_PI / teeth;
- glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
- glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
- if (i < teeth) {
- glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
- glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
- }
- }
- glEnd();
-
- /* draw front sides of teeth */
- glBegin(GL_QUADS);
- da = 2.0 * M_PI / teeth / 4.0;
- for (i = 0; i < teeth; i++) {
- angle = i * 2.0 * M_PI / teeth;
-
- glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
- glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5);
- glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5);
- glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
- }
- glEnd();
-
- glNormal3f(0.0, 0.0, -1.0);
-
- /* draw back face */
- glBegin(GL_QUAD_STRIP);
- for (i = 0; i <= teeth; i++) {
- angle = i * 2.0 * M_PI / teeth;
- glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
- glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
- if (i < teeth) {
- glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
- glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
- }
- }
- glEnd();
-
- /* draw back sides of teeth */
- glBegin(GL_QUADS);
- da = 2.0 * M_PI / teeth / 4.0;
- for (i = 0; i < teeth; i++) {
- angle = i * 2.0 * M_PI / teeth;
-
- glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
- glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5);
- glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5);
- glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
- }
- glEnd();
-
- /* draw outward faces of teeth */
- glBegin(GL_QUAD_STRIP);
- for (i = 0; i < teeth; i++) {
- angle = i * 2.0 * M_PI / teeth;
-
- glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
- glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
- u = r2 * cos(angle + da) - r1 * cos(angle);
- v = r2 * sin(angle + da) - r1 * sin(angle);
- len = sqrt(u * u + v * v);
- u /= len;
- v /= len;
- glNormal3f(v, -u, 0.0);
- glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5);
- glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5);
- glNormal3f(cos(angle), sin(angle), 0.0);
- glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5);
- glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5);
- u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da);
- v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da);
- glNormal3f(v, -u, 0.0);
- glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
- glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
- glNormal3f(cos(angle), sin(angle), 0.0);
- }
-
- glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5);
- glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5);
-
- glEnd();
-
- glShadeModel(GL_SMOOTH);
-
- /* draw inside radius cylinder */
- glBegin(GL_QUAD_STRIP);
- for (i = 0; i <= teeth; i++) {
- angle = i * 2.0 * M_PI / teeth;
- glNormal3f(-cos(angle), -sin(angle), 0.0);
- glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
- glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
- }
- glEnd();
-
-}
-
-static void
-cleanup(void)
-{
- glDeleteTextures(1, &TexObj);
- glDeleteLists(Gear1, 1);
- glDeleteLists(Gear2, 1);
- glDeleteLists(Gear3, 1);
- glutDestroyWindow(Win);
-}
-
-
-static void
-DrawGears(void)
-{
- if (WireFrame) {
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- }
-
- glPushMatrix();
- glRotatef(20/*ViewRotX*/, 1.0, 0.0, 0.0);
- glRotatef(ViewRotY, 0.0, 1.0, 0.0);
- glRotatef(ViewRotZ, 0.0, 0.0, 1.0);
-
- glPushMatrix();
- glTranslatef(-3.0, -2.0, 0.0);
- glRotatef(GearRot, 0.0, 0.0, 1.0);
- glCallList(Gear1);
- glPopMatrix();
-
- glPushMatrix();
- glTranslatef(3.1, -2.0, 0.0);
- glRotatef(-2.0 * GearRot - 9.0, 0.0, 0.0, 1.0);
- glCallList(Gear2);
- glPopMatrix();
-
- glPushMatrix();
- glTranslatef(-3.1, 4.2, 0.0);
- glRotatef(-2.0 * GearRot - 25.0, 0.0, 0.0, 1.0);
- glCallList(Gear3);
- glPopMatrix();
-
- glPopMatrix();
-
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
-}
-
-
-static void
-DrawCube(void)
-{
- static const GLfloat texcoords[4][2] = {
- { 0, 0 }, { 1, 0 }, { 1, 1 }, { 0, 1 }
- };
- static const GLfloat vertices[4][2] = {
- { -1, -1 }, { 1, -1 }, { 1, 1 }, { -1, 1 }
- };
- static const GLfloat xforms[6][4] = {
- { 0, 0, 1, 0 },
- { 90, 0, 1, 0 },
- { 180, 0, 1, 0 },
- { 270, 0, 1, 0 },
- { 90, 1, 0, 0 },
- { -90, 1, 0, 0 }
- };
- static const GLfloat mat[4] = { 1.0, 1.0, 0.5, 1.0 };
- GLint i, j;
-
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat);
- glEnable(GL_TEXTURE_2D);
-
- glPushMatrix();
- glRotatef(ViewRotX, 1.0, 0.0, 0.0);
- glRotatef(15, 1, 0, 0);
- glRotatef(CubeRot, 0, 1, 0);
- glScalef(4, 4, 4);
-
- for (i = 0; i < 6; i++) {
- glPushMatrix();
- glRotatef(xforms[i][0], xforms[i][1], xforms[i][2], xforms[i][3]);
- glTranslatef(0, 0, 1.1);
- glBegin(GL_POLYGON);
- glNormal3f(0, 0, 1);
- for (j = 0; j < 4; j++) {
- glTexCoord2fv(texcoords[j]);
- glVertex2fv(vertices[j]);
- }
- glEnd();
- glPopMatrix();
- }
- glPopMatrix();
-
- glDisable(GL_TEXTURE_2D);
-}
-
-
-static void
-draw(void)
-{
- float ar;
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.0, 0.0, -40.0);
-
- /* clear whole depth buffer */
- glDisable(GL_SCISSOR_TEST);
- glClear(GL_DEPTH_BUFFER_BIT);
- glEnable(GL_SCISSOR_TEST);
-
- /* clear upper-left corner of color buffer (unused space) */
- glScissor(0, TexHeight, TexWidth, WinHeight - TexHeight);
- glClearColor(0.0, 0.0, 0.0, 0.0);
- glClear(GL_COLOR_BUFFER_BIT);
-
- /* clear lower-left corner of color buffer */
- glViewport(0, 0, TexWidth, TexHeight);
- glScissor(0, 0, TexWidth, TexHeight);
- glClearColor(1, 1, 1, 0);
- glClear(GL_COLOR_BUFFER_BIT);
-
- /* draw gears in lower-left corner */
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 60.0);
- glMatrixMode(GL_MODELVIEW);
- DrawGears();
-
- /* copy color buffer to texture */
- glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, TexWidth, TexHeight);
-
- /* clear right half of color buffer */
- glViewport(TexWidth, 0, WinWidth - TexWidth, WinHeight);
- glScissor(TexWidth, 0, WinWidth - TexWidth, WinHeight);
- glClearColor(0.5, 0.5, 0.8, 0.0);
- glClear(GL_COLOR_BUFFER_BIT);
-
- /* draw textured cube in right half of window */
- ar = (float) (WinWidth - TexWidth) / WinHeight;
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-ar, ar, -1.0, 1.0, 5.0, 60.0);
- glMatrixMode(GL_MODELVIEW);
- DrawCube();
-
- /* finish up */
- glutSwapBuffers();
-
- Frames++;
- {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- if (t - T0 >= 5000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- printf("%d frames in %6.3f seconds = %6.3f FPS\n", Frames, seconds, fps);
- fflush(stdout);
- T0 = t;
- Frames = 0;
- }
- }
-}
-
-
-static void
-idle(void)
-{
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
-
- /* fmod to prevent overflow */
- GearRot = fmod(GearRot + 70.0 * dt, 360.0); /* 70 deg/sec */
- CubeRot = fmod(CubeRot + 15.0 * dt, 360.0); /* 15 deg/sec */
-
- glutPostRedisplay();
-}
-
-
-/* change view angle, exit upon ESC */
-static void
-key(unsigned char k, int x, int y)
-{
- (void) x;
- (void) y;
- switch (k) {
- case 'w':
- WireFrame = !WireFrame;
- break;
- case 'z':
- ViewRotZ += 5.0;
- break;
- case 'Z':
- ViewRotZ -= 5.0;
- break;
- case 27: /* Escape */
- cleanup();
- exit(0);
- break;
- default:
- return;
- }
- glutPostRedisplay();
-}
-
-/* change view angle */
-static void
-special(int k, int x, int y)
-{
- (void) x;
- (void) y;
- switch (k) {
- case GLUT_KEY_UP:
- ViewRotX += 5.0;
- break;
- case GLUT_KEY_DOWN:
- ViewRotX -= 5.0;
- break;
- case GLUT_KEY_LEFT:
- ViewRotY += 5.0;
- break;
- case GLUT_KEY_RIGHT:
- ViewRotY -= 5.0;
- break;
- default:
- return;
- }
- glutPostRedisplay();
-}
-
-
-/* new window size or exposure */
-static void
-reshape(int width, int height)
-{
- WinWidth = width;
- WinHeight = height;
-}
-
-
-static void
-init(int argc, char *argv[])
-{
- static GLfloat pos[4] = {5.0, 5.0, 10.0, 0.0};
- static GLfloat red[4] = {0.8, 0.1, 0.0, 1.0};
- static GLfloat green[4] = {0.0, 0.8, 0.2, 1.0};
- static GLfloat blue[4] = {0.2, 0.2, 1.0, 1.0};
- GLint i;
-
- glLightfv(GL_LIGHT0, GL_POSITION, pos);
-#if 0
- glEnable(GL_CULL_FACE);
-#endif
- glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT0);
- glEnable(GL_DEPTH_TEST);
-
- /* make the gears */
- Gear1 = glGenLists(1);
- glNewList(Gear1, GL_COMPILE);
- glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red);
- gear(1.0, 4.0, 1.0, 20, 0.7);
- glEndList();
-
- Gear2 = glGenLists(1);
- glNewList(Gear2, GL_COMPILE);
- glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green);
- gear(0.5, 2.0, 2.0, 10, 0.7);
- glEndList();
-
- Gear3 = glGenLists(1);
- glNewList(Gear3, GL_COMPILE);
- glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue);
- gear(1.3, 2.0, 0.5, 10, 0.7);
- glEndList();
-
- glEnable(GL_NORMALIZE);
-
- /* xxx make size dynamic */
- TexWidth = 256;
- TexHeight = 256;
-
- glBindTexture(GL_TEXTURE_2D, TexObj);
- glTexImage2D(GL_TEXTURE_2D, 0, IntFormat, TexWidth, TexHeight, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-
- for ( i=1; i<argc; i++ ) {
- if (strcmp(argv[i], "-info")==0) {
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
- printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
- printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR));
- printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS));
- }
- }
-}
-
-
-static void
-visible(int vis)
-{
- if (vis == GLUT_VISIBLE)
- glutIdleFunc(idle);
- else
- glutIdleFunc(NULL);
-}
-
-
-int
-main(int argc, char *argv[])
-{
- glutInitWindowSize(WinWidth, WinHeight);
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
-
- Win = glutCreateWindow("gearbox");
- init(argc, argv);
-
- glutDisplayFunc(draw);
- glutReshapeFunc(reshape);
- glutKeyboardFunc(key);
- glutSpecialFunc(special);
- glutVisibilityFunc(visible);
-
- glutMainLoop();
- return 0; /* ANSI C requires main to return int. */
-}
diff --git a/progs/demos/gears.c b/progs/demos/gears.c
deleted file mode 100644
index 31a5b79eab..0000000000
--- a/progs/demos/gears.c
+++ /dev/null
@@ -1,403 +0,0 @@
-/*
- * 3-D gear wheels. This program is in the public domain.
- *
- * Command line options:
- * -info print GL implementation information
- * -exit automatically exit after 30 seconds
- *
- *
- * Brian Paul
- */
-
-/* Conversion to GLUT by Mark J. Kilgard */
-
-
-
-#include <math.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <GL/glut.h>
-
-#ifndef M_PI
-#define M_PI 3.14159265
-#endif
-
-static GLint T0 = 0;
-static GLint Frames = 0;
-static GLint autoexit = 0;
-static GLint win = 0;
-static GLboolean Visible = GL_TRUE;
-static GLboolean Animate = GL_TRUE;
-static GLfloat viewDist = 40.0;
-
-
-/**
-
- Draw a gear wheel. You'll probably want to call this function when
- building a display list since we do a lot of trig here.
-
- Input: inner_radius - radius of hole at center
- outer_radius - radius at center of teeth
- width - width of gear
- teeth - number of teeth
- tooth_depth - depth of tooth
-
- **/
-
-static void
-gear(GLfloat inner_radius, GLfloat outer_radius, GLfloat width,
- GLint teeth, GLfloat tooth_depth)
-{
- GLint i;
- GLfloat r0, r1, r2;
- GLfloat angle, da;
- GLfloat u, v, len;
-
- r0 = inner_radius;
- r1 = outer_radius - tooth_depth / 2.0;
- r2 = outer_radius + tooth_depth / 2.0;
-
- da = 2.0 * M_PI / teeth / 4.0;
-
- glShadeModel(GL_FLAT);
-
- glNormal3f(0.0, 0.0, 1.0);
-
- /* draw front face */
- glBegin(GL_QUAD_STRIP);
- for (i = 0; i <= teeth; i++) {
- angle = i * 2.0 * M_PI / teeth;
- glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
- glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
- if (i < teeth) {
- glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
- glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
- }
- }
- glEnd();
-
- /* draw front sides of teeth */
- glBegin(GL_QUADS);
- da = 2.0 * M_PI / teeth / 4.0;
- for (i = 0; i < teeth; i++) {
- angle = i * 2.0 * M_PI / teeth;
-
- glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
- glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5);
- glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5);
- glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
- }
- glEnd();
-
- glNormal3f(0.0, 0.0, -1.0);
-
- /* draw back face */
- glBegin(GL_QUAD_STRIP);
- for (i = 0; i <= teeth; i++) {
- angle = i * 2.0 * M_PI / teeth;
- glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
- glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
- if (i < teeth) {
- glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
- glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
- }
- }
- glEnd();
-
- /* draw back sides of teeth */
- glBegin(GL_QUADS);
- da = 2.0 * M_PI / teeth / 4.0;
- for (i = 0; i < teeth; i++) {
- angle = i * 2.0 * M_PI / teeth;
-
- glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
- glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5);
- glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5);
- glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
- }
- glEnd();
-
- /* draw outward faces of teeth */
- glBegin(GL_QUAD_STRIP);
- for (i = 0; i < teeth; i++) {
- angle = i * 2.0 * M_PI / teeth;
-
- glVertex3f(r1 * cos(angle), r1 * sin(angle), width * 0.5);
- glVertex3f(r1 * cos(angle), r1 * sin(angle), -width * 0.5);
- u = r2 * cos(angle + da) - r1 * cos(angle);
- v = r2 * sin(angle + da) - r1 * sin(angle);
- len = sqrt(u * u + v * v);
- u /= len;
- v /= len;
- glNormal3f(v, -u, 0.0);
- glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), width * 0.5);
- glVertex3f(r2 * cos(angle + da), r2 * sin(angle + da), -width * 0.5);
- glNormal3f(cos(angle), sin(angle), 0.0);
- glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), width * 0.5);
- glVertex3f(r2 * cos(angle + 2 * da), r2 * sin(angle + 2 * da), -width * 0.5);
- u = r1 * cos(angle + 3 * da) - r2 * cos(angle + 2 * da);
- v = r1 * sin(angle + 3 * da) - r2 * sin(angle + 2 * da);
- glNormal3f(v, -u, 0.0);
- glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), width * 0.5);
- glVertex3f(r1 * cos(angle + 3 * da), r1 * sin(angle + 3 * da), -width * 0.5);
- glNormal3f(cos(angle), sin(angle), 0.0);
- }
-
- glVertex3f(r1 * cos(0), r1 * sin(0), width * 0.5);
- glVertex3f(r1 * cos(0), r1 * sin(0), -width * 0.5);
-
- glEnd();
-
- glShadeModel(GL_SMOOTH);
-
- /* draw inside radius cylinder */
- glBegin(GL_QUAD_STRIP);
- for (i = 0; i <= teeth; i++) {
- angle = i * 2.0 * M_PI / teeth;
- glNormal3f(-cos(angle), -sin(angle), 0.0);
- glVertex3f(r0 * cos(angle), r0 * sin(angle), -width * 0.5);
- glVertex3f(r0 * cos(angle), r0 * sin(angle), width * 0.5);
- }
- glEnd();
-
-}
-
-static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0;
-static GLint gear1, gear2, gear3;
-static GLfloat angle = 0.0;
-
-static void
-cleanup(void)
-{
- glDeleteLists(gear1, 1);
- glDeleteLists(gear2, 1);
- glDeleteLists(gear3, 1);
- glutDestroyWindow(win);
-}
-
-static void
-draw(void)
-{
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glPushMatrix();
-
- glTranslatef(0.0, 0.0, -viewDist);
-
- glRotatef(view_rotx, 1.0, 0.0, 0.0);
- glRotatef(view_roty, 0.0, 1.0, 0.0);
- glRotatef(view_rotz, 0.0, 0.0, 1.0);
-
- glPushMatrix();
- glTranslatef(-3.0, -2.0, 0.0);
- glRotatef(angle, 0.0, 0.0, 1.0);
- glCallList(gear1);
- glPopMatrix();
-
- glPushMatrix();
- glTranslatef(3.1, -2.0, 0.0);
- glRotatef(-2.0 * angle - 9.0, 0.0, 0.0, 1.0);
- glCallList(gear2);
- glPopMatrix();
-
- glPushMatrix();
- glTranslatef(-3.1, 4.2, 0.0);
- glRotatef(-2.0 * angle - 25.0, 0.0, 0.0, 1.0);
- glCallList(gear3);
- glPopMatrix();
-
- glPopMatrix();
-
- glutSwapBuffers();
-
- Frames++;
-
- {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- if (t - T0 >= 5000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- printf("%d frames in %6.3f seconds = %6.3f FPS\n", Frames, seconds, fps);
- fflush(stdout);
- T0 = t;
- Frames = 0;
- if ((t >= 999.0 * autoexit) && (autoexit)) {
- cleanup();
- exit(0);
- }
- }
- }
-}
-
-
-static void
-idle(void)
-{
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
-
- angle += 70.0 * dt; /* 70 degrees per second */
- angle = fmod(angle, 360.0); /* prevents eventual overflow */
-
- glutPostRedisplay();
-}
-
-static void
-update_idle_func(void)
-{
- if (Visible && Animate)
- glutIdleFunc(idle);
- else
- glutIdleFunc(NULL);
-}
-
-/* change view angle, exit upon ESC */
-/* ARGSUSED1 */
-static void
-key(unsigned char k, int x, int y)
-{
- switch (k) {
- case 'z':
- view_rotz += 5.0;
- break;
- case 'Z':
- view_rotz -= 5.0;
- break;
- case 'd':
- viewDist += 1.0;
- break;
- case 'D':
- viewDist -= 1.0;
- break;
- case 'a':
- Animate = !Animate;
- update_idle_func();
- break;
- case 27: /* Escape */
- cleanup();
- exit(0);
- break;
- default:
- return;
- }
- glutPostRedisplay();
-}
-
-/* change view angle */
-/* ARGSUSED1 */
-static void
-special(int k, int x, int y)
-{
- switch (k) {
- case GLUT_KEY_UP:
- view_rotx += 5.0;
- break;
- case GLUT_KEY_DOWN:
- view_rotx -= 5.0;
- break;
- case GLUT_KEY_LEFT:
- view_roty += 5.0;
- break;
- case GLUT_KEY_RIGHT:
- view_roty -= 5.0;
- break;
- default:
- return;
- }
- glutPostRedisplay();
-}
-
-/* new window size or exposure */
-static void
-reshape(int width, int height)
-{
- GLfloat h = (GLfloat) height / (GLfloat) width;
-
- glViewport(0, 0, (GLint) width, (GLint) height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-1.0, 1.0, -h, h, 5.0, 200.0);
- glMatrixMode(GL_MODELVIEW);
-}
-
-static void
-init(int argc, char *argv[])
-{
- static GLfloat pos[4] = {5.0, 5.0, 10.0, 0.0};
- static GLfloat red[4] = {0.8, 0.1, 0.0, 1.0};
- static GLfloat green[4] = {0.0, 0.8, 0.2, 1.0};
- static GLfloat blue[4] = {0.2, 0.2, 1.0, 1.0};
- GLint i;
-
- glLightfv(GL_LIGHT0, GL_POSITION, pos);
- glEnable(GL_CULL_FACE);
- glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT0);
- glEnable(GL_DEPTH_TEST);
-
- /* make the gears */
- gear1 = glGenLists(1);
- glNewList(gear1, GL_COMPILE);
- glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, red);
- gear(1.0, 4.0, 1.0, 20, 0.7);
- glEndList();
-
- gear2 = glGenLists(1);
- glNewList(gear2, GL_COMPILE);
- glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green);
- gear(0.5, 2.0, 2.0, 10, 0.7);
- glEndList();
-
- gear3 = glGenLists(1);
- glNewList(gear3, GL_COMPILE);
- glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, blue);
- gear(1.3, 2.0, 0.5, 10, 0.7);
- glEndList();
-
- glEnable(GL_NORMALIZE);
-
- for ( i=1; i<argc; i++ ) {
- if (strcmp(argv[i], "-info")==0) {
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
- printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
- printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR));
- printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS));
- }
- else if ( strcmp(argv[i], "-exit")==0) {
- autoexit = 30;
- printf("Auto Exit after %i seconds.\n", autoexit );
- }
- }
-}
-
-
-static void
-visible(int vis)
-{
- Visible = vis;
- update_idle_func();
-}
-
-int main(int argc, char *argv[])
-{
- glutInitWindowSize(300, 300);
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
- win = glutCreateWindow("Gears");
- init(argc, argv);
-
- glutDisplayFunc(draw);
- glutReshapeFunc(reshape);
- glutKeyboardFunc(key);
- glutSpecialFunc(special);
- glutVisibilityFunc(visible);
- update_idle_func();
-
- glutMainLoop();
- return 0; /* ANSI C requires main to return int. */
-}
diff --git a/progs/demos/geartrain.c b/progs/demos/geartrain.c
deleted file mode 100644
index 00b6e78b72..0000000000
--- a/progs/demos/geartrain.c
+++ /dev/null
@@ -1,1085 +0,0 @@
-
-/*
- * GearTrain Simulator * Version: 1.00
- *
- * Copyright (C) 1999 Shobhan Kumar Dutta All Rights Reserved.
- * <skdutta@del3.vsnl.net.in>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * SHOBHAN KUMAR DUTTA BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
- * OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-
-#include <assert.h>
-#include <math.h>
-#include <stdlib.h>
-#include <GL/glut.h>
-#include <string.h>
-#include <stdio.h>
-
-#ifndef min
-#define min(x, y) ( x < y ? x : y )
-#endif
-
-#ifndef M_PI
-#define M_PI 3.14159265
-#endif /* */
-typedef GLfloat TDA[4];
-
-TDA background;
-
-
-struct AXLE
- {
- char name[20];
- GLint id;
- GLfloat radius;
- GLint axis;
- TDA color;
- TDA position;
- GLfloat length;
- GLint motored;
- GLfloat angular_velocity;
- GLint direction;
- };
-
-
-struct GEAR
- {
- char name[20];
- char type[7];
- GLint face;
- GLint id;
- GLfloat radius;
- GLfloat width;
- GLint teeth;
- GLfloat tooth_depth;
- GLfloat angle;
- GLfloat angular_velocity;
- TDA color;
- GLint relative_position;
- TDA position;
- char axle_name[20];
- GLint axis;
- GLint direction;
- GLint motored;
- };
-
-
-struct BELT
- {
- char name[20];
- GLint id;
- char gear1_name[20];
- char gear2_name[20];
- };
-
-
-FILE * mainfile;
-struct GEAR g[10];
-struct AXLE a[10];
-struct BELT b[10];
-int number_of_gears;
-int number_of_axles;
-int number_of_belts;
-
-
-char Buf1[256], Buf2[256], Buf3[256], Buf4[256], Buf5[256];
-
-static GLint T0 = 0;
-static GLint Frames = 0;
-
-
-#ifndef _WIN32
-static void
-strset (char buf[], char ch)
-{
- int i;
- for (i = 0; i < strlen (buf); i++)
- buf[i] = ch;
-}
-#endif
-
-
-static void
-Clear_Buffers ()
-{
- strset (Buf1, 0);
- strset (Buf2, 0);
- strset (Buf3, 0);
- strset (Buf4, 0);
- strset (Buf5, 0);
-}
-
-
-static void
-LoadTriplet (TDA A)
-{
- int result;
- Clear_Buffers ();
- result = fscanf (mainfile, "%s %s %s %s", Buf1, Buf2, Buf3, Buf4);
- assert(result != EOF);
- A[0] = atof (Buf2);
- A[1] = atof (Buf3);
- A[2] = atof (Buf4);
-}
-
-
-static void
-LoadReal (float *a)
-{
- int result;
- Clear_Buffers ();
- result = fscanf (mainfile, "%s %s", Buf1, Buf2);
- assert(result != EOF);
- *a = atof (Buf2);
-}
-
-
-static void
-LoadInteger (int *a)
-{
- int result;
- Clear_Buffers ();
- result = fscanf (mainfile, "%s %s", Buf1, Buf2);
- assert(result != EOF);
- *a = atoi (Buf2);
-}
-
-
-static void
-LoadText (char *a)
-{
- int result;
- Clear_Buffers ();
- result = fscanf (mainfile, "%s %s", Buf1, Buf2);
- assert(result != EOF);
- strcpy (a, Buf2);
-}
-
-
-static void
-getdata (char filename[])
-{
- int gear_count = 0, axle_count = 0, belt_count = 0, i;
-
- mainfile = fopen (filename, "r");
- if (!mainfile) {
- printf("Error: couldn't open %s\n", filename);
- exit(-1);
- }
-
- do
- {
- int result;
- Clear_Buffers ();
- result = fscanf (mainfile, "%s", Buf1);
- (void) result;
- if (ferror (mainfile))
- {
- printf ("\nError opening file !\n");
- exit (1);
- }
-
- if (!(strcmp (Buf1, "BACKGROUND")))
- LoadTriplet (background);
-
- if (!(strcmp (Buf1, "ANAME")))
- {
- LoadText (a[axle_count].name);
- axle_count++;
- }
-
- if (!(strcmp (Buf1, "ARADIUS")))
- LoadReal (&a[axle_count - 1].radius);
-
- if (!(strcmp (Buf1, "AAXIS")))
- LoadInteger (&a[axle_count - 1].axis);
-
- if (!(strcmp (Buf1, "ACOLOR")))
- LoadTriplet (a[axle_count - 1].color);
-
- if (!(strcmp (Buf1, "APOSITION")))
- LoadTriplet (a[axle_count - 1].position);
-
- if (!(strcmp (Buf1, "ALENGTH")))
- LoadReal (&a[axle_count - 1].length);
-
- if (!(strcmp (Buf1, "AMOTORED")))
- LoadInteger (&a[axle_count - 1].motored);
-
- if (!(strcmp (Buf1, "AANGULARVELOCITY")))
- LoadReal (&a[axle_count - 1].angular_velocity);
-
- if (!(strcmp (Buf1, "ADIRECTION")))
- LoadInteger (&a[axle_count - 1].direction);
-
- if (!(strcmp (Buf1, "GNAME")))
- {
- LoadText (g[gear_count].name);
- gear_count++;
- }
-
- if (!(strcmp (Buf1, "GTYPE")))
- LoadText (g[gear_count - 1].type);
-
- if (!(strcmp (Buf1, "GFACE")))
- LoadInteger (&g[gear_count - 1].face);
-
- if (!(strcmp (Buf1, "GRADIUS")))
- LoadReal (&g[gear_count - 1].radius);
-
- if (!(strcmp (Buf1, "GWIDTH")))
- LoadReal (&g[gear_count - 1].width);
-
- if (!(strcmp (Buf1, "GTEETH")))
- LoadInteger (&g[gear_count - 1].teeth);
-
- if (!(strcmp (Buf1, "GTOOTHDEPTH")))
- LoadReal (&g[gear_count - 1].tooth_depth);
-
- if (!(strcmp (Buf1, "GCOLOR")))
- LoadTriplet (g[gear_count - 1].color);
-
- if (!(strcmp (Buf1, "GAXLE")))
- LoadText (g[gear_count - 1].axle_name);
-
- if (!(strcmp (Buf1, "GPOSITION")))
- LoadInteger (&g[gear_count - 1].relative_position);
-
- if (!(strcmp (Buf1, "BELTNAME")))
- {
- LoadText (b[belt_count].name);
- belt_count++;
- }
-
- if (!(strcmp (Buf1, "GEAR1NAME")))
- LoadText (b[belt_count - 1].gear1_name);
-
- if (!(strcmp (Buf1, "GEAR2NAME")))
- LoadText (b[belt_count - 1].gear2_name);
- }
-
- while (Buf1[0] != 0);
-
- for (i = 0; i < number_of_gears; i++)
- {
- g[i].axis = -1;
- g[i].direction = 0;
- g[i].angular_velocity = 0.0;
- }
-
- number_of_gears = gear_count;
- number_of_axles = axle_count;
- number_of_belts = belt_count;
- fclose (mainfile);
-}
-
-
-static void
-axle (GLint j, GLfloat radius, GLfloat length)
-{
- GLfloat angle, rad, incr = 10.0 * M_PI / 180.0;
-
- /* draw main cylinder */
- glBegin (GL_QUADS);
- for (angle = 0.0; angle < 360.0; angle += 5.0)
- {
- rad = angle * M_PI / 180.0;
- glNormal3f (cos (rad), sin (rad), 0.0);
- glVertex3f (radius * cos (rad), radius * sin (rad), length / 2);
- glVertex3f (radius * cos (rad), radius * sin (rad), -length / 2);
- glVertex3f (radius * cos (rad + incr), radius * sin (rad + incr), -length / 2);
- glVertex3f (radius * cos (rad + incr), radius * sin (rad + incr), length / 2);
- }
- glEnd ();
-
- /* draw front face */
- glNormal3f (0.0, 0.0, 1.0);
- glBegin (GL_TRIANGLES);
- for (angle = 0.0; angle < 360.0; angle += 5.0)
- {
- rad = angle * M_PI / 180.0;
- glVertex3f (0.0, 0.0, length / 2);
- glVertex3f (radius * cos (rad), radius * sin (rad), length / 2);
- glVertex3f (radius * cos (rad + incr), radius * sin (rad + incr), length / 2);
- glVertex3f (0.0, 0.0, length / 2);
- }
- glEnd ();
-
- /* draw back face */
- glNormal3f (0.0, 0.0, -1.0);
- glBegin (GL_TRIANGLES);
- for (angle = 0.0; angle <= 360.0; angle += 5.0)
- {
- rad = angle * M_PI / 180.0;
- glVertex3f (0.0, 0.0, -length / 2);
- glVertex3f (radius * cos (rad), radius * sin (rad), -length / 2);
- glVertex3f (radius * cos (rad + incr), radius * sin (rad + incr), -length / 2);
- glVertex3f (0.0, 0.0, -length / 2);
- }
- glEnd ();
-}
-
-
-
-static void
-gear (GLint j, char type[], GLfloat radius, GLfloat width,
- GLint teeth, GLfloat tooth_depth)
-{
- GLint i;
- GLfloat r1, r2;
- GLfloat angle, da;
- GLfloat u, v, len, fraction = 0.5;
- GLfloat n = 1.0;
-
- r1 = radius - tooth_depth;
- r2 = radius;
-
- da = 2.0 * M_PI / teeth / 4.0;
- if (!g[j].face)
- {
- fraction = -0.5;
- n = -1.0;
- }
- if (!(strcmp (type, "NORMAL")))
- {
- fraction = 0.5;
- n = 1.0;
- }
-
- /* draw front face */
- if (!(strcmp (type, "NORMAL")))
- {
- glNormal3f (0.0, 0.0, 1.0 * n);
- glBegin (GL_QUAD_STRIP);
- for (i = 0; i <= teeth; i++)
- {
- angle = i * 2.0 * M_PI / teeth;
- glVertex3f (0.0, 0.0, width * fraction);
- glVertex3f (r1 * cos (angle), r1 * sin (angle), width * fraction);
- glVertex3f (0.0, 0.0, width * fraction);
- glVertex3f (r1 * cos (angle + 3 * da), r1 * sin (angle + 3 * da), width * fraction);
- }
- glEnd ();
- }
- else
- {
- glNormal3f (0.0, 0.0, 1.0 * n);
- glBegin (GL_QUAD_STRIP);
- for (i = 0; i <= teeth; i++)
- {
- angle = i * 2.0 * M_PI / teeth;
- glVertex3f (0.0, 0.0, width * fraction);
- glVertex3f ((r2 - width) * cos (angle), (r2 - width) * sin (angle), width * fraction);
- glVertex3f (0.0, 0.0, width * fraction);
- glVertex3f ((r2 - width) * cos (angle + 3 * da), (r2 - width) * sin (angle + 3 * da), width * fraction);
- }
- glEnd ();
- }
-
- /* draw front sides of teeth */
- if (!(strcmp (type, "NORMAL")))
- {
- glNormal3f (0.0, 0.0, 1.0 * n);
- glBegin (GL_QUADS);
- da = 2.0 * M_PI / teeth / 4.0;
- for (i = 0; i < teeth; i++)
- {
- angle = i * 2.0 * M_PI / teeth;
- glVertex3f (r1 * cos (angle), r1 * sin (angle), width * fraction);
- glVertex3f (r2 * cos (angle + da), r2 * sin (angle + da), width * fraction);
- glVertex3f (r2 * cos (angle + 2 * da), r2 * sin (angle + 2 * da), width * fraction);
- glVertex3f (r1 * cos (angle + 3 * da), r1 * sin (angle + 3 * da), width * fraction);
- }
- glEnd ();
- }
-
- glNormal3f (0.0, 0.0, -1.0 * n);
-
- /* draw back face */
- glBegin (GL_QUAD_STRIP);
- for (i = 0; i <= teeth; i++)
- {
- angle = i * 2.0 * M_PI / teeth;
- glVertex3f (r1 * cos (angle), r1 * sin (angle), -width * fraction);
- glVertex3f (0.0, 0.0, -width * fraction);
- glVertex3f (r1 * cos (angle + 3 * da), r1 * sin (angle + 3 * da), -width * fraction);
- glVertex3f (0.0, 0.0, -width * fraction);
- }
- glEnd ();
-
- /* draw back sides of teeth */
- glNormal3f (0.0, 0.0, -1.0 * n);
- glBegin (GL_QUADS);
- da = 2.0 * M_PI / teeth / 4.0;
- for (i = 0; i < teeth; i++)
- {
- angle = i * 2.0 * M_PI / teeth;
- glVertex3f (r1 * cos (angle + 3 * da), r1 * sin (angle + 3 * da), -width * fraction);
- glVertex3f (r2 * cos (angle + 2 * da), r2 * sin (angle + 2 * da), -width * fraction);
- glVertex3f (r2 * cos (angle + da), r2 * sin (angle + da), -width * fraction);
- glVertex3f (r1 * cos (angle), r1 * sin (angle), -width * fraction);
- }
- glEnd ();
-
-
- /* draw outward faces of teeth */
- if (!(strcmp (type, "NORMAL")))
- {
- glBegin (GL_QUAD_STRIP);
- for (i = 0; i < teeth; i++)
- {
- angle = i * 2.0 * M_PI / teeth;
-
- glVertex3f (r1 * cos (angle), r1 * sin (angle), width * fraction);
- glVertex3f (r1 * cos (angle), r1 * sin (angle), -width * fraction);
- u = r2 * cos (angle + da) - r1 * cos (angle);
- v = r2 * sin (angle + da) - r1 * sin (angle);
- len = sqrt (u * u + v * v);
- u /= len;
- v /= len;
- glNormal3f (v, -u, 0.0);
- glVertex3f (r2 * cos (angle + da), r2 * sin (angle + da), width * fraction);
- glVertex3f (r2 * cos (angle + da), r2 * sin (angle + da), -width * fraction);
- glNormal3f (cos (angle), sin (angle), 0.0);
- glVertex3f (r2 * cos (angle + 2 * da), r2 * sin (angle + 2 * da), width * fraction);
- glVertex3f (r2 * cos (angle + 2 * da), r2 * sin (angle + 2 * da), -width * fraction);
- u = r1 * cos (angle + 3 * da) - r2 * cos (angle + 2 * da);
- v = r1 * sin (angle + 3 * da) - r2 * sin (angle + 2 * da);
- glNormal3f (v, -u, 0.0);
- glVertex3f (r1 * cos (angle + 3 * da), r1 * sin (angle + 3 * da), width * fraction);
- glVertex3f (r1 * cos (angle + 3 * da), r1 * sin (angle + 3 * da), -width * fraction);
- glNormal3f (cos (angle), sin (angle), 0.0);
- }
- }
- else
- {
- glBegin (GL_QUAD_STRIP);
- for (i = 0; i < teeth; i++)
- {
- angle = i * 2.0 * M_PI / teeth;
- glVertex3f (r1 * cos (angle), r1 * sin (angle), width * fraction);
- glVertex3f (r1 * cos (angle), r1 * sin (angle), -width * fraction);
- u = r2 * cos (angle + da) - r1 * cos (angle);
- v = r2 * sin (angle + da) - r1 * sin (angle);
- len = sqrt (u * u + v * v);
- u /= len;
- v /= len;
- glNormal3f (v, -u, 0.0);
- glVertex3f ((r2 - width) * cos (angle + da), (r2 - width) * sin (angle + da), width * fraction);
- glVertex3f (r2 * cos (angle + da), r2 * sin (angle + da), -width * fraction);
- glNormal3f (cos (angle), sin (angle), n);
- glVertex3f ((r2 - width) * cos (angle + 2 * da), (r2 - width) * sin (angle + 2 * da), width * fraction);
- glVertex3f (r2 * cos (angle + 2 * da), r2 * sin (angle + 2 * da), -width * fraction);
- u = r1 * cos (angle + 3 * da) - r2 * cos (angle + 2 * da);
- v = r1 * sin (angle + 3 * da) - r2 * sin (angle + 2 * da);
- glNormal3f (v, -u, 0.0);
- glVertex3f (r1 * cos (angle + 3 * da), r1 * sin (angle + 3 * da), width * fraction);
- glVertex3f (r1 * cos (angle + 3 * da), r1 * sin (angle + 3 * da), -width * fraction);
- glNormal3f (cos (angle), sin (angle), n);
- }
- }
-
- glVertex3f (r1 * cos (0), r1 * sin (0), width * fraction);
- glVertex3f (r1 * cos (0), r1 * sin (0), -width * fraction);
- glEnd ();
-}
-
-
-static void
-belt (struct GEAR g1, struct GEAR g2)
-{
- GLfloat D, alpha, phi, angle, incr, width;
- GLint indexes[3] =
- {
- 0, 0, 0
- };
-
- GLfloat col[3] =
- {
- 0.0, 0.0, 0.0
- };
-
- width = min (g1.width, g2.width);
- D = sqrt (pow (g1.position[0] - g2.position[0], 2) + pow (g1.position[1] - g2.position[1], 2) + pow (g1.position[2] - g2.position[2], 2));
- alpha = acos ((g2.position[0] - g1.position[0]) / D);
- phi = acos ((g1.radius - g2.radius) / D);
- glBegin (GL_QUADS);
- glColor3fv (col);
- glMaterialiv (GL_FRONT, GL_COLOR_INDEXES, indexes);
- incr = 1.2 * 360.0 / g1.teeth * M_PI / 180.00;
- for (angle = alpha + phi; angle <= 2 * M_PI - phi + alpha; angle += 360.0 / g1.teeth * M_PI / 180.00)
- {
- glNormal3f (cos (angle), sin (angle), 0.0);
- glVertex3f (g1.radius * cos (angle), g1.radius * sin (angle), width * 0.5);
- glVertex3f (g1.radius * cos (angle), g1.radius * sin (angle), -width * 0.5);
- glVertex3f (g1.radius * cos (angle + incr), g1.radius * sin (angle + incr), -width * 0.5);
- glVertex3f (g1.radius * cos (angle + incr), g1.radius * sin (angle + incr), width * 0.5);
- }
- glEnd ();
- glBegin (GL_QUADS);
- glColor3fv (col);
- glMaterialiv (GL_FRONT, GL_COLOR_INDEXES, indexes);
- incr = 1.2 * 360.0 / g2.teeth * M_PI / 180.00;
- for (angle = -phi + alpha; angle <= phi + alpha; angle += 360.0 / g1.teeth * M_PI / 180.0)
- {
- glNormal3f (cos (angle), sin (angle), 0.0);
- glVertex3f (g2.radius * cos (angle) + g2.position[0] - g1.position[0], g2.radius * sin (angle) + g2.position[1] - g1.position[1], width * 0.5);
- glVertex3f (g2.radius * cos (angle) + g2.position[0] - g1.position[0], g2.radius * sin (angle) + g2.position[1] - g1.position[1], width * -0.5);
- glVertex3f (g2.radius * cos (angle + incr) + g2.position[0] - g1.position[0], g2.radius * sin (angle + incr) + g2.position[1] - g1.position[1], width * -0.5);
- glVertex3f (g2.radius * cos (angle + incr) + g2.position[0] - g1.position[0], g2.radius * sin (angle + incr) + g2.position[1] - g1.position[1], width * 0.5);
- }
- glEnd ();
-
- glBegin (GL_QUADS);
- glColor3fv (col);
- glMaterialiv (GL_FRONT, GL_COLOR_INDEXES, indexes);
- glVertex3f (g1.radius * cos (alpha + phi), g1.radius * sin (alpha + phi), width * 0.5);
- glVertex3f (g1.radius * cos (alpha + phi), g1.radius * sin (alpha + phi), width * -0.5);
- glVertex3f (g2.radius * cos (alpha + phi) + g2.position[0] - g1.position[0], g2.radius * sin (alpha + phi) + g2.position[1] - g1.position[1], width * -0.5);
- glVertex3f (g2.radius * cos (alpha + phi) + g2.position[0] - g1.position[0], g2.radius * sin (alpha + phi) + g2.position[1] - g1.position[1], width * 0.5);
- glVertex3f (g1.radius * cos (alpha - phi), g1.radius * sin (alpha - phi), width * 0.5);
- glVertex3f (g1.radius * cos (alpha - phi), g1.radius * sin (alpha - phi), width * -0.5);
- glVertex3f (g2.radius * cos (alpha - phi) + g2.position[0] - g1.position[0], g2.radius * sin (alpha - phi) + g2.position[1] - g1.position[1], width * -0.5);
- glVertex3f (g2.radius * cos (alpha - phi) + g2.position[0] - g1.position[0], g2.radius * sin (alpha - phi) + g2.position[1] - g1.position[1], width * 0.5);
- glEnd ();
-}
-
-
-static int
-axle_find (char axle_name[])
-{
- int i;
-
- for (i = 0; i < number_of_axles; i++)
- {
- if (!(strcmp (axle_name, a[i].name)))
- break;
- }
- return i;
-}
-
-
-static int
-gear_find (char gear_name[])
-{
- int i;
-
- for (i = 0; i < number_of_gears; i++)
- {
- if (!(strcmp (gear_name, g[i].name)))
- break;
- }
- return i;
-}
-
-
-static void
-process ()
-{
- GLfloat x, y, z, D, dist;
- GLint axle_index, i, j, g1, g2, k;
- char error[80];
-
- for (i = 0; i < number_of_gears; i++)
- {
- x = 0.0;
- y = 0.0;
- z = 0.0;
- axle_index = axle_find (g[i].axle_name);
- g[i].axis = a[axle_index].axis;
- g[i].motored = a[axle_index].motored;
- if (a[axle_index].motored)
- {
- g[i].direction = a[axle_index].direction;
- g[i].angular_velocity = a[axle_index].angular_velocity;
- }
- if (g[i].axis == 0)
- x = 1.0;
- else if (g[i].axis == 1)
- y = 1.0;
- else
- z = 1.0;
-
- g[i].position[0] = a[axle_index].position[0] + x * g[i].relative_position;
- g[i].position[1] = a[axle_index].position[1] + y * g[i].relative_position;
- g[i].position[2] = a[axle_index].position[2] + z * g[i].relative_position;
- }
-
- for (k = 0; k < number_of_axles; k++)
- {
- for (i = 0; i < number_of_gears - 1; i++)
- {
- for (j = 0; j < number_of_gears; j++)
- {
- if (!(strcmp (g[i].type, g[j].type)) && (!(strcmp (g[i].type, "NORMAL"))) && ((strcmp (g[i].axle_name, g[j].axle_name) != 0)) && (g[i].axis == g[j].axis))
- {
- D = sqrt (pow (g[i].position[0] - g[j].position[0], 2) + pow (g[i].position[1] - g[j].position[1], 2) + pow (g[i].position[2] - g[j].position[2], 2));
- if (D < 1.1 * (g[i].radius - g[i].tooth_depth + g[j].radius - g[j].tooth_depth))
- {
- printf (error, "Gear %s and %s are too close to each other.", g[i].name, g[j].name);
-
- /*MessageBox(NULL,error,windowName,MB_ICONEXCLAMATION|MB_OK);*/
- exit (1);
- }
-
- if (g[i].axis == 0)
- {
- dist = g[i].position[0] - g[j].position[0];
- }
- else if (g[i].axis == 1)
- {
- dist = g[i].position[1] - g[j].position[1];
- }
- else
- dist = g[i].position[2] - g[j].position[2];
-
- dist = fabs (dist);
-
- if (dist < (g[i].width / 2 + g[j].width / 2))
- {
- if ((g[i].motored) && (!(g[j].motored)) && (D < 0.95 * (g[i].radius + g[j].radius)))
- {
- axle_index = axle_find (g[j].axle_name);
- if ((a[axle_index].direction != 0) && (g[j].angular_velocity != g[i].angular_velocity * g[i].teeth / g[j].teeth * g[i].radius / g[j].radius))
- {
- printf (error, "Error in tooth linkage of gears %s and %s.", g[i].name, g[j].name);
- /*MessageBox(NULL,error,windowName,MB_ICONEXCLAMATION|MB_OK);*/
- exit (1);
- }
-
- g[j].motored = (a[axle_index].motored = 1);
- g[j].direction = (a[axle_index].direction = -g[i].direction);
- a[axle_index].angular_velocity = g[i].angular_velocity * g[i].teeth / g[j].teeth;
- g[j].angular_velocity = (a[axle_index].angular_velocity *= g[i].radius / g[j].radius);
- }
-
- if ((!(g[i].motored)) && (g[j].motored) && (D < 0.95 * (g[i].radius + g[j].radius)))
- {
- axle_index = axle_find (g[i].axle_name);
- if ((a[axle_index].direction != 0) && (g[i].angular_velocity != g[j].angular_velocity * g[j].teeth / g[i].teeth * g[j].radius / g[i].radius))
- {
- printf (error, "Error in tooth linkage of gears %s and %s.", g[i].name, g[j].name);
- /*MessageBox(NULL,error,windowName,MB_ICONEXCLAMATION|MB_OK);*/
- exit (1);
- }
-
- g[i].motored = (a[axle_index].motored = 1);
- g[i].direction = (a[axle_index].direction = -g[j].direction);
- a[axle_index].angular_velocity = g[j].angular_velocity * g[j].teeth / g[i].teeth;
- g[i].angular_velocity = (a[axle_index].angular_velocity *= g[j].radius / g[i].radius);
-
- }
- }
- }
-
- if (!(strcmp (g[i].type, g[j].type)) && (!(strcmp (g[i].type, "BEVEL"))) && ((strcmp (g[i].axle_name, g[j].axle_name) != 0)) && (g[i].axis != g[j].axis))
- {
- D = sqrt (pow (g[i].position[0] - g[j].position[0], 2) + pow (g[i].position[1] - g[j].position[1], 2) + pow (g[i].position[2] - g[j].position[2], 2));
- if ((g[i].motored) && (!(g[j].motored)) && (D < 0.95 * sqrt (g[i].radius * g[i].radius + g[j].radius * g[j].radius)))
- {
- axle_index = axle_find (g[j].axle_name);
- if ((a[axle_index].direction != 0) && (g[j].angular_velocity != g[i].angular_velocity * g[i].teeth / g[j].teeth * g[i].radius / g[j].radius))
- {
- printf (error, "Error in tooth linkage of gears %s and %s.", g[i].name, g[j].name);
- /*MessageBox(NULL,error,windowName,MB_ICONEXCLAMATION|MB_OK);*/
- exit (1);
- }
- g[j].motored = (a[axle_index].motored = 1);
- g[j].direction = (a[axle_index].direction = -g[i].direction);
- a[axle_index].angular_velocity = g[i].angular_velocity * g[i].teeth / g[j].teeth;
- g[j].angular_velocity = (a[axle_index].angular_velocity *= g[i].radius / g[j].radius);
- }
-
-
- if ((!(g[i].motored)) && (g[j].motored) && (D < 0.95 * sqrt (g[i].radius * g[i].radius + g[j].radius * g[j].radius)))
- {
- axle_index = axle_find (g[i].axle_name);
- if ((a[axle_index].direction != 0) && (g[i].angular_velocity != g[j].angular_velocity * g[j].teeth / g[i].teeth * g[j].radius / g[i].radius))
- {
- printf (error, "Error in tooth linkage of gears %s and %s.", g[i].name, g[j].name);
- /*MessageBox(NULL,error,windowName,MB_ICONEXCLAMATION|MB_OK);*/
- exit (1);
- }
- g[i].motored = (a[axle_index].motored = 1);
- g[i].direction = (a[axle_index].direction = -g[j].direction);
- a[axle_index].angular_velocity = g[j].angular_velocity * g[j].teeth / g[i].teeth;
- g[i].angular_velocity = (a[axle_index].angular_velocity *= g[j].radius / g[i].radius);
- }
- }
- }
- }
-
- for (i = 0; i < number_of_gears; i++)
- {
- axle_index = axle_find (g[i].axle_name);
- g[i].motored = a[axle_index].motored;
- if (a[axle_index].motored)
- {
- g[i].direction = a[axle_index].direction;
- g[i].angular_velocity = a[axle_index].angular_velocity;
- }
- }
-
- for (i = 0; i < number_of_belts; i++)
- {
- g1 = gear_find (b[i].gear1_name);
- g2 = gear_find (b[i].gear2_name);
- D = sqrt (pow (g[g1].position[0] - g[g2].position[0], 2) + pow (g[g1].position[1] - g[g2].position[1], 2) + pow (g[g1].position[2] - g[g2].position[2], 2));
- if (!((g[g1].axis == g[g2].axis) && (!strcmp (g[g1].type, g[g2].type)) && (!strcmp (g[g1].type, "NORMAL"))))
- {
- printf (error, "Belt %s invalid.", b[i].name);
- /*MessageBox(NULL,error,windowName,MB_ICONEXCLAMATION|MB_OK);*/
- exit (1);
- }
-
- if ((g[g1].axis == g[g2].axis) && (!strcmp (g[g1].type, g[g2].type)) && (!strcmp (g[g1].type, "NORMAL")))
- {
- /*
- if((g[g1].motored)&&(g[g2].motored))
- if(g[g2].angular_velocity!=(g[g1].angular_velocity*g[g1].radius/g[g2].radius))
- {
- printf(error,"Error in belt linkage of gears %s and %s".,g[g1].name,g[g2].name);
- MessageBox(NULL,error,windowName,MB_ICONEXCLAMATION|MB_OK);
- exit(1);
- }
- */
- if (g[g1].axis == 0)
- {
- dist = g[g1].position[0] - g[g2].position[0];
- }
- else if (g[i].axis == 1)
- {
- dist = g[g1].position[1] - g[g2].position[1];
- }
- else
- dist = g[g1].position[2] - g[g2].position[2];
-
- dist = fabs (dist);
-
- if (dist > (g[g1].width / 2 + g[g2].width / 2))
- {
- printf (error, "Belt %s invalid.", b[i].name);
- /*MessageBox(NULL,error,windowName,MB_ICONEXCLAMATION|MB_OK);*/
- exit (1);
- }
-
- if (dist < (g[g1].width / 2 + g[g2].width / 2))
- {
- if (D < g[g1].radius + g[g2].radius)
- {
- printf (error, "Gears %s and %s too close to be linked with belts", g[g1].name, g[g2].name);
- /*MessageBox(NULL,error,windowName,MB_ICONEXCLAMATION|MB_OK);*/
- exit (1);
- }
-
- if ((g[g1].motored) && (!(g[g2].motored)))
- {
- axle_index = axle_find (g[g2].axle_name);
- g[g2].motored = (a[axle_index].motored = 1);
- g[g2].direction = (a[axle_index].direction = g[g1].direction);
- g[g2].angular_velocity = (a[axle_index].angular_velocity = g[g1].angular_velocity * g[g1].radius / g[g2].radius);
- }
-
- if ((!(g[g1].motored)) && (g[g2].motored))
- {
- axle_index = axle_find (g[g1].axle_name);
- g[g1].motored = (a[axle_index].motored = 1);
- g[g1].direction = (a[axle_index].direction = g[g2].direction);
- g[g1].angular_velocity = (a[axle_index].angular_velocity = g[g2].angular_velocity * g[g2].radius / g[g1].radius);
- }
- }
- }
- }
-
- for (i = 0; i < number_of_gears; i++)
- {
- axle_index = axle_find (g[i].axle_name);
- g[i].motored = a[axle_index].motored;
- if (a[axle_index].motored)
- {
- g[i].direction = a[axle_index].direction;
- g[i].angular_velocity = a[axle_index].angular_velocity;
- }
- }
- }
-}
-
-
-
-GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 10.0;
-
-
-static void
-draw (void)
-{
- int i;
- GLfloat x, y, z;
- int index;
-
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glPushMatrix ();
- glRotatef (view_rotx, 1.0, 0.0, 0.0);
- glRotatef (view_roty, 0.0, 1.0, 0.0);
- glRotatef (view_rotz, 0.0, 0.0, 1.0);
-
- for (i = 0; i < number_of_gears; i++)
- {
- x = 0.0;
- y = 0.0;
- z = 0.0;
- glPushMatrix ();
-/*glTranslatef( -3.0, -2.0, 0.0 );*/
- glTranslatef (g[i].position[0], g[i].position[1], g[i].position[2]);
- if (g[i].axis == 0)
- y = 1.0;
- else if (g[i].axis == 1)
- x = 1.0;
- else
- z = 1.0;
-
- if (z != 1.0)
- glRotatef (90.0, x, y, z);
-
- glRotatef (g[i].direction * g[i].angle, 0.0, 0.0, 1.0);
- glCallList (g[i].id);
- glPopMatrix ();
- }
-
- for (i = 0; i < number_of_axles; i++)
- {
- x = 0.0;
- y = 0.0;
- z = 0.0;
- glPushMatrix ();
- glTranslatef (a[i].position[0], a[i].position[1], a[i].position[2]);
- if (a[i].axis == 0)
- y = 1.0;
- else if (a[i].axis == 1)
- x = 1.0;
- else
- z = 1.0;
-
- if (z != 1.0)
- glRotatef (90.0, x, y, z);
-
- glCallList (a[i].id);
- glPopMatrix ();
- }
-
- for (i = 0; i < number_of_belts; i++)
- {
- x = 0.0;
- y = 0.0;
- z = 0.0;
- glPushMatrix ();
- index = gear_find (b[i].gear1_name);
- glTranslatef (g[index].position[0], g[index].position[1], g[index].position[2]);
- if (g[index].axis == 0)
- y = 1.0;
- else if (g[index].axis == 1)
- x = 1.0;
- else
- z = 1.0;
-
- if (z != 1.0)
- glRotatef (90.0, x, y, z);
-
- glCallList (b[i].id);
- glPopMatrix ();
- }
-
- glPopMatrix ();
- glutSwapBuffers ();
-
- {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- Frames++;
- if (t - T0 >= 5000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- printf("%d frames in %g seconds = %g FPS\n", Frames, seconds, fps);
- fflush(stdout);
- T0 = t;
- Frames = 0;
- }
- }
-}
-
-
-static void
-idle (void)
-{
- int i;
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
- for (i = 0; i < number_of_gears; i++)
- g[i].angle += g[i].angular_velocity * dt;
- glutPostRedisplay();
-}
-
-
-
-
-/* change view angle, exit upon ESC */
-static void
-key (unsigned char k, int x, int y)
-{
- switch (k)
- {
- case 'x':
- view_rotx += 5.0;
- break;
- case 'X':
- view_rotx -= 5.0;
- break;
- case 'y':
- view_roty += 5.0;
- break;
- case 'Y':
- view_roty -= 5.0;
- break;
- case 'z':
- view_rotz += 5.0;
- break;
- case 'Z':
- view_rotz -= 5.0;
- break;
- case 0x1B:
- exit(0);
- }
-}
-
-
-
-
-/* new window size or exposure */
-static void
-reshape (int width, int height)
-{
- glViewport (0, 0, (GLint) width, (GLint) height);
- glMatrixMode (GL_PROJECTION);
- glLoadIdentity ();
- if (width > height)
- {
- GLfloat w = (GLfloat) width / (GLfloat) height;
- glFrustum (-w, w, -1.0, 1.0, 5.0, 60.0);
- }
- else
- {
- GLfloat h = (GLfloat) height / (GLfloat) width;
- glFrustum (-1.0, 1.0, -h, h, 5.0, 60.0);
- }
-
- glMatrixMode (GL_MODELVIEW);
- glLoadIdentity ();
- glTranslatef (0.0, 0.0, -40.0);
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-}
-
-
-
-static void
-init (void)
-{
- GLfloat matShine = 20.00F;
- GLfloat light0Pos[4] =
- {
- 0.70F, 0.70F, 1.25F, 0.50F
- };
- int i;
-
- glClearColor (background[0], background[1], background[2], 1.0F);
- glClearIndex ((GLfloat) 0.0);
-
- glMaterialf (GL_FRONT_AND_BACK, GL_SHININESS, matShine);
- glLightfv (GL_LIGHT0, GL_POSITION, light0Pos);
- glEnable (GL_LIGHT0);
-
- glEnable (GL_LIGHTING);
- glEnable (GL_DEPTH_TEST);
- for (i = 0; i < number_of_gears; i++)
- g[i].angle = 0.0;
-
- for (i = 0; i < number_of_gears; i++)
- {
- g[i].id = glGenLists (1);
- glNewList (g[i].id, GL_COMPILE);
- glColor3fv (g[i].color);
- glMaterialfv (GL_FRONT, GL_SPECULAR, g[i].color);
- gear (i, g[i].type, g[i].radius, g[i].width, g[i].teeth, g[i].tooth_depth);
- glEndList ();
- }
-
- for (i = 0; i < number_of_axles; i++)
- {
- a[i].id = glGenLists (1);
- glNewList (a[i].id, GL_COMPILE);
- glColor3fv (a[i].color);
- glMaterialfv (GL_FRONT, GL_SPECULAR, a[i].color);
- axle (i, a[i].radius, a[i].length);
- glEndList ();
- }
-
- for (i = 0; i < number_of_belts; i++)
- {
- b[i].id = glGenLists (1);
- glNewList (b[i].id, GL_COMPILE);
- belt (g[gear_find (b[i].gear1_name)], g[gear_find (b[i].gear2_name)]);
- glEndList ();
- }
-
- glEnable (GL_COLOR_MATERIAL);
-}
-
-
-
-int
-main (int argc, char *argv[])
-{
- char *file;
-
- glutInitWindowSize(640,480);
- glutInit(&argc, argv);
- glutInitDisplayMode (GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE );
-
- if (glutCreateWindow ("Gear Train Simulation") == GL_FALSE)
- exit (1);
-
- if (argc < 2)
- file = "geartrain.dat";
- else
- file = argv[1];
-
- getdata (file);
- process ();
- init ();
-
- glutDisplayFunc (draw);
- glutReshapeFunc (reshape);
- glutKeyboardFunc (key);
- glutIdleFunc (idle);
- glutMainLoop ();
- return 0;
-}
diff --git a/progs/demos/geartrain.dat b/progs/demos/geartrain.dat
deleted file mode 100644
index 09fe4c64c2..0000000000
--- a/progs/demos/geartrain.dat
+++ /dev/null
@@ -1,119 +0,0 @@
-BACKGROUND = 0.000 0.500 0.700
-
-ANAME = AXLE1
-ARADIUS = 1.000
-AAXIS = 2
-APOSITION = -7.000 0.000 0.000
-ACOLOR = 0.800 0.500 0.200
-ALENGTH = 6.000
-AMOTORED = 1
-AANGULARVELOCITY = 90.000
-ADIRECTION = 1
-
-ANAME = AXLE2
-ARADIUS = 1.000
-AAXIS = 2
-APOSITION = -3.000 0.000 0.000
-ACOLOR = 0.800 0.500 0.200
-ALENGTH = 12.000
-AMOTORED = 0
-
-ANAME = AXLE3
-ARADIUS = 1.000
-AAXIS = 2
-APOSITION = 1.000 0.000 0.000
-ACOLOR = 0.800 0.500 0.200
-ALENGTH = 6.000
-AMOTORED = 0
-
-ANAME = AXLE4
-ARADIUS = 1.000
-AAXIS = 2
-APOSITION = 8.000 0.000 0.000
-ACOLOR = 0.800 0.500 0.200
-ALENGTH = 18.000
-AMOTORED = 0
-
-ANAME = AXLE5
-ARADIUS = 1.000
-AAXIS = 1
-APOSITION = 8.000 -8.200 -7.400
-ACOLOR = 0.800 0.500 0.200
-ALENGTH = 12.000
-AMOTORED = 0
-
-GNAME = GEAR1
-GTYPE = NORMAL
-GRADIUS = 2.200
-GWIDTH = 3.000
-GTEETH = 40
-GTOOTHDEPTH = 0.500
-GCOLOR = 0.500 0.500 0.500
-GAXLE = AXLE1
-GPOSITION = 0.000
-
-GNAME = GEAR2
-GTYPE = NORMAL
-GRADIUS = 2.200
-GWIDTH = 3.000
-GTEETH = 30
-GTOOTHDEPTH = 0.500
-GCOLOR = 0.500 0.500 0.500
-GAXLE = AXLE2
-GPOSITION = 0.000
-
-GNAME = GEAR3
-GTYPE = NORMAL
-GRADIUS = 2.200
-GWIDTH = 3.000
-GTEETH = 20
-GTOOTHDEPTH = 0.500
-GCOLOR = 0.500 0.500 0.500
-GAXLE = AXLE3
-GPOSITION = 0.000
-
-GNAME = GEAR4
-GTYPE = NORMAL
-GRADIUS = 1.700
-GWIDTH = 1.000
-GTEETH = 20
-GTOOTHDEPTH = 0.500
-GCOLOR = 0.500 0.500 0.500
-GAXLE = AXLE2
-GPOSITION = 5.000
-
-GNAME = GEAR5
-GTYPE = NORMAL
-GRADIUS = 3.000
-GWIDTH = 1.000
-GTEETH = 20
-GTOOTHDEPTH = 0.500
-GCOLOR = 0.500 0.500 0.500
-GAXLE = AXLE4
-GPOSITION = 5.000
-
-GNAME = GEAR6
-GTYPE = BEVEL
-GFACE = 0
-GRADIUS = 4.000
-GWIDTH = 1.000
-GTEETH = 20
-GTOOTHDEPTH = 1.700
-GCOLOR = 0.500 0.500 0.500
-GAXLE = AXLE4
-GPOSITION = -4.000
-
-GNAME = GEAR7
-GTYPE = BEVEL
-GFACE = 0
-GRADIUS = 4.000
-GWIDTH = 1.000
-GTEETH = 20
-GTOOTHDEPTH = 1.700
-GCOLOR = 0.500 0.500 0.500
-GAXLE = AXLE5
-GPOSITION = 5.000
-
-BELTNAME = BELT1
-GEAR1NAME = GEAR5
-GEAR2NAME = GEAR4
diff --git a/progs/demos/glinfo.c b/progs/demos/glinfo.c
deleted file mode 100644
index a6a7478288..0000000000
--- a/progs/demos/glinfo.c
+++ /dev/null
@@ -1,32 +0,0 @@
-
-/*
- * Print GL, GLU and GLUT version and extension info
- *
- * Brian Paul This file in public domain.
- * October 3, 1997
- */
-
-
-#include <stdio.h>
-#include <GL/glut.h>
-
-
-int main( int argc, char *argv[] )
-{
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_RGB );
- glutCreateWindow(argv[0]);
-
- printf("GL_VERSION: %s\n", (char *) glGetString(GL_VERSION));
- printf("GL_EXTENSIONS: %s\n", (char *) glGetString(GL_EXTENSIONS));
- printf("GL_RENDERER: %s\n", (char *) glGetString(GL_RENDERER));
- printf("GL_VENDOR: %s\n", (char *) glGetString(GL_VENDOR));
- printf("GLU_VERSION: %s\n", (char *) gluGetString(GLU_VERSION));
- printf("GLU_EXTENSIONS: %s\n", (char *) gluGetString(GLU_EXTENSIONS));
- printf("GLUT_API_VERSION: %d\n", GLUT_API_VERSION);
-#ifdef GLUT_XLIB_IMPLEMENTATION
- printf("GLUT_XLIB_IMPLEMENTATION: %d\n", GLUT_XLIB_IMPLEMENTATION);
-#endif
-
- return 0;
-}
diff --git a/progs/demos/gloss.c b/progs/demos/gloss.c
deleted file mode 100644
index ddfd548b8b..0000000000
--- a/progs/demos/gloss.c
+++ /dev/null
@@ -1,475 +0,0 @@
-
-/*
- * Specular reflection demo. The specular highlight is modulated by
- * a sphere-mapped texture. The result is a high-gloss surface.
- * NOTE: you really need hardware acceleration for this.
- * Also note, this technique can't be implemented with multi-texture
- * and separate specular color interpolation because there's no way
- * to indicate that the second texture unit (the reflection map)
- * should modulate the specular color and not the base color.
- * A future multi-texture extension could fix that.
- *
- * Command line options:
- * -info print GL implementation information
- *
- *
- * Brian Paul October 22, 1999 This program is in the public domain.
- */
-
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-#include <GL/glew.h>
-#include <GL/glut.h>
-
-#include "readtex.h"
-#include "trackball.h"
-
-
-#define SPECULAR_TEXTURE_FILE "../images/reflect.rgb"
-#define BASE_TEXTURE_FILE "../images/tile.rgb"
-
-/* Menu items */
-#define DO_SPEC_TEXTURE 1
-#define OBJECT 2
-#define ANIMATE 3
-#define QUIT 100
-
-/* for convolution */
-#define FILTER_SIZE 7
-
-static GLint Win;
-static GLint WinWidth = 500, WinHeight = 500;
-static GLuint CylinderObj = 0;
-static GLuint TeapotObj = 0;
-static GLuint Object = 0;
-static GLboolean Animate = GL_TRUE;
-
-static float CurQuat[4] = { 0, 0, 0, 1 };
-
-static GLfloat Black[4] = { 0, 0, 0, 0 };
-static GLfloat White[4] = { 1, 1, 1, 1 };
-static GLfloat Diffuse[4] = { .3, .3, 1.0, 1.0 }; /* blue */
-static GLfloat Shininess = 6;
-
-static GLuint BaseTexture, SpecularTexture;
-static GLboolean DoSpecTexture = GL_TRUE;
-
-static GLboolean ButtonDown = GL_FALSE;
-static GLint ButtonX, ButtonY;
-
-
-/* performance info */
-static GLint T0 = 0;
-static GLint Frames = 0;
-
-
-static void Idle( void )
-{
- static const float yAxis[3] = {0, 1, 0};
- static double t0 = -1.;
- float quat[4];
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
-
- axis_to_quat(yAxis, 2.0 * dt, quat);
- add_quats(quat, CurQuat, CurQuat);
-
- glutPostRedisplay();
-}
-
-
-static void Display( void )
-{
- GLfloat rot[4][4];
-
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
-
- glPushMatrix();
- build_rotmatrix(rot, CurQuat);
- glMultMatrixf(&rot[0][0]);
-
- /* First pass: diffuse lighting with base texture */
- glMaterialfv(GL_FRONT, GL_DIFFUSE, Diffuse);
- glMaterialfv(GL_FRONT, GL_SPECULAR, Black);
- glEnable(GL_TEXTURE_2D);
- glBindTexture(GL_TEXTURE_2D, BaseTexture);
- glCallList(Object);
-
- /* Second pass: specular lighting with reflection texture */
- glEnable(GL_POLYGON_OFFSET_FILL);
- glBlendFunc(GL_ONE, GL_ONE); /* add */
- glEnable(GL_BLEND);
- glMaterialfv(GL_FRONT, GL_DIFFUSE, Black);
- glMaterialfv(GL_FRONT, GL_SPECULAR, White);
- if (DoSpecTexture) {
- glBindTexture(GL_TEXTURE_2D, SpecularTexture);
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- }
- else {
- glDisable(GL_TEXTURE_2D);
- }
- glCallList(Object);
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- glDisable(GL_BLEND);
- glDisable(GL_POLYGON_OFFSET_FILL);
-
- glPopMatrix();
-
- glutSwapBuffers();
-
- if (Animate) {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- Frames++;
- if (t - T0 >= 5000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- printf("%d frames in %g seconds = %g FPS\n", Frames, seconds, fps);
- fflush(stdout);
- T0 = t;
- Frames = 0;
- }
- }
-}
-
-
-static void Reshape( int width, int height )
-{
- GLfloat h = 30.0;
- GLfloat w = h * width / height;
- WinWidth = width;
- WinHeight = height;
- glViewport( 0, 0, width, height );
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glFrustum( -w, w, -h, h, 150.0, 500.0 );
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
- glTranslatef( 0.0, 0.0, -380.0 );
-}
-
-
-static void ToggleAnimate(void)
-{
- Animate = !Animate;
- if (Animate) {
- glutIdleFunc( Idle );
- T0 = glutGet(GLUT_ELAPSED_TIME);
- Frames = 0;
- }
- else {
- glutIdleFunc( NULL );
- }
-}
-
-
-static void ModeMenu(int entry)
-{
- if (entry==ANIMATE) {
- ToggleAnimate();
- }
- else if (entry==DO_SPEC_TEXTURE) {
- DoSpecTexture = !DoSpecTexture;
- }
- else if (entry==OBJECT) {
- if (Object == TeapotObj)
- Object = CylinderObj;
- else
- Object = TeapotObj;
- }
- else if (entry==QUIT) {
- exit(0);
- }
- glutPostRedisplay();
-}
-
-
-static void Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case 's':
- Shininess--;
- if (Shininess < 0.0)
- Shininess = 0.0;
- glMaterialf(GL_FRONT, GL_SHININESS, Shininess);
- printf("Shininess = %g\n", Shininess);
- break;
- case 'S':
- Shininess++;
- if (Shininess > 128.0)
- Shininess = 128.0;
- glMaterialf(GL_FRONT, GL_SHININESS, Shininess);
- printf("Shininess = %g\n", Shininess);
- break;
- case 'a':
- case ' ':
- ToggleAnimate();
- break;
- case 'n':
- Idle();
- break;
- case 27:
- glutDestroyWindow(Win);
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void
-MouseMotion(int x, int y)
-{
- if (ButtonDown) {
- float x0 = (2.0 * ButtonX - WinWidth) / WinWidth;
- float y0 = (WinHeight - 2.0 * ButtonY) / WinHeight;
- float x1 = (2.0 * x - WinWidth) / WinWidth;
- float y1 = (WinHeight - 2.0 * y) / WinHeight;
- float q[4];
-
- trackball(q, x0, y0, x1, y1);
- ButtonX = x;
- ButtonY = y;
- add_quats(q, CurQuat, CurQuat);
-
- glutPostRedisplay();
- }
-}
-
-
-static void
-MouseButton(int button, int state, int x, int y)
-{
- if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
- ButtonDown = GL_TRUE;
- ButtonX = x;
- ButtonY = y;
- }
- else if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) {
- ButtonDown = GL_FALSE;
- }
-}
-
-
-static void Init( int argc, char *argv[] )
-{
- GLboolean convolve = GL_FALSE;
- GLboolean fullscreen = GL_FALSE;
- int i;
-
- for (i = 1; i < argc; i++) {
- if (strcmp(argv[i], "-info")==0) {
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
- printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
- printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR));
- printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS));
- }
- else if (strcmp(argv[i], "-c")==0) {
- convolve = GL_TRUE;
- }
- else if (strcmp(argv[i], "-f")==0) {
- fullscreen = GL_TRUE;
- }
- }
-
- if (convolve && !glutExtensionSupported("GL_ARB_imaging")) {
- fprintf(stderr,
- "GL_ARB_imaging is not supported, disabling convolution.\n");
- exit(1);
- }
-
-
- if (fullscreen)
- glutFullScreen();
-
- /* Cylinder object */
- {
- static GLfloat height = 100.0;
- static GLfloat radius = 40.0;
- static GLint slices = 24; /* pie slices around Z axis */
- static GLint stacks = 10; /* subdivisions along length of cylinder */
- static GLint rings = 4; /* rings in the end disks */
- GLUquadricObj *q = gluNewQuadric();
- assert(q);
- gluQuadricTexture(q, GL_TRUE);
-
- CylinderObj = glGenLists(1);
- glNewList(CylinderObj, GL_COMPILE);
-
- glPushMatrix();
- glTranslatef(0.0, 0.0, -0.5 * height);
-
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- /*glScalef(8.0, 4.0, 2.0);*/
- glMatrixMode(GL_MODELVIEW);
-
- /* cylinder */
- gluQuadricNormals(q, GL_SMOOTH);
- gluQuadricTexture(q, GL_TRUE);
- gluCylinder(q, radius, radius, height, slices, stacks);
-
- /* end cap */
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glScalef(3.0, 3.0, 1.0);
- glMatrixMode(GL_MODELVIEW);
-
- glTranslatef(0.0, 0.0, height);
- gluDisk(q, 0.0, radius, slices, rings);
-
- /* other end cap */
- glTranslatef(0.0, 0.0, -height);
- gluQuadricOrientation(q, GLU_INSIDE);
- gluDisk(q, 0.0, radius, slices, rings);
-
- glPopMatrix();
-
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
-
- glEndList();
- gluDeleteQuadric(q);
- }
-
- /* Teapot */
- {
- TeapotObj = glGenLists(1);
- glNewList(TeapotObj, GL_COMPILE);
-
- glFrontFace(GL_CW);
- glutSolidTeapot(40.0);
- glFrontFace(GL_CCW);
-
- glEndList();
- }
-
- /* show cylinder by default */
- Object = CylinderObj;
-
-
- /* lighting */
- glEnable(GL_LIGHTING);
- {
- GLfloat pos[4] = { 3, 3, 3, 1 };
- glLightfv(GL_LIGHT0, GL_AMBIENT, Black);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, White);
- glLightfv(GL_LIGHT0, GL_SPECULAR, White);
- glLightfv(GL_LIGHT0, GL_POSITION, pos);
- glEnable(GL_LIGHT0);
- glMaterialfv(GL_FRONT, GL_AMBIENT, Black);
- glMaterialf(GL_FRONT, GL_SHININESS, Shininess);
- glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, 1);
- }
-
- /* Base texture */
- glGenTextures(1, &BaseTexture);
- glBindTexture(GL_TEXTURE_2D, BaseTexture);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- if (!LoadRGBMipmaps(BASE_TEXTURE_FILE, GL_RGB)) {
- printf("Error: couldn't load texture image file %s\n", BASE_TEXTURE_FILE);
- exit(1);
- }
-
- /* Specular texture */
- glGenTextures(1, &SpecularTexture);
- glBindTexture(GL_TEXTURE_2D, SpecularTexture);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
- if (convolve) {
- /* use convolution to blur the texture to simulate a dull finish
- * on the object.
- */
- GLubyte *img;
- GLenum format;
- GLint w, h;
- GLfloat filter[FILTER_SIZE][FILTER_SIZE][4];
-
- for (h = 0; h < FILTER_SIZE; h++) {
- for (w = 0; w < FILTER_SIZE; w++) {
- const GLfloat k = 1.0 / (FILTER_SIZE * FILTER_SIZE);
- filter[h][w][0] = k;
- filter[h][w][1] = k;
- filter[h][w][2] = k;
- filter[h][w][3] = k;
- }
- }
-
- glEnable(GL_CONVOLUTION_2D);
- glConvolutionParameteri(GL_CONVOLUTION_2D,
- GL_CONVOLUTION_BORDER_MODE, GL_CONSTANT_BORDER);
- glConvolutionFilter2D(GL_CONVOLUTION_2D, GL_RGBA,
- FILTER_SIZE, FILTER_SIZE,
- GL_RGBA, GL_FLOAT, filter);
-
- img = LoadRGBImage(SPECULAR_TEXTURE_FILE, &w, &h, &format);
- if (!img) {
- printf("Error: couldn't load texture image file %s\n",
- SPECULAR_TEXTURE_FILE);
- exit(1);
- }
-
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, w, h, 0,
- format, GL_UNSIGNED_BYTE, img);
- free(img);
- }
- else {
- /* regular path */
- if (!LoadRGBMipmaps(SPECULAR_TEXTURE_FILE, GL_RGB)) {
- printf("Error: couldn't load texture image file %s\n",
- SPECULAR_TEXTURE_FILE);
- exit(1);
- }
- }
-
- /* misc */
- glEnable(GL_CULL_FACE);
- glEnable(GL_TEXTURE_2D);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_NORMALIZE);
-
- glPolygonOffset( -1, -1 );
-}
-
-
-int main( int argc, char *argv[] )
-{
- glutInitWindowSize(WinWidth, WinHeight);
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
- Win = glutCreateWindow(argv[0] );
- glewInit();
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutDisplayFunc( Display );
- glutMotionFunc(MouseMotion);
- glutMouseFunc(MouseButton);
- if (Animate)
- glutIdleFunc( Idle );
-
- glutCreateMenu(ModeMenu);
- glutAddMenuEntry("Toggle Highlight", DO_SPEC_TEXTURE);
- glutAddMenuEntry("Toggle Object", OBJECT);
- glutAddMenuEntry("Toggle Animate", ANIMATE);
- glutAddMenuEntry("Quit", QUIT);
- glutAttachMenu(GLUT_RIGHT_BUTTON);
-
- Init(argc, argv);
-
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/gltestperf.c b/progs/demos/gltestperf.c
deleted file mode 100644
index 3658a39598..0000000000
--- a/progs/demos/gltestperf.c
+++ /dev/null
@@ -1,580 +0,0 @@
-/*
- * This program is under the GNU GPL.
- * Use at your own risk.
- *
- * written by David Bucciarelli (tech.hmw@plus.it)
- * Humanware s.r.l.
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include <GL/glut.h>
-
-typedef struct
-{
- char *name;
- char *unit;
- void (*init) (void);
- int (*run) (int, int);
- int type;
- int numsize;
- int size[10];
-}
-benchmark;
-
-static int frontbuffer = 1;
-
-/***************************************************************************/
-
-static void
-init_test01(void)
-{
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluOrtho2D(-0.5, 639.5, -0.5, 479.5);
- glMatrixMode(GL_MODELVIEW);
-
- glShadeModel(GL_FLAT);
- glDisable(GL_DEPTH_TEST);
-
- glClearColor(0.0, 0.1, 1.0, 0.0);
- glClear(GL_COLOR_BUFFER_BIT);
- glColor3f(1.0, 0.0, 0.0);
-}
-
-static int
-test01(int size, int num)
-{
- int x, y;
-
- glBegin(GL_POINTS);
- for (y = 0; y < num; y++)
- for (x = 0; x < 480; x++)
- glVertex2i(x, x);
- glEnd();
-
- return 480 * num;
-}
-
-/***************************************************************************/
-
-static void
-init_test02(void)
-{
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluOrtho2D(-0.5, 639.5, -0.5, 479.5);
- glMatrixMode(GL_MODELVIEW);
-
- glShadeModel(GL_SMOOTH);
- glDisable(GL_DEPTH_TEST);
-
- glClearColor(0.0, 0.1, 1.0, 0.0);
- glClear(GL_COLOR_BUFFER_BIT);
-}
-
-static int
-test02(int size, int num)
-{
- int x, y;
-
- glBegin(GL_LINES);
- for (y = 0; y < num; y++)
- for (x = 0; x < size; x++) {
- glColor3f(0.0, 1.0, y / (float) num);
- glVertex2i(0, size - 1);
- glColor3f(1.0, 0.0, x / (float) size);
- glVertex2i(x, x);
- }
- glEnd();
-
- return num * size;
-}
-
-/***************************************************************************/
-
-static void
-init_test03(void)
-{
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-0.5, 639.5, -0.5, 479.5, 1.0, -1000.0 * 480.0);
- glMatrixMode(GL_MODELVIEW);
-
- glShadeModel(GL_SMOOTH);
- glEnable(GL_DEPTH_TEST);
-
- glClearColor(0.0, 0.1, 1.0, 0.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-}
-
-static int
-test03(int size, int num)
-{
- int x, y, z;
-
- glBegin(GL_TRIANGLES);
- for (y = 0; y < num; y++)
- for (x = 0; x < size; x += 5) {
- z = num * size - (y * size + x);
- glColor3f(0.0, 1.0, 0.0);
- glVertex3i(0, x, z);
-
- glColor3f(1.0, 0.0, x / (float) size);
- glVertex3i(size - 1 - x, 0, z);
-
- glColor3f(1.0, x / (float) size, 0.0);
- glVertex3i(x, size - 1 - x, z);
- }
- glEnd();
-
- return size * num / 5;
-}
-
-/***************************************************************************/
-
-static void
-init_test04(void)
-{
- int x, y;
- GLubyte tex[128 * 128 * 3];
- GLenum gluerr;
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-0.5, 639.5, -0.5, 479.5, 1.0, -1000.0 * 480.0);
-
- glMatrixMode(GL_MODELVIEW);
-
- glShadeModel(GL_SMOOTH);
- glEnable(GL_DEPTH_TEST);
-
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- for (y = 0; y < 128; y++)
- for (x = 0; x < 128; x++) {
- tex[(x + y * 128) * 3 + 0] = ((x % (128 / 4)) < (128 / 8)) ? 255 : 0;
- tex[(x + y * 128) * 3 + 1] = ((y % (128 / 4)) < (128 / 8)) ? 255 : 0;
- tex[(x + y * 128) * 3 + 2] = x;
- }
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- if ((gluerr = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 128, 128, GL_RGB,
- GL_UNSIGNED_BYTE, (GLvoid *) (&tex[0])))) {
- fprintf(stderr, "GLULib%s\n", (char *) gluErrorString(gluerr));
- exit(-1);
- }
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_NEAREST);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
- glEnable(GL_TEXTURE_2D);
-
- glClearColor(0.0, 0.1, 1.0, 0.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-}
-
-static int
-test04(int size, int num)
-{
- int x, y, z;
-
- glBegin(GL_TRIANGLES);
- for (y = 0; y < num; y++)
- for (x = 0; x < size; x += 5) {
- z = num * size - (y * size + x);
- glTexCoord2f(1.0, 1.0);
- glColor3f(1.0, 0.0, 0.0);
- glVertex3i(0, x, z);
-
- glTexCoord2f(0.0, 1.0);
- glColor3f(0.0, 1.0, 0.0);
- glVertex3i(size - 1 - x, 0, z);
-
- glTexCoord2f(1.0, 0.0);
- glColor3f(0.0, 0.0, 1.0);
- glVertex3i(x, size - 1 - x, z);
- }
- glEnd();
-
- return num * size / 5;
-}
-
-/***************************************************************************/
-
-static void
-init_test05(void)
-{
- int x, y;
- GLubyte tex[128 * 128 * 3];
- GLenum gluerr;
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-0.5, 639.5, -0.5, 479.5, -1.0, 1.0);
-
- glMatrixMode(GL_MODELVIEW);
-
- glShadeModel(GL_SMOOTH);
- glEnable(GL_DEPTH_TEST);
-
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- for (y = 0; y < 128; y++)
- for (x = 0; x < 128; x++) {
- tex[(x + y * 128) * 3 + 0] = ((x % (128 / 4)) < (128 / 8)) ? 255 : 0;
- tex[(x + y * 128) * 3 + 1] = ((y % (128 / 4)) < (128 / 8)) ? 255 : 0;
- tex[(x + y * 128) * 3 + 2] = x;
- }
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- if ((gluerr = gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 128, 128, GL_RGB,
- GL_UNSIGNED_BYTE, (GLvoid *) (&tex[0])))) {
- fprintf(stderr, "GLULib%s\n", (char *) gluErrorString(gluerr));
- exit(-1);
- }
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_NEAREST);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
- glEnable(GL_TEXTURE_2D);
-
- glDepthFunc(GL_ALWAYS);
-
- glClearColor(0.0, 0.1, 1.0, 0.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-}
-
-static int
-test05(int size, int num)
-{
- int y;
- float v0[3], v1[3], v2[3], v3[3];
- float cv0[3], cv1[3], cv2[3], cv3[3];
- float tv0[3], tv1[3], tv2[3], tv3[3];
-
- v0[0] = 320 - size / 2;
- v0[1] = 240 - size / 2;
- v0[2] = 0.0;
- v1[0] = 320 + size / 2;
- v1[1] = 240 - size / 2;
- v1[2] = 0.0;
- v2[0] = 320 - size / 2;
- v2[1] = 240 + size / 2;
- v2[2] = 0.0;
- v3[0] = 320 + size / 2;
- v3[1] = 240 + size / 2;
- v3[2] = 0.0;
- cv0[0] = 1.0;
- cv0[1] = 0.0;
- cv0[2] = 0.0;
- cv1[0] = 1.0;
- cv1[1] = 1.0;
- cv1[2] = 0.0;
- cv2[0] = 1.0;
- cv2[1] = 0.0;
- cv2[2] = 1.0;
- cv3[0] = 1.0;
- cv3[1] = 1.0;
- cv3[2] = 1.0;
- tv0[0] = 0.0;
- tv0[1] = 0.0;
- tv0[2] = 0.0;
- tv1[0] = 1.0;
- tv1[1] = 0.0;
- tv1[2] = 0.0;
- tv2[0] = 0.0;
- tv2[1] = 1.0;
- tv2[2] = 0.0;
- tv3[0] = 1.0;
- tv3[1] = 1.0;
- tv3[2] = 0.0;
-
- glBegin(GL_TRIANGLE_STRIP);
- for (y = 0; y < num; y++) {
- glColor3fv(cv0);
- glTexCoord2fv(tv0);
- glVertex3fv(v0);
-
- glColor3fv(cv1);
- glTexCoord2fv(tv1);
- glVertex3fv(v1);
-
- glColor3fv(cv2);
- glTexCoord2fv(tv2);
- glVertex3fv(v2);
-
- glColor3fv(cv3);
- glTexCoord2fv(tv3);
- glVertex3fv(v3);
- }
- glEnd();
-
- return 4 * num - 2;
-}
-
-/***************************************************************************/
-
-static void
-init_test06(void)
-{
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluOrtho2D(-0.5, 639.5, -0.5, 479.5);
- glMatrixMode(GL_MODELVIEW);
-
- glShadeModel(GL_SMOOTH);
- glEnable(GL_DEPTH_TEST);
-
- glClearColor(0.0, 0.1, 1.0, 0.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-}
-
-static int
-test06(int size, int num)
-{
- int y;
-
- for (y = 0; y < num; y++) {
- glClearColor(y / (float) num, 0.1, 1.0, 0.0);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- }
-
- return num;
-}
-
-/***************************************************************************/
-
-#define BMARKS_TIME 5.0
-
-#define NUM_BMARKS 6
-
-/* 554 ~= sqrt(640*480) */
-
-static benchmark bmarks[NUM_BMARKS] = {
- {"Simple Points", "Pnts", init_test01, test01, 0, 0,
- {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}},
- {"Smooth Lines", "Lins", init_test02, test02, 1, 5,
- {480, 250, 100, 50, 25, 0, 0, 0, 0, 0}},
- {"ZSmooth Triangles", "Tris", init_test03, test03, 1, 5,
- {480, 250, 100, 50, 25, 0, 0, 0, 0, 0}},
- {"ZSmooth Tex Blend Triangles", "Tris", init_test04, test04, 1, 5,
- {480, 250, 100, 50, 25, 0, 0, 0, 0, 0}},
- {"ZSmooth Tex Blend TMesh Triangles", "Tris", init_test05, test05, 2, 8,
- {400, 250, 100, 50, 25, 10, 5, 2, 0, 0}},
- {"Color/Depth Buffer Clears", "Clrs", init_test06, test06, 3, 0,
- {554, 0, 0, 0, 0, 0, 0, 0, 0, 0}}
-};
-
-/***************************************************************************/
-
-static void
-dotest0param(benchmark * bmark)
-{
- float stime, etime, dtime, tottime, maxtime, mintime;
- int num, numelem, calibnum, j;
-
- glPushAttrib(GL_ALL_ATTRIB_BITS);
- bmark->init();
-
- stime = glutGet(GLUT_ELAPSED_TIME);
-
- dtime = 0.0;
- calibnum = 0;
- while (dtime < 2.0) {
- bmark->run(0, 1);
- glFinish();
- etime = glutGet(GLUT_ELAPSED_TIME);
- dtime = (etime - stime) / 1000.0;
- calibnum++;
- }
- glPopAttrib();
-
- fprintf(stderr, "Elapsed time for the calibration test (%d): %f\n",
- calibnum, dtime);
-
- num = (int) ((BMARKS_TIME / dtime) * calibnum);
-
- if (num < 1)
- num = 1;
-
- fprintf(stderr, "Selected number of benchmark iterations: %d\n", num);
-
- mintime = HUGE_VAL;
- maxtime = -HUGE_VAL;
-
- for (tottime = 0.0, j = 0; j < 5; j++) {
- glPushAttrib(GL_ALL_ATTRIB_BITS);
- bmark->init();
-
- stime = glutGet(GLUT_ELAPSED_TIME);
- numelem = bmark->run(0, num);
- glFinish();
- etime = glutGet(GLUT_ELAPSED_TIME);
-
- glPopAttrib();
-
- dtime = (etime - stime) / 1000.0;
- tottime += dtime;
-
- fprintf(stderr, "Elapsed time for run %d: %f\n", j, dtime);
-
- if (dtime < mintime)
- mintime = dtime;
- if (dtime > maxtime)
- maxtime = dtime;
- }
-
- tottime -= mintime + maxtime;
-
- fprintf(stdout, "%s\n%f %s/sec", bmark->name, numelem / (tottime / 3.0),
- bmark->unit);
-
- if (bmark->type == 3)
- fprintf(stdout, ", MPixel Fill/sec: %f\n\n",
- (numelem * bmark->size[0] * (float) bmark->size[0]) /
- (1000000.0 * tottime / 3.0));
- else
- fprintf(stdout, "\n\n");
-}
-
-/***************************************************************************/
-
-static void
-dotest1param(benchmark * bmark)
-{
- float stime, etime, dtime, tottime, maxtime, mintime;
- int num, numelem, calibnum, j, k;
-
- fprintf(stdout, "%s\n", bmark->name);
-
- for (j = 0; j < bmark->numsize; j++) {
- fprintf(stderr, "Current size: %d\n", bmark->size[j]);
-
- glPushAttrib(GL_ALL_ATTRIB_BITS);
- bmark->init();
-
- stime = glutGet(GLUT_ELAPSED_TIME);
-
- dtime = 0.0;
- calibnum = 0;
- while (dtime < 2.0) {
- bmark->run(bmark->size[j], 1);
- glFinish();
- etime = glutGet(GLUT_ELAPSED_TIME);
- dtime = (etime - stime) / 1000.0;
- calibnum++;
- }
- glPopAttrib();
-
- fprintf(stderr, "Elapsed time for the calibration test (%d): %f\n",
- calibnum, dtime);
-
- num = (int) ((BMARKS_TIME / dtime) * calibnum);
-
- if (num < 1)
- num = 1;
-
- fprintf(stderr, "Selected number of benchmark iterations: %d\n", num);
-
- mintime = HUGE_VAL;
- maxtime = -HUGE_VAL;
-
- for (numelem = 1, tottime = 0.0, k = 0; k < 5; k++) {
- glPushAttrib(GL_ALL_ATTRIB_BITS);
- bmark->init();
-
- stime = glutGet(GLUT_ELAPSED_TIME);
- numelem = bmark->run(bmark->size[j], num);
- glFinish();
- etime = glutGet(GLUT_ELAPSED_TIME);
-
- glPopAttrib();
-
- dtime = (etime - stime) / 1000.0;
- tottime += dtime;
-
- fprintf(stderr, "Elapsed time for run %d: %f\n", k, dtime);
-
- if (dtime < mintime)
- mintime = dtime;
- if (dtime > maxtime)
- maxtime = dtime;
- }
-
- tottime -= mintime + maxtime;
-
- fprintf(stdout, "SIZE=%03d => %f %s/sec", bmark->size[j],
- numelem / (tottime / 3.0), bmark->unit);
- if (bmark->type == 2)
- fprintf(stdout, ", MPixel Fill/sec: %f\n",
- (numelem * bmark->size[j] * bmark->size[j] / 2) /
- (1000000.0 * tottime / 3.0));
- else
- fprintf(stdout, "\n");
- }
-
- fprintf(stdout, "\n\n");
-}
-
-/***************************************************************************/
-
-static void
-display(void)
-{
- int i;
-
- if (frontbuffer)
- glDrawBuffer(GL_FRONT);
- else
- glDrawBuffer(GL_BACK);
-
- for (i = 0; i < NUM_BMARKS; i++) {
- fprintf(stderr, "Benchmark: %d\n", i);
-
- switch (bmarks[i].type) {
- case 0:
- case 3:
- dotest0param(&bmarks[i]);
- break;
- case 1:
- case 2:
- dotest1param(&bmarks[i]);
- break;
- }
- }
-
- exit(0);
-}
-
-int
-main(int ac, char **av)
-{
- fprintf(stderr, "GLTest v1.0\nWritten by David Bucciarelli\n");
-
- if (ac == 2)
- frontbuffer = 0;
-
- glutInitWindowSize(640, 480);
- glutInit(&ac, av);
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
- glutCreateWindow("OpenGL/Mesa Performances");
- glutDisplayFunc(display);
- glutMainLoop();
-
- return 0;
-}
diff --git a/progs/demos/ipers.c b/progs/demos/ipers.c
deleted file mode 100644
index 265378b90a..0000000000
--- a/progs/demos/ipers.c
+++ /dev/null
@@ -1,731 +0,0 @@
-/*
- * This program is under the GNU GPL.
- * Use at your own risk.
- *
- * written by David Bucciarelli (tech.hmw@plus.it)
- * Humanware s.r.l.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-
-#if defined (WIN32)|| defined(_WIN32)
-#include <windows.h>
-#include <mmsystem.h>
-#endif
-
-#include <GL/glut.h>
-
-#include "readtex.h"
-
-#ifdef XMESA
-#include "GL/xmesa.h"
-static int fullscreen = 1;
-#endif
-
-static int WIDTH = 640;
-static int HEIGHT = 480;
-
-static GLint T0;
-static GLint Frames;
-
-#define MAX_LOD 9
-
-#define TEX_SKY_WIDTH 256
-#define TEX_SKY_HEIGHT TEX_SKY_WIDTH
-
-#ifndef M_PI
-#define M_PI 3.1415926535
-#endif
-
-#define FROM_NONE 0
-#define FROM_DOWN 1
-#define FROM_UP 2
-#define FROM_LEFT 3
-#define FROM_RIGHT 4
-#define FROM_FRONT 5
-#define FROM_BACK 6
-
-static int win = 0;
-
-static float obs[3] = { 3.8, 0.0, 0.0 };
-static float dir[3];
-static float v = 0.0;
-static float alpha = -90.0;
-static float beta = 90.0;
-
-static int fog = 1;
-static int bfcull = 1;
-static int usetex = 1;
-static int help = 1;
-static int poutline = 0;
-static int normext = 1;
-static int joyavailable = 0;
-static int joyactive = 0;
-static int LODbias = 3;
-static int maxdepth = MAX_LOD;
-
-static unsigned int totpoly = 0;
-
-static GLuint t1id, t2id;
-static GLuint skydlist, LODdlist[MAX_LOD], LODnumpoly[MAX_LOD];
-
-static void
-initlight(void)
-{
- GLfloat lspec[4] = { 1.0, 1.0, 1.0, 1.0 };
- static GLfloat lightpos[4] = { 30, 15.0, 30.0, 1.0 };
-
- glLightfv(GL_LIGHT0, GL_POSITION, lightpos);
- glLightfv(GL_LIGHT0, GL_SPECULAR, lspec);
-
- glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 32.0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, lspec);
-}
-
-static void
-initdlists(void)
-{
- static int slicetable[MAX_LOD][2] = {
- {21, 10},
- {18, 9},
- {15, 8},
- {12, 7},
- {9, 6},
- {7, 5},
- {5, 4},
- {4, 3},
- {3, 2}
- };
- GLUquadricObj *obj;
- int i, xslices, yslices;
-
- obj = gluNewQuadric();
-
- skydlist = glGenLists(1);
- glNewList(skydlist, GL_COMPILE);
- glBindTexture(GL_TEXTURE_2D, t2id);
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
- glColor3f(1.0f, 1.0f, 1.0f);
-
- gluQuadricDrawStyle(obj, GLU_FILL);
- gluQuadricNormals(obj, GLU_NONE);
- gluQuadricTexture(obj, GL_TRUE);
- gluQuadricOrientation(obj, GLU_INSIDE);
- gluSphere(obj, 40.0f, 18, 9);
-
- glEndList();
-
- for (i = 0; i < MAX_LOD; i++) {
- LODdlist[i] = glGenLists(1);
- glNewList(LODdlist[i], GL_COMPILE);
-
- gluQuadricDrawStyle(obj, GLU_FILL);
- gluQuadricNormals(obj, GLU_SMOOTH);
- gluQuadricTexture(obj, GL_TRUE);
- gluQuadricOrientation(obj, GLU_OUTSIDE);
- xslices = slicetable[i][0];
- yslices = slicetable[i][1];
- gluSphere(obj, 1.0f, xslices, yslices);
- LODnumpoly[i] = xslices * (yslices - 2) + 2 * (xslices - 1);
-
- glEndList();
- }
-
- gluDeleteQuadric(obj);
-}
-
-static void
-inittextures(void)
-{
- GLubyte tsky[TEX_SKY_HEIGHT][TEX_SKY_WIDTH][3];
- GLuint x, y;
- GLfloat fact;
- GLenum gluerr;
-
- /* Brick */
-
- glGenTextures(1, &t1id);
- glBindTexture(GL_TEXTURE_2D, t1id);
-
- if (!LoadRGBMipmaps("../images/bw.rgb", 3)) {
- fprintf(stderr, "Error reading a texture.\n");
- exit(-1);
- }
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- /* Sky */
-
- glGenTextures(1, &t2id);
- glBindTexture(GL_TEXTURE_2D, t2id);
-
- for (y = 0; y < TEX_SKY_HEIGHT; y++)
- for (x = 0; x < TEX_SKY_WIDTH; x++)
- if (y < TEX_SKY_HEIGHT / 2) {
- fact = y / (GLfloat) (TEX_SKY_HEIGHT / 2);
- tsky[y][x][0] =
- (GLubyte) (255.0f * (0.1f * fact + 0.3f * (1.0f - fact)));
- tsky[y][x][1] =
- (GLubyte) (255.0f * (0.2f * fact + 1.0f * (1.0f - fact)));
- tsky[y][x][2] = 255;
- }
- else {
- tsky[y][x][0] = tsky[TEX_SKY_HEIGHT - y - 1][x][0];
- tsky[y][x][1] = tsky[TEX_SKY_HEIGHT - y - 1][x][1];
- tsky[y][x][2] = 255;
- }
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- if (
- (gluerr =
- gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TEX_SKY_WIDTH, TEX_SKY_HEIGHT,
- GL_RGB, GL_UNSIGNED_BYTE, (GLvoid *) (tsky)))) {
- fprintf(stderr, "GLULib%s\n", (char *) gluErrorString(gluerr));
- exit(-1);
- }
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-}
-
-static void
-calcposobs(void)
-{
- dir[0] = sin(alpha * M_PI / 180.0);
- dir[1] = cos(alpha * M_PI / 180.0) * sin(beta * M_PI / 180.0);
- dir[2] = cos(beta * M_PI / 180.0);
-
- if (dir[0] < 1.0e-5 && dir[0] > -1.0e-5)
- dir[0] = 0;
- if (dir[1] < 1.0e-5 && dir[1] > -1.0e-5)
- dir[1] = 0;
- if (dir[2] < 1.0e-5 && dir[2] > -1.0e-5)
- dir[2] = 0;
-
- obs[0] += v * dir[0];
- obs[1] += v * dir[1];
- obs[2] += v * dir[2];
-}
-
-static void
-special(int k, int x, int y)
-{
- switch (k) {
- case GLUT_KEY_LEFT:
- alpha -= 2.0;
- break;
- case GLUT_KEY_RIGHT:
- alpha += 2.0;
- break;
- case GLUT_KEY_DOWN:
- beta -= 2.0;
- break;
- case GLUT_KEY_UP:
- beta += 2.0;
- break;
- }
-}
-
-static void
-cleanup(void)
-{
- int i;
-
- glDeleteTextures(1, &t1id);
- glDeleteTextures(1, &t2id);
-
- glDeleteLists(skydlist, 1);
- for (i = 0; i < MAX_LOD; i++) {
- glDeleteLists(LODdlist[i], 1);
- glDeleteLists(LODnumpoly[i], 1);
- }
-}
-
-
-static void
-key(unsigned char k, int x, int y)
-{
- switch (k) {
- case 27:
- cleanup();
- exit(0);
- break;
-
- case 'a':
- v += 0.01;
- break;
- case 'z':
- v -= 0.01;
- break;
-
-#ifdef XMESA
- case ' ':
- fullscreen = (!fullscreen);
- XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW);
- break;
-#endif
-
- case '+':
- LODbias--;
- break;
- case '-':
- LODbias++;
- break;
- case 'j':
- joyactive = (!joyactive);
- break;
- case 'h':
- help = (!help);
- break;
- case 'f':
- fog = (!fog);
- break;
- case 't':
- usetex = (!usetex);
- break;
- case 'n':
- normext = (!normext);
- break;
- case 'b':
- if (bfcull) {
- glDisable(GL_CULL_FACE);
- bfcull = 0;
- }
- else {
- glEnable(GL_CULL_FACE);
- bfcull = 1;
- }
- break;
- case 'p':
- if (poutline) {
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- poutline = 0;
- usetex = 1;
- }
- else {
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- poutline = 1;
- usetex = 0;
- }
- break;
- }
-}
-
-static void
-reshape(int w, int h)
-{
- WIDTH = w;
- HEIGHT = h;
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(90.0, w / (float) h, 0.8, 100.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glViewport(0, 0, w, h);
-}
-
-static void
-printstring(void *font, char *string)
-{
- int len, i;
-
- len = (int) strlen(string);
- for (i = 0; i < len; i++)
- glutBitmapCharacter(font, string[i]);
-}
-
-static void
-printhelp(void)
-{
- glEnable(GL_BLEND);
- glColor4f(0.5, 0.5, 0.5, 0.5);
- glRecti(40, 40, 600, 440);
- glDisable(GL_BLEND);
-
- glColor3f(1.0, 0.0, 0.0);
- glRasterPos2i(300, 420);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Help");
-
- glRasterPos2i(60, 390);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "h - Toggle Help");
- glRasterPos2i(60, 360);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "t - Toggle Textures");
- glRasterPos2i(60, 330);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "f - Toggle Fog");
- glRasterPos2i(60, 300);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "b - Toggle Back face culling");
- glRasterPos2i(60, 270);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Arrow Keys - Rotate");
- glRasterPos2i(60, 240);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "a - Increase velocity");
- glRasterPos2i(60, 210);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "z - Decrease velocity");
- glRasterPos2i(60, 180);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "p - Toggle Wire frame");
- glRasterPos2i(60, 150);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,
- "n - Toggle GL_EXT_rescale_normal extension");
- glRasterPos2i(60, 120);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,
- "+/- - Increase/decrease the Object maximum LOD");
-
- glRasterPos2i(60, 90);
- if (joyavailable)
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,
- "j - Toggle jostick control (Joystick control available)");
- else
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,
- "(No Joystick control available)");
-}
-
-static void
-dojoy(void)
-{
-#ifdef _WIN32
- static UINT max[2] = { 0, 0 };
- static UINT min[2] = { 0xffffffff, 0xffffffff }, center[2];
- MMRESULT res;
- JOYINFO joy;
-
- res = joyGetPos(JOYSTICKID1, &joy);
-
- if (res == JOYERR_NOERROR) {
- joyavailable = 1;
-
- if (max[0] < joy.wXpos)
- max[0] = joy.wXpos;
- if (min[0] > joy.wXpos)
- min[0] = joy.wXpos;
- center[0] = (max[0] + min[0]) / 2;
-
- if (max[1] < joy.wYpos)
- max[1] = joy.wYpos;
- if (min[1] > joy.wYpos)
- min[1] = joy.wYpos;
- center[1] = (max[1] + min[1]) / 2;
-
- if (joyactive) {
- if (fabs(center[0] - (float) joy.wXpos) > 0.1 * (max[0] - min[0]))
- alpha -=
- 2.0 * (center[0] - (float) joy.wXpos) / (max[0] - min[0]);
- if (fabs(center[1] - (float) joy.wYpos) > 0.1 * (max[1] - min[1]))
- beta += 2.0 * (center[1] - (float) joy.wYpos) / (max[1] - min[1]);
-
- if (joy.wButtons & JOY_BUTTON1)
- v += 0.01;
- if (joy.wButtons & JOY_BUTTON2)
- v -= 0.01;
- }
- }
- else
- joyavailable = 0;
-#endif
-}
-
-static void
-drawipers(int depth, int from)
-{
- int lod;
-
- if (depth == maxdepth)
- return;
-
- lod = depth + LODbias;
- if (lod < 0)
- lod = 0;
- if (lod >= MAX_LOD)
- return;
-
- switch (from) {
- case FROM_NONE:
- glCallList(LODdlist[lod]);
-
- depth++;
- drawipers(depth, FROM_DOWN);
- drawipers(depth, FROM_UP);
- drawipers(depth, FROM_FRONT);
- drawipers(depth, FROM_BACK);
- drawipers(depth, FROM_LEFT);
- drawipers(depth, FROM_RIGHT);
- break;
- case FROM_FRONT:
- glPushMatrix();
- glTranslatef(0.0f, -1.5f, 0.0f);
- glScalef(0.5f, 0.5f, 0.5f);
-
- glCallList(LODdlist[lod]);
-
- depth++;
- drawipers(depth, FROM_DOWN);
- drawipers(depth, FROM_UP);
- drawipers(depth, FROM_FRONT);
- drawipers(depth, FROM_LEFT);
- drawipers(depth, FROM_RIGHT);
- glPopMatrix();
- break;
- case FROM_BACK:
- glPushMatrix();
- glTranslatef(0.0f, 1.5f, 0.0f);
- glScalef(0.5f, 0.5f, 0.5f);
-
- glCallList(LODdlist[lod]);
-
- depth++;
- drawipers(depth, FROM_DOWN);
- drawipers(depth, FROM_UP);
- drawipers(depth, FROM_BACK);
- drawipers(depth, FROM_LEFT);
- drawipers(depth, FROM_RIGHT);
- glPopMatrix();
- break;
- case FROM_LEFT:
- glPushMatrix();
- glTranslatef(-1.5f, 0.0f, 0.0f);
- glScalef(0.5f, 0.5f, 0.5f);
-
- glCallList(LODdlist[lod]);
-
- depth++;
- drawipers(depth, FROM_DOWN);
- drawipers(depth, FROM_UP);
- drawipers(depth, FROM_FRONT);
- drawipers(depth, FROM_BACK);
- drawipers(depth, FROM_LEFT);
- glPopMatrix();
- break;
- case FROM_RIGHT:
- glPushMatrix();
- glTranslatef(1.5f, 0.0f, 0.0f);
- glScalef(0.5f, 0.5f, 0.5f);
-
- glCallList(LODdlist[lod]);
-
- depth++;
- drawipers(depth, FROM_DOWN);
- drawipers(depth, FROM_UP);
- drawipers(depth, FROM_FRONT);
- drawipers(depth, FROM_BACK);
- drawipers(depth, FROM_RIGHT);
- glPopMatrix();
- break;
- case FROM_DOWN:
- glPushMatrix();
- glTranslatef(0.0f, 0.0f, 1.5f);
- glScalef(0.5f, 0.5f, 0.5f);
-
- glCallList(LODdlist[lod]);
-
- depth++;
- drawipers(depth, FROM_DOWN);
- drawipers(depth, FROM_FRONT);
- drawipers(depth, FROM_BACK);
- drawipers(depth, FROM_LEFT);
- drawipers(depth, FROM_RIGHT);
- glPopMatrix();
- break;
- case FROM_UP:
- glPushMatrix();
- glTranslatef(0.0f, 0.0f, -1.5f);
- glScalef(0.5f, 0.5f, 0.5f);
-
- glCallList(LODdlist[lod]);
-
- depth++;
- drawipers(depth, FROM_UP);
- drawipers(depth, FROM_FRONT);
- drawipers(depth, FROM_BACK);
- drawipers(depth, FROM_LEFT);
- drawipers(depth, FROM_RIGHT);
- glPopMatrix();
- break;
- }
-
- totpoly += LODnumpoly[lod];
-}
-
-static void
-draw(void)
-{
- static char frbuf[80] = "";
- static GLfloat alpha = 0.0f;
- static GLfloat beta = 0.0f;
- static float fr = 0.0;
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
-
- dojoy();
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- if (usetex)
- glEnable(GL_TEXTURE_2D);
- else
- glDisable(GL_TEXTURE_2D);
-
- if (fog)
- glEnable(GL_FOG);
- else
- glDisable(GL_FOG);
-
- glPushMatrix();
- calcposobs();
- gluLookAt(obs[0], obs[1], obs[2],
- obs[0] + dir[0], obs[1] + dir[1], obs[2] + dir[2],
- 0.0, 0.0, 1.0);
-
- /* Scene */
- glEnable(GL_DEPTH_TEST);
-
- glShadeModel(GL_SMOOTH);
- glBindTexture(GL_TEXTURE_2D, t1id);
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
- glColor3f(1.0f, 1.0f, 1.0f);
- glEnable(GL_LIGHT0);
- glEnable(GL_LIGHTING);
-
- if (normext)
- glEnable(GL_RESCALE_NORMAL_EXT);
- else
- glEnable(GL_NORMALIZE);
-
- glPushMatrix();
- glRotatef(alpha, 0.0f, 0.0f, 1.0f);
- glRotatef(beta, 1.0f, 0.0f, 0.0f);
- totpoly = 0;
- drawipers(0, FROM_NONE);
- glPopMatrix();
-
- alpha += 4.f * dt;
- beta += 2.4f * dt;
-
- glDisable(GL_LIGHTING);
- glDisable(GL_LIGHT0);
- glShadeModel(GL_FLAT);
-
- if (normext)
- glDisable(GL_RESCALE_NORMAL_EXT);
- else
- glDisable(GL_NORMALIZE);
-
- glCallList(skydlist);
-
- glPopMatrix();
-
- /* Help Screen */
-
- sprintf(frbuf,
- "Frame rate: %0.2f LOD: %d Tot. poly.: %d Poly/sec: %.1f",
- fr, LODbias, totpoly, totpoly * fr);
-
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_FOG);
- glShadeModel(GL_FLAT);
- glDisable(GL_DEPTH_TEST);
-
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
- glOrtho(-0.5, 639.5, -0.5, 479.5, -1.0, 1.0);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- glColor3f(1.0, 0.0, 0.0);
- glRasterPos2i(10, 10);
- printstring(GLUT_BITMAP_HELVETICA_18, frbuf);
- glRasterPos2i(350, 470);
- printstring(GLUT_BITMAP_HELVETICA_10,
- "IperS V1.0 Written by David Bucciarelli (tech.hmw@plus.it)");
-
- if (help)
- printhelp();
-
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
-
- glutSwapBuffers();
-
- Frames++;
- {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- if (t - T0 >= 2000) {
- GLfloat seconds = (t - T0) / 1000.0;
- fr = Frames / seconds;
- T0 = t;
- Frames = 0;
- }
- }
-}
-
-int
-main(int ac, char **av)
-{
- float fogcolor[4] = { 0.7, 0.7, 0.7, 1.0 };
-
- fprintf(stderr,
- "IperS V1.0\nWritten by David Bucciarelli (tech.hmw@plus.it)\n");
-
- glutInitWindowSize(WIDTH, HEIGHT);
- glutInit(&ac, av);
-
- glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
-
- if (!(win = glutCreateWindow("IperS"))) {
- fprintf(stderr, "Error, couldn't open window\n");
- exit(-1);
- }
-
- reshape(WIDTH, HEIGHT);
-
- glShadeModel(GL_SMOOTH);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_CULL_FACE);
- glEnable(GL_TEXTURE_2D);
-
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- glEnable(GL_FOG);
- glFogi(GL_FOG_MODE, GL_EXP2);
- glFogfv(GL_FOG_COLOR, fogcolor);
-
- glFogf(GL_FOG_DENSITY, 0.006);
-
- glHint(GL_FOG_HINT, GL_NICEST);
-
- inittextures();
- initdlists();
- initlight();
-
- glClearColor(fogcolor[0], fogcolor[1], fogcolor[2], fogcolor[3]);
- glClear(GL_COLOR_BUFFER_BIT);
-
- calcposobs();
-
- glutReshapeFunc(reshape);
- glutDisplayFunc(draw);
- glutKeyboardFunc(key);
- glutSpecialFunc(special);
- glutIdleFunc(draw);
-
- glutMainLoop();
- cleanup();
-
- return 0;
-}
diff --git a/progs/demos/isosurf.c b/progs/demos/isosurf.c
deleted file mode 100644
index a5b21ffb5c..0000000000
--- a/progs/demos/isosurf.c
+++ /dev/null
@@ -1,1146 +0,0 @@
-
-/*
- * Display an isosurface of 3-D wind speed volume.
- *
- * Command line options:
- * -info print GL implementation information
- *
- * Brian Paul This file in public domain.
- */
-
-
-/* Keys:
- * =====
- *
- * - Arrow keys to rotate
- * - 's' toggles smooth shading
- * - 'l' toggles lighting
- * - 'f' toggles fog
- * - 'I' and 'i' zoom in and out
- * - 'c' toggles a user clip plane
- * - 'm' toggles colorful materials in GL_TRIANGLES modes.
- * - '+' and '-' move the user clip plane
- *
- * Other options are available via the popup menu.
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
-#ifdef _WIN32
-#include <windows.h>
-#undef CLIP_MASK
-#endif
-#include <GL/glew.h>
-#include "GL/glut.h"
-
-#include "readtex.h"
-#define TEXTURE_FILE "../images/reflect.rgb"
-
-#define LIT 0x00000001
-#define UNLIT 0x00000002
-#define REFLECT 0x00000004
-#define POINT_FILTER 0x00000008
-#define LINEAR_FILTER 0x00000010
-#define GLVERTEX 0x00000020
-#define DRAW_ELTS 0x00000040
-#define DRAW_ARRAYS 0x00000080
-#define ARRAY_ELT 0x00000100
-#define LOCKED 0x00000200
-#define UNLOCKED 0x00000400
-#define IMMEDIATE 0x00000800
-#define DISPLAYLIST 0x00001000
-#define SHADE_SMOOTH 0x00002000
-#define SHADE_FLAT 0x00004000
-#define TRIANGLES 0x00008000
-#define STRIPS 0x00010000
-#define POINTS 0x00020000
-#define USER_CLIP 0x00040000
-#define NO_USER_CLIP 0x00080000
-#define MATERIALS 0x00100000
-#define NO_MATERIALS 0x00200000
-#define FOG 0x00400000
-#define NO_FOG 0x00800000
-#define QUIT 0x01000000
-#define GLINFO 0x02000000
-#define STIPPLE 0x04000000
-#define NO_STIPPLE 0x08000000
-#define POLYGON_FILL 0x10000000
-#define POLYGON_LINE 0x20000000
-#define POLYGON_POINT 0x40000000
-
-#define LIGHT_MASK (LIT|UNLIT|REFLECT)
-#define FILTER_MASK (POINT_FILTER|LINEAR_FILTER)
-#define RENDER_STYLE_MASK (GLVERTEX|DRAW_ARRAYS|DRAW_ELTS|ARRAY_ELT)
-#define DLIST_MASK (IMMEDIATE|DISPLAYLIST)
-#define LOCK_MASK (LOCKED|UNLOCKED)
-#define MATERIAL_MASK (MATERIALS|NO_MATERIALS)
-#define PRIMITIVE_MASK (TRIANGLES|STRIPS|POINTS)
-#define CLIP_MASK (USER_CLIP|NO_USER_CLIP)
-#define SHADE_MASK (SHADE_SMOOTH|SHADE_FLAT)
-#define FOG_MASK (FOG|NO_FOG)
-#define STIPPLE_MASK (STIPPLE|NO_STIPPLE)
-#define POLYGON_MASK (POLYGON_FILL|POLYGON_LINE|POLYGON_POINT)
-
-#define MAXVERTS 10000
-static GLint maxverts = MAXVERTS;
-static float data[MAXVERTS][6];
-static float compressed_data[MAXVERTS][6];
-static float expanded_data[MAXVERTS*3][6];
-static GLuint indices[MAXVERTS];
-static GLuint tri_indices[MAXVERTS*3];
-static GLuint strip_indices[MAXVERTS];
-static GLfloat col[100][4];
-static GLint numverts, num_tri_verts, numuniq;
-
-static GLfloat xrot;
-static GLfloat yrot;
-static GLfloat dist;
-static GLint state, allowed = ~0;
-static GLboolean doubleBuffer = GL_TRUE;
-static GLdouble plane[4];
-static GLuint surf1, dlist_state;
-
-static GLboolean PrintInfo = GL_FALSE;
-
-
-static GLubyte halftone[] = {
- 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
- 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
- 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
- 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
- 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
- 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
- 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
- 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
- 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA,
- 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
- 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55};
-
-
-static void read_surface( char *filename )
-{
- FILE *f;
-
- f = fopen(filename,"r");
- if (!f) {
- printf("couldn't read %s\n", filename);
- exit(1);
- }
-
- numverts = 0;
- while (!feof(f) && numverts<maxverts) {
- int result;
- result = fscanf( f, "%f %f %f %f %f %f",
- &data[numverts][0], &data[numverts][1], &data[numverts][2],
- &data[numverts][3], &data[numverts][4], &data[numverts][5] );
- (void) result;
- numverts++;
- }
- numverts--;
-
- printf("%d vertices, %d triangles\n", numverts, numverts-2);
- fclose(f);
-}
-
-
-
-static void print_flags( const char *msg, GLuint flags )
-{
- fprintf(stderr,
- "%s (0x%x): %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
- msg, flags,
- (flags & GLVERTEX) ? "glVertex, " : "",
- (flags & DRAW_ARRAYS) ? "glDrawArrays, " : "",
- (flags & DRAW_ELTS) ? "glDrawElements, " : "",
- (flags & ARRAY_ELT) ? "glArrayElement, " : "",
- (flags & LOCKED) ? "locked arrays, " : "",
- (flags & TRIANGLES) ? "GL_TRIANGLES, " : "",
- (flags & STRIPS) ? "GL_TRIANGLE_STRIP, " : "",
- (flags & POINTS) ? "GL_POINTS, " : "",
- (flags & DISPLAYLIST) ? "as a displaylist, " : "",
- (flags & LIT) ? "lit, " : "",
- (flags & UNLIT) ? "unlit, " : "",
- (flags & REFLECT) ? "reflect, " : "",
- (flags & SHADE_FLAT) ? "flat-shaded, " : "",
- (flags & USER_CLIP) ? "user_clip, " : "",
- (flags & MATERIALS) ? "materials, " : "",
- (flags & FOG) ? "fog, " : "",
- (flags & STIPPLE) ? "stipple, " : "",
- (flags & POLYGON_LINE) ? "polygon mode line, " : "",
- (flags & POLYGON_POINT) ? "polygon mode point, " : "");
-}
-
-
-
-struct data_idx {
- float *data;
- int idx;
- int uniq_idx;
-};
-
-
-#define COMPARE_FUNC( AXIS ) \
-static int compare_axis_##AXIS( const void *a, const void *b ) \
-{ \
- float t = ( (*(struct data_idx *)a).data[AXIS] - \
- (*(struct data_idx *)b).data[AXIS] ); \
- \
- if (t < 0) return -1; \
- if (t > 0) return 1; \
- return 0; \
-}
-
-COMPARE_FUNC(0)
-COMPARE_FUNC(1)
-COMPARE_FUNC(2)
-COMPARE_FUNC(3)
-COMPARE_FUNC(4)
-COMPARE_FUNC(5)
-COMPARE_FUNC(6)
-
-int (*(compare[7]))( const void *a, const void *b ) =
-{
- compare_axis_0,
- compare_axis_1,
- compare_axis_2,
- compare_axis_3,
- compare_axis_4,
- compare_axis_5,
- compare_axis_6,
-};
-
-
-#define VEC_ELT(f, s, i) (float *)(((char *)f) + s * i)
-
-static int sort_axis( int axis,
- int vec_size,
- int vec_stride,
- struct data_idx *indices,
- int start,
- int finish,
- float *out,
- int uniq,
- const float fudge )
-{
- int i;
-
- if (finish-start > 2)
- {
- qsort( indices+start, finish-start, sizeof(*indices), compare[axis] );
- }
- else if (indices[start].data[axis] > indices[start+1].data[axis])
- {
- struct data_idx tmp = indices[start];
- indices[start] = indices[start+1];
- indices[start+1] = tmp;
- }
-
- if (axis == vec_size-1) {
- for (i = start ; i < finish ; ) {
- float max = indices[i].data[axis] + fudge;
- float *dest = VEC_ELT(out, vec_stride, uniq);
- int j;
-
- for (j = 0 ; j < vec_size ; j++)
- dest[j] = indices[i].data[j];
-
- for ( ; i < finish && max >= indices[i].data[axis]; i++)
- indices[i].uniq_idx = uniq;
-
- uniq++;
- }
- } else {
- for (i = start ; i < finish ; ) {
- int j = i + 1;
- float max = indices[i].data[axis] + fudge;
- while (j < finish && max >= indices[j].data[axis]) j++;
- if (j == i+1) {
- float *dest = VEC_ELT(out, vec_stride, uniq);
- int k;
-
- indices[i].uniq_idx = uniq;
-
- for (k = 0 ; k < vec_size ; k++)
- dest[k] = indices[i].data[k];
-
- uniq++;
- } else {
- uniq = sort_axis( axis+1, vec_size, vec_stride,
- indices, i, j, out, uniq, fudge );
- }
- i = j;
- }
- }
-
- return uniq;
-}
-
-
-static void extract_indices1( const struct data_idx *in, unsigned int *out,
- int n )
-{
- int i;
- for ( i = 0 ; i < n ; i++ ) {
- out[in[i].idx] = in[i].uniq_idx;
- }
-}
-
-
-static void compactify_arrays(void)
-{
- int i;
- struct data_idx *ind;
-
- ind = (struct data_idx *) malloc( sizeof(struct data_idx) * numverts );
-
- for (i = 0 ; i < numverts ; i++) {
- ind[i].idx = i;
- ind[i].data = data[i];
- }
-
- numuniq = sort_axis(0,
- sizeof(compressed_data[0])/sizeof(float),
- sizeof(compressed_data[0]),
- ind,
- 0,
- numverts,
- (float *)compressed_data,
- 0,
- 1e-6);
-
- printf("Nr unique vertex/normal pairs: %d\n", numuniq);
-
- extract_indices1( ind, indices, numverts );
- free( ind );
-}
-
-static void expand_arrays(void)
-{
- int i;
- int parity = 0;
- for (i = 2 ; i < numverts ; i++, parity ^= 1) {
- int v0 = i-2+parity;
- int v1 = i-1-parity;
- int v2 = i;
- memcpy( expanded_data[(i-2)*3+0], data[v0], sizeof(data[0]) );
- memcpy( expanded_data[(i-2)*3+1], data[v1], sizeof(data[0]) );
- memcpy( expanded_data[(i-2)*3+2], data[v2], sizeof(data[0]) );
- }
-}
-
-static float myrand( float max )
-{
- return max*rand()/(RAND_MAX+1.0);
-}
-
-
-static void make_tri_indices( void )
-{
- unsigned int *v = tri_indices;
- unsigned int parity = 0;
- int i, j;
-
- for (j=2;j<numverts;j++,parity^=1) {
- if (parity) {
- *v++ = indices[j-1];
- *v++ = indices[j-2];
- *v++ = indices[j];
- } else {
- *v++ = indices[j-2];
- *v++ = indices[j-1];
- *v++ = indices[j];
- }
- }
-
- num_tri_verts = v - tri_indices;
- printf("num_tri_verts: %d\n", num_tri_verts);
-
- for (i = j = 0 ; i < num_tri_verts ; i += 600, j++) {
- col[j][3] = 1;
- col[j][2] = myrand(1);
- col[j][1] = myrand(1);
- col[j][0] = myrand(1);
- }
-
- for (i = 0; i < numverts ; i++)
- strip_indices[i] = i;
-}
-
-#define MIN(x,y) (x < y) ? x : y
-
-static void draw_surface( unsigned int with_state )
-{
- GLint i, j;
-
- if (with_state & DISPLAYLIST) {
- if ((with_state & (RENDER_STYLE_MASK|PRIMITIVE_MASK|MATERIAL_MASK)) !=
- dlist_state) {
- /*
- */
- fprintf(stderr, "rebuilding displaylist\n");
-
- if (dlist_state)
- glDeleteLists( surf1, 1 );
-
- dlist_state = with_state & (RENDER_STYLE_MASK|PRIMITIVE_MASK|
- MATERIAL_MASK);
- surf1 = glGenLists(1);
- glNewList(surf1, GL_COMPILE);
- draw_surface( dlist_state );
- glEndList();
- }
-
- glCallList( surf1 );
- return;
- }
-
- switch (with_state & (RENDER_STYLE_MASK|PRIMITIVE_MASK)) {
-#ifdef GL_EXT_vertex_array
-
- case (DRAW_ELTS|TRIANGLES):
- if (with_state & MATERIALS) {
- for (j = i = 0 ; i < num_tri_verts ; i += 600, j++) {
- GLuint nr = MIN(num_tri_verts-i, 600);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, col[j]);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, col[j]);
- glDrawElements( GL_TRIANGLES, nr, GL_UNSIGNED_INT, tri_indices+i );
- }
- } else {
- glDrawElements( GL_TRIANGLES, num_tri_verts, GL_UNSIGNED_INT,
- tri_indices );
- }
- break;
-
- case (DRAW_ARRAYS|TRIANGLES):
- glDrawArraysEXT( GL_TRIANGLES, 0, (numverts-2)*3 );
- break;
-
- case (ARRAY_ELT|TRIANGLES):
- if (with_state & MATERIALS) {
- for (j = i = 0 ; i < num_tri_verts ; i += 600, j++) {
- GLuint nr = MIN(num_tri_verts-i, 600);
- GLuint k;
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, col[j]);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, col[j]);
- glBegin( GL_TRIANGLES );
- for (k = 0 ; k < nr ; k++)
- glArrayElement( tri_indices[i+k] );
- glEnd();
- }
- } else {
- glBegin( GL_TRIANGLES );
- for (i = 0 ; i < num_tri_verts ; i++)
- glArrayElement( tri_indices[i] );
-
- glEnd();
- }
- break;
-
-
- /* Uses the original arrays (including duplicate elements):
- */
- case (DRAW_ARRAYS|STRIPS):
- glDrawArraysEXT( GL_TRIANGLE_STRIP, 0, numverts );
- break;
- case (DRAW_ELTS|STRIPS):
- glDrawElements( GL_TRIANGLE_STRIP, numverts,
- GL_UNSIGNED_INT, strip_indices );
- break;
-
- /* Uses the original arrays (including duplicate elements):
- */
- case (ARRAY_ELT|STRIPS):
- glBegin( GL_TRIANGLE_STRIP );
- for (i = 0 ; i < numverts ; i++)
- glArrayElement( i );
- glEnd();
- break;
-
- case (DRAW_ARRAYS|POINTS):
- glDrawArraysEXT( GL_POINTS, 0, numuniq );
- break;
- case (DRAW_ELTS|POINTS):
- /* can use numuniq with strip_indices as strip_indices[i] == i.
- */
- glDrawElements( GL_POINTS, numuniq,
- GL_UNSIGNED_INT, strip_indices );
- break;
- case (ARRAY_ELT|POINTS):
- /* just emit each unique element once:
- */
- glBegin( GL_POINTS );
- for (i = 0 ; i < numuniq ; i++)
- glArrayElement( i );
- glEnd();
- break;
-#endif
-
- case (GLVERTEX|TRIANGLES):
- if (with_state & MATERIALS) {
- for (j = i = 0 ; i < num_tri_verts ; i += 600, j++) {
- GLuint nr = MIN(num_tri_verts-i, 600);
- GLuint k;
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, col[j]);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, col[j]);
- glBegin( GL_TRIANGLES );
- for (k = 0 ; k < nr ; k++) {
- glNormal3fv( &compressed_data[tri_indices[i+k]][3] );
- glVertex3fv( &compressed_data[tri_indices[i+k]][0] );
- }
- glEnd();
- }
- } else {
- glBegin( GL_TRIANGLES );
- for (i = 0 ; i < num_tri_verts ; i++) {
- glNormal3fv( &compressed_data[tri_indices[i]][3] );
- glVertex3fv( &compressed_data[tri_indices[i]][0] );
- }
- glEnd();
- }
- break;
-
- case (GLVERTEX|POINTS):
- /* Renders all points, but not in strip order... Shouldn't be a
- * problem, but people may be confused as to why points are so
- * much faster in this demo... And why cva doesn't help them...
- */
- glBegin( GL_POINTS );
- for ( i = 0 ; i < numuniq ; i++ ) {
- glNormal3fv( &compressed_data[i][3] );
- glVertex3fv( &compressed_data[i][0] );
- }
- glEnd();
- break;
-
- case (GLVERTEX|STRIPS):
- if (with_state & MATERIALS) {
- glBegin( GL_TRIANGLE_STRIP );
- for (i=0;i<numverts;i++) {
- if (i % 600 == 0 && i != 0) {
- unsigned j = i / 600;
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, col[j]);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, col[j]);
- }
- glNormal3fv( &data[i][3] );
- glVertex3fv( &data[i][0] );
- }
- glEnd();
- }
- else {
- glBegin( GL_TRIANGLE_STRIP );
- for (i=0;i<numverts;i++) {
- glNormal3fv( &data[i][3] );
- glVertex3fv( &data[i][0] );
- }
- glEnd();
- }
- break;
-
- default:
- fprintf(stderr, "unimplemented mode %x...\n",
- (with_state & (RENDER_STYLE_MASK|PRIMITIVE_MASK)));
- break;
- }
-}
-
-
-
-static void Display(void)
-{
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
- draw_surface( state );
- glFlush();
- if (doubleBuffer) glutSwapBuffers();
-}
-
-
-/* KW: only do this when necessary, so CVA can re-use results.
- */
-static void set_matrix( void )
-{
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef( 0.0, 0.0, dist );
- glRotatef( yrot, 0.0, 1.0, 0.0 );
- glRotatef( xrot, 1.0, 0.0, 0.0 );
-}
-
-static void Benchmark( float xdiff, float ydiff )
-{
- int startTime, endTime;
- int draws;
- double seconds, fps, triPerSecond;
-
- printf("Benchmarking...\n");
-
- draws = 0;
- startTime = glutGet(GLUT_ELAPSED_TIME);
- xrot = 0.0;
- do {
- xrot += xdiff;
- yrot += ydiff;
- set_matrix();
- Display();
- draws++;
- endTime = glutGet(GLUT_ELAPSED_TIME);
- } while (endTime - startTime < 5000); /* 5 seconds */
-
- /* Results */
- seconds = (double) (endTime - startTime) / 1000.0;
- triPerSecond = (numverts - 2) * draws / seconds;
- fps = draws / seconds;
- printf("Result: triangles/sec: %g fps: %g\n", triPerSecond, fps);
-}
-
-
-static void InitMaterials(void)
-{
- static float ambient[] = {0.1, 0.1, 0.1, 1.0};
- static float diffuse[] = {0.5, 1.0, 1.0, 1.0};
- static float position0[] = {0.0, 0.0, 20.0, 0.0};
- static float position1[] = {0.0, 0.0, -20.0, 0.0};
- static float front_mat_shininess[] = {60.0};
- static float front_mat_specular[] = {0.2, 0.2, 0.2, 1.0};
- static float front_mat_diffuse[] = {0.5, 0.28, 0.38, 1.0};
- /*
- static float back_mat_shininess[] = {60.0};
- static float back_mat_specular[] = {0.5, 0.5, 0.2, 1.0};
- static float back_mat_diffuse[] = {1.0, 1.0, 0.2, 1.0};
- */
- static float lmodel_ambient[] = {1.0, 1.0, 1.0, 1.0};
- static float lmodel_twoside[] = {GL_FALSE};
-
- glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
- glLightfv(GL_LIGHT0, GL_POSITION, position0);
- glEnable(GL_LIGHT0);
-
- glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
- glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
- glLightfv(GL_LIGHT1, GL_POSITION, position1);
- glEnable(GL_LIGHT1);
-
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
- glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
-
- glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_mat_shininess);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_mat_specular);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, front_mat_diffuse);
-
- glPolygonStipple (halftone);
-}
-
-
-
-#define UPDATE(o,n,mask) (o&=~mask, o|=n&mask)
-#define CHANGED(o,n,mask) ((n&mask) && (n&mask) != (o&mask) )
-
-static void ModeMenu(int m)
-{
- m &= allowed;
-
- if (!m) return;
-
- if (m==QUIT)
- exit(0);
-
- if (m==GLINFO) {
- printf("GL_VERSION: %s\n", (char *) glGetString(GL_VERSION));
- printf("GL_EXTENSIONS: %s\n", (char *) glGetString(GL_EXTENSIONS));
- printf("GL_RENDERER: %s\n", (char *) glGetString(GL_RENDERER));
- return;
- }
-
- if (CHANGED(state, m, FILTER_MASK)) {
- UPDATE(state, m, FILTER_MASK);
- if (m & LINEAR_FILTER) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- } else {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- }
- }
-
- if (CHANGED(state, m, LIGHT_MASK)) {
- UPDATE(state, m, LIGHT_MASK);
- if (m & LIT) {
- glEnable(GL_LIGHTING);
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- glDisable(GL_TEXTURE_2D);
- }
- else if (m & UNLIT) {
- glDisable(GL_LIGHTING);
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- glDisable(GL_TEXTURE_2D);
- }
- else if (m & REFLECT) {
- glDisable(GL_LIGHTING);
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glEnable(GL_TEXTURE_2D);
- }
- }
-
- if (CHANGED(state, m, SHADE_MASK)) {
- UPDATE(state, m, SHADE_MASK);
- if (m & SHADE_SMOOTH)
- glShadeModel(GL_SMOOTH);
- else
- glShadeModel(GL_FLAT);
- }
-
-
- if (CHANGED(state, m, CLIP_MASK)) {
- UPDATE(state, m, CLIP_MASK);
- if (m & USER_CLIP) {
- glEnable(GL_CLIP_PLANE0);
- } else {
- glDisable(GL_CLIP_PLANE0);
- }
- }
-
- if (CHANGED(state, m, FOG_MASK)) {
- UPDATE(state, m, FOG_MASK);
- if (m & FOG) {
- glEnable(GL_FOG);
- }
- else {
- glDisable(GL_FOG);
- }
- }
-
- if (CHANGED(state, m, STIPPLE_MASK)) {
- UPDATE(state, m, STIPPLE_MASK);
- if (m & STIPPLE) {
- glEnable(GL_POLYGON_STIPPLE);
- }
- else {
- glDisable(GL_POLYGON_STIPPLE);
- }
- }
-
- if (CHANGED(state, m, POLYGON_MASK)) {
- UPDATE(state, m, POLYGON_MASK);
- if (m & POLYGON_FILL) {
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- }
- else if (m & POLYGON_LINE) {
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- }
- else {
- glPolygonMode(GL_FRONT_AND_BACK, GL_POINT);
- }
- }
-
-#ifdef GL_EXT_vertex_array
- if (CHANGED(state, m, (LOCK_MASK|RENDER_STYLE_MASK|PRIMITIVE_MASK)))
- {
- if (m & (PRIMITIVE_MASK)) {
- UPDATE(state, m, (PRIMITIVE_MASK));
- }
-
- if (m & (RENDER_STYLE_MASK)) {
- UPDATE(state, m, (RENDER_STYLE_MASK));
- }
-
- if (m & LOCK_MASK) {
- UPDATE(state, m, (LOCK_MASK));
- }
-
-
- print_flags("primitive", state & PRIMITIVE_MASK);
- print_flags("render style", state & RENDER_STYLE_MASK);
-
- if ((state & PRIMITIVE_MASK) != STRIPS &&
- ((state & RENDER_STYLE_MASK) == DRAW_ELTS ||
- (state & RENDER_STYLE_MASK) == ARRAY_ELT ||
- (state & PRIMITIVE_MASK) == POINTS))
- {
- fprintf(stderr, "enabling small arrays\n");
- /* Rendering any primitive with draw-element/array-element
- * --> Can't do strips here as ordering has been lost in
- * compaction process...
- */
- glVertexPointerEXT( 3, GL_FLOAT, sizeof(data[0]), numuniq,
- compressed_data );
- glNormalPointerEXT( GL_FLOAT, sizeof(data[0]), numuniq,
- &compressed_data[0][3]);
-#ifdef GL_EXT_compiled_vertex_array
- if (allowed & LOCKED) {
- if (state & LOCKED) {
- glLockArraysEXT( 0, numuniq );
- } else {
- glUnlockArraysEXT();
- }
- }
-#endif
- }
- else if ((state & PRIMITIVE_MASK) == TRIANGLES &&
- (state & RENDER_STYLE_MASK) == DRAW_ARRAYS) {
- fprintf(stderr, "enabling big arrays\n");
- /* Only get here for TRIANGLES and drawarrays
- */
- glVertexPointerEXT( 3, GL_FLOAT, sizeof(data[0]), (numverts-2) * 3,
- expanded_data );
- glNormalPointerEXT( GL_FLOAT, sizeof(data[0]), (numverts-2) * 3,
- &expanded_data[0][3]);
-
-#ifdef GL_EXT_compiled_vertex_array
- if (allowed & LOCKED) {
- if (state & LOCKED) {
- glLockArraysEXT( 0, (numverts-2)*3 );
- } else {
- glUnlockArraysEXT();
- }
- }
-#endif
- }
- else {
- fprintf(stderr, "enabling normal arrays\n");
- glVertexPointerEXT( 3, GL_FLOAT, sizeof(data[0]), numverts, data );
- glNormalPointerEXT( GL_FLOAT, sizeof(data[0]), numverts, &data[0][3]);
-#ifdef GL_EXT_compiled_vertex_array
- if (allowed & LOCKED) {
- if (state & LOCKED) {
- glLockArraysEXT( 0, numverts );
- } else {
- glUnlockArraysEXT();
- }
- }
-#endif
- }
-
- }
-#endif
-
-
- if (m & DLIST_MASK) {
- UPDATE(state, m, DLIST_MASK);
- }
-
- if (m & MATERIAL_MASK) {
- UPDATE(state, m, MATERIAL_MASK);
- }
-
- print_flags("new flags", state);
-
- glutPostRedisplay();
-}
-
-
-
-static void Init(int argc, char *argv[])
-{
- GLfloat fogColor[4] = {0.5,1.0,0.5,1.0};
-
- xrot = 0;
- yrot = 0;
- dist = -6;
- plane[0] = 1.0;
- plane[1] = 0.0;
- plane[2] = -1.0;
- plane[3] = 0.0;
-
- glClearColor(0.0, 0.0, 1.0, 0.0);
- glEnable( GL_DEPTH_TEST );
- glEnableClientState( GL_VERTEX_ARRAY );
- glEnableClientState( GL_NORMAL_ARRAY );
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum( -1.0, 1.0, -1.0, 1.0, 5, 25 );
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glClipPlane(GL_CLIP_PLANE0, plane);
-
- InitMaterials();
-
- set_matrix();
-
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
- glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
-
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
-
-
- /* Green fog is easy to see */
- glFogi(GL_FOG_MODE,GL_EXP2);
- glFogfv(GL_FOG_COLOR,fogColor);
- glFogf(GL_FOG_DENSITY,0.15);
- glHint(GL_FOG_HINT,GL_DONT_CARE);
-
- {
- static int firsttime = 1;
- if (firsttime) {
- firsttime = 0;
- compactify_arrays();
- expand_arrays();
- make_tri_indices();
-
- if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) {
- printf("Error: couldn't load texture image\n");
- exit(1);
- }
- }
- }
-
- ModeMenu(SHADE_SMOOTH|
- LIT|
- POINT_FILTER|
- NO_USER_CLIP|
- NO_MATERIALS|
- NO_FOG|
- NO_STIPPLE|
- IMMEDIATE|
- STRIPS|
- UNLOCKED|
- GLVERTEX);
-
- if (PrintInfo) {
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
- printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
- printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR));
- printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS));
- }
-}
-
-
-
-static void Reshape(int width, int height)
-{
- glViewport(0, 0, (GLint)width, (GLint)height);
-}
-
-
-
-static void Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case 27:
- exit(0);
- case 'f':
- ModeMenu((state ^ FOG_MASK) & FOG_MASK);
- break;
- case 's':
- ModeMenu((state ^ SHADE_MASK) & SHADE_MASK);
- break;
- case 't':
- ModeMenu((state ^ STIPPLE_MASK) & STIPPLE_MASK);
- break;
- case 'l':
- ModeMenu((state ^ LIGHT_MASK) & (LIT|UNLIT));
- break;
- case 'm':
- ModeMenu((state ^ MATERIAL_MASK) & MATERIAL_MASK);
- break;
- case 'c':
- ModeMenu((state ^ CLIP_MASK) & CLIP_MASK);
- break;
- case 'v':
- ModeMenu((LOCKED|IMMEDIATE|DRAW_ELTS|TRIANGLES) & allowed);
- break;
- case 'V':
- ModeMenu(UNLOCKED|IMMEDIATE|GLVERTEX|STRIPS);
- break;
- case 'b':
- Benchmark(5.0, 0);
- break;
- case 'B':
- Benchmark(0, 5.0);
- break;
- case 'i':
- dist += .25;
- set_matrix();
- glutPostRedisplay();
- break;
- case 'I':
- dist -= .25;
- set_matrix();
- glutPostRedisplay();
- break;
- case '-':
- case '_':
- plane[3] += 2.0;
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glClipPlane(GL_CLIP_PLANE0, plane);
- set_matrix();
- glutPostRedisplay();
- break;
- case '+':
- case '=':
- plane[3] -= 2.0;
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glClipPlane(GL_CLIP_PLANE0, plane);
- set_matrix();
- glutPostRedisplay();
- break;
- case ' ':
- Init(0,0);
- break;
- }
-}
-
-
-static void SpecialKey( int key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case GLUT_KEY_LEFT:
- yrot -= 15.0;
- break;
- case GLUT_KEY_RIGHT:
- yrot += 15.0;
- break;
- case GLUT_KEY_UP:
- xrot += 15.0;
- break;
- case GLUT_KEY_DOWN:
- xrot -= 15.0;
- break;
- default:
- return;
- }
- set_matrix();
- glutPostRedisplay();
-}
-
-
-
-static GLint Args(int argc, char **argv)
-{
- GLint i;
- GLint mode = 0;
-
- for (i = 1; i < argc; i++) {
- if (strcmp(argv[i], "-sb") == 0) {
- doubleBuffer = GL_FALSE;
- }
- else if (strcmp(argv[i], "-db") == 0) {
- doubleBuffer = GL_TRUE;
- }
- else if (strcmp(argv[i], "-info") == 0) {
- PrintInfo = GL_TRUE;
- }
- else if (strcmp(argv[i], "-10") == 0) {
- maxverts = 10;
- }
- else if (strcmp(argv[i], "-100") == 0) {
- maxverts = 100;
- }
- else if (strcmp(argv[i], "-1000") == 0) {
- maxverts = 1000;
- }
- else {
- printf("%s (Bad option).\n", argv[i]);
- return QUIT;
- }
- }
-
- return mode;
-}
-
-int main(int argc, char **argv)
-{
- GLenum type;
-
- GLuint arg_mode = Args(argc, argv);
-
- if (arg_mode & QUIT)
- exit(0);
-
- read_surface( "isosurf.dat" );
-
- glutInitWindowSize(400, 400);
- glutInit( &argc, argv);
-
- type = GLUT_DEPTH;
- type |= GLUT_RGB;
- type |= (doubleBuffer) ? GLUT_DOUBLE : GLUT_SINGLE;
- glutInitDisplayMode(type);
-
- if (glutCreateWindow("Isosurface") <= 0) {
- exit(0);
- }
-
- glewInit();
-
- /* Make sure server supports the vertex array extension */
- if (!GLEW_EXT_vertex_array)
- {
- printf("Vertex arrays not supported by this renderer\n");
- allowed &= ~(LOCKED|DRAW_ARRAYS|DRAW_ELTS|ARRAY_ELT);
- }
- else if (!GLEW_EXT_compiled_vertex_array)
- {
- printf("Compiled vertex arrays not supported by this renderer\n");
- allowed &= ~LOCKED;
- }
-
- Init(argc, argv);
- ModeMenu(arg_mode);
-
- glutCreateMenu(ModeMenu);
- glutAddMenuEntry("GL info", GLINFO);
- glutAddMenuEntry("", 0);
- glutAddMenuEntry("Lit", LIT);
- glutAddMenuEntry("Unlit", UNLIT);
- glutAddMenuEntry("Reflect", REFLECT);
- glutAddMenuEntry("", 0);
- glutAddMenuEntry("Smooth", SHADE_SMOOTH);
- glutAddMenuEntry("Flat", SHADE_FLAT);
- glutAddMenuEntry("", 0);
- glutAddMenuEntry("Fog", FOG);
- glutAddMenuEntry("No Fog", NO_FOG);
- glutAddMenuEntry("", 0);
- glutAddMenuEntry("Stipple", STIPPLE);
- glutAddMenuEntry("No Stipple", NO_STIPPLE);
- glutAddMenuEntry("", 0);
- glutAddMenuEntry("Polygon Mode Fill", POLYGON_FILL);
- glutAddMenuEntry("Polygon Mode Line", POLYGON_LINE);
- glutAddMenuEntry("Polygon Mode Points", POLYGON_POINT);
- glutAddMenuEntry("", 0);
- glutAddMenuEntry("Point Filtered", POINT_FILTER);
- glutAddMenuEntry("Linear Filtered", LINEAR_FILTER);
- glutAddMenuEntry("", 0);
- glutAddMenuEntry("GL_TRIANGLES", TRIANGLES);
- glutAddMenuEntry("GL_TRIANGLE_STRIPS", STRIPS);
- glutAddMenuEntry("GL_POINTS", POINTS);
- glutAddMenuEntry("", 0);
- glutAddMenuEntry("Displaylist", DISPLAYLIST);
- glutAddMenuEntry("Immediate", IMMEDIATE);
- glutAddMenuEntry("", 0);
- if (allowed & LOCKED) {
- glutAddMenuEntry("Locked Arrays (CVA)", LOCKED);
- glutAddMenuEntry("Unlocked Arrays", UNLOCKED);
- glutAddMenuEntry("", 0);
- }
- glutAddMenuEntry("glVertex", GLVERTEX);
- if (allowed & DRAW_ARRAYS) {
- glutAddMenuEntry("glDrawElements", DRAW_ELTS);
- glutAddMenuEntry("glDrawArrays", DRAW_ARRAYS);
- glutAddMenuEntry("glArrayElement", ARRAY_ELT);
- }
- glutAddMenuEntry("", 0);
- glutAddMenuEntry("Quit", QUIT);
- glutAttachMenu(GLUT_RIGHT_BUTTON);
-
- glutReshapeFunc(Reshape);
- glutKeyboardFunc(Key);
- glutSpecialFunc(SpecialKey);
- glutDisplayFunc(Display);
-
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/isosurf.dat b/progs/demos/isosurf.dat
deleted file mode 100644
index 5cadecdb43..0000000000
--- a/progs/demos/isosurf.dat
+++ /dev/null
@@ -1,7179 +0,0 @@
--1.000000 0.050200 0.254800 0.280000 0.504000 0.808000
--1.000000 0.061400 0.243900 0.248000 0.608000 0.744000
--0.973900 0.050200 0.243900 0.312000 0.448000 0.832000
--1.000000 0.100400 0.207000 0.040000 0.608000 0.784000
--0.950000 0.050200 0.232900 0.312000 0.424000 0.840000
--0.950000 0.100400 0.204500 0.176000 0.504000 0.840000
--0.900000 0.050200 0.202100 0.368000 0.256000 0.888000
--0.900000 0.100400 0.184100 0.296000 0.408000 0.856000
--0.865600 0.050200 0.182900 0.480000 0.256000 0.832000
--0.897500 0.100400 0.182900 0.392000 0.408000 0.816000
--0.850000 0.050200 0.170400 0.488000 0.296000 0.816000
--0.850000 0.100400 0.150400 0.488000 0.512000 0.696000
--0.800000 0.050200 0.139800 0.504000 0.392000 0.760000
--0.820700 0.100400 0.121900 0.496000 0.488000 0.704000
--0.800000 0.077200 0.121900 0.512000 0.416000 0.744000
--0.800000 0.100400 0.105500 0.480000 0.456000 0.736000
--0.781300 0.050200 0.121900 0.536000 0.400000 0.736000
--0.750000 0.100400 0.065100 0.488000 0.448000 0.736000
--0.750000 0.050200 0.097600 0.464000 0.408000 0.776000
--0.744800 0.100400 0.060900 0.496000 0.456000 0.728000
--0.700000 0.050200 0.061900 0.536000 0.368000 0.752000
--0.700000 0.051600 0.060900 0.528000 0.416000 0.728000
--0.699000 0.050200 0.060900 0.608000 0.360000 0.696000
--0.700000 0.100400 0.019100 0.504000 0.504000 0.688000
--0.650000 0.050200 0.008200 0.568000 0.384000 0.720000
--0.680200 0.100400 0.000000 0.600000 0.440000 0.656000
--0.650000 0.063100 0.000000 0.592000 0.392000 0.696000
--0.650000 0.100400 -0.043200 0.600000 0.608000 0.496000
--0.641800 0.050200 0.000000 0.616000 0.400000 0.664000
--0.638000 0.100400 -0.060900 0.672000 0.632000 0.368000
--0.600000 0.050200 -0.054100 0.640000 0.448000 0.616000
--0.600000 0.057600 -0.060900 0.728000 0.536000 0.408000
--0.594700 0.050200 -0.060900 0.744000 0.504000 0.416000
--0.600000 0.050200 -0.083400 0.800000 0.528000 -0.248000
--0.573200 0.000000 -0.060900 0.920000 0.296000 -0.248000
--0.600000 0.000000 -0.117700 0.848000 0.200000 -0.488000
--0.554400 -0.050200 -0.060900 0.944000 0.280000 0.128000
--0.600000 -0.008200 -0.121900 0.848000 0.208000 -0.472000
--0.586600 -0.050200 -0.121900 0.872000 0.224000 -0.424000
--0.600000 -0.050200 -0.162700 0.904000 0.232000 -0.344000
--0.578300 -0.100400 -0.121900 0.848000 0.312000 -0.424000
--0.600000 -0.077900 -0.182900 0.856000 0.208000 -0.464000
--0.594100 -0.100400 -0.182900 0.816000 0.296000 -0.480000
--0.600000 -0.100400 -0.193800 0.776000 0.296000 -0.544000
--0.561800 -0.150600 -0.182900 0.544000 0.784000 -0.280000
--0.600000 -0.150600 -0.229400 0.416000 0.744000 -0.512000
--0.550000 -0.155500 -0.182900 0.296000 0.920000 -0.232000
--0.600000 -0.160400 -0.243900 0.432000 0.688000 -0.576000
--0.550000 -0.172700 -0.243900 0.008000 0.856000 -0.512000
--0.600000 -0.200800 -0.299500 0.000000 0.872000 -0.480000
--0.550000 -0.200800 -0.303600 -0.040000 0.880000 -0.464000
--0.600000 -0.203400 -0.304800 0.008000 0.768000 -0.632000
--0.550000 -0.201300 -0.304800 -0.032000 0.864000 -0.488000
--0.600000 -0.251000 -0.360600 -0.120000 0.624000 -0.760000
--0.550000 -0.245600 -0.365800 -0.104000 0.680000 -0.720000
--0.576800 -0.251000 -0.365800 -0.136000 0.624000 -0.760000
--0.550000 -0.251000 -0.371400 -0.120000 0.616000 -0.768000
--0.600000 -0.256300 -0.365800 -0.112000 0.608000 -0.776000
--0.550000 -0.301200 -0.401000 0.000000 0.424000 -0.904000
--0.600000 -0.301200 -0.399100 0.008000 0.480000 -0.872000
--0.550000 -0.349500 -0.426800 0.056000 0.416000 -0.904000
--0.600000 -0.340300 -0.426800 0.032000 0.512000 -0.848000
--0.600000 -0.301200 -0.399100 0.008000 0.480000 -0.872000
--0.650000 -0.337200 -0.426800 0.016000 0.520000 -0.848000
--0.650000 -0.301200 -0.398600 0.000000 0.528000 -0.840000
--0.700000 -0.338200 -0.426800 -0.192000 0.592000 -0.776000
--0.700000 -0.301200 -0.401600 0.016000 0.504000 -0.856000
--0.736800 -0.351500 -0.426800 -0.240000 0.480000 -0.832000
--0.750000 -0.301200 -0.392900 -0.104000 0.352000 -0.928000
--0.750000 -0.351500 -0.422100 -0.312000 0.448000 -0.824000
--0.800000 -0.301200 -0.380800 -0.264000 0.104000 -0.952000
--0.800000 -0.351500 -0.388300 -0.664000 -0.152000 -0.728000
--0.826000 -0.301200 -0.365800 -0.648000 -0.448000 -0.600000
--0.812200 -0.351500 -0.365800 -0.856000 -0.296000 -0.408000
--0.850000 -0.301200 -0.321900 -0.728000 -0.616000 -0.280000
--0.821000 -0.351500 -0.304800 -0.824000 -0.504000 0.232000
--0.850000 -0.306900 -0.304800 -0.768000 -0.624000 0.072000
--0.807300 -0.351500 -0.243900 -0.864000 -0.472000 0.152000
--0.850000 -0.301200 -0.293400 -0.744000 -0.560000 0.336000
--0.834700 -0.301200 -0.243900 -0.840000 -0.504000 0.184000
--0.850000 -0.276800 -0.243900 -0.792000 -0.552000 0.248000
--0.831100 -0.301200 -0.182900 -0.848000 -0.520000 0.016000
--0.850000 -0.271300 -0.182900 -0.816000 -0.568000 0.032000
--0.832400 -0.301200 -0.121900 -0.840000 -0.528000 0.048000
--0.850000 -0.274400 -0.121900 -0.816000 -0.568000 0.008000
--0.826600 -0.301200 -0.060900 -0.824000 -0.544000 0.120000
--0.850000 -0.265600 -0.060900 -0.808000 -0.568000 0.104000
--0.817700 -0.301200 0.000000 -0.808000 -0.560000 0.168000
--0.850000 -0.254700 0.000000 -0.800000 -0.568000 0.168000
--0.805900 -0.301200 0.060900 -0.800000 -0.536000 0.232000
--0.850000 -0.251000 0.014600 -0.800000 -0.560000 0.176000
--0.838400 -0.251000 0.060900 -0.808000 -0.528000 0.248000
--0.850000 -0.233200 0.060900 -0.816000 -0.512000 0.248000
--0.819200 -0.251000 0.121900 -0.760000 -0.496000 0.400000
--0.850000 -0.203500 0.121900 -0.792000 -0.528000 0.288000
--0.800000 -0.251000 0.157900 -0.576000 -0.400000 0.696000
--0.850000 -0.200800 0.125700 -0.776000 -0.360000 0.504000
--0.800000 -0.206500 0.182900 -0.304000 -0.264000 0.912000
--0.803100 -0.200800 0.182900 -0.456000 -0.168000 0.864000
--0.800000 -0.200800 0.184500 -0.256000 -0.128000 0.952000
--0.836800 -0.150600 0.182900 -0.304000 -0.304000 0.896000
--0.800000 -0.150600 0.189500 -0.240000 -0.056000 0.960000
--0.850000 -0.137400 0.182900 -0.304000 -0.312000 0.896000
--0.800000 -0.100400 0.186900 0.104000 0.048000 0.992000
--0.850000 -0.100400 0.192600 -0.136000 -0.312000 0.936000
--0.800000 -0.063400 0.182900 0.240000 0.160000 0.952000
--0.850000 -0.050200 0.193400 0.200000 0.072000 0.968000
--0.809300 -0.050200 0.182900 0.232000 0.160000 0.952000
--0.850000 0.000000 0.186200 0.256000 0.144000 0.952000
--0.839600 0.000000 0.182900 0.264000 0.152000 0.944000
--0.850000 0.016800 0.182900 0.328000 0.184000 0.920000
--0.800000 0.000000 0.163200 0.400000 0.288000 0.864000
--0.850000 0.050200 0.170400 0.488000 0.296000 0.816000
--0.800000 0.050200 0.139800 0.504000 0.392000 0.760000
--0.800000 0.000000 0.163200 0.400000 0.288000 0.864000
--0.781300 0.050200 0.121900 0.536000 0.400000 0.736000
--0.750000 0.000000 0.129400 0.496000 0.360000 0.776000
--0.750000 0.012900 0.121900 0.496000 0.384000 0.768000
--0.740500 0.000000 0.121900 0.504000 0.352000 0.784000
--0.750000 0.050200 0.097600 0.464000 0.408000 0.776000
--0.700000 0.000000 0.089700 0.584000 0.336000 0.736000
--0.700000 0.050200 0.061900 0.536000 0.368000 0.752000
--0.666100 0.000000 0.060900 0.560000 0.376000 0.728000
--0.699000 0.050200 0.060900 0.608000 0.360000 0.696000
--0.650000 0.000000 0.045200 0.576000 0.400000 0.704000
--0.650000 0.050200 0.008200 0.568000 0.384000 0.720000
--0.609800 0.000000 0.000000 0.696000 0.384000 0.592000
--0.641800 0.050200 0.000000 0.616000 0.400000 0.664000
--0.600000 0.000000 -0.017800 0.736000 0.384000 0.544000
--0.600000 0.050200 -0.054100 0.640000 0.448000 0.616000
--0.573200 0.000000 -0.060900 0.920000 0.296000 -0.248000
--0.594700 0.050200 -0.060900 0.744000 0.504000 0.416000
--0.594700 0.050200 -0.060900 0.744000 0.504000 0.416000
--1.000000 0.050200 0.254800 0.280000 0.504000 0.808000
--1.000000 0.050200 0.254800 0.280000 0.504000 0.808000
--1.000000 0.000000 0.260200 0.424000 -0.312000 0.840000
--0.973900 0.050200 0.243900 0.312000 0.448000 0.832000
--0.976100 0.000000 0.243900 0.464000 -0.432000 0.768000
--0.950000 0.050200 0.232900 0.312000 0.424000 0.840000
--0.950000 0.000000 0.224500 0.344000 -0.144000 0.920000
--0.900000 0.050200 0.202100 0.368000 0.256000 0.888000
--0.900000 0.000000 0.204000 0.296000 0.088000 0.944000
--0.865600 0.050200 0.182900 0.480000 0.256000 0.832000
--0.850000 0.000000 0.186200 0.256000 0.144000 0.952000
--0.850000 0.016800 0.182900 0.328000 0.184000 0.920000
--0.865600 0.050200 0.182900 0.480000 0.256000 0.832000
--0.850000 0.050200 0.170400 0.488000 0.296000 0.816000
--0.850000 0.050200 0.170400 0.488000 0.296000 0.816000
--1.000000 0.000000 0.260200 0.424000 -0.312000 0.840000
--1.000000 0.000000 0.260200 0.424000 -0.312000 0.840000
--0.976100 0.000000 0.243900 0.464000 -0.432000 0.768000
--1.000000 -0.016700 0.243900 0.424000 -0.608000 0.656000
--0.950000 0.000000 0.224500 0.344000 -0.144000 0.920000
--1.000000 -0.050200 0.185900 -0.256000 -0.768000 0.576000
--0.950000 -0.050200 0.212200 0.160000 -0.384000 0.904000
--1.000000 -0.052000 0.182900 -0.336000 -0.760000 0.544000
--0.950000 -0.074300 0.182900 -0.344000 -0.776000 0.520000
--1.000000 -0.075600 0.121900 -0.328000 -0.896000 0.264000
--0.950000 -0.095300 0.121900 -0.400000 -0.864000 0.280000
--1.000000 -0.090800 0.060900 -0.320000 -0.912000 0.248000
--0.950000 -0.100400 0.101700 -0.400000 -0.872000 0.264000
--0.973400 -0.100400 0.060900 -0.344000 -0.904000 0.240000
--0.950000 -0.110600 0.060900 -0.432000 -0.856000 0.248000
--1.000000 -0.100400 0.014600 -0.304000 -0.920000 0.208000
--0.950000 -0.123700 0.000000 -0.488000 -0.840000 0.216000
--1.000000 -0.103100 0.000000 -0.304000 -0.920000 0.208000
--0.950000 -0.136200 -0.060900 -0.528000 -0.832000 0.152000
--1.000000 -0.112800 -0.060900 -0.376000 -0.912000 0.144000
--0.950000 -0.144800 -0.121900 -0.536000 -0.832000 0.120000
--1.000000 -0.120900 -0.121900 -0.400000 -0.904000 0.136000
--0.950000 -0.150600 -0.169000 -0.584000 -0.792000 0.136000
--1.000000 -0.129600 -0.182900 -0.400000 -0.904000 0.136000
--0.952800 -0.150600 -0.182900 -0.568000 -0.808000 0.136000
--1.000000 -0.135800 -0.243900 -0.400000 -0.904000 0.096000
--0.966700 -0.150600 -0.243900 -0.472000 -0.864000 0.152000
--1.000000 -0.142300 -0.304800 -0.328000 -0.456000 -0.824000
--0.989000 -0.150600 -0.304800 -0.440000 -0.624000 -0.640000
--1.000000 -0.100400 -0.332000 -0.256000 -0.392000 -0.880000
--0.950000 -0.150600 -0.330800 -0.416000 -0.432000 -0.792000
--0.950000 -0.100400 -0.349400 -0.088000 -0.160000 -0.976000
--0.900000 -0.150600 -0.338300 -0.216000 -0.104000 -0.968000
--0.900000 -0.100400 -0.346700 0.112000 -0.048000 -0.984000
--0.850000 -0.150600 -0.349400 0.072000 0.056000 -0.992000
--0.850000 -0.100400 -0.332400 0.280000 0.112000 -0.952000
--0.800000 -0.150600 -0.340500 0.312000 0.288000 -0.896000
--0.800000 -0.100400 -0.313000 0.368000 0.216000 -0.896000
--0.750000 -0.150600 -0.317800 0.416000 0.384000 -0.816000
--0.785000 -0.100400 -0.304800 0.328000 0.224000 -0.912000
--0.750000 -0.129200 -0.304800 0.392000 0.376000 -0.832000
--0.750000 -0.100400 -0.291100 0.336000 0.256000 -0.896000
--0.731900 -0.150600 -0.304800 0.424000 0.400000 -0.808000
--0.700000 -0.100400 -0.274700 0.392000 0.112000 -0.904000
--0.700000 -0.150600 -0.284500 0.376000 0.392000 -0.832000
--0.650000 -0.100400 -0.251900 0.448000 0.224000 -0.856000
--0.650000 -0.150600 -0.267500 0.376000 0.464000 -0.792000
--0.638400 -0.100400 -0.243900 0.560000 0.160000 -0.808000
--0.612700 -0.150600 -0.243900 0.496000 0.576000 -0.640000
--0.600000 -0.100400 -0.193800 0.776000 0.296000 -0.544000
--0.600000 -0.150600 -0.229400 0.416000 0.744000 -0.512000
--0.612700 -0.150600 -0.243900 0.496000 0.576000 -0.640000
--0.600000 -0.160400 -0.243900 0.432000 0.688000 -0.576000
--0.650000 -0.150600 -0.267500 0.376000 0.464000 -0.792000
--0.600000 -0.200800 -0.299500 0.000000 0.872000 -0.480000
--0.650000 -0.200800 -0.303800 0.136000 0.680000 -0.712000
--0.600000 -0.203400 -0.304800 0.008000 0.768000 -0.632000
--0.650000 -0.201600 -0.304800 0.104000 0.688000 -0.704000
--0.600000 -0.251000 -0.360600 -0.120000 0.624000 -0.760000
--0.650000 -0.251000 -0.354800 0.152000 0.632000 -0.752000
--0.600000 -0.256300 -0.365800 -0.112000 0.608000 -0.776000
--0.650000 -0.261300 -0.365800 0.088000 0.568000 -0.808000
--0.600000 -0.301200 -0.399100 0.008000 0.480000 -0.872000
--0.650000 -0.301200 -0.398600 0.000000 0.528000 -0.840000
--0.650000 -0.261300 -0.365800 0.088000 0.568000 -0.808000
--0.700000 -0.301200 -0.401600 0.016000 0.504000 -0.856000
--0.700000 -0.252100 -0.365800 0.096000 0.552000 -0.824000
--0.750000 -0.301200 -0.392900 -0.104000 0.352000 -0.928000
--0.707800 -0.251000 -0.365800 0.064000 0.432000 -0.896000
--0.750000 -0.251000 -0.369800 0.056000 0.280000 -0.952000
--0.750000 -0.240500 -0.365800 0.056000 0.272000 -0.952000
--0.800000 -0.251000 -0.370300 -0.064000 0.200000 -0.976000
--0.800000 -0.234100 -0.365800 -0.112000 0.264000 -0.952000
--0.828000 -0.251000 -0.365800 -0.248000 0.216000 -0.936000
--0.800000 -0.200800 -0.355700 0.080000 0.256000 -0.960000
--0.850000 -0.251000 -0.359600 -0.320000 0.248000 -0.912000
--0.850000 -0.200800 -0.351200 -0.168000 0.112000 -0.976000
--0.891700 -0.251000 -0.304800 -0.808000 -0.512000 -0.264000
--0.900000 -0.200800 -0.331500 -0.576000 -0.328000 -0.736000
--0.900000 -0.236500 -0.304800 -0.680000 -0.456000 -0.560000
--0.931500 -0.200800 -0.304800 -0.648000 -0.520000 -0.544000
--0.900000 -0.212400 -0.243900 -0.672000 -0.712000 0.176000
--0.914100 -0.200800 -0.243900 -0.664000 -0.728000 0.128000
--0.900000 -0.206900 -0.182900 -0.648000 -0.752000 0.056000
--0.907400 -0.200800 -0.182900 -0.688000 -0.712000 0.072000
--0.900000 -0.204500 -0.121900 -0.688000 -0.712000 0.104000
--0.903800 -0.200800 -0.121900 -0.696000 -0.704000 0.120000
--0.900000 -0.200800 -0.096200 -0.752000 -0.632000 0.128000
--0.943100 -0.150600 -0.121900 -0.672000 -0.720000 0.120000
--0.900000 -0.192500 -0.060900 -0.856000 -0.488000 0.144000
--0.932400 -0.150600 -0.060900 -0.688000 -0.696000 0.176000
--0.900000 -0.169600 0.000000 -0.800000 -0.552000 0.224000
--0.915700 -0.150600 0.000000 -0.696000 -0.672000 0.232000
--0.900000 -0.150600 0.057700 -0.744000 -0.616000 0.232000
--0.950000 -0.123700 0.000000 -0.488000 -0.840000 0.216000
--0.900000 -0.149700 0.060900 -0.696000 -0.664000 0.232000
--0.950000 -0.110600 0.060900 -0.432000 -0.856000 0.248000
--0.900000 -0.127600 0.121900 -0.608000 -0.704000 0.344000
--0.950000 -0.100400 0.101700 -0.400000 -0.872000 0.264000
--0.939400 -0.100400 0.121900 -0.456000 -0.816000 0.336000
--0.950000 -0.095300 0.121900 -0.400000 -0.864000 0.280000
--0.900000 -0.100400 0.174900 -0.400000 -0.624000 0.656000
--0.950000 -0.074300 0.182900 -0.344000 -0.776000 0.520000
--0.900000 -0.094400 0.182900 -0.312000 -0.608000 0.720000
--0.950000 -0.050200 0.212200 0.160000 -0.384000 0.904000
--0.900000 -0.050200 0.208600 0.200000 -0.168000 0.960000
--0.950000 0.000000 0.224500 0.344000 -0.144000 0.920000
--0.900000 0.000000 0.204000 0.296000 0.088000 0.944000
--0.900000 -0.050200 0.208600 0.200000 -0.168000 0.960000
--0.850000 0.000000 0.186200 0.256000 0.144000 0.952000
--0.850000 -0.050200 0.193400 0.200000 0.072000 0.968000
--0.900000 -0.050200 0.208600 0.200000 -0.168000 0.960000
--0.850000 -0.100400 0.192600 -0.136000 -0.312000 0.936000
--0.900000 -0.094400 0.182900 -0.312000 -0.608000 0.720000
--0.886800 -0.100400 0.182900 -0.288000 -0.576000 0.752000
--0.900000 -0.100400 0.174900 -0.400000 -0.624000 0.656000
--0.850000 -0.137400 0.182900 -0.304000 -0.312000 0.896000
--0.900000 -0.127600 0.121900 -0.608000 -0.704000 0.344000
--0.850000 -0.150600 0.175600 -0.632000 -0.392000 0.664000
--0.878400 -0.150600 0.121900 -0.736000 -0.560000 0.368000
--0.850000 -0.200800 0.125700 -0.776000 -0.360000 0.504000
--0.851500 -0.200800 0.121900 -0.832000 -0.360000 0.408000
--0.850000 -0.203500 0.121900 -0.792000 -0.528000 0.288000
--0.869300 -0.200800 0.060900 -0.824000 -0.496000 0.248000
--0.850000 -0.233200 0.060900 -0.816000 -0.512000 0.248000
--0.882700 -0.200800 0.000000 -0.840000 -0.496000 0.192000
--0.850000 -0.251000 0.014600 -0.800000 -0.560000 0.176000
--0.852600 -0.251000 0.000000 -0.800000 -0.568000 0.168000
--0.850000 -0.254700 0.000000 -0.800000 -0.568000 0.168000
--0.860100 -0.251000 -0.060900 -0.808000 -0.568000 0.112000
--0.850000 -0.265600 -0.060900 -0.808000 -0.568000 0.104000
--0.866600 -0.251000 -0.121900 -0.808000 -0.576000 0.072000
--0.850000 -0.274400 -0.121900 -0.816000 -0.568000 0.008000
--0.864200 -0.251000 -0.182900 -0.800000 -0.592000 0.000000
--0.850000 -0.271300 -0.182900 -0.816000 -0.568000 0.032000
--0.869200 -0.251000 -0.243900 -0.768000 -0.600000 0.200000
--0.850000 -0.276800 -0.243900 -0.792000 -0.552000 0.248000
--0.891700 -0.251000 -0.304800 -0.808000 -0.512000 -0.264000
--0.850000 -0.301200 -0.293400 -0.744000 -0.560000 0.336000
--0.854400 -0.301200 -0.304800 -0.776000 -0.608000 0.112000
--0.850000 -0.306900 -0.304800 -0.768000 -0.624000 0.072000
--0.850000 -0.301200 -0.321900 -0.728000 -0.616000 -0.280000
--0.854400 -0.301200 -0.304800 -0.776000 -0.608000 0.112000
--0.850000 -0.251000 -0.359600 -0.320000 0.248000 -0.912000
--0.891700 -0.251000 -0.304800 -0.808000 -0.512000 -0.264000
--0.891700 -0.251000 -0.304800 -0.808000 -0.512000 -0.264000
--1.000000 0.100400 0.207000 0.040000 0.608000 0.784000
--1.000000 0.100400 0.207000 0.040000 0.608000 0.784000
--0.950000 0.100400 0.204500 0.176000 0.504000 0.840000
--1.000000 0.136100 0.182900 0.152000 0.600000 0.776000
--0.950000 0.127100 0.182900 0.248000 0.536000 0.800000
--1.000000 0.150600 0.170300 0.208000 0.568000 0.792000
--0.950000 0.150600 0.154300 0.208000 0.640000 0.736000
--1.000000 0.192500 0.121900 0.192000 0.664000 0.720000
--0.950000 0.178500 0.121900 0.272000 0.648000 0.704000
--1.000000 0.200800 0.112700 0.192000 0.656000 0.720000
--0.950000 0.200800 0.096100 0.208000 0.672000 0.704000
--1.000000 0.241600 0.060900 0.248000 0.768000 0.584000
--0.950000 0.226300 0.060900 0.264000 0.760000 0.584000
--1.000000 0.251000 0.045400 0.264000 0.768000 0.568000
--0.950000 0.251000 0.016800 0.288000 0.808000 0.504000
--1.000000 0.274600 0.000000 0.264000 0.848000 0.448000
--0.950000 0.258900 0.000000 0.296000 0.848000 0.432000
--1.000000 0.294800 -0.060900 0.312000 0.944000 0.080000
--0.950000 0.277400 -0.060900 0.336000 0.928000 0.080000
--1.000000 0.286500 -0.121900 0.328000 0.872000 -0.344000
--0.950000 0.267200 -0.121900 0.344000 0.864000 -0.336000
--1.000000 0.256900 -0.182900 0.288000 0.752000 -0.584000
--0.950000 0.251000 -0.157200 0.320000 0.808000 -0.480000
--0.985000 0.251000 -0.182900 0.288000 0.752000 -0.576000
--0.950000 0.237800 -0.182900 0.296000 0.760000 -0.568000
--1.000000 0.251000 -0.191500 0.280000 0.728000 -0.616000
--0.950000 0.200800 -0.231900 0.272000 0.640000 -0.704000
--1.000000 0.207900 -0.243900 0.232000 0.640000 -0.728000
--0.980800 0.200800 -0.243900 0.232000 0.632000 -0.736000
--1.000000 0.200800 -0.251300 0.232000 0.624000 -0.736000
--0.950000 0.189400 -0.243900 0.264000 0.616000 -0.728000
--1.000000 0.150600 -0.296000 0.168000 0.544000 -0.816000
--0.950000 0.150600 -0.281200 0.240000 0.600000 -0.752000
--1.000000 0.137800 -0.304800 0.104000 0.472000 -0.872000
--0.950000 0.126000 -0.304800 0.168000 0.528000 -0.824000
--1.000000 0.100400 -0.326700 0.072000 0.384000 -0.912000
--0.950000 0.100400 -0.325900 0.192000 0.384000 -0.896000
--1.000000 0.050200 -0.349300 0.080000 0.216000 -0.968000
--0.950000 0.050200 -0.340200 0.184000 0.072000 -0.976000
--1.000000 0.000000 -0.357700 0.216000 -0.064000 -0.968000
--0.950000 0.000000 -0.337100 0.184000 -0.088000 -0.976000
--1.000000 -0.050200 -0.339100 0.152000 -0.176000 -0.968000
--0.950000 -0.050200 -0.337400 0.088000 0.008000 -0.992000
--1.000000 -0.100400 -0.332000 -0.256000 -0.392000 -0.880000
--0.950000 -0.100400 -0.349400 -0.088000 -0.160000 -0.976000
--0.950000 -0.050200 -0.337400 0.088000 0.008000 -0.992000
--0.900000 -0.100400 -0.346700 0.112000 -0.048000 -0.984000
--0.900000 -0.050200 -0.330000 0.160000 0.128000 -0.976000
--0.850000 -0.100400 -0.332400 0.280000 0.112000 -0.952000
--0.850000 -0.050200 -0.323400 0.248000 0.176000 -0.944000
--0.800000 -0.100400 -0.313000 0.368000 0.216000 -0.896000
--0.808200 -0.050200 -0.304800 0.280000 0.136000 -0.944000
--0.800000 -0.066700 -0.304800 0.296000 0.144000 -0.936000
--0.800000 -0.050200 -0.302200 0.264000 0.120000 -0.952000
--0.785000 -0.100400 -0.304800 0.328000 0.224000 -0.912000
--0.750000 -0.050200 -0.287100 0.288000 0.040000 -0.952000
--0.750000 -0.100400 -0.291100 0.336000 0.256000 -0.896000
--0.700000 -0.050200 -0.272000 0.360000 0.104000 -0.920000
--0.700000 -0.100400 -0.274700 0.392000 0.112000 -0.904000
--0.650000 -0.050200 -0.249300 0.496000 0.208000 -0.840000
--0.650000 -0.100400 -0.251900 0.448000 0.224000 -0.856000
--0.642900 -0.050200 -0.243900 0.560000 0.208000 -0.792000
--0.638400 -0.100400 -0.243900 0.560000 0.160000 -0.808000
--0.606100 -0.050200 -0.182900 0.864000 0.248000 -0.424000
--0.600000 -0.100400 -0.193800 0.776000 0.296000 -0.544000
--0.600000 -0.077900 -0.182900 0.856000 0.208000 -0.464000
--0.606100 -0.050200 -0.182900 0.864000 0.248000 -0.424000
--0.600000 -0.050200 -0.162700 0.904000 0.232000 -0.344000
--0.621400 0.000000 -0.182900 0.848000 0.280000 -0.440000
--0.600000 -0.008200 -0.121900 0.848000 0.208000 -0.472000
--0.601900 0.000000 -0.121900 0.848000 0.208000 -0.472000
--0.600000 0.000000 -0.117700 0.848000 0.200000 -0.488000
--0.614300 0.050200 -0.121900 0.720000 0.480000 -0.480000
--0.600000 0.050200 -0.083400 0.800000 0.528000 -0.248000
--0.650000 0.089500 -0.121900 0.728000 0.552000 -0.384000
--0.600000 0.057600 -0.060900 0.728000 0.536000 0.408000
--0.650000 0.100400 -0.098000 0.720000 0.624000 -0.288000
--0.638000 0.100400 -0.060900 0.672000 0.632000 0.368000
--0.650000 0.112000 -0.060900 0.672000 0.704000 0.200000
--0.650000 0.100400 -0.043200 0.600000 0.608000 0.496000
--0.689800 0.150600 -0.060900 0.640000 0.736000 0.192000
--0.680200 0.100400 0.000000 0.600000 0.440000 0.656000
--0.700000 0.150600 -0.043600 0.552000 0.712000 0.424000
--0.700000 0.121800 0.000000 0.536000 0.544000 0.632000
--0.734000 0.150600 0.000000 0.496000 0.640000 0.576000
--0.700000 0.100400 0.019100 0.504000 0.504000 0.688000
--0.750000 0.150600 0.014500 0.472000 0.624000 0.608000
--0.744800 0.100400 0.060900 0.496000 0.456000 0.728000
--0.750000 0.106000 0.060900 0.496000 0.464000 0.728000
--0.750000 0.100400 0.065100 0.488000 0.448000 0.736000
--0.796300 0.150600 0.060900 0.512000 0.584000 0.616000
--0.800000 0.100400 0.105500 0.480000 0.456000 0.736000
--0.800000 0.150600 0.064100 0.424000 0.560000 0.704000
--0.820700 0.100400 0.121900 0.496000 0.488000 0.704000
--0.850000 0.150600 0.098600 0.360000 0.600000 0.704000
--0.850000 0.127100 0.121900 0.424000 0.560000 0.704000
--0.892900 0.150600 0.121900 0.360000 0.624000 0.680000
--0.850000 0.100400 0.150400 0.488000 0.512000 0.696000
--0.900000 0.150600 0.126400 0.344000 0.632000 0.688000
--0.897500 0.100400 0.182900 0.392000 0.408000 0.816000
--0.900000 0.101900 0.182900 0.304000 0.552000 0.768000
--0.900000 0.100400 0.184100 0.296000 0.408000 0.856000
--0.950000 0.127100 0.182900 0.248000 0.536000 0.800000
--0.950000 0.100400 0.204500 0.176000 0.504000 0.840000
--0.950000 0.100400 0.204500 0.176000 0.504000 0.840000
--0.886800 -0.100400 0.182900 -0.288000 -0.576000 0.752000
--0.886800 -0.100400 0.182900 -0.288000 -0.576000 0.752000
--0.850000 -0.100400 0.192600 -0.136000 -0.312000 0.936000
--0.850000 -0.137400 0.182900 -0.304000 -0.312000 0.896000
--0.850000 -0.137400 0.182900 -0.304000 -0.312000 0.896000
--0.800000 -0.100400 0.186900 0.104000 0.048000 0.992000
--0.800000 -0.100400 0.186900 0.104000 0.048000 0.992000
--0.800000 -0.063400 0.182900 0.240000 0.160000 0.952000
--0.776900 -0.100400 0.182900 0.184000 0.120000 0.968000
--0.800000 -0.050200 0.179900 0.264000 0.176000 0.944000
--0.750000 -0.100400 0.174700 0.320000 0.192000 0.920000
--0.750000 -0.050200 0.155100 0.464000 0.288000 0.832000
--0.700000 -0.100400 0.138900 0.488000 0.288000 0.816000
--0.708600 -0.050200 0.121900 0.496000 0.344000 0.784000
--0.700000 -0.062200 0.121900 0.504000 0.344000 0.784000
--0.700000 -0.050200 0.115300 0.496000 0.344000 0.792000
--0.677900 -0.100400 0.121900 0.528000 0.328000 0.776000
--0.650000 -0.050200 0.076400 0.576000 0.320000 0.744000
--0.650000 -0.100400 0.096100 0.592000 0.288000 0.744000
--0.635700 -0.050200 0.060900 0.640000 0.304000 0.696000
--0.612900 -0.100400 0.060900 0.624000 0.376000 0.672000
--0.600000 -0.050200 0.018400 0.648000 0.320000 0.688000
--0.600000 -0.100400 0.044600 0.672000 0.336000 0.656000
--0.584800 -0.050200 0.000000 0.744000 0.336000 0.568000
--0.565600 -0.100400 0.000000 0.744000 0.440000 0.496000
--0.554400 -0.050200 -0.060900 0.944000 0.280000 0.128000
--0.550000 -0.100400 -0.036900 0.792000 0.376000 0.464000
--0.550000 -0.066800 -0.060900 0.944000 0.320000 -0.008000
--0.533200 -0.100400 -0.060900 0.712000 0.696000 -0.024000
--0.550000 -0.100400 -0.079500 0.552000 0.552000 -0.616000
--0.500000 -0.119500 -0.060900 -0.160000 0.976000 0.112000
--0.550000 -0.145600 -0.121900 0.512000 0.792000 -0.312000
--0.500000 -0.144400 -0.121900 -0.376000 0.880000 -0.280000
--0.550000 -0.150600 -0.142400 0.376000 0.896000 -0.200000
--0.500000 -0.150600 -0.154000 -0.424000 0.880000 -0.160000
--0.550000 -0.155500 -0.182900 0.296000 0.920000 -0.232000
--0.500000 -0.154300 -0.182900 -0.320000 0.920000 -0.176000
--0.550000 -0.172700 -0.243900 0.008000 0.856000 -0.512000
--0.500000 -0.169200 -0.243900 -0.328000 0.880000 -0.312000
--0.550000 -0.200800 -0.303600 -0.040000 0.880000 -0.464000
--0.500000 -0.196700 -0.304800 -0.120000 0.848000 -0.504000
--0.544700 -0.200800 -0.304800 -0.080000 0.824000 -0.552000
--0.500000 -0.200800 -0.313000 -0.112000 0.824000 -0.544000
--0.550000 -0.201300 -0.304800 -0.032000 0.864000 -0.488000
--0.500000 -0.238600 -0.365800 -0.072000 0.656000 -0.744000
--0.550000 -0.245600 -0.365800 -0.104000 0.680000 -0.720000
--0.500000 -0.251000 -0.377000 -0.032000 0.528000 -0.840000
--0.550000 -0.251000 -0.371400 -0.120000 0.616000 -0.768000
--0.500000 -0.301200 -0.402500 0.040000 0.344000 -0.936000
--0.550000 -0.301200 -0.401000 0.000000 0.424000 -0.904000
--0.500000 -0.351500 -0.423900 0.056000 0.504000 -0.856000
--0.550000 -0.349500 -0.426800 0.056000 0.416000 -0.904000
--0.538500 -0.351500 -0.426800 0.048000 0.480000 -0.872000
--0.500000 -0.351500 -0.423900 0.056000 0.504000 -0.856000
--0.500000 -0.355300 -0.426800 0.056000 0.520000 -0.848000
--0.450000 -0.351500 -0.418600 0.080000 0.512000 -0.848000
--0.450000 -0.362400 -0.426800 0.064000 0.520000 -0.848000
--0.400000 -0.351500 -0.411400 0.000000 0.616000 -0.784000
--0.400000 -0.368700 -0.426800 0.024000 0.560000 -0.824000
--0.350000 -0.351500 -0.416300 -0.176000 0.600000 -0.768000
--0.350000 -0.360100 -0.426800 -0.128000 0.680000 -0.712000
--0.319100 -0.351500 -0.426800 -0.216000 0.568000 -0.784000
--0.350000 -0.351500 -0.416300 -0.176000 0.600000 -0.768000
--0.300000 -0.341100 -0.426800 -0.128000 0.536000 -0.832000
--0.350000 -0.301200 -0.377400 0.232000 0.208000 -0.944000
--0.300000 -0.301200 -0.369600 0.320000 0.544000 -0.768000
--0.350000 -0.251000 -0.367200 0.240000 0.168000 -0.952000
--0.300000 -0.296900 -0.365800 0.296000 0.528000 -0.784000
--0.345700 -0.251000 -0.365800 0.320000 0.336000 -0.880000
--0.300000 -0.251000 -0.348000 0.192000 0.248000 -0.944000
--0.350000 -0.248400 -0.365800 0.184000 0.424000 -0.880000
--0.300000 -0.200800 -0.340600 0.016000 0.280000 -0.952000
--0.350000 -0.200800 -0.339000 0.200000 0.416000 -0.880000
--0.300000 -0.150600 -0.319300 -0.256000 0.480000 -0.832000
--0.350000 -0.159400 -0.304800 -0.248000 0.528000 -0.808000
--0.331500 -0.150600 -0.304800 -0.256000 0.464000 -0.840000
--0.350000 -0.150600 -0.298700 -0.264000 0.464000 -0.840000
--0.300000 -0.118900 -0.304800 -0.376000 0.264000 -0.880000
--0.350000 -0.100400 -0.248500 -0.576000 0.440000 -0.680000
--0.300000 -0.100400 -0.298100 -0.480000 0.288000 -0.824000
--0.350000 -0.093900 -0.243900 -0.600000 0.408000 -0.680000
--0.300000 -0.050200 -0.270300 -0.824000 0.232000 -0.512000
--0.321700 -0.050200 -0.243900 -0.656000 0.344000 -0.656000
--0.300000 0.000000 -0.248500 -0.656000 0.560000 -0.488000
--0.301700 0.000000 -0.243900 -0.744000 0.392000 -0.536000
--0.300000 0.001800 -0.243900 -0.496000 0.680000 -0.520000
--0.340600 0.000000 -0.182900 -0.696000 0.480000 -0.520000
--0.300000 0.050200 -0.185100 -0.648000 0.560000 -0.504000
--0.301000 0.050200 -0.182900 -0.704000 0.472000 -0.512000
--0.300000 0.052000 -0.182900 -0.664000 0.464000 -0.568000
--0.335400 0.050200 -0.121900 -0.752000 0.472000 -0.456000
--0.300000 0.100400 -0.141500 -0.560000 0.512000 -0.640000
--0.317300 0.100400 -0.121900 -0.712000 0.264000 -0.640000
--0.300000 0.144000 -0.121900 -0.728000 0.496000 -0.456000
--0.350000 0.100400 -0.076700 -0.736000 0.256000 -0.616000
--0.300000 0.150600 -0.105900 -0.768000 0.536000 -0.320000
--0.350000 0.148000 -0.060900 -0.504000 0.552000 0.656000
--0.346000 0.150600 -0.060900 -0.768000 -0.144000 0.616000
--0.350000 0.100400 -0.017600 -0.744000 0.352000 0.552000
--0.300000 0.150600 -0.036000 -0.360000 0.064000 0.920000
--0.321000 0.100400 0.000000 -0.264000 0.416000 0.864000
--0.300000 0.112500 0.000000 -0.064000 0.472000 0.872000
--0.300000 0.100400 0.006400 -0.200000 0.408000 0.880000
--0.250000 0.104200 0.000000 0.144000 0.480000 0.856000
--0.250000 0.100400 0.002600 0.144000 0.496000 0.848000
--0.238500 0.100400 0.000000 0.152000 0.496000 0.848000
--0.250000 0.050200 0.048300 0.000000 0.552000 0.832000
--0.200000 0.089800 0.000000 0.216000 0.544000 0.800000
--0.200000 0.050200 0.037800 0.512000 0.448000 0.720000
--0.163800 0.050200 0.000000 0.704000 0.216000 0.664000
--0.200000 0.020500 0.060900 0.664000 0.440000 0.600000
--0.150800 0.000000 0.000000 0.744000 0.072000 0.656000
--0.190300 0.000000 0.060900 0.816000 0.200000 0.536000
--0.152800 -0.050200 0.000000 0.848000 0.032000 0.520000
--0.193200 -0.050200 0.060900 0.808000 0.008000 0.584000
--0.150600 -0.100400 0.000000 0.800000 0.040000 0.592000
--0.190200 -0.100400 0.060900 0.752000 -0.248000 0.600000
--0.150000 -0.104300 0.000000 0.496000 0.120000 0.848000
--0.200000 -0.121800 0.060900 0.728000 -0.328000 0.592000
--0.150000 -0.150600 0.010200 0.376000 0.208000 0.896000
--0.200000 -0.150600 0.042600 0.640000 -0.096000 0.752000
--0.150000 -0.200800 0.013600 0.104000 0.200000 0.968000
--0.200000 -0.200800 0.045500 0.568000 -0.152000 0.808000
--0.150000 -0.251000 0.002400 -0.056000 -0.176000 0.976000
--0.200000 -0.251000 0.018200 0.408000 -0.392000 0.816000
--0.150000 -0.301200 0.010200 -0.304000 -0.280000 0.904000
--0.200000 -0.279600 0.000000 -0.016000 -0.496000 0.864000
--0.169100 -0.301200 0.000000 -0.376000 -0.392000 0.832000
--0.200000 -0.301200 -0.017500 -0.064000 -0.432000 0.896000
--0.150000 -0.346200 0.000000 -0.392000 -0.160000 0.904000
--0.200000 -0.351500 -0.031500 -0.320000 -0.128000 0.936000
--0.150000 -0.351500 -0.001100 -0.192000 -0.352000 0.912000
--0.200000 -0.401700 -0.023400 -0.056000 -0.008000 0.992000
--0.150000 -0.401700 -0.019000 0.408000 -0.232000 0.880000
--0.200000 -0.451900 -0.018000 0.376000 -0.112000 0.912000
--0.150000 -0.451900 -0.041900 0.560000 -0.440000 0.696000
--0.200000 -0.502100 -0.039000 0.512000 -0.608000 0.592000
--0.150000 -0.470000 -0.060900 0.568000 -0.552000 0.600000
--0.181900 -0.502100 -0.060900 0.504000 -0.680000 0.520000
--0.150000 -0.502100 -0.111600 0.592000 -0.752000 0.280000
--0.200000 -0.511900 -0.060900 0.416000 -0.800000 0.424000
--0.150000 -0.505100 -0.121900 0.584000 -0.768000 0.240000
--0.200000 -0.534300 -0.121900 0.456000 -0.832000 0.296000
--0.150000 -0.510100 -0.182900 0.616000 -0.760000 0.168000
--0.200000 -0.549300 -0.182900 0.504000 -0.784000 0.344000
--0.150000 -0.530700 -0.243900 0.632000 -0.664000 0.392000
--0.200000 -0.552300 -0.190900 0.520000 -0.768000 0.360000
--0.172800 -0.552300 -0.243900 0.592000 -0.568000 0.560000
--0.200000 -0.579600 -0.243900 0.568000 -0.648000 0.496000
--0.150000 -0.552300 -0.270100 0.544000 -0.504000 0.656000
--0.200000 -0.602500 -0.268600 0.488000 -0.432000 0.752000
--0.150000 -0.602500 -0.302600 0.392000 -0.240000 0.880000
--0.200000 -0.652700 -0.286600 0.488000 -0.272000 0.824000
--0.150000 -0.609400 -0.304800 0.840000 -0.512000 0.152000
--0.171500 -0.652700 -0.304800 0.576000 -0.304000 0.752000
--0.150000 -0.602500 -0.307600 0.456000 -0.280000 -0.840000
--0.200000 -0.652700 -0.326500 0.488000 -0.272000 -0.824000
--0.200000 -0.602500 -0.345500 0.488000 -0.272000 -0.824000
--0.250000 -0.652700 -0.361600 0.240000 -0.216000 -0.944000
--0.229500 -0.602500 -0.365800 0.408000 -0.240000 -0.872000
--0.250000 -0.639500 -0.365800 0.216000 -0.224000 -0.944000
--0.250000 -0.602500 -0.376000 0.360000 -0.328000 -0.872000
--0.282800 -0.652700 -0.365800 0.080000 -0.160000 -0.976000
--0.300000 -0.602500 -0.397300 -0.248000 -0.488000 -0.832000
--0.300000 -0.652700 -0.367500 0.064000 -0.112000 -0.984000
--0.328400 -0.602500 -0.365800 -0.832000 -0.248000 -0.488000
--0.350000 -0.652700 -0.376000 0.560000 0.160000 -0.808000
--0.350000 -0.629600 -0.365800 0.056000 0.640000 -0.760000
--0.400000 -0.652700 -0.368100 -0.128000 -0.872000 -0.456000
--0.357100 -0.602500 -0.365800 0.904000 0.256000 -0.312000
--0.400000 -0.621700 -0.426800 0.392000 -0.856000 -0.304000
--0.370300 -0.602500 -0.426800 0.624000 -0.760000 -0.160000
--0.357100 -0.602500 -0.365800 0.904000 0.256000 -0.312000
--0.350000 -0.582100 -0.426800 0.344000 -0.808000 -0.456000
--0.350000 -0.585900 -0.365800 0.168000 -0.792000 -0.576000
--0.300000 -0.582000 -0.426800 0.336000 -0.608000 -0.712000
--0.328400 -0.602500 -0.365800 -0.832000 -0.248000 -0.488000
--0.300000 -0.602500 -0.397300 -0.248000 -0.488000 -0.832000
--0.300000 -0.582000 -0.426800 0.336000 -0.608000 -0.712000
--0.250000 -0.602500 -0.376000 0.360000 -0.328000 -0.872000
--0.275900 -0.552300 -0.426800 0.528000 -0.480000 -0.696000
--0.250000 -0.552300 -0.402600 0.504000 -0.312000 -0.792000
--0.250000 -0.526200 -0.426800 0.576000 -0.448000 -0.672000
--0.200000 -0.552300 -0.367100 0.360000 -0.232000 -0.896000
--0.235700 -0.502100 -0.426800 0.696000 -0.464000 -0.536000
--0.200000 -0.502100 -0.370700 0.184000 -0.352000 -0.912000
--0.200000 -0.459900 -0.426800 0.560000 -0.592000 -0.576000
--0.150000 -0.502100 -0.367300 0.088000 -0.320000 -0.936000
--0.191200 -0.451900 -0.426800 0.664000 -0.480000 -0.560000
--0.150000 -0.451900 -0.368100 0.456000 -0.056000 -0.880000
--0.194300 -0.401700 -0.426800 0.792000 0.416000 -0.432000
--0.150000 -0.417500 -0.365800 0.544000 0.056000 -0.832000
--0.151700 -0.401700 -0.365800 0.568000 0.104000 -0.808000
--0.150000 -0.401700 -0.364300 0.552000 0.080000 -0.824000
--0.200000 -0.365300 -0.365800 0.504000 0.768000 -0.376000
--0.150000 -0.351500 -0.350300 0.512000 0.192000 -0.832000
--0.200000 -0.351500 -0.343300 0.312000 0.640000 -0.696000
--0.150000 -0.301200 -0.318500 -0.024000 0.504000 -0.856000
--0.200000 -0.301200 -0.313400 0.328000 0.152000 -0.928000
--0.150000 -0.286300 -0.304800 -0.184000 0.480000 -0.848000
--0.200000 -0.251000 -0.307600 0.408000 0.096000 -0.904000
--0.195100 -0.251000 -0.304800 0.376000 0.112000 -0.912000
--0.200000 -0.200800 -0.306700 0.368000 -0.184000 -0.904000
--0.196100 -0.200800 -0.304800 0.360000 -0.200000 -0.904000
--0.200000 -0.150600 -0.333300 0.216000 -0.272000 -0.936000
--0.150000 -0.159100 -0.304800 0.152000 -0.400000 -0.896000
--0.150000 -0.150600 -0.309500 -0.032000 -0.400000 -0.912000
--0.108400 -0.200800 -0.304800 -0.496000 -0.048000 -0.856000
--0.100000 -0.150600 -0.315000 -0.456000 -0.064000 -0.880000
--0.100000 -0.200800 -0.311700 -0.496000 0.128000 -0.856000
--0.050000 -0.150600 -0.332400 0.016000 -0.080000 -0.992000
--0.050000 -0.200800 -0.320900 -0.056000 0.280000 -0.952000
-0.000000 -0.150600 -0.318000 0.160000 0.016000 -0.984000
-0.000000 -0.200800 -0.332000 -0.296000 0.528000 -0.784000
-0.050000 -0.150600 -0.318000 0.352000 0.312000 -0.872000
-0.050000 -0.200800 -0.360800 -0.016000 0.576000 -0.808000
-0.096000 -0.150600 -0.304800 0.176000 0.336000 -0.920000
-0.100000 -0.200800 -0.352600 0.240000 0.528000 -0.800000
-0.100000 -0.151600 -0.304800 -0.176000 0.536000 -0.816000
-0.150000 -0.200800 -0.325200 0.160000 0.176000 -0.968000
-0.101900 -0.150600 -0.304800 -0.296000 0.368000 -0.872000
-0.150000 -0.150600 -0.323600 -0.232000 0.464000 -0.848000
-0.114400 -0.100400 -0.304800 -0.344000 0.128000 -0.928000
-0.150000 -0.100400 -0.322200 0.000000 0.224000 -0.968000
-0.150000 -0.064700 -0.304800 -0.200000 0.328000 -0.912000
-0.185500 -0.100400 -0.304800 0.296000 0.104000 -0.944000
-0.150000 -0.050200 -0.298400 -0.176000 0.328000 -0.920000
-0.200000 -0.100400 -0.298900 0.088000 0.040000 -0.992000
-0.188500 -0.050200 -0.304800 -0.128000 0.184000 -0.968000
-0.200000 -0.061600 -0.304800 0.000000 -0.144000 -0.984000
-0.200000 -0.050200 -0.307000 0.000000 0.192000 -0.976000
-0.211400 -0.050200 -0.304800 0.152000 0.184000 -0.968000
-0.200000 -0.045300 -0.304800 -0.008000 0.344000 -0.936000
-0.250000 -0.050200 -0.297000 0.000000 0.040000 -0.992000
-0.200000 0.000000 -0.277300 0.080000 0.528000 -0.840000
-0.250000 0.000000 -0.271900 -0.336000 0.528000 -0.776000
-0.200000 0.025700 -0.243900 0.016000 0.752000 -0.648000
-0.250000 0.018500 -0.243900 -0.144000 0.856000 -0.480000
-0.200000 0.019700 -0.182900 0.160000 0.648000 0.736000
-0.250000 0.002800 -0.182900 0.128000 0.640000 0.752000
-0.200000 0.000000 -0.161400 0.032000 0.656000 0.752000
-0.250000 0.000000 -0.180400 0.176000 0.568000 0.792000
-0.200000 -0.041200 -0.121900 0.160000 0.488000 0.856000
-0.250000 -0.050200 -0.132500 0.192000 0.528000 0.816000
-0.222300 -0.050200 -0.121900 0.200000 0.432000 0.872000
-0.250000 -0.068700 -0.121900 0.096000 0.400000 0.904000
-0.200000 -0.050200 -0.116900 0.136000 0.368000 0.912000
-0.250000 -0.100400 -0.106800 0.080000 0.336000 0.936000
-0.200000 -0.100400 -0.095800 0.064000 0.272000 0.952000
-0.250000 -0.150600 -0.087200 0.040000 0.104000 0.992000
-0.200000 -0.150600 -0.099300 0.040000 0.104000 0.992000
-0.250000 -0.200800 -0.084100 0.120000 -0.168000 0.976000
-0.200000 -0.200800 -0.086600 0.112000 -0.336000 0.928000
-0.250000 -0.237200 -0.121900 0.048000 -0.656000 0.744000
-0.200000 -0.240500 -0.121900 0.152000 -0.656000 0.728000
-0.250000 -0.251000 -0.140300 -0.072000 -0.512000 0.848000
-0.200000 -0.251000 -0.134700 0.128000 -0.784000 0.600000
-0.250000 -0.301200 -0.149400 -0.376000 -0.584000 0.712000
-0.200000 -0.290700 -0.182900 -0.520000 -0.680000 0.512000
-0.211500 -0.301200 -0.182900 -0.568000 -0.672000 0.464000
-0.200000 -0.301200 -0.206400 -0.600000 -0.688000 0.384000
-0.250000 -0.319600 -0.182900 -0.280000 -0.832000 0.472000
-0.200000 -0.319700 -0.243900 -0.624000 -0.696000 0.328000
-0.250000 -0.343100 -0.243900 -0.320000 -0.920000 0.208000
-0.200000 -0.340400 -0.304800 -0.480000 -0.448000 -0.744000
-0.250000 -0.348300 -0.304800 -0.128000 -0.736000 -0.656000
-0.200000 -0.301200 -0.321600 -0.488000 -0.368000 -0.784000
-0.250000 -0.313600 -0.365800 -0.336000 -0.640000 -0.680000
-0.236200 -0.301200 -0.365800 -0.608000 -0.320000 -0.712000
-0.250000 -0.301200 -0.379400 -0.536000 -0.264000 -0.792000
-0.250000 -0.271800 -0.365800 -0.320000 0.360000 -0.872000
-0.300000 -0.301200 -0.372900 0.128000 -0.472000 -0.864000
-0.300000 -0.284400 -0.365800 0.136000 0.360000 -0.920000
-0.333500 -0.301200 -0.365800 0.208000 -0.080000 -0.968000
-0.300000 -0.251000 -0.347800 0.304000 0.384000 -0.864000
-0.350000 -0.301200 -0.360500 0.376000 0.184000 -0.904000
-0.350000 -0.251000 -0.329500 0.536000 0.472000 -0.688000
-0.400000 -0.301200 -0.307300 0.704000 0.496000 -0.496000
-0.366700 -0.251000 -0.304800 0.704000 0.488000 -0.496000
-0.400000 -0.299100 -0.304800 0.736000 0.472000 -0.472000
-0.399000 -0.251000 -0.243900 0.912000 -0.008000 -0.392000
-0.400000 -0.252300 -0.243900 0.744000 0.488000 -0.440000
-0.398900 -0.251000 -0.182900 0.896000 -0.160000 0.400000
-0.400000 -0.252800 -0.182900 0.760000 0.464000 0.440000
-0.354900 -0.251000 -0.121900 0.704000 -0.304000 0.632000
-0.400000 -0.301200 -0.149800 0.528000 0.376000 0.752000
-0.350000 -0.260400 -0.121900 0.448000 -0.472000 0.752000
-0.350000 -0.301200 -0.148100 0.392000 -0.048000 0.912000
-0.328900 -0.251000 -0.121900 -0.264000 -0.304000 0.912000
-0.300000 -0.301200 -0.149800 -0.024000 -0.480000 0.872000
-0.300000 -0.251000 -0.132800 -0.224000 -0.464000 0.856000
-0.250000 -0.301200 -0.149400 -0.376000 -0.584000 0.712000
-0.250000 -0.251000 -0.140300 -0.072000 -0.512000 0.848000
-0.300000 -0.251000 -0.132800 -0.224000 -0.464000 0.856000
-0.250000 -0.237200 -0.121900 0.048000 -0.656000 0.744000
-0.300000 -0.234400 -0.121900 0.104000 -0.472000 0.872000
-0.250000 -0.200800 -0.084100 0.120000 -0.168000 0.976000
-0.300000 -0.200800 -0.101500 0.424000 -0.216000 0.872000
-0.250000 -0.150600 -0.087200 0.040000 0.104000 0.992000
-0.300000 -0.150600 -0.090800 0.240000 -0.024000 0.968000
-0.250000 -0.100400 -0.106800 0.080000 0.336000 0.936000
-0.300000 -0.100400 -0.098900 -0.360000 0.344000 0.856000
-0.250000 -0.068700 -0.121900 0.096000 0.400000 0.904000
-0.300000 -0.060700 -0.121900 -0.512000 0.456000 0.720000
-0.250000 -0.050200 -0.132500 0.192000 0.528000 0.816000
-0.300000 -0.050200 -0.130700 -0.504000 0.472000 0.720000
-0.250000 0.000000 -0.180400 0.176000 0.568000 0.792000
-0.300000 0.000000 -0.166100 -0.488000 0.464000 0.728000
-0.250000 0.002800 -0.182900 0.128000 0.640000 0.752000
-0.300000 0.018000 -0.182900 -0.296000 0.768000 0.552000
-0.250000 0.018500 -0.243900 -0.144000 0.856000 -0.480000
-0.300000 0.032100 -0.243900 -0.576000 0.680000 -0.432000
-0.250000 0.000000 -0.271900 -0.336000 0.528000 -0.776000
-0.300000 0.000000 -0.302400 -0.544000 0.608000 -0.568000
-0.250000 -0.050200 -0.297000 0.000000 0.040000 -0.992000
-0.300000 -0.003100 -0.304800 -0.376000 0.424000 -0.816000
-0.266500 -0.050200 -0.304800 -0.280000 0.064000 -0.952000
-0.300000 -0.050200 -0.319900 -0.536000 0.224000 -0.808000
-0.278900 -0.100400 -0.304800 -0.176000 0.256000 -0.944000
-0.300000 -0.100400 -0.310000 -0.248000 0.072000 -0.960000
-0.250000 -0.114900 -0.304800 -0.104000 0.280000 -0.952000
-0.300000 -0.150600 -0.312600 0.312000 -0.200000 -0.920000
-0.250000 -0.150600 -0.317700 0.024000 0.336000 -0.936000
-0.300000 -0.200800 -0.324200 0.480000 0.248000 -0.832000
-0.250000 -0.200800 -0.343100 0.104000 0.232000 -0.960000
-0.300000 -0.251000 -0.347800 0.304000 0.384000 -0.864000
-0.250000 -0.251000 -0.353900 0.064000 0.384000 -0.920000
-0.300000 -0.284400 -0.365800 0.136000 0.360000 -0.920000
-0.250000 -0.271800 -0.365800 -0.320000 0.360000 -0.872000
-0.250000 -0.251000 -0.353900 0.064000 0.384000 -0.920000
-0.236200 -0.301200 -0.365800 -0.608000 -0.320000 -0.712000
-0.200000 -0.251000 -0.346500 -0.184000 0.088000 -0.976000
-0.200000 -0.301200 -0.321600 -0.488000 -0.368000 -0.784000
-0.150000 -0.251000 -0.336000 0.080000 -0.336000 -0.928000
-0.170700 -0.301200 -0.304800 -0.520000 -0.608000 -0.592000
-0.150000 -0.287400 -0.304800 0.000000 -0.712000 -0.688000
-0.176900 -0.301200 -0.243900 -0.504000 -0.800000 0.304000
-0.150000 -0.287700 -0.243900 -0.208000 -0.968000 0.064000
-0.200000 -0.301200 -0.206400 -0.600000 -0.688000 0.384000
-0.150000 -0.278000 -0.182900 -0.064000 -0.936000 0.328000
-0.200000 -0.290700 -0.182900 -0.520000 -0.680000 0.512000
-0.150000 -0.253200 -0.121900 0.192000 -0.808000 0.552000
-0.200000 -0.251000 -0.134700 0.128000 -0.784000 0.600000
-0.161400 -0.251000 -0.121900 0.152000 -0.792000 0.576000
-0.200000 -0.240500 -0.121900 0.152000 -0.656000 0.728000
-0.150000 -0.251000 -0.118100 0.224000 -0.792000 0.560000
-0.200000 -0.200800 -0.086600 0.112000 -0.336000 0.928000
-0.150000 -0.200800 -0.071800 0.312000 -0.208000 0.920000
-0.200000 -0.150600 -0.099300 0.040000 0.104000 0.992000
-0.150000 -0.150600 -0.071000 0.136000 0.176000 0.968000
-0.200000 -0.100400 -0.095800 0.064000 0.272000 0.952000
-0.150000 -0.100400 -0.080500 0.184000 0.336000 0.920000
-0.200000 -0.050200 -0.116900 0.136000 0.368000 0.912000
-0.150000 -0.050200 -0.113700 0.032000 0.448000 0.888000
-0.200000 -0.041200 -0.121900 0.160000 0.488000 0.856000
-0.150000 -0.036300 -0.121900 0.008000 0.488000 0.864000
-0.200000 0.000000 -0.161400 0.032000 0.656000 0.752000
-0.150000 0.000000 -0.166100 -0.096000 0.688000 0.712000
-0.200000 0.019700 -0.182900 0.160000 0.648000 0.736000
-0.150000 0.016800 -0.182900 -0.152000 0.840000 0.520000
-0.200000 0.025700 -0.243900 0.016000 0.752000 -0.648000
-0.150000 0.015400 -0.243900 -0.208000 0.728000 -0.640000
-0.200000 0.000000 -0.277300 0.080000 0.528000 -0.840000
-0.150000 0.000000 -0.257100 -0.208000 0.552000 -0.800000
-0.200000 -0.045300 -0.304800 -0.008000 0.344000 -0.936000
-0.150000 -0.050200 -0.298400 -0.176000 0.328000 -0.920000
-0.188500 -0.050200 -0.304800 -0.128000 0.184000 -0.968000
-0.200000 -0.045300 -0.304800 -0.008000 0.344000 -0.936000
-0.200000 -0.050200 -0.307000 0.000000 0.192000 -0.976000
-0.200000 -0.050200 -0.307000 0.000000 0.192000 -0.976000
--0.800000 -0.100400 0.186900 0.104000 0.048000 0.992000
--0.800000 -0.100400 0.186900 0.104000 0.048000 0.992000
--0.776900 -0.100400 0.182900 0.184000 0.120000 0.968000
--0.800000 -0.150600 0.189500 -0.240000 -0.056000 0.960000
--0.750000 -0.136500 0.182900 0.216000 0.112000 0.968000
--0.750000 -0.150600 0.184600 0.192000 0.080000 0.976000
--0.743500 -0.150600 0.182900 0.192000 0.096000 0.968000
--0.750000 -0.200800 0.187200 0.064000 -0.048000 0.992000
--0.703900 -0.200800 0.182900 0.128000 0.064000 0.984000
--0.750000 -0.251000 0.186100 -0.160000 -0.136000 0.976000
--0.700000 -0.208700 0.182900 0.176000 0.120000 0.968000
--0.700000 -0.251000 0.184700 0.008000 -0.024000 0.992000
--0.650000 -0.249200 0.182900 0.176000 0.464000 0.864000
--0.650000 -0.251000 0.183700 0.152000 0.272000 0.944000
--0.638500 -0.251000 0.182900 0.072000 0.424000 0.896000
--0.650000 -0.301200 0.185200 -0.152000 0.008000 0.984000
--0.600000 -0.260000 0.182900 0.056000 0.320000 0.944000
--0.600000 -0.301200 0.196400 -0.152000 0.176000 0.968000
--0.550000 -0.264400 0.182900 -0.072000 0.456000 0.880000
--0.550000 -0.301200 0.200100 -0.040000 0.312000 0.944000
--0.512000 -0.251000 0.182900 -0.112000 0.632000 0.760000
--0.500000 -0.301200 0.199600 -0.128000 0.216000 0.960000
--0.500000 -0.251000 0.185100 -0.112000 0.632000 0.760000
--0.450000 -0.301200 0.203900 0.032000 0.168000 0.984000
--0.450000 -0.251000 0.195400 -0.152000 0.392000 0.904000
--0.400000 -0.301200 0.211000 0.416000 0.000000 0.904000
--0.400000 -0.251000 0.203200 0.024000 0.208000 0.976000
--0.369700 -0.301200 0.182900 0.552000 -0.328000 0.752000
--0.350000 -0.251000 0.206900 0.584000 -0.272000 0.760000
--0.350000 -0.276800 0.182900 0.600000 -0.432000 0.664000
--0.334800 -0.251000 0.182900 0.672000 -0.480000 0.552000
--0.350000 -0.301200 0.167500 0.592000 -0.368000 0.712000
--0.300000 -0.251000 0.131000 0.632000 -0.616000 0.464000
--0.327200 -0.301200 0.121900 0.792000 -0.368000 0.472000
--0.300000 -0.256400 0.121900 0.624000 -0.624000 0.456000
--0.300000 -0.301200 0.065200 0.504000 -0.568000 0.640000
--0.294600 -0.251000 0.121900 0.616000 -0.600000 0.488000
--0.295000 -0.301200 0.060900 0.472000 -0.584000 0.648000
--0.250000 -0.251000 0.071500 0.528000 -0.408000 0.736000
--0.250000 -0.262800 0.060900 0.496000 -0.520000 0.688000
--0.236900 -0.251000 0.060900 0.464000 -0.480000 0.728000
--0.250000 -0.301200 0.006000 0.344000 -0.608000 0.704000
--0.200000 -0.251000 0.018200 0.408000 -0.392000 0.816000
--0.235900 -0.301200 0.000000 0.272000 -0.568000 0.768000
--0.200000 -0.279600 0.000000 -0.016000 -0.496000 0.864000
--0.200000 -0.301200 -0.017500 -0.064000 -0.432000 0.896000
--0.235900 -0.301200 0.000000 0.272000 -0.568000 0.768000
--0.200000 -0.351500 -0.031500 -0.320000 -0.128000 0.936000
--0.250000 -0.307700 0.000000 0.288000 -0.576000 0.760000
--0.250000 -0.351500 -0.038300 0.104000 -0.504000 0.848000
--0.300000 -0.343500 0.000000 0.832000 -0.408000 0.360000
--0.300000 -0.351500 -0.012600 0.872000 -0.352000 0.320000
--0.303300 -0.351500 0.000000 0.888000 -0.344000 0.288000
--0.300000 -0.401700 -0.045100 0.792000 -0.248000 0.544000
--0.319500 -0.401700 0.000000 0.536000 -0.584000 0.592000
--0.300000 -0.435300 -0.060900 -0.192000 -0.360000 0.912000
--0.350000 -0.427600 0.000000 0.560000 -0.752000 0.336000
--0.338500 -0.451900 -0.060900 0.112000 -0.632000 0.760000
--0.350000 -0.451900 -0.058800 0.248000 -0.624000 0.728000
--0.350000 -0.453900 -0.060900 0.248000 -0.624000 0.728000
--0.400000 -0.451900 -0.009600 0.744000 -0.536000 0.376000
--0.380200 -0.502100 -0.060900 0.648000 -0.616000 0.432000
--0.400000 -0.502100 -0.024700 0.848000 -0.224000 0.464000
--0.400000 -0.527700 -0.060900 0.080000 -0.768000 0.624000
--0.450000 -0.502100 -0.045100 0.560000 -0.696000 0.432000
--0.450000 -0.512800 -0.060900 0.208000 -0.760000 0.608000
--0.466200 -0.502100 0.000000 0.712000 -0.616000 0.320000
--0.478800 -0.552300 -0.060900 0.704000 -0.592000 0.376000
--0.500000 -0.548400 0.000000 0.368000 -0.816000 0.432000
--0.500000 -0.552300 -0.009400 0.352000 -0.840000 0.400000
--0.509600 -0.552300 0.000000 0.320000 -0.840000 0.424000
--0.500000 -0.570000 -0.060900 0.480000 -0.800000 0.328000
--0.550000 -0.565800 0.000000 0.224000 -0.872000 0.424000
--0.550000 -0.588500 -0.060900 0.224000 -0.888000 0.384000
--0.600000 -0.566300 0.000000 -0.184000 -0.816000 0.544000
--0.600000 -0.601900 -0.060900 -0.072000 -0.808000 0.568000
--0.633400 -0.552300 0.000000 -0.384000 -0.672000 0.624000
--0.650000 -0.594800 -0.060900 -0.368000 -0.640000 0.664000
--0.650000 -0.552300 -0.012600 -0.496000 -0.592000 0.624000
--0.685200 -0.552300 -0.060900 -0.696000 -0.384000 0.592000
--0.650000 -0.541900 0.000000 -0.528000 -0.600000 0.592000
--0.700000 -0.507800 -0.060900 -0.864000 -0.200000 0.448000
--0.674300 -0.502100 0.000000 -0.656000 -0.632000 0.384000
--0.700000 -0.502100 -0.057900 -0.752000 -0.512000 0.400000
--0.700000 -0.478200 0.000000 -0.704000 -0.632000 0.312000
--0.701200 -0.502100 -0.060900 -0.816000 -0.416000 0.392000
--0.719800 -0.451900 0.000000 -0.816000 -0.520000 0.240000
--0.735400 -0.451900 -0.060900 -0.768000 -0.512000 0.360000
--0.750000 -0.403200 0.000000 -0.832000 -0.504000 0.216000
--0.750000 -0.426100 -0.060900 -0.864000 -0.448000 0.200000
--0.750800 -0.401700 0.000000 -0.816000 -0.520000 0.208000
--0.762700 -0.401700 -0.060900 -0.840000 -0.496000 0.168000
--0.782800 -0.351500 0.000000 -0.816000 -0.536000 0.208000
--0.794800 -0.351500 -0.060900 -0.816000 -0.552000 0.144000
--0.800000 -0.327900 0.000000 -0.800000 -0.560000 0.176000
--0.800000 -0.343900 -0.060900 -0.816000 -0.552000 0.128000
--0.817700 -0.301200 0.000000 -0.808000 -0.560000 0.168000
--0.826600 -0.301200 -0.060900 -0.824000 -0.544000 0.120000
--0.800000 -0.343900 -0.060900 -0.816000 -0.552000 0.128000
--0.832400 -0.301200 -0.121900 -0.840000 -0.528000 0.048000
--0.800000 -0.351500 -0.101400 -0.840000 -0.528000 0.104000
--0.802000 -0.351500 -0.121900 -0.840000 -0.520000 0.096000
--0.800000 -0.354700 -0.121900 -0.848000 -0.512000 0.080000
--0.802200 -0.351500 -0.182900 -0.872000 -0.480000 0.016000
--0.800000 -0.355500 -0.182900 -0.872000 -0.472000 0.032000
--0.807300 -0.351500 -0.243900 -0.864000 -0.472000 0.152000
--0.800000 -0.365300 -0.243900 -0.880000 -0.440000 0.160000
--0.821000 -0.351500 -0.304800 -0.824000 -0.504000 0.232000
--0.800000 -0.395700 -0.304800 -0.920000 -0.376000 0.000000
--0.812200 -0.351500 -0.365800 -0.856000 -0.296000 -0.408000
--0.800000 -0.388500 -0.365800 -0.864000 -0.288000 -0.400000
--0.800000 -0.351500 -0.388300 -0.664000 -0.152000 -0.728000
--0.796500 -0.401700 -0.365800 -0.952000 -0.168000 -0.232000
--0.750000 -0.351500 -0.422100 -0.312000 0.448000 -0.824000
--0.777800 -0.401700 -0.426800 -0.928000 0.040000 -0.360000
--0.750000 -0.359700 -0.426800 -0.368000 0.408000 -0.832000
--0.750000 -0.351500 -0.422100 -0.312000 0.448000 -0.824000
--0.736800 -0.351500 -0.426800 -0.240000 0.480000 -0.832000
--0.736800 -0.351500 -0.426800 -0.240000 0.480000 -0.832000
--0.750000 -0.150600 0.184600 0.192000 0.080000 0.976000
--0.750000 -0.150600 0.184600 0.192000 0.080000 0.976000
--0.800000 -0.150600 0.189500 -0.240000 -0.056000 0.960000
--0.750000 -0.200800 0.187200 0.064000 -0.048000 0.992000
--0.800000 -0.200800 0.184500 -0.256000 -0.128000 0.952000
--0.750000 -0.251000 0.186100 -0.160000 -0.136000 0.976000
--0.800000 -0.206500 0.182900 -0.304000 -0.264000 0.912000
--0.762000 -0.251000 0.182900 -0.256000 -0.192000 0.936000
--0.800000 -0.251000 0.157900 -0.576000 -0.400000 0.696000
--0.750000 -0.267900 0.182900 -0.232000 -0.192000 0.944000
--0.800000 -0.280700 0.121900 -0.736000 -0.528000 0.408000
--0.750000 -0.301200 0.168400 -0.360000 -0.432000 0.816000
--0.783300 -0.301200 0.121900 -0.688000 -0.568000 0.440000
--0.750000 -0.342500 0.121900 -0.536000 -0.592000 0.592000
--0.800000 -0.301200 0.085900 -0.768000 -0.544000 0.304000
--0.750000 -0.351500 0.110100 -0.600000 -0.584000 0.536000
--0.800000 -0.310100 0.060900 -0.800000 -0.544000 0.224000
--0.767900 -0.351500 0.060900 -0.760000 -0.568000 0.296000
--0.800000 -0.327900 0.000000 -0.800000 -0.560000 0.176000
--0.782800 -0.351500 0.000000 -0.816000 -0.536000 0.208000
--0.767900 -0.351500 0.060900 -0.760000 -0.568000 0.296000
--0.750800 -0.401700 0.000000 -0.816000 -0.520000 0.208000
--0.750000 -0.377100 0.060900 -0.760000 -0.552000 0.320000
--0.750000 -0.401700 0.004100 -0.816000 -0.520000 0.232000
--0.731300 -0.401700 0.060900 -0.784000 -0.496000 0.344000
--0.750000 -0.403200 0.000000 -0.832000 -0.504000 0.216000
--0.701000 -0.451900 0.060900 -0.792000 -0.480000 0.344000
--0.719800 -0.451900 0.000000 -0.816000 -0.520000 0.240000
--0.700000 -0.453200 0.060900 -0.560000 -0.720000 0.392000
--0.700000 -0.478200 0.000000 -0.704000 -0.632000 0.312000
--0.650000 -0.495900 0.060900 -0.528000 -0.720000 0.432000
--0.674300 -0.502100 0.000000 -0.656000 -0.632000 0.384000
--0.650000 -0.502100 0.048300 -0.536000 -0.712000 0.440000
--0.650000 -0.541900 0.000000 -0.528000 -0.600000 0.592000
--0.640700 -0.502100 0.060900 -0.496000 -0.728000 0.456000
--0.633400 -0.552300 0.000000 -0.384000 -0.672000 0.624000
--0.600000 -0.531600 0.060900 -0.448000 -0.736000 0.496000
--0.600000 -0.552300 0.023900 -0.224000 -0.776000 0.584000
--0.550000 -0.532000 0.060900 0.080000 -0.776000 0.624000
--0.550000 -0.552300 0.031000 0.256000 -0.800000 0.528000
--0.500000 -0.517700 0.060900 0.632000 -0.632000 0.440000
--0.509600 -0.552300 0.000000 0.320000 -0.840000 0.424000
--0.500000 -0.548400 0.000000 0.368000 -0.816000 0.432000
--0.500000 -0.517700 0.060900 0.632000 -0.632000 0.440000
--0.466200 -0.502100 0.000000 0.712000 -0.616000 0.320000
--0.489100 -0.502100 0.060900 0.704000 -0.616000 0.328000
--0.450000 -0.489500 0.000000 0.584000 -0.760000 0.264000
--0.450000 -0.471900 0.060900 0.592000 -0.752000 0.272000
--0.403800 -0.451900 0.000000 0.744000 -0.560000 0.352000
--0.425300 -0.451900 0.060900 0.696000 -0.640000 0.304000
--0.400000 -0.447100 0.000000 0.720000 -0.584000 0.344000
--0.400000 -0.423000 0.060900 0.616000 -0.696000 0.360000
--0.350000 -0.427600 0.000000 0.560000 -0.752000 0.336000
--0.350000 -0.406300 0.060900 0.592000 -0.728000 0.320000
--0.319500 -0.401700 0.000000 0.536000 -0.584000 0.592000
--0.344500 -0.401700 0.060900 0.632000 -0.688000 0.328000
--0.303300 -0.351500 0.000000 0.888000 -0.344000 0.288000
--0.319700 -0.351500 0.060900 0.864000 -0.376000 0.328000
--0.300000 -0.343500 0.000000 0.832000 -0.408000 0.360000
--0.300000 -0.305300 0.060900 0.512000 -0.568000 0.632000
--0.250000 -0.307700 0.000000 0.288000 -0.576000 0.760000
--0.295000 -0.301200 0.060900 0.472000 -0.584000 0.648000
--0.250000 -0.301200 0.006000 0.344000 -0.608000 0.704000
--0.250000 -0.262800 0.060900 0.496000 -0.520000 0.688000
--0.250000 -0.262800 0.060900 0.496000 -0.520000 0.688000
--0.762000 -0.251000 0.182900 -0.256000 -0.192000 0.936000
--0.762000 -0.251000 0.182900 -0.256000 -0.192000 0.936000
--0.750000 -0.251000 0.186100 -0.160000 -0.136000 0.976000
--0.750000 -0.267900 0.182900 -0.232000 -0.192000 0.944000
--0.700000 -0.251000 0.184700 0.008000 -0.024000 0.992000
--0.700000 -0.272200 0.182900 -0.072000 -0.128000 0.984000
--0.650000 -0.251000 0.183700 0.152000 0.272000 0.944000
--0.671000 -0.301200 0.182900 -0.120000 -0.104000 0.984000
--0.650000 -0.301200 0.185200 -0.152000 0.008000 0.984000
--0.663400 -0.351500 0.182900 -0.304000 -0.080000 0.944000
--0.650000 -0.351500 0.187800 -0.272000 -0.048000 0.952000
--0.650000 -0.385200 0.182900 -0.496000 -0.152000 0.848000
--0.600000 -0.351500 0.201700 -0.216000 0.016000 0.968000
--0.644900 -0.401700 0.182900 -0.528000 -0.240000 0.808000
--0.600000 -0.401700 0.205900 -0.320000 -0.144000 0.928000
--0.600000 -0.446800 0.182900 -0.240000 -0.464000 0.848000
--0.550000 -0.401700 0.218500 0.000000 -0.272000 0.960000
--0.583500 -0.451900 0.182900 -0.128000 -0.544000 0.824000
--0.550000 -0.451900 0.188900 -0.024000 -0.624000 0.776000
--0.550000 -0.456500 0.182900 0.056000 -0.736000 0.672000
--0.523100 -0.451900 0.182900 0.136000 -0.648000 0.744000
--0.550000 -0.494000 0.121900 0.024000 -0.832000 0.536000
--0.500000 -0.451900 0.177400 0.160000 -0.648000 0.736000
--0.500000 -0.486900 0.121900 0.296000 -0.800000 0.504000
--0.450000 -0.451900 0.126400 0.752000 -0.472000 0.448000
--0.450000 -0.453600 0.121900 0.584000 -0.744000 0.288000
--0.447800 -0.451900 0.121900 0.672000 -0.648000 0.344000
--0.450000 -0.471900 0.060900 0.592000 -0.752000 0.272000
--0.425300 -0.451900 0.060900 0.696000 -0.640000 0.304000
--0.447800 -0.451900 0.121900 0.672000 -0.648000 0.344000
--0.400000 -0.423000 0.060900 0.616000 -0.696000 0.360000
--0.404400 -0.401700 0.121900 0.648000 -0.656000 0.368000
--0.400000 -0.401700 0.111300 0.640000 -0.680000 0.336000
--0.400000 -0.397400 0.121900 0.632000 -0.672000 0.368000
--0.350000 -0.401700 0.073400 0.632000 -0.688000 0.344000
--0.350000 -0.369000 0.121900 0.736000 -0.464000 0.480000
--0.344500 -0.401700 0.060900 0.632000 -0.688000 0.328000
--0.341600 -0.351500 0.121900 0.808000 -0.352000 0.456000
--0.319700 -0.351500 0.060900 0.864000 -0.376000 0.328000
--0.327200 -0.301200 0.121900 0.792000 -0.368000 0.472000
--0.300000 -0.305300 0.060900 0.512000 -0.568000 0.632000
--0.300000 -0.301200 0.065200 0.504000 -0.568000 0.640000
--0.295000 -0.301200 0.060900 0.472000 -0.584000 0.648000
--0.295000 -0.301200 0.060900 0.472000 -0.584000 0.648000
--0.650000 -0.301200 0.185200 -0.152000 0.008000 0.984000
--0.650000 -0.301200 0.185200 -0.152000 0.008000 0.984000
--0.650000 -0.351500 0.187800 -0.272000 -0.048000 0.952000
--0.600000 -0.301200 0.196400 -0.152000 0.176000 0.968000
--0.600000 -0.351500 0.201700 -0.216000 0.016000 0.968000
--0.550000 -0.301200 0.200100 -0.040000 0.312000 0.944000
--0.550000 -0.351500 0.211500 0.000000 0.128000 0.984000
--0.500000 -0.301200 0.199600 -0.128000 0.216000 0.960000
--0.500000 -0.351500 0.209200 0.072000 0.104000 0.984000
--0.450000 -0.301200 0.203900 0.032000 0.168000 0.984000
--0.450000 -0.351500 0.215900 0.592000 -0.216000 0.768000
--0.400000 -0.301200 0.211000 0.416000 0.000000 0.904000
--0.400000 -0.351500 0.196700 0.560000 -0.576000 0.584000
--0.369700 -0.301200 0.182900 0.552000 -0.328000 0.752000
--0.389000 -0.351500 0.182900 0.544000 -0.632000 0.536000
--0.350000 -0.301200 0.167500 0.592000 -0.368000 0.712000
--0.350000 -0.351500 0.138600 0.680000 -0.440000 0.568000
--0.327200 -0.301200 0.121900 0.792000 -0.368000 0.472000
--0.341600 -0.351500 0.121900 0.808000 -0.352000 0.456000
--0.350000 -0.351500 0.138600 0.680000 -0.440000 0.568000
--0.350000 -0.369000 0.121900 0.736000 -0.464000 0.480000
--0.389000 -0.351500 0.182900 0.544000 -0.632000 0.536000
--0.400000 -0.397400 0.121900 0.632000 -0.672000 0.368000
--0.400000 -0.359600 0.182900 0.520000 -0.680000 0.496000
--0.404400 -0.401700 0.121900 0.648000 -0.656000 0.368000
--0.445800 -0.401700 0.182900 0.648000 -0.488000 0.568000
--0.447800 -0.451900 0.121900 0.672000 -0.648000 0.344000
--0.450000 -0.407300 0.182900 0.664000 -0.488000 0.552000
--0.450000 -0.451900 0.126400 0.752000 -0.472000 0.448000
--0.500000 -0.444100 0.182900 0.168000 -0.480000 0.848000
--0.500000 -0.451900 0.177400 0.160000 -0.648000 0.736000
--0.523100 -0.451900 0.182900 0.136000 -0.648000 0.744000
--0.500000 -0.444100 0.182900 0.168000 -0.480000 0.848000
--0.550000 -0.451900 0.188900 -0.024000 -0.624000 0.776000
--0.500000 -0.401700 0.210500 0.208000 -0.296000 0.928000
--0.550000 -0.401700 0.218500 0.000000 -0.272000 0.960000
--0.500000 -0.351500 0.209200 0.072000 0.104000 0.984000
--0.550000 -0.351500 0.211500 0.000000 0.128000 0.984000
--0.550000 -0.401700 0.218500 0.000000 -0.272000 0.960000
--0.600000 -0.351500 0.201700 -0.216000 0.016000 0.968000
--0.600000 -0.401700 0.205900 -0.320000 -0.144000 0.928000
--0.600000 -0.401700 0.205900 -0.320000 -0.144000 0.928000
--0.512000 -0.251000 0.182900 -0.112000 0.632000 0.760000
--0.512000 -0.251000 0.182900 -0.112000 0.632000 0.760000
--0.500000 -0.249000 0.182900 -0.112000 0.656000 0.744000
--0.500000 -0.251000 0.185100 -0.112000 0.632000 0.760000
--0.450000 -0.233700 0.182900 -0.216000 0.472000 0.848000
--0.450000 -0.251000 0.195400 -0.152000 0.392000 0.904000
--0.400000 -0.206800 0.182900 -0.168000 0.424000 0.880000
--0.400000 -0.251000 0.203200 0.024000 0.208000 0.976000
--0.383500 -0.200800 0.182900 -0.152000 0.448000 0.872000
--0.350000 -0.251000 0.206900 0.584000 -0.272000 0.760000
--0.350000 -0.200800 0.190300 -0.112000 0.384000 0.912000
--0.334800 -0.251000 0.182900 0.672000 -0.480000 0.552000
--0.300000 -0.200800 0.189700 0.744000 -0.432000 0.496000
--0.300000 -0.205800 0.182900 0.768000 -0.472000 0.416000
--0.296900 -0.200800 0.182900 0.792000 -0.440000 0.408000
--0.300000 -0.251000 0.131000 0.632000 -0.616000 0.464000
--0.278100 -0.200800 0.121900 0.816000 -0.432000 0.368000
--0.294600 -0.251000 0.121900 0.616000 -0.600000 0.488000
--0.250000 -0.200800 0.078600 0.664000 -0.312000 0.672000
--0.250000 -0.251000 0.071500 0.528000 -0.408000 0.736000
--0.222100 -0.200800 0.060900 0.488000 -0.184000 0.848000
--0.236900 -0.251000 0.060900 0.464000 -0.480000 0.728000
--0.200000 -0.200800 0.045500 0.568000 -0.152000 0.808000
--0.200000 -0.251000 0.018200 0.408000 -0.392000 0.816000
--0.200000 -0.251000 0.018200 0.408000 -0.392000 0.816000
--0.450000 -0.351500 0.215900 0.592000 -0.216000 0.768000
--0.450000 -0.351500 0.215900 0.592000 -0.216000 0.768000
--0.500000 -0.351500 0.209200 0.072000 0.104000 0.984000
--0.450000 -0.401700 0.188700 0.656000 -0.464000 0.584000
--0.500000 -0.401700 0.210500 0.208000 -0.296000 0.928000
--0.450000 -0.407300 0.182900 0.664000 -0.488000 0.552000
--0.500000 -0.444100 0.182900 0.168000 -0.480000 0.848000
--0.500000 -0.444100 0.182900 0.168000 -0.480000 0.848000
--0.400000 -0.351500 0.196700 0.560000 -0.576000 0.584000
--0.400000 -0.351500 0.196700 0.560000 -0.576000 0.584000
--0.400000 -0.359600 0.182900 0.520000 -0.680000 0.496000
--0.450000 -0.351500 0.215900 0.592000 -0.216000 0.768000
--0.445800 -0.401700 0.182900 0.648000 -0.488000 0.568000
--0.450000 -0.401700 0.188700 0.656000 -0.464000 0.584000
--0.450000 -0.407300 0.182900 0.664000 -0.488000 0.552000
--0.450000 -0.407300 0.182900 0.664000 -0.488000 0.552000
--0.383500 -0.200800 0.182900 -0.152000 0.448000 0.872000
--0.383500 -0.200800 0.182900 -0.152000 0.448000 0.872000
--0.350000 -0.189600 0.182900 -0.288000 0.472000 0.824000
--0.350000 -0.200800 0.190300 -0.112000 0.384000 0.912000
--0.311100 -0.150600 0.182900 -0.424000 0.464000 0.768000
--0.300000 -0.200800 0.189700 0.744000 -0.432000 0.496000
--0.300000 -0.150600 0.190700 0.000000 0.520000 0.848000
--0.296900 -0.200800 0.182900 0.792000 -0.440000 0.408000
--0.288800 -0.150600 0.182900 0.600000 0.360000 0.712000
--0.278100 -0.200800 0.121900 0.816000 -0.432000 0.368000
--0.252800 -0.150600 0.121900 0.720000 -0.296000 0.616000
--0.250000 -0.200800 0.078600 0.664000 -0.312000 0.672000
--0.250000 -0.150600 0.117900 0.712000 -0.320000 0.616000
--0.222100 -0.200800 0.060900 0.488000 -0.184000 0.848000
--0.212600 -0.150600 0.060900 0.712000 -0.216000 0.664000
--0.200000 -0.200800 0.045500 0.568000 -0.152000 0.808000
--0.200000 -0.150600 0.042600 0.640000 -0.096000 0.752000
--0.212600 -0.150600 0.060900 0.712000 -0.216000 0.664000
--0.200000 -0.121800 0.060900 0.728000 -0.328000 0.592000
--0.250000 -0.150600 0.117900 0.712000 -0.320000 0.616000
--0.200000 -0.100400 0.076800 0.784000 -0.136000 0.600000
--0.250000 -0.144000 0.121900 0.720000 -0.312000 0.608000
--0.230200 -0.100400 0.121900 0.776000 -0.176000 0.600000
--0.250000 -0.100400 0.155000 0.480000 0.160000 0.856000
--0.247100 -0.050200 0.121900 0.488000 0.512000 0.696000
--0.250000 -0.050200 0.123600 0.200000 0.440000 0.864000
--0.250000 -0.048000 0.121900 0.272000 0.640000 0.704000
--0.255700 -0.050200 0.121900 -0.192000 0.512000 0.832000
--0.250000 0.000000 0.079500 -0.144000 0.552000 0.816000
--0.300000 -0.050200 0.104800 -0.312000 0.512000 0.792000
--0.300000 0.000000 0.088800 -0.240000 0.432000 0.864000
--0.350000 -0.050200 0.083200 -0.416000 0.344000 0.832000
--0.348200 0.000000 0.060900 -0.376000 0.448000 0.800000
--0.350000 -0.001900 0.060900 -0.656000 0.280000 0.688000
--0.350000 0.000000 0.059800 -0.688000 0.400000 0.592000
--0.367400 -0.050200 0.060900 -0.696000 0.408000 0.584000
--0.373100 0.000000 0.000000 -0.880000 0.240000 0.392000
--0.399300 -0.050200 0.000000 -0.696000 0.680000 0.184000
--0.377800 0.000000 -0.060900 -0.864000 0.424000 -0.248000
--0.400000 -0.050200 -0.003200 -0.712000 0.672000 0.168000
--0.400000 -0.037800 -0.060900 -0.728000 0.664000 0.152000
--0.406900 -0.050200 -0.060900 -0.848000 0.520000 0.000000
--0.400000 -0.050200 -0.118700 -0.832000 0.528000 -0.160000
--0.450000 -0.099400 -0.060900 -0.760000 0.616000 0.160000
--0.400000 -0.050900 -0.121900 -0.736000 0.536000 -0.408000
--0.450000 -0.100400 -0.065100 -0.512000 0.824000 -0.200000
--0.434900 -0.100400 -0.121900 -0.608000 0.744000 -0.256000
--0.450000 -0.111500 -0.121900 -0.376000 0.896000 -0.224000
--0.403600 -0.100400 -0.182900 -0.616000 0.592000 -0.512000
--0.450000 -0.128500 -0.182900 -0.504000 0.800000 -0.296000
--0.400000 -0.100400 -0.188300 -0.616000 0.576000 -0.520000
--0.450000 -0.150600 -0.239400 -0.408000 0.792000 -0.448000
--0.400000 -0.131400 -0.243900 -0.384000 0.744000 -0.536000
--0.444500 -0.150600 -0.243900 -0.312000 0.784000 -0.528000
--0.400000 -0.150600 -0.272200 -0.312000 0.624000 -0.704000
--0.450000 -0.152500 -0.243900 -0.384000 0.800000 -0.448000
--0.400000 -0.174400 -0.304800 -0.224000 0.736000 -0.632000
--0.450000 -0.186700 -0.304800 -0.216000 0.808000 -0.528000
--0.400000 -0.200800 -0.333600 -0.064000 0.568000 -0.816000
--0.450000 -0.200800 -0.327900 -0.112000 0.704000 -0.696000
--0.400000 -0.239300 -0.365800 0.048000 0.512000 -0.848000
--0.450000 -0.235000 -0.365800 -0.016000 0.592000 -0.800000
--0.400000 -0.251000 -0.373300 0.080000 0.400000 -0.904000
--0.450000 -0.251000 -0.376500 0.032000 0.432000 -0.896000
--0.400000 -0.301200 -0.390900 0.144000 0.296000 -0.936000
--0.450000 -0.301200 -0.399100 0.080000 0.320000 -0.936000
--0.400000 -0.351500 -0.411400 0.000000 0.616000 -0.784000
--0.450000 -0.351500 -0.418600 0.080000 0.512000 -0.848000
--0.450000 -0.301200 -0.399100 0.080000 0.320000 -0.936000
--0.500000 -0.351500 -0.423900 0.056000 0.504000 -0.856000
--0.500000 -0.301200 -0.402500 0.040000 0.344000 -0.936000
--0.450000 -0.301200 -0.399100 0.080000 0.320000 -0.936000
--0.500000 -0.251000 -0.377000 -0.032000 0.528000 -0.840000
--0.450000 -0.251000 -0.376500 0.032000 0.432000 -0.896000
--0.500000 -0.238600 -0.365800 -0.072000 0.656000 -0.744000
--0.450000 -0.235000 -0.365800 -0.016000 0.592000 -0.800000
--0.500000 -0.200800 -0.313000 -0.112000 0.824000 -0.544000
--0.450000 -0.200800 -0.327900 -0.112000 0.704000 -0.696000
--0.500000 -0.196700 -0.304800 -0.120000 0.848000 -0.504000
--0.450000 -0.186700 -0.304800 -0.216000 0.808000 -0.528000
--0.500000 -0.169200 -0.243900 -0.328000 0.880000 -0.312000
--0.450000 -0.152500 -0.243900 -0.384000 0.800000 -0.448000
--0.500000 -0.154300 -0.182900 -0.320000 0.920000 -0.176000
--0.450000 -0.150600 -0.239400 -0.408000 0.792000 -0.448000
--0.491700 -0.150600 -0.182900 -0.448000 0.848000 -0.264000
--0.450000 -0.128500 -0.182900 -0.504000 0.800000 -0.296000
--0.500000 -0.150600 -0.154000 -0.424000 0.880000 -0.160000
--0.450000 -0.111500 -0.121900 -0.376000 0.896000 -0.224000
--0.500000 -0.144400 -0.121900 -0.376000 0.880000 -0.280000
--0.450000 -0.100400 -0.065100 -0.512000 0.824000 -0.200000
--0.500000 -0.119500 -0.060900 -0.160000 0.976000 0.112000
--0.452400 -0.100400 -0.060900 -0.344000 0.936000 -0.016000
--0.500000 -0.141000 0.000000 -0.040000 0.880000 0.456000
--0.450000 -0.100400 -0.057100 -0.400000 0.872000 0.264000
--0.450000 -0.112700 0.000000 -0.520000 0.784000 0.320000
--0.434300 -0.100400 0.000000 -0.648000 0.720000 0.208000
--0.450000 -0.136300 0.060900 -0.512000 0.720000 0.448000
--0.405500 -0.100400 0.060900 -0.712000 0.456000 0.520000
--0.450000 -0.150600 0.089400 -0.440000 0.744000 0.496000
--0.400000 -0.100400 0.069600 -0.688000 0.456000 0.552000
--0.414900 -0.150600 0.121900 -0.424000 0.616000 0.648000
--0.400000 -0.140400 0.121900 -0.448000 0.624000 0.632000
--0.400000 -0.150600 0.133500 -0.392000 0.600000 0.688000
--0.351400 -0.100400 0.121900 -0.608000 0.368000 0.696000
--0.350000 -0.150600 0.151300 -0.584000 0.352000 0.720000
--0.350000 -0.100400 0.123500 -0.608000 0.328000 0.712000
--0.311100 -0.150600 0.182900 -0.424000 0.464000 0.768000
--0.300000 -0.100400 0.149000 -0.304000 0.432000 0.840000
--0.300000 -0.142200 0.182900 0.000000 0.616000 0.776000
--0.250000 -0.100400 0.155000 0.480000 0.160000 0.856000
--0.288800 -0.150600 0.182900 0.600000 0.360000 0.712000
--0.250000 -0.144000 0.121900 0.720000 -0.312000 0.608000
--0.252800 -0.150600 0.121900 0.720000 -0.296000 0.616000
--0.250000 -0.150600 0.117900 0.712000 -0.320000 0.616000
--0.250000 -0.150600 0.117900 0.712000 -0.320000 0.616000
--0.400000 -0.351500 0.196700 0.560000 -0.576000 0.584000
--0.400000 -0.351500 0.196700 0.560000 -0.576000 0.584000
--0.389000 -0.351500 0.182900 0.544000 -0.632000 0.536000
--0.400000 -0.359600 0.182900 0.520000 -0.680000 0.496000
--0.400000 -0.359600 0.182900 0.520000 -0.680000 0.496000
--0.311100 -0.150600 0.182900 -0.424000 0.464000 0.768000
--0.311100 -0.150600 0.182900 -0.424000 0.464000 0.768000
--0.300000 -0.142200 0.182900 0.000000 0.616000 0.776000
--0.300000 -0.150600 0.190700 0.000000 0.520000 0.848000
--0.288800 -0.150600 0.182900 0.600000 0.360000 0.712000
--0.288800 -0.150600 0.182900 0.600000 0.360000 0.712000
-0.577700 0.301200 0.182900 -0.536000 0.272000 0.792000
-0.577700 0.301200 0.182900 -0.536000 0.272000 0.792000
-0.600000 0.327100 0.182900 -0.144000 0.552000 0.816000
-0.600000 0.301200 0.199900 -0.528000 0.136000 0.832000
-0.650000 0.311500 0.182900 0.424000 0.496000 0.752000
-0.650000 0.301200 0.190400 0.408000 0.464000 0.776000
-0.660200 0.301200 0.182900 0.480000 0.488000 0.720000
-0.650000 0.251000 0.217300 -0.016000 0.232000 0.968000
-0.700000 0.263400 0.182900 0.512000 0.536000 0.664000
-0.700000 0.251000 0.193900 0.488000 0.504000 0.704000
-0.711700 0.251000 0.182900 0.560000 0.528000 0.624000
-0.700000 0.200800 0.226400 0.328000 0.432000 0.832000
-0.750000 0.208300 0.182900 0.448000 0.624000 0.632000
-0.750000 0.200800 0.191100 0.424000 0.552000 0.712000
-0.761100 0.200800 0.182900 0.432000 0.472000 0.760000
-0.750000 0.150600 0.201100 0.320000 0.240000 0.912000
-0.797300 0.150600 0.182900 0.336000 0.288000 0.888000
-0.750000 0.100400 0.207000 0.032000 -0.192000 0.976000
-0.800000 0.148000 0.182900 0.424000 0.336000 0.832000
-0.800000 0.100400 0.199400 -0.032000 0.024000 0.992000
-0.850000 0.129700 0.182900 0.408000 0.752000 0.504000
-0.850000 0.100400 0.222500 0.440000 0.584000 0.672000
-0.891700 0.100400 0.182900 0.576000 0.688000 0.424000
-0.850000 0.050200 0.216300 -0.184000 -0.272000 0.936000
-0.900000 0.093100 0.182900 0.568000 0.672000 0.464000
-0.900000 0.050200 0.226800 0.488000 0.496000 0.712000
-0.940200 0.050200 0.182900 0.624000 0.528000 0.568000
-0.900000 0.000000 0.237100 -0.176000 -0.616000 0.760000
-0.950000 0.037400 0.182900 0.520000 0.504000 0.680000
-0.950000 0.000000 0.206500 0.400000 0.008000 0.912000
-1.000000 0.004900 0.182900 0.336000 0.520000 0.776000
-1.000000 0.000000 0.186800 0.376000 0.128000 0.912000
-0.950000 0.000000 0.206500 0.400000 0.008000 0.912000
-1.000000 -0.012000 0.182900 0.384000 -0.248000 0.880000
-0.950000 -0.050200 0.197900 0.336000 -0.192000 0.920000
-0.975800 -0.050200 0.182900 0.464000 -0.232000 0.848000
-0.950000 -0.100400 0.196500 0.208000 -0.704000 0.672000
-0.959000 -0.100400 0.182900 0.616000 -0.584000 0.520000
-0.950000 -0.108800 0.182900 0.232000 -0.768000 0.584000
-1.000000 -0.100400 0.134700 0.432000 -0.528000 0.720000
-0.950000 -0.142500 0.121900 -0.608000 -0.672000 0.392000
-1.000000 -0.126300 0.121900 0.016000 -0.480000 0.872000
-0.950000 -0.150600 0.094900 -0.648000 -0.696000 0.272000
-1.000000 -0.150600 0.101600 -0.080000 -0.576000 0.808000
-0.950000 -0.158100 0.060900 -0.608000 -0.760000 0.200000
-1.000000 -0.176100 0.060900 -0.688000 -0.632000 0.336000
-0.950000 -0.168100 0.000000 -0.640000 -0.744000 0.184000
-1.000000 -0.200800 0.012500 -0.656000 -0.696000 0.264000
-0.995800 -0.200800 0.000000 -0.648000 -0.704000 0.264000
-1.000000 -0.204500 0.000000 -0.624000 -0.728000 0.256000
-0.973000 -0.200800 -0.060900 -0.584000 -0.760000 0.264000
-1.000000 -0.224100 -0.060900 -0.616000 -0.728000 0.280000
-0.950500 -0.200800 -0.121900 -0.632000 -0.744000 0.192000
-1.000000 -0.243600 -0.121900 -0.640000 -0.736000 0.184000
-0.950000 -0.200800 -0.124000 -0.680000 -0.712000 0.160000
-1.000000 -0.251000 -0.154300 -0.728000 -0.648000 0.200000
-0.950000 -0.211700 -0.182900 -0.704000 -0.680000 0.176000
-0.993400 -0.251000 -0.182900 -0.736000 -0.640000 0.200000
-0.950000 -0.224400 -0.243900 -0.688000 -0.640000 0.328000
-0.978600 -0.251000 -0.243900 -0.696000 -0.616000 0.352000
-0.950000 -0.251000 -0.295200 -0.640000 -0.496000 0.576000
-1.000000 -0.277900 -0.243900 -0.712000 -0.592000 0.360000
-0.950000 -0.261400 -0.304800 -0.752000 -0.584000 0.288000
-1.000000 -0.301200 -0.291200 -0.640000 -0.488000 0.576000
-0.989600 -0.301200 -0.304800 -0.816000 -0.560000 0.128000
-1.000000 -0.316200 -0.304800 -0.800000 -0.552000 0.224000
-1.000000 -0.301200 -0.328200 -0.784000 -0.440000 -0.424000
-0.989600 -0.301200 -0.304800 -0.816000 -0.560000 0.128000
-1.000000 -0.251000 -0.355700 -0.816000 -0.248000 -0.504000
-0.950000 -0.261400 -0.304800 -0.752000 -0.584000 0.288000
-0.950000 -0.251000 -0.328200 -0.712000 -0.568000 -0.392000
-0.942100 -0.251000 -0.304800 -0.752000 -0.552000 0.344000
-0.950000 -0.200800 -0.357000 -0.272000 -0.104000 -0.952000
-0.911900 -0.200800 -0.304800 -0.864000 -0.480000 -0.128000
-0.950000 -0.150600 -0.345500 -0.032000 0.064000 -0.992000
-0.900000 -0.181100 -0.304800 -0.768000 -0.440000 -0.448000
-0.900000 -0.150600 -0.332000 -0.672000 -0.328000 -0.656000
-0.883200 -0.150600 -0.304800 -0.864000 -0.368000 -0.320000
-0.900000 -0.100400 -0.341700 -0.464000 -0.104000 -0.872000
-0.869700 -0.100400 -0.304800 -0.880000 -0.248000 -0.400000
-0.900000 -0.050200 -0.348300 -0.256000 0.192000 -0.944000
-0.867300 -0.050200 -0.304800 -0.784000 -0.136000 -0.600000
-0.900000 0.000000 -0.329500 -0.080000 0.648000 -0.744000
-0.877300 0.000000 -0.304800 -0.592000 0.480000 -0.632000
-0.900000 0.016700 -0.304800 -0.152000 0.720000 -0.664000
-0.850000 0.000000 -0.279000 -0.536000 0.488000 -0.680000
-0.900000 0.050200 -0.268900 0.208000 0.672000 -0.696000
-0.850000 0.042400 -0.243900 -0.408000 0.528000 -0.736000
-0.858900 0.050200 -0.243900 -0.424000 0.568000 -0.696000
-0.850000 0.050200 -0.237100 -0.376000 0.576000 -0.720000
-0.900000 0.070800 -0.243900 -0.096000 0.744000 -0.656000
-0.850000 0.100400 -0.218500 0.128000 0.592000 -0.784000
-0.900000 0.100400 -0.203200 0.536000 0.688000 -0.472000
-0.850000 0.127100 -0.182900 0.192000 0.744000 -0.632000
-0.900000 0.111100 -0.182900 0.552000 0.712000 -0.416000
-0.850000 0.150600 -0.140900 0.432000 0.840000 -0.304000
-0.900000 0.127900 -0.121900 0.560000 0.776000 -0.264000
-0.859300 0.150600 -0.121900 0.456000 0.840000 -0.272000
-0.900000 0.143500 -0.060900 0.528000 0.808000 -0.240000
-0.888500 0.150600 -0.060900 0.504000 0.856000 -0.040000
-0.900000 0.131100 0.000000 0.480000 0.848000 0.192000
-0.867700 0.150600 0.000000 0.552000 0.816000 0.152000
-0.900000 0.118900 0.060900 0.472000 0.856000 0.184000
-0.855400 0.150600 0.060900 0.680000 0.720000 0.072000
-0.900000 0.107300 0.121900 0.512000 0.832000 0.184000
-0.850900 0.150600 0.121900 0.704000 0.704000 0.080000
-0.900000 0.100400 0.165200 0.584000 0.744000 0.296000
-0.850000 0.150600 0.126500 0.640000 0.560000 0.512000
-0.891700 0.100400 0.182900 0.576000 0.688000 0.424000
-0.850000 0.129700 0.182900 0.408000 0.752000 0.504000
-0.850000 0.150600 0.126500 0.640000 0.560000 0.512000
-0.800000 0.148000 0.182900 0.424000 0.336000 0.832000
-0.800000 0.150600 0.181400 0.520000 0.336000 0.776000
-0.797300 0.150600 0.182900 0.336000 0.288000 0.888000
-0.800000 0.190400 0.121900 0.624000 0.752000 0.168000
-0.761100 0.200800 0.182900 0.432000 0.472000 0.760000
-0.788900 0.200800 0.121900 0.632000 0.744000 0.184000
-0.750000 0.208300 0.182900 0.448000 0.624000 0.632000
-0.750000 0.233400 0.121900 0.720000 0.680000 -0.080000
-0.711700 0.251000 0.182900 0.560000 0.528000 0.624000
-0.736800 0.251000 0.121900 0.752000 0.632000 0.144000
-0.700000 0.263400 0.182900 0.512000 0.536000 0.664000
-0.700000 0.297800 0.121900 0.728000 0.680000 -0.032000
-0.660200 0.301200 0.182900 0.480000 0.488000 0.720000
-0.696500 0.301200 0.121900 0.712000 0.672000 0.168000
-0.650000 0.311500 0.182900 0.424000 0.496000 0.752000
-0.653800 0.351500 0.121900 0.656000 0.616000 0.424000
-0.650000 0.351500 0.128300 0.616000 0.616000 0.480000
-0.650000 0.355500 0.121900 0.632000 0.632000 0.432000
-0.600000 0.351500 0.157200 -0.376000 0.584000 0.704000
-0.600000 0.382600 0.121900 0.272000 0.776000 0.560000
-0.566500 0.351500 0.121900 -0.632000 0.576000 0.496000
-0.600000 0.401700 0.085900 0.096000 0.928000 0.336000
-0.550000 0.351500 0.078000 -0.616000 0.672000 0.392000
-0.584600 0.401700 0.060900 -0.416000 0.872000 0.248000
-0.550000 0.359900 0.060900 -0.592000 0.640000 0.480000
-0.568400 0.401700 0.000000 -0.472000 0.832000 -0.264000
-0.550000 0.388900 0.000000 -0.392000 0.856000 0.320000
-0.600000 0.401700 -0.057700 0.168000 0.920000 -0.344000
-0.550000 0.398000 -0.060900 0.000000 0.968000 -0.216000
-0.600000 0.400600 -0.060900 -0.072000 0.912000 -0.384000
-0.550000 0.362300 -0.121900 0.400000 0.656000 -0.632000
-0.600000 0.351500 -0.101600 0.448000 0.496000 -0.736000
-0.566700 0.351500 -0.121900 0.448000 0.536000 -0.704000
-0.600000 0.310600 -0.121900 0.480000 0.424000 -0.760000
-0.550000 0.351500 -0.135900 0.456000 0.632000 -0.616000
-0.600000 0.301200 -0.128700 0.472000 0.520000 -0.704000
-0.550000 0.301200 -0.167400 0.408000 0.504000 -0.752000
-0.600000 0.256700 -0.182900 0.328000 0.496000 -0.792000
-0.550000 0.283200 -0.182900 0.320000 0.472000 -0.816000
-0.600000 0.251000 -0.187000 0.320000 0.456000 -0.816000
-0.550000 0.251000 -0.199600 0.176000 0.288000 -0.936000
-0.600000 0.200800 -0.209200 0.248000 0.288000 -0.920000
-0.550000 0.200800 -0.211100 0.016000 0.048000 -0.992000
-0.600000 0.150600 -0.225200 0.008000 0.128000 -0.984000
-0.550000 0.150600 -0.215400 -0.144000 0.080000 -0.984000
-0.600000 0.100400 -0.237100 -0.096000 0.168000 -0.976000
-0.550000 0.100400 -0.212600 -0.200000 0.352000 -0.904000
-0.600000 0.076600 -0.243900 -0.096000 0.360000 -0.920000
-0.550000 0.067800 -0.243900 0.024000 0.672000 -0.728000
-0.600000 0.050200 -0.251100 0.248000 0.344000 -0.896000
-0.550000 0.050200 -0.258400 0.160000 0.632000 -0.752000
-0.600000 0.000000 -0.284600 0.512000 0.112000 -0.840000
-0.550000 0.015600 -0.304800 0.472000 0.712000 -0.512000
-0.578400 0.000000 -0.304800 0.536000 0.480000 -0.688000
-0.550000 0.000000 -0.335900 0.576000 0.464000 -0.664000
-0.587300 -0.050200 -0.304800 0.688000 0.056000 -0.712000
-0.550000 -0.050200 -0.345500 0.192000 -0.560000 -0.792000
-0.550000 -0.083700 -0.304800 0.088000 -0.736000 -0.664000
-0.500000 -0.050200 -0.339600 -0.136000 -0.672000 -0.720000
-0.500000 -0.082600 -0.304800 0.216000 -0.680000 -0.688000
-0.450000 -0.050200 -0.325200 -0.120000 -0.568000 -0.808000
-0.475800 -0.100400 -0.304800 0.512000 -0.104000 -0.848000
-0.450000 -0.100400 -0.322200 0.392000 -0.360000 -0.840000
-0.500000 -0.127100 -0.304800 0.480000 0.456000 -0.744000
-0.450000 -0.150600 -0.321300 -0.008000 0.120000 -0.992000
-0.500000 -0.150600 -0.319100 0.336000 0.504000 -0.792000
-0.450000 -0.200800 -0.331300 -0.472000 -0.400000 -0.776000
-0.500000 -0.200800 -0.334200 -0.376000 -0.448000 -0.800000
-0.450000 -0.217600 -0.304800 -0.352000 -0.736000 -0.560000
-0.500000 -0.222600 -0.304800 -0.320000 -0.704000 -0.624000
-0.450000 -0.248400 -0.243900 -0.224000 -0.888000 -0.384000
-0.500000 -0.251000 -0.264200 -0.272000 -0.744000 -0.600000
-0.459300 -0.251000 -0.243900 -0.280000 -0.864000 -0.400000
-0.500000 -0.282700 -0.243900 -0.568000 -0.592000 -0.560000
-0.450000 -0.251000 -0.203800 -0.216000 -0.960000 -0.144000
-0.500000 -0.288400 -0.182900 -0.520000 -0.656000 0.528000
-0.450000 -0.255300 -0.182900 -0.208000 -0.656000 0.712000
-0.500000 -0.251000 -0.123800 -0.544000 -0.688000 0.456000
-0.450000 -0.251000 -0.179900 -0.288000 -0.680000 0.664000
-0.500000 -0.250100 -0.121900 -0.432000 -0.712000 0.536000
-0.450000 -0.227100 -0.121900 -0.296000 -0.712000 0.624000
-0.500000 -0.203100 -0.060900 -0.256000 -0.616000 0.736000
-0.450000 -0.200800 -0.072200 -0.256000 -0.536000 0.800000
-0.491400 -0.200800 -0.060900 -0.168000 -0.584000 0.784000
-0.450000 -0.150600 -0.064700 -0.192000 0.128000 0.968000
-0.463100 -0.150600 -0.060900 -0.168000 0.352000 0.912000
-0.450000 -0.100400 -0.078400 -0.088000 0.200000 0.968000
-0.500000 -0.139000 -0.060900 0.080000 0.536000 0.832000
-0.500000 -0.100400 -0.086800 -0.048000 0.256000 0.960000
-0.530700 -0.150600 -0.060900 0.208000 0.504000 0.832000
-0.550000 -0.100400 -0.076900 0.056000 0.056000 0.992000
-0.550000 -0.150600 -0.067100 0.240000 0.480000 0.840000
-0.600000 -0.100400 -0.077400 0.584000 0.048000 0.800000
-0.600000 -0.150600 -0.093600 0.304000 0.568000 0.752000
-0.626600 -0.100400 -0.121900 0.848000 0.208000 0.472000
-0.650000 -0.150600 -0.116200 0.720000 0.480000 0.488000
-0.650000 -0.146100 -0.121900 0.720000 0.504000 0.464000
-0.652900 -0.150600 -0.121900 0.752000 0.456000 0.464000
-0.650000 -0.117900 -0.182900 0.792000 0.600000 0.024000
-0.675300 -0.150600 -0.182900 0.768000 0.552000 0.296000
-0.650000 -0.120200 -0.243900 0.704000 0.520000 -0.472000
-0.674200 -0.150600 -0.243900 0.696000 0.600000 -0.384000
-0.650000 -0.150600 -0.274900 0.544000 0.464000 -0.688000
-0.700000 -0.175300 -0.243900 0.752000 0.600000 -0.240000
-0.650000 -0.200800 -0.297000 0.088000 0.616000 -0.776000
-0.700000 -0.200800 -0.294000 0.576000 0.608000 -0.536000
-0.650000 -0.208600 -0.304800 0.024000 0.680000 -0.728000
-0.700000 -0.211400 -0.304800 0.288000 0.624000 -0.720000
-0.650000 -0.245700 -0.365800 0.168000 0.856000 -0.480000
-0.700000 -0.251000 -0.357800 0.296000 0.496000 -0.808000
-0.678000 -0.251000 -0.365800 0.264000 0.520000 -0.808000
-0.700000 -0.301200 -0.354900 0.160000 -0.240000 -0.952000
-0.650000 -0.267900 -0.365800 0.280000 -0.440000 -0.848000
-0.650000 -0.301200 -0.350300 0.016000 -0.440000 -0.888000
-0.600000 -0.288400 -0.365800 -0.376000 -0.712000 -0.584000
-0.600000 -0.301200 -0.352300 -0.528000 -0.312000 -0.776000
-0.573000 -0.251000 -0.365800 -0.696000 0.544000 -0.464000
-0.567500 -0.301200 -0.304800 -0.696000 0.400000 -0.584000
-0.550000 -0.251000 -0.326800 -0.648000 -0.504000 -0.560000
-0.550000 -0.272400 -0.304800 -0.680000 -0.440000 -0.576000
-0.535300 -0.251000 -0.304800 -0.648000 -0.480000 -0.576000
-0.550000 -0.301200 -0.279200 -0.712000 0.120000 -0.680000
-0.500000 -0.251000 -0.264200 -0.272000 -0.744000 -0.600000
-0.513800 -0.301200 -0.243900 -0.728000 0.592000 -0.328000
-0.500000 -0.282700 -0.243900 -0.568000 -0.592000 -0.560000
-0.511800 -0.301200 -0.182900 -0.912000 0.352000 0.176000
-0.500000 -0.288400 -0.182900 -0.520000 -0.656000 0.528000
-0.550000 -0.301200 -0.123600 -0.624000 -0.440000 0.632000
-0.500000 -0.251000 -0.123800 -0.544000 -0.688000 0.456000
-0.550000 -0.300100 -0.121900 -0.624000 -0.616000 0.472000
-0.501100 -0.251000 -0.121900 -0.552000 -0.624000 0.544000
-0.550000 -0.251000 -0.069700 -0.416000 -0.584000 0.688000
-0.500000 -0.250100 -0.121900 -0.432000 -0.712000 0.536000
-0.550000 -0.242100 -0.060900 -0.400000 -0.536000 0.736000
-0.500000 -0.203100 -0.060900 -0.256000 -0.616000 0.736000
-0.550000 -0.200800 -0.034900 0.016000 -0.040000 0.992000
-0.500000 -0.200800 -0.058700 -0.200000 -0.576000 0.784000
-0.550000 -0.159500 -0.060900 0.248000 0.472000 0.840000
-0.500000 -0.150600 -0.051600 0.024000 0.352000 0.928000
-0.530700 -0.150600 -0.060900 0.208000 0.504000 0.832000
-0.500000 -0.139000 -0.060900 0.080000 0.536000 0.832000
-0.500000 -0.150600 -0.051600 0.024000 0.352000 0.928000
-0.463100 -0.150600 -0.060900 -0.168000 0.352000 0.912000
-0.500000 -0.200800 -0.058700 -0.200000 -0.576000 0.784000
-0.491400 -0.200800 -0.060900 -0.168000 -0.584000 0.784000
-0.500000 -0.203100 -0.060900 -0.256000 -0.616000 0.736000
-0.500000 -0.203100 -0.060900 -0.256000 -0.616000 0.736000
-0.600000 0.251000 0.198700 -0.584000 -0.144000 0.792000
-0.600000 0.251000 0.198700 -0.584000 -0.144000 0.792000
-0.600000 0.301200 0.199900 -0.528000 0.136000 0.832000
-0.586200 0.251000 0.182900 -0.672000 -0.144000 0.720000
-0.577700 0.301200 0.182900 -0.536000 0.272000 0.792000
-0.550000 0.251000 0.125100 -0.872000 -0.184000 0.440000
-0.550000 0.301200 0.149100 -0.896000 -0.096000 0.416000
-0.548800 0.251000 0.121900 -0.912000 -0.176000 0.360000
-0.538800 0.301200 0.121900 -0.912000 0.128000 0.376000
-0.533200 0.251000 0.060900 -0.856000 0.032000 0.512000
-0.526500 0.301200 0.060900 -0.896000 0.008000 0.432000
-0.500800 0.251000 0.000000 -0.792000 -0.016000 0.608000
-0.500000 0.301200 0.002700 -0.768000 -0.080000 0.624000
-0.500000 0.266900 0.000000 -0.760000 -0.040000 0.640000
-0.497900 0.301200 0.000000 -0.728000 -0.144000 0.664000
-0.500000 0.251000 -0.000900 -0.496000 0.112000 0.856000
-0.450000 0.301200 -0.039700 -0.448000 -0.256000 0.848000
-0.450000 0.251000 -0.039600 -0.400000 -0.080000 0.904000
-0.400000 0.301200 -0.051900 -0.168000 -0.472000 0.856000
-0.400000 0.251000 -0.058700 -0.328000 -0.176000 0.920000
-0.353900 0.301200 -0.060900 -0.128000 -0.544000 0.824000
-0.395100 0.251000 -0.060900 -0.344000 -0.184000 0.912000
-0.350000 0.301200 -0.062100 -0.176000 -0.704000 0.680000
-0.350000 0.251000 -0.088400 -0.448000 -0.320000 0.824000
-0.300000 0.301200 -0.077400 -0.160000 -0.712000 0.680000
-0.300000 0.251000 -0.114600 -0.168000 -0.536000 0.824000
-0.250000 0.301200 -0.083600 -0.096000 -0.744000 0.648000
-0.271900 0.251000 -0.121900 -0.240000 -0.760000 0.592000
-0.250000 0.256500 -0.121900 -0.200000 -0.800000 0.552000
-0.300000 0.251000 -0.156100 -0.368000 -0.808000 -0.448000
-0.250000 0.284000 -0.182900 -0.096000 -0.256000 -0.952000
-0.300000 0.284000 -0.182900 -0.168000 -0.184000 -0.960000
-0.250000 0.301200 -0.184400 -0.080000 -0.056000 -0.992000
-0.300000 0.301200 -0.184400 -0.064000 -0.072000 -0.992000
-0.250000 0.351500 -0.189100 -0.160000 0.168000 -0.968000
-0.300000 0.351500 -0.193900 -0.008000 0.064000 -0.992000
-0.250000 0.370000 -0.182900 -0.184000 0.304000 -0.928000
-0.300000 0.379400 -0.182900 -0.016000 0.272000 -0.960000
-0.250000 0.401700 -0.172700 -0.016000 0.288000 -0.952000
-0.300000 0.401700 -0.174800 0.040000 0.368000 -0.920000
-0.250000 0.451900 -0.137900 0.128000 0.536000 -0.824000
-0.300000 0.451900 -0.131100 0.200000 0.712000 -0.664000
-0.250000 0.466900 -0.121900 0.232000 0.968000 0.016000
-0.300000 0.458100 -0.121900 0.224000 0.952000 -0.176000
-0.250000 0.451900 -0.094000 0.248000 0.784000 0.552000
-0.300000 0.451900 -0.106900 0.184000 0.864000 0.456000
-0.250000 0.432000 -0.060900 0.224000 0.624000 0.736000
-0.300000 0.430700 -0.060900 0.128000 0.808000 0.568000
-0.250000 0.401700 -0.026800 -0.216000 0.176000 0.952000
-0.300000 0.401700 -0.022200 0.096000 0.472000 0.864000
-0.250000 0.351500 -0.020200 -0.488000 -0.416000 0.760000
-0.300000 0.351500 -0.009100 -0.016000 -0.144000 0.984000
-0.250000 0.317900 -0.060900 -0.432000 -0.680000 0.584000
-0.300000 0.310700 -0.060900 -0.072000 -0.760000 0.640000
-0.250000 0.301200 -0.083600 -0.096000 -0.744000 0.648000
-0.300000 0.301200 -0.077400 -0.160000 -0.712000 0.680000
-0.300000 0.310700 -0.060900 -0.072000 -0.760000 0.640000
-0.350000 0.301200 -0.062100 -0.176000 -0.704000 0.680000
-0.350000 0.302200 -0.060900 -0.144000 -0.624000 0.760000
-0.353900 0.301200 -0.060900 -0.128000 -0.544000 0.824000
-0.350000 0.351500 -0.021800 0.032000 -0.048000 0.992000
-0.400000 0.301200 -0.051900 -0.168000 -0.472000 0.856000
-0.400000 0.351500 -0.018700 -0.136000 -0.208000 0.960000
-0.450000 0.301200 -0.039700 -0.448000 -0.256000 0.848000
-0.450000 0.351500 -0.003200 -0.296000 0.344000 0.888000
-0.497900 0.301200 0.000000 -0.728000 -0.144000 0.664000
-0.458200 0.351500 0.000000 -0.280000 0.520000 0.800000
-0.500000 0.301200 0.002700 -0.768000 -0.080000 0.624000
-0.500000 0.351500 0.029100 -0.680000 0.048000 0.728000
-0.526500 0.301200 0.060900 -0.896000 0.008000 0.432000
-0.540600 0.351500 0.060900 -0.584000 0.632000 0.496000
-0.538800 0.301200 0.121900 -0.912000 0.128000 0.376000
-0.550000 0.351500 0.078000 -0.616000 0.672000 0.392000
-0.550000 0.331800 0.121900 -0.696000 0.536000 0.456000
-0.566500 0.351500 0.121900 -0.632000 0.576000 0.496000
-0.550000 0.301200 0.149100 -0.896000 -0.096000 0.416000
-0.600000 0.351500 0.157200 -0.376000 0.584000 0.704000
-0.577700 0.301200 0.182900 -0.536000 0.272000 0.792000
-0.600000 0.327100 0.182900 -0.144000 0.552000 0.816000
-0.600000 0.351500 0.157200 -0.376000 0.584000 0.704000
-0.650000 0.311500 0.182900 0.424000 0.496000 0.752000
-0.650000 0.351500 0.128300 0.616000 0.616000 0.480000
-0.650000 0.351500 0.128300 0.616000 0.616000 0.480000
-0.586200 0.251000 0.182900 -0.672000 -0.144000 0.720000
-0.586200 0.251000 0.182900 -0.672000 -0.144000 0.720000
-0.600000 0.251000 0.198700 -0.584000 -0.144000 0.792000
-0.600000 0.211800 0.182900 -0.672000 -0.280000 0.672000
-0.650000 0.251000 0.217300 -0.016000 0.232000 0.968000
-0.604600 0.200800 0.182900 -0.672000 -0.288000 0.664000
-0.650000 0.200800 0.219700 -0.496000 -0.256000 0.824000
-0.641000 0.150600 0.182900 -0.528000 -0.464000 0.696000
-0.650000 0.150600 0.191100 -0.504000 -0.472000 0.720000
-0.650000 0.141000 0.182900 -0.512000 -0.488000 0.704000
-0.700000 0.150600 0.220800 -0.264000 -0.416000 0.864000
-0.685300 0.100400 0.182900 -0.504000 -0.560000 0.648000
-0.700000 0.100400 0.197200 -0.456000 -0.560000 0.680000
-0.700000 0.088000 0.182900 -0.464000 -0.608000 0.640000
-0.750000 0.100400 0.207000 0.032000 -0.192000 0.976000
-0.750000 0.062100 0.182900 -0.416000 -0.632000 0.648000
-0.800000 0.100400 0.199400 -0.032000 0.024000 0.992000
-0.762700 0.050200 0.182900 -0.512000 -0.672000 0.520000
-0.800000 0.050200 0.211000 -0.336000 -0.552000 0.752000
-0.800000 0.035400 0.182900 -0.432000 -0.808000 0.384000
-0.850000 0.050200 0.216300 -0.184000 -0.272000 0.936000
-0.846600 0.000000 0.182900 -0.736000 -0.616000 0.264000
-0.850000 0.000000 0.194300 -0.704000 -0.640000 0.296000
-0.850000 -0.004200 0.182900 -0.720000 -0.616000 0.288000
-0.900000 0.000000 0.237100 -0.176000 -0.616000 0.760000
-0.880500 -0.050200 0.182900 -0.744000 -0.528000 0.384000
-0.900000 -0.050200 0.230400 -0.448000 -0.568000 0.680000
-0.900000 -0.076800 0.182900 -0.504000 -0.624000 0.592000
-0.950000 -0.050200 0.197900 0.336000 -0.192000 0.920000
-0.934300 -0.100400 0.182900 -0.392000 -0.752000 0.520000
-0.950000 -0.100400 0.196500 0.208000 -0.704000 0.672000
-0.950000 -0.108800 0.182900 0.232000 -0.768000 0.584000
-0.934300 -0.100400 0.182900 -0.392000 -0.752000 0.520000
-0.950000 -0.142500 0.121900 -0.608000 -0.672000 0.392000
-0.900000 -0.100400 0.145900 -0.608000 -0.728000 0.304000
-0.900000 -0.107100 0.121900 -0.584000 -0.768000 0.240000
-0.892500 -0.100400 0.121900 -0.688000 -0.680000 0.240000
-0.900000 -0.117100 0.060900 -0.656000 -0.736000 0.136000
-0.881900 -0.100400 0.060900 -0.752000 -0.632000 0.152000
-0.900000 -0.125700 0.000000 -0.664000 -0.728000 0.136000
-0.873300 -0.100400 0.000000 -0.752000 -0.632000 0.120000
-0.900000 -0.135500 -0.060900 -0.672000 -0.712000 0.168000
-0.865600 -0.100400 -0.060900 -0.776000 -0.616000 0.120000
-0.900000 -0.148200 -0.121900 -0.664000 -0.728000 0.088000
-0.858300 -0.100400 -0.121900 -0.792000 -0.600000 0.056000
-0.900000 -0.150600 -0.145400 -0.696000 -0.704000 0.104000
-0.858100 -0.100400 -0.182900 -0.824000 -0.552000 0.000000
-0.895100 -0.150600 -0.182900 -0.744000 -0.648000 0.104000
-0.860900 -0.100400 -0.243900 -0.856000 -0.496000 -0.072000
-0.890800 -0.150600 -0.243900 -0.848000 -0.512000 0.064000
-0.869700 -0.100400 -0.304800 -0.880000 -0.248000 -0.400000
-0.883200 -0.150600 -0.304800 -0.864000 -0.368000 -0.320000
-0.890800 -0.150600 -0.243900 -0.848000 -0.512000 0.064000
-0.900000 -0.181100 -0.304800 -0.768000 -0.440000 -0.448000
-0.900000 -0.163000 -0.243900 -0.816000 -0.552000 0.128000
-0.911900 -0.200800 -0.304800 -0.864000 -0.480000 -0.128000
-0.928800 -0.200800 -0.243900 -0.736000 -0.616000 0.240000
-0.942100 -0.251000 -0.304800 -0.752000 -0.552000 0.344000
-0.950000 -0.224400 -0.243900 -0.688000 -0.640000 0.328000
-0.950000 -0.251000 -0.295200 -0.640000 -0.496000 0.576000
-0.942100 -0.251000 -0.304800 -0.752000 -0.552000 0.344000
-0.950000 -0.261400 -0.304800 -0.752000 -0.584000 0.288000
-0.950000 -0.261400 -0.304800 -0.752000 -0.584000 0.288000
-0.650000 0.251000 0.217300 -0.016000 0.232000 0.968000
-0.650000 0.251000 0.217300 -0.016000 0.232000 0.968000
-0.600000 0.251000 0.198700 -0.584000 -0.144000 0.792000
-0.650000 0.301200 0.190400 0.408000 0.464000 0.776000
-0.600000 0.301200 0.199900 -0.528000 0.136000 0.832000
-0.600000 0.301200 0.199900 -0.528000 0.136000 0.832000
-0.700000 0.251000 0.193900 0.488000 0.504000 0.704000
-0.700000 0.251000 0.193900 0.488000 0.504000 0.704000
-0.650000 0.251000 0.217300 -0.016000 0.232000 0.968000
-0.700000 0.200800 0.226400 0.328000 0.432000 0.832000
-0.650000 0.200800 0.219700 -0.496000 -0.256000 0.824000
-0.700000 0.150600 0.220800 -0.264000 -0.416000 0.864000
-0.650000 0.150600 0.191100 -0.504000 -0.472000 0.720000
-0.650000 0.150600 0.191100 -0.504000 -0.472000 0.720000
-0.750000 0.200800 0.191100 0.424000 0.552000 0.712000
-0.750000 0.200800 0.191100 0.424000 0.552000 0.712000
-0.700000 0.200800 0.226400 0.328000 0.432000 0.832000
-0.750000 0.150600 0.201100 0.320000 0.240000 0.912000
-0.700000 0.150600 0.220800 -0.264000 -0.416000 0.864000
-0.750000 0.100400 0.207000 0.032000 -0.192000 0.976000
-0.700000 0.100400 0.197200 -0.456000 -0.560000 0.680000
-0.700000 0.100400 0.197200 -0.456000 -0.560000 0.680000
-0.850000 0.050200 0.216300 -0.184000 -0.272000 0.936000
-0.850000 0.050200 0.216300 -0.184000 -0.272000 0.936000
-0.800000 0.050200 0.211000 -0.336000 -0.552000 0.752000
-0.850000 0.100400 0.222500 0.440000 0.584000 0.672000
-0.800000 0.100400 0.199400 -0.032000 0.024000 0.992000
-0.800000 0.100400 0.199400 -0.032000 0.024000 0.992000
-0.900000 0.000000 0.237100 -0.176000 -0.616000 0.760000
-0.900000 0.000000 0.237100 -0.176000 -0.616000 0.760000
-0.850000 0.000000 0.194300 -0.704000 -0.640000 0.296000
-0.900000 0.050200 0.226800 0.488000 0.496000 0.712000
-0.850000 0.050200 0.216300 -0.184000 -0.272000 0.936000
-0.850000 0.050200 0.216300 -0.184000 -0.272000 0.936000
-0.950000 -0.050200 0.197900 0.336000 -0.192000 0.920000
-0.950000 -0.050200 0.197900 0.336000 -0.192000 0.920000
-0.900000 -0.050200 0.230400 -0.448000 -0.568000 0.680000
-0.950000 0.000000 0.206500 0.400000 0.008000 0.912000
-0.900000 0.000000 0.237100 -0.176000 -0.616000 0.760000
-0.900000 0.000000 0.237100 -0.176000 -0.616000 0.760000
--0.950000 0.150600 0.154300 0.208000 0.640000 0.736000
--0.950000 0.150600 0.154300 0.208000 0.640000 0.736000
--0.900000 0.150600 0.126400 0.344000 0.632000 0.688000
--0.950000 0.178500 0.121900 0.272000 0.648000 0.704000
--0.900000 0.154600 0.121900 0.352000 0.624000 0.688000
--0.950000 0.200800 0.096100 0.208000 0.672000 0.704000
--0.900000 0.200800 0.074800 0.296000 0.712000 0.624000
--0.950000 0.226300 0.060900 0.264000 0.760000 0.584000
--0.900000 0.210300 0.060900 0.312000 0.744000 0.576000
--0.950000 0.251000 0.016800 0.288000 0.808000 0.504000
--0.900000 0.240500 0.000000 0.368000 0.840000 0.376000
--0.928700 0.251000 0.000000 0.312000 0.848000 0.408000
--0.900000 0.251000 -0.035000 0.384000 0.864000 0.312000
--0.950000 0.258900 0.000000 0.296000 0.848000 0.432000
--0.900000 0.258900 -0.060900 0.400000 0.896000 0.144000
--0.950000 0.277400 -0.060900 0.336000 0.928000 0.080000
--0.900000 0.251000 -0.101700 0.376000 0.896000 -0.216000
--0.950000 0.267200 -0.121900 0.344000 0.864000 -0.336000
--0.910500 0.251000 -0.121900 0.344000 0.880000 -0.304000
--0.950000 0.251000 -0.157200 0.320000 0.808000 -0.480000
--0.900000 0.246900 -0.121900 0.360000 0.872000 -0.304000
--0.950000 0.237800 -0.182900 0.296000 0.760000 -0.568000
--0.900000 0.214200 -0.182900 0.360000 0.720000 -0.576000
--0.950000 0.200800 -0.231900 0.272000 0.640000 -0.704000
--0.900000 0.200800 -0.201400 0.352000 0.680000 -0.640000
--0.950000 0.189400 -0.243900 0.264000 0.616000 -0.728000
--0.900000 0.162400 -0.243900 0.336000 0.616000 -0.704000
--0.950000 0.150600 -0.281200 0.240000 0.600000 -0.752000
--0.900000 0.150600 -0.256300 0.328000 0.616000 -0.704000
--0.950000 0.126000 -0.304800 0.168000 0.528000 -0.824000
--0.900000 0.104600 -0.304800 0.304000 0.568000 -0.760000
--0.950000 0.100400 -0.325900 0.192000 0.384000 -0.896000
--0.900000 0.100400 -0.308600 0.312000 0.536000 -0.776000
--0.950000 0.050200 -0.340200 0.184000 0.072000 -0.976000
--0.900000 0.050200 -0.331200 0.320000 0.232000 -0.912000
--0.950000 0.000000 -0.337100 0.184000 -0.088000 -0.976000
--0.900000 0.000000 -0.328400 0.216000 0.000000 -0.968000
--0.950000 -0.050200 -0.337400 0.088000 0.008000 -0.992000
--0.900000 -0.050200 -0.330000 0.160000 0.128000 -0.976000
--0.900000 0.000000 -0.328400 0.216000 0.000000 -0.968000
--0.850000 -0.050200 -0.323400 0.248000 0.176000 -0.944000
--0.850000 0.000000 -0.313800 0.264000 0.064000 -0.960000
--0.808200 -0.050200 -0.304800 0.280000 0.136000 -0.944000
--0.823600 0.000000 -0.304800 0.296000 0.080000 -0.944000
--0.800000 -0.050200 -0.302200 0.264000 0.120000 -0.952000
--0.800000 0.000000 -0.298500 0.248000 0.080000 -0.960000
--0.750000 -0.050200 -0.287100 0.288000 0.040000 -0.952000
--0.750000 0.000000 -0.285200 0.328000 0.160000 -0.920000
--0.700000 -0.050200 -0.272000 0.360000 0.104000 -0.920000
--0.700000 0.000000 -0.262900 0.392000 0.288000 -0.864000
--0.650000 -0.050200 -0.249300 0.496000 0.208000 -0.840000
--0.669700 0.000000 -0.243900 0.480000 0.312000 -0.808000
--0.650000 -0.035200 -0.243900 0.544000 0.264000 -0.792000
--0.650000 0.000000 -0.224600 0.632000 0.368000 -0.672000
--0.642900 -0.050200 -0.243900 0.560000 0.208000 -0.792000
--0.621400 0.000000 -0.182900 0.848000 0.280000 -0.440000
--0.606100 -0.050200 -0.182900 0.864000 0.248000 -0.424000
--0.606100 -0.050200 -0.182900 0.864000 0.248000 -0.424000
--0.950000 0.127100 0.182900 0.248000 0.536000 0.800000
--0.950000 0.127100 0.182900 0.248000 0.536000 0.800000
--0.950000 0.150600 0.154300 0.208000 0.640000 0.736000
--0.900000 0.101900 0.182900 0.304000 0.552000 0.768000
--0.900000 0.150600 0.126400 0.344000 0.632000 0.688000
--0.900000 0.150600 0.126400 0.344000 0.632000 0.688000
--0.939400 -0.100400 0.121900 -0.456000 -0.816000 0.336000
--0.939400 -0.100400 0.121900 -0.456000 -0.816000 0.336000
--0.900000 -0.100400 0.174900 -0.400000 -0.624000 0.656000
--0.900000 -0.127600 0.121900 -0.608000 -0.704000 0.344000
--0.900000 -0.127600 0.121900 -0.608000 -0.704000 0.344000
--0.900000 0.150600 0.126400 0.344000 0.632000 0.688000
--0.900000 0.150600 0.126400 0.344000 0.632000 0.688000
--0.900000 0.154600 0.121900 0.352000 0.624000 0.688000
--0.892900 0.150600 0.121900 0.360000 0.624000 0.680000
--0.900000 0.200800 0.074800 0.296000 0.712000 0.624000
--0.850000 0.150600 0.098600 0.360000 0.600000 0.704000
--0.879600 0.200800 0.060900 0.352000 0.712000 0.600000
--0.850000 0.184100 0.060900 0.376000 0.632000 0.664000
--0.850000 0.200800 0.035600 0.384000 0.744000 0.536000
--0.800000 0.153700 0.060900 0.432000 0.632000 0.632000
--0.811000 0.200800 0.000000 0.408000 0.816000 0.392000
--0.800000 0.195100 0.000000 0.456000 0.768000 0.432000
--0.800000 0.200800 -0.016800 0.416000 0.840000 0.336000
--0.750000 0.162200 0.000000 0.464000 0.672000 0.560000
--0.768900 0.200800 -0.060900 0.424000 0.888000 0.160000
--0.750000 0.191300 -0.060900 0.496000 0.856000 0.072000
--0.800000 0.200800 -0.113900 0.392000 0.880000 -0.256000
--0.750000 0.174400 -0.121900 0.448000 0.824000 -0.336000
--0.800000 0.198900 -0.121900 0.384000 0.872000 -0.288000
--0.750000 0.150600 -0.159200 0.432000 0.664000 -0.600000
--0.800000 0.163000 -0.182900 0.392000 0.688000 -0.600000
--0.779100 0.150600 -0.182900 0.400000 0.664000 -0.616000
--0.800000 0.150600 -0.199200 0.384000 0.648000 -0.648000
--0.750000 0.132600 -0.182900 0.408000 0.656000 -0.624000
--0.800000 0.108800 -0.243900 0.352000 0.608000 -0.704000
--0.750000 0.100400 -0.222000 0.432000 0.576000 -0.680000
--0.785800 0.100400 -0.243900 0.360000 0.584000 -0.720000
--0.750000 0.077000 -0.243900 0.368000 0.552000 -0.744000
--0.800000 0.100400 -0.252800 0.360000 0.584000 -0.720000
--0.750000 0.050200 -0.267100 0.368000 0.432000 -0.816000
--0.800000 0.050200 -0.288900 0.352000 0.360000 -0.856000
--0.750000 0.000000 -0.285200 0.328000 0.160000 -0.920000
--0.800000 0.000000 -0.298500 0.248000 0.080000 -0.960000
--0.800000 0.050200 -0.288900 0.352000 0.360000 -0.856000
--0.823600 0.000000 -0.304800 0.296000 0.080000 -0.944000
--0.836500 0.050200 -0.304800 0.336000 0.344000 -0.872000
--0.850000 0.000000 -0.313800 0.264000 0.064000 -0.960000
--0.850000 0.050200 -0.311100 0.336000 0.328000 -0.872000
--0.900000 0.000000 -0.328400 0.216000 0.000000 -0.968000
--0.900000 0.050200 -0.331200 0.320000 0.232000 -0.912000
--0.850000 0.050200 -0.311100 0.336000 0.328000 -0.872000
--0.900000 0.100400 -0.308600 0.312000 0.536000 -0.776000
--0.850000 0.061400 -0.304800 0.336000 0.392000 -0.848000
--0.892300 0.100400 -0.304800 0.320000 0.536000 -0.776000
--0.850000 0.100400 -0.281200 0.344000 0.488000 -0.792000
--0.900000 0.104600 -0.304800 0.304000 0.568000 -0.760000
--0.850000 0.135500 -0.243900 0.320000 0.608000 -0.712000
--0.900000 0.150600 -0.256300 0.328000 0.616000 -0.704000
--0.878700 0.150600 -0.243900 0.328000 0.616000 -0.704000
--0.900000 0.162400 -0.243900 0.336000 0.616000 -0.704000
--0.850000 0.150600 -0.229000 0.320000 0.608000 -0.720000
--0.900000 0.200800 -0.201400 0.352000 0.680000 -0.640000
--0.850000 0.188600 -0.182900 0.360000 0.712000 -0.592000
--0.874200 0.200800 -0.182900 0.360000 0.712000 -0.584000
--0.850000 0.200800 -0.163600 0.360000 0.768000 -0.512000
--0.900000 0.214200 -0.182900 0.360000 0.720000 -0.576000
--0.850000 0.222300 -0.121900 0.408000 0.856000 -0.296000
--0.900000 0.246900 -0.121900 0.360000 0.872000 -0.304000
--0.850000 0.235300 -0.060900 0.408000 0.904000 0.008000
--0.900000 0.251000 -0.101700 0.376000 0.896000 -0.216000
--0.884300 0.251000 -0.060900 0.432000 0.880000 0.144000
--0.900000 0.258900 -0.060900 0.400000 0.896000 0.144000
--0.900000 0.251000 -0.035000 0.384000 0.864000 0.312000
--0.884300 0.251000 -0.060900 0.432000 0.880000 0.144000
--0.900000 0.240500 0.000000 0.368000 0.840000 0.376000
--0.850000 0.235300 -0.060900 0.408000 0.904000 0.008000
--0.850000 0.219100 0.000000 0.368000 0.824000 0.424000
--0.800000 0.214400 -0.060900 0.400000 0.896000 0.176000
--0.811000 0.200800 0.000000 0.408000 0.816000 0.392000
--0.800000 0.200800 -0.016800 0.416000 0.840000 0.336000
--0.800000 0.214400 -0.060900 0.400000 0.896000 0.176000
--0.768900 0.200800 -0.060900 0.424000 0.888000 0.160000
--0.800000 0.200800 -0.113900 0.392000 0.880000 -0.256000
--0.800000 0.214400 -0.060900 0.400000 0.896000 0.176000
--0.804300 0.200800 -0.121900 0.384000 0.872000 -0.288000
--0.850000 0.235300 -0.060900 0.408000 0.904000 0.008000
--0.850000 0.222300 -0.121900 0.408000 0.856000 -0.296000
--0.804300 0.200800 -0.121900 0.384000 0.872000 -0.288000
--0.850000 0.200800 -0.163600 0.360000 0.768000 -0.512000
--0.800000 0.198900 -0.121900 0.384000 0.872000 -0.288000
--0.850000 0.188600 -0.182900 0.360000 0.712000 -0.592000
--0.800000 0.163000 -0.182900 0.392000 0.688000 -0.600000
--0.850000 0.150600 -0.229000 0.320000 0.608000 -0.720000
--0.800000 0.150600 -0.199200 0.384000 0.648000 -0.648000
--0.850000 0.135500 -0.243900 0.320000 0.608000 -0.712000
--0.800000 0.108800 -0.243900 0.352000 0.608000 -0.704000
--0.850000 0.100400 -0.281200 0.344000 0.488000 -0.792000
--0.800000 0.100400 -0.252800 0.360000 0.584000 -0.720000
--0.850000 0.061400 -0.304800 0.336000 0.392000 -0.848000
--0.800000 0.050200 -0.288900 0.352000 0.360000 -0.856000
--0.836500 0.050200 -0.304800 0.336000 0.344000 -0.872000
--0.850000 0.061400 -0.304800 0.336000 0.392000 -0.848000
--0.850000 0.050200 -0.311100 0.336000 0.328000 -0.872000
--0.850000 0.050200 -0.311100 0.336000 0.328000 -0.872000
--0.850000 0.127100 0.121900 0.424000 0.560000 0.704000
--0.850000 0.127100 0.121900 0.424000 0.560000 0.704000
--0.820700 0.100400 0.121900 0.496000 0.488000 0.704000
--0.850000 0.100400 0.150400 0.488000 0.512000 0.696000
--0.850000 0.100400 0.150400 0.488000 0.512000 0.696000
--0.839600 0.000000 0.182900 0.264000 0.152000 0.944000
--0.839600 0.000000 0.182900 0.264000 0.152000 0.944000
--0.809300 -0.050200 0.182900 0.232000 0.160000 0.952000
--0.800000 0.000000 0.163200 0.400000 0.288000 0.864000
--0.800000 -0.050200 0.179900 0.264000 0.176000 0.944000
--0.750000 0.000000 0.129400 0.496000 0.360000 0.776000
--0.750000 -0.050200 0.155100 0.464000 0.288000 0.832000
--0.740500 0.000000 0.121900 0.504000 0.352000 0.784000
--0.708600 -0.050200 0.121900 0.496000 0.344000 0.784000
--0.700000 0.000000 0.089700 0.584000 0.336000 0.736000
--0.700000 -0.050200 0.115300 0.496000 0.344000 0.792000
--0.666100 0.000000 0.060900 0.560000 0.376000 0.728000
--0.650000 -0.050200 0.076400 0.576000 0.320000 0.744000
--0.650000 -0.023500 0.060900 0.576000 0.360000 0.720000
--0.635700 -0.050200 0.060900 0.640000 0.304000 0.696000
--0.650000 0.000000 0.045200 0.576000 0.400000 0.704000
--0.600000 -0.050200 0.018400 0.648000 0.320000 0.688000
--0.609800 0.000000 0.000000 0.696000 0.384000 0.592000
--0.600000 -0.018300 0.000000 0.712000 0.368000 0.584000
--0.600000 0.000000 -0.017800 0.736000 0.384000 0.544000
--0.584800 -0.050200 0.000000 0.744000 0.336000 0.568000
--0.573200 0.000000 -0.060900 0.920000 0.296000 -0.248000
--0.554400 -0.050200 -0.060900 0.944000 0.280000 0.128000
--0.554400 -0.050200 -0.060900 0.944000 0.280000 0.128000
--0.800000 -0.063400 0.182900 0.240000 0.160000 0.952000
--0.800000 -0.063400 0.182900 0.240000 0.160000 0.952000
--0.809300 -0.050200 0.182900 0.232000 0.160000 0.952000
--0.800000 -0.050200 0.179900 0.264000 0.176000 0.944000
--0.800000 -0.050200 0.179900 0.264000 0.176000 0.944000
--0.850000 -0.137400 0.182900 -0.304000 -0.312000 0.896000
--0.850000 -0.137400 0.182900 -0.304000 -0.312000 0.896000
--0.836800 -0.150600 0.182900 -0.304000 -0.304000 0.896000
--0.850000 -0.150600 0.175600 -0.632000 -0.392000 0.664000
--0.803100 -0.200800 0.182900 -0.456000 -0.168000 0.864000
--0.850000 -0.200800 0.125700 -0.776000 -0.360000 0.504000
--0.850000 -0.200800 0.125700 -0.776000 -0.360000 0.504000
--0.800000 -0.251000 0.157900 -0.576000 -0.400000 0.696000
--0.800000 -0.251000 0.157900 -0.576000 -0.400000 0.696000
--0.800000 -0.280700 0.121900 -0.736000 -0.528000 0.408000
--0.819200 -0.251000 0.121900 -0.760000 -0.496000 0.400000
--0.800000 -0.301200 0.085900 -0.768000 -0.544000 0.304000
--0.838400 -0.251000 0.060900 -0.808000 -0.528000 0.248000
--0.805900 -0.301200 0.060900 -0.800000 -0.536000 0.232000
--0.800000 -0.301200 0.085900 -0.768000 -0.544000 0.304000
--0.800000 -0.310100 0.060900 -0.800000 -0.544000 0.224000
--0.805900 -0.301200 0.060900 -0.800000 -0.536000 0.232000
--0.800000 -0.327900 0.000000 -0.800000 -0.560000 0.176000
--0.817700 -0.301200 0.000000 -0.808000 -0.560000 0.168000
--0.817700 -0.301200 0.000000 -0.808000 -0.560000 0.168000
--0.800000 0.077200 0.121900 0.512000 0.416000 0.744000
--0.800000 0.077200 0.121900 0.512000 0.416000 0.744000
--0.781300 0.050200 0.121900 0.536000 0.400000 0.736000
--0.800000 0.050200 0.139800 0.504000 0.392000 0.760000
--0.800000 0.050200 0.139800 0.504000 0.392000 0.760000
--0.776900 -0.100400 0.182900 0.184000 0.120000 0.968000
--0.776900 -0.100400 0.182900 0.184000 0.120000 0.968000
--0.750000 -0.100400 0.174700 0.320000 0.192000 0.920000
--0.750000 -0.136500 0.182900 0.216000 0.112000 0.968000
--0.700000 -0.100400 0.138900 0.488000 0.288000 0.816000
--0.743500 -0.150600 0.182900 0.192000 0.096000 0.968000
--0.700000 -0.150600 0.164200 0.408000 0.248000 0.872000
--0.703900 -0.200800 0.182900 0.128000 0.064000 0.984000
--0.700000 -0.200800 0.182200 0.152000 0.072000 0.984000
--0.700000 -0.208700 0.182900 0.176000 0.120000 0.968000
--0.650000 -0.200800 0.153500 0.376000 0.280000 0.872000
--0.650000 -0.249200 0.182900 0.176000 0.464000 0.864000
--0.600000 -0.200800 0.130000 0.152000 0.560000 0.808000
--0.638500 -0.251000 0.182900 0.072000 0.424000 0.896000
--0.600000 -0.251000 0.177800 0.080000 0.520000 0.840000
--0.600000 -0.260000 0.182900 0.056000 0.320000 0.944000
--0.550000 -0.251000 0.173600 -0.016000 0.472000 0.872000
--0.550000 -0.264400 0.182900 -0.072000 0.456000 0.880000
--0.512000 -0.251000 0.182900 -0.112000 0.632000 0.760000
--0.550000 -0.251000 0.173600 -0.016000 0.472000 0.872000
--0.500000 -0.249000 0.182900 -0.112000 0.656000 0.744000
--0.550000 -0.202900 0.121900 0.032000 0.728000 0.680000
--0.500000 -0.200800 0.127000 -0.088000 0.600000 0.784000
--0.536800 -0.200800 0.121900 -0.104000 0.736000 0.664000
--0.500000 -0.196200 0.121900 -0.112000 0.784000 0.600000
--0.550000 -0.200800 0.118700 0.032000 0.784000 0.608000
--0.500000 -0.166600 0.060900 -0.304000 0.832000 0.448000
--0.550000 -0.166800 0.060900 0.264000 0.816000 0.504000
--0.500000 -0.150600 0.019400 -0.216000 0.856000 0.464000
--0.550000 -0.150600 0.029600 0.504000 0.688000 0.512000
--0.500000 -0.141000 0.000000 -0.040000 0.880000 0.456000
--0.550000 -0.125000 0.000000 0.608000 0.616000 0.488000
--0.500000 -0.119500 -0.060900 -0.160000 0.976000 0.112000
--0.550000 -0.100400 -0.036900 0.792000 0.376000 0.464000
--0.533200 -0.100400 -0.060900 0.712000 0.696000 -0.024000
--0.533200 -0.100400 -0.060900 0.712000 0.696000 -0.024000
--0.750000 -0.267900 0.182900 -0.232000 -0.192000 0.944000
--0.750000 -0.267900 0.182900 -0.232000 -0.192000 0.944000
--0.750000 -0.301200 0.168400 -0.360000 -0.432000 0.816000
--0.700000 -0.272200 0.182900 -0.072000 -0.128000 0.984000
--0.700000 -0.301200 0.175400 -0.248000 -0.280000 0.920000
--0.671000 -0.301200 0.182900 -0.120000 -0.104000 0.984000
--0.700000 -0.351500 0.155000 -0.664000 -0.344000 0.656000
--0.663400 -0.351500 0.182900 -0.304000 -0.080000 0.944000
--0.700000 -0.401700 0.124500 -0.664000 -0.408000 0.616000
--0.650000 -0.385200 0.182900 -0.496000 -0.152000 0.848000
--0.650000 -0.401700 0.178700 -0.552000 -0.344000 0.752000
--0.644900 -0.401700 0.182900 -0.528000 -0.240000 0.808000
--0.650000 -0.451900 0.140100 -0.528000 -0.568000 0.624000
--0.600000 -0.446800 0.182900 -0.240000 -0.464000 0.848000
--0.600000 -0.451900 0.179400 -0.216000 -0.496000 0.832000
--0.583500 -0.451900 0.182900 -0.128000 -0.544000 0.824000
--0.600000 -0.495400 0.121900 -0.392000 -0.720000 0.560000
--0.550000 -0.456500 0.182900 0.056000 -0.736000 0.672000
--0.550000 -0.494000 0.121900 0.024000 -0.832000 0.536000
--0.600000 -0.495400 0.121900 -0.392000 -0.720000 0.560000
--0.550000 -0.502100 0.104800 0.104000 -0.840000 0.520000
--0.600000 -0.502100 0.110700 -0.280000 -0.792000 0.528000
--0.550000 -0.532000 0.060900 0.080000 -0.776000 0.624000
--0.600000 -0.531600 0.060900 -0.448000 -0.736000 0.496000
--0.600000 -0.502100 0.110700 -0.280000 -0.792000 0.528000
--0.640700 -0.502100 0.060900 -0.496000 -0.728000 0.456000
--0.600000 -0.495400 0.121900 -0.392000 -0.720000 0.560000
--0.650000 -0.495900 0.060900 -0.528000 -0.720000 0.432000
--0.650000 -0.463300 0.121900 -0.512000 -0.696000 0.496000
--0.700000 -0.453200 0.060900 -0.560000 -0.720000 0.392000
--0.664200 -0.451900 0.121900 -0.552000 -0.696000 0.448000
--0.700000 -0.451900 0.063700 -0.672000 -0.600000 0.424000
--0.700000 -0.404000 0.121900 -0.624000 -0.536000 0.560000
--0.701000 -0.451900 0.060900 -0.792000 -0.480000 0.344000
--0.701700 -0.401700 0.121900 -0.704000 -0.408000 0.568000
--0.731300 -0.401700 0.060900 -0.784000 -0.496000 0.344000
--0.739400 -0.351500 0.121900 -0.528000 -0.576000 0.616000
--0.750000 -0.377100 0.060900 -0.760000 -0.552000 0.320000
--0.750000 -0.351500 0.110100 -0.600000 -0.584000 0.536000
--0.767900 -0.351500 0.060900 -0.760000 -0.568000 0.296000
--0.767900 -0.351500 0.060900 -0.760000 -0.568000 0.296000
--0.750000 -0.301200 0.168400 -0.360000 -0.432000 0.816000
--0.750000 -0.301200 0.168400 -0.360000 -0.432000 0.816000
--0.700000 -0.301200 0.175400 -0.248000 -0.280000 0.920000
--0.750000 -0.342500 0.121900 -0.536000 -0.592000 0.592000
--0.700000 -0.351500 0.155000 -0.664000 -0.344000 0.656000
--0.739400 -0.351500 0.121900 -0.528000 -0.576000 0.616000
--0.700000 -0.401700 0.124500 -0.664000 -0.408000 0.616000
--0.701700 -0.401700 0.121900 -0.704000 -0.408000 0.568000
--0.700000 -0.404000 0.121900 -0.624000 -0.536000 0.560000
--0.700000 -0.401700 0.124500 -0.664000 -0.408000 0.616000
--0.664200 -0.451900 0.121900 -0.552000 -0.696000 0.448000
--0.650000 -0.401700 0.178700 -0.552000 -0.344000 0.752000
--0.650000 -0.451900 0.140100 -0.528000 -0.568000 0.624000
--0.664200 -0.451900 0.121900 -0.552000 -0.696000 0.448000
--0.650000 -0.463300 0.121900 -0.512000 -0.696000 0.496000
--0.650000 -0.451900 0.140100 -0.528000 -0.568000 0.624000
--0.600000 -0.495400 0.121900 -0.392000 -0.720000 0.560000
--0.600000 -0.451900 0.179400 -0.216000 -0.496000 0.832000
--0.600000 -0.451900 0.179400 -0.216000 -0.496000 0.832000
--0.700000 -0.062200 0.121900 0.504000 0.344000 0.784000
--0.700000 -0.062200 0.121900 0.504000 0.344000 0.784000
--0.677900 -0.100400 0.121900 0.528000 0.328000 0.776000
--0.700000 -0.100400 0.138900 0.488000 0.288000 0.816000
--0.650000 -0.141800 0.121900 0.432000 0.328000 0.832000
--0.700000 -0.150600 0.164200 0.408000 0.248000 0.872000
--0.650000 -0.150600 0.126000 0.408000 0.336000 0.840000
--0.700000 -0.200800 0.182200 0.152000 0.072000 0.984000
--0.650000 -0.200800 0.153500 0.376000 0.280000 0.872000
--0.650000 -0.150600 0.126000 0.408000 0.336000 0.840000
--0.600000 -0.200800 0.130000 0.152000 0.560000 0.808000
--0.642900 -0.150600 0.121900 0.408000 0.352000 0.832000
--0.600000 -0.190600 0.121900 0.296000 0.496000 0.808000
--0.600000 -0.150600 0.080700 0.576000 0.424000 0.688000
--0.559300 -0.200800 0.121900 0.160000 0.720000 0.672000
--0.575700 -0.150600 0.060900 0.384000 0.664000 0.632000
--0.550000 -0.200800 0.118700 0.032000 0.784000 0.608000
--0.550000 -0.166800 0.060900 0.264000 0.816000 0.504000
--0.575700 -0.150600 0.060900 0.384000 0.664000 0.632000
--0.550000 -0.150600 0.029600 0.504000 0.688000 0.512000
--0.600000 -0.122400 0.060900 0.616000 0.400000 0.664000
--0.550000 -0.125000 0.000000 0.608000 0.616000 0.488000
--0.600000 -0.100400 0.044600 0.672000 0.336000 0.656000
--0.565600 -0.100400 0.000000 0.744000 0.440000 0.496000
--0.550000 -0.125000 0.000000 0.608000 0.616000 0.488000
--0.550000 -0.100400 -0.036900 0.792000 0.376000 0.464000
--0.550000 -0.100400 -0.036900 0.792000 0.376000 0.464000
--0.650000 -0.150600 0.126000 0.408000 0.336000 0.840000
--0.650000 -0.150600 0.126000 0.408000 0.336000 0.840000
--0.650000 -0.141800 0.121900 0.432000 0.328000 0.832000
--0.642900 -0.150600 0.121900 0.408000 0.352000 0.832000
--0.650000 -0.100400 0.096100 0.592000 0.288000 0.744000
--0.600000 -0.150600 0.080700 0.576000 0.424000 0.688000
--0.612900 -0.100400 0.060900 0.624000 0.376000 0.672000
--0.600000 -0.122400 0.060900 0.616000 0.400000 0.664000
--0.600000 -0.100400 0.044600 0.672000 0.336000 0.656000
--0.600000 -0.100400 0.044600 0.672000 0.336000 0.656000
--0.600000 -0.190600 0.121900 0.296000 0.496000 0.808000
--0.600000 -0.190600 0.121900 0.296000 0.496000 0.808000
--0.559300 -0.200800 0.121900 0.160000 0.720000 0.672000
--0.600000 -0.200800 0.130000 0.152000 0.560000 0.808000
--0.550000 -0.202900 0.121900 0.032000 0.728000 0.680000
--0.600000 -0.251000 0.177800 0.080000 0.520000 0.840000
--0.550000 -0.251000 0.173600 -0.016000 0.472000 0.872000
--0.550000 -0.251000 0.173600 -0.016000 0.472000 0.872000
--0.500000 -0.200800 0.127000 -0.088000 0.600000 0.784000
--0.500000 -0.200800 0.127000 -0.088000 0.600000 0.784000
--0.450000 -0.200800 0.150000 -0.304000 0.608000 0.720000
--0.500000 -0.196200 0.121900 -0.112000 0.784000 0.600000
--0.450000 -0.173700 0.121900 -0.368000 0.648000 0.656000
--0.500000 -0.166600 0.060900 -0.304000 0.832000 0.448000
--0.450000 -0.150600 0.089400 -0.440000 0.744000 0.496000
--0.472400 -0.150600 0.060900 -0.464000 0.768000 0.416000
--0.450000 -0.136300 0.060900 -0.512000 0.720000 0.448000
--0.500000 -0.150600 0.019400 -0.216000 0.856000 0.464000
--0.450000 -0.112700 0.000000 -0.520000 0.784000 0.320000
--0.500000 -0.141000 0.000000 -0.040000 0.880000 0.456000
--0.500000 -0.141000 0.000000 -0.040000 0.880000 0.456000
--0.500000 -0.200800 0.127000 -0.088000 0.600000 0.784000
--0.500000 -0.200800 0.127000 -0.088000 0.600000 0.784000
--0.500000 -0.249000 0.182900 -0.112000 0.656000 0.744000
--0.450000 -0.200800 0.150000 -0.304000 0.608000 0.720000
--0.450000 -0.233700 0.182900 -0.216000 0.472000 0.848000
--0.400000 -0.200800 0.179200 -0.200000 0.464000 0.856000
--0.400000 -0.206800 0.182900 -0.168000 0.424000 0.880000
--0.383500 -0.200800 0.182900 -0.152000 0.448000 0.872000
--0.400000 -0.200800 0.179200 -0.200000 0.464000 0.856000
--0.350000 -0.189600 0.182900 -0.288000 0.472000 0.824000
--0.400000 -0.150600 0.133500 -0.392000 0.600000 0.688000
--0.350000 -0.150600 0.151300 -0.584000 0.352000 0.720000
--0.350000 -0.189600 0.182900 -0.288000 0.472000 0.824000
--0.311100 -0.150600 0.182900 -0.424000 0.464000 0.768000
--0.311100 -0.150600 0.182900 -0.424000 0.464000 0.768000
--0.400000 -0.200800 0.179200 -0.200000 0.464000 0.856000
--0.400000 -0.200800 0.179200 -0.200000 0.464000 0.856000
--0.450000 -0.200800 0.150000 -0.304000 0.608000 0.720000
--0.400000 -0.150600 0.133500 -0.392000 0.600000 0.688000
--0.450000 -0.173700 0.121900 -0.368000 0.648000 0.656000
--0.414900 -0.150600 0.121900 -0.424000 0.616000 0.648000
--0.450000 -0.150600 0.089400 -0.440000 0.744000 0.496000
--0.450000 -0.150600 0.089400 -0.440000 0.744000 0.496000
--0.351400 -0.100400 0.121900 -0.608000 0.368000 0.696000
--0.351400 -0.100400 0.121900 -0.608000 0.368000 0.696000
--0.350000 -0.097900 0.121900 -0.560000 0.424000 0.704000
--0.350000 -0.100400 0.123500 -0.608000 0.328000 0.712000
--0.300000 -0.066800 0.121900 -0.280000 0.584000 0.752000
--0.300000 -0.100400 0.149000 -0.304000 0.432000 0.840000
--0.255700 -0.050200 0.121900 -0.192000 0.512000 0.832000
--0.250000 -0.100400 0.155000 0.480000 0.160000 0.856000
--0.250000 -0.050200 0.123600 0.200000 0.440000 0.864000
--0.250000 -0.050200 0.123600 0.200000 0.440000 0.864000
--0.369700 -0.301200 0.182900 0.552000 -0.328000 0.752000
--0.369700 -0.301200 0.182900 0.552000 -0.328000 0.752000
--0.350000 -0.276800 0.182900 0.600000 -0.432000 0.664000
--0.350000 -0.301200 0.167500 0.592000 -0.368000 0.712000
--0.350000 -0.301200 0.167500 0.592000 -0.368000 0.712000
--0.334800 -0.251000 0.182900 0.672000 -0.480000 0.552000
--0.334800 -0.251000 0.182900 0.672000 -0.480000 0.552000
--0.300000 -0.205800 0.182900 0.768000 -0.472000 0.416000
--0.300000 -0.251000 0.131000 0.632000 -0.616000 0.464000
--0.300000 -0.251000 0.131000 0.632000 -0.616000 0.464000
--0.300000 -0.251000 0.131000 0.632000 -0.616000 0.464000
--0.300000 -0.251000 0.131000 0.632000 -0.616000 0.464000
--0.294600 -0.251000 0.121900 0.616000 -0.600000 0.488000
--0.300000 -0.256400 0.121900 0.624000 -0.624000 0.456000
--0.300000 -0.256400 0.121900 0.624000 -0.624000 0.456000
-0.550000 0.331800 0.121900 -0.696000 0.536000 0.456000
-0.550000 0.331800 0.121900 -0.696000 0.536000 0.456000
-0.550000 0.301200 0.149100 -0.896000 -0.096000 0.416000
-0.538800 0.301200 0.121900 -0.912000 0.128000 0.376000
-0.538800 0.301200 0.121900 -0.912000 0.128000 0.376000
-0.548800 0.251000 0.121900 -0.912000 -0.176000 0.360000
-0.548800 0.251000 0.121900 -0.912000 -0.176000 0.360000
-0.550000 0.251000 0.125100 -0.872000 -0.184000 0.440000
-0.550000 0.246100 0.121900 -0.904000 -0.224000 0.352000
-0.586200 0.251000 0.182900 -0.672000 -0.144000 0.720000
-0.567500 0.200800 0.121900 -0.784000 -0.344000 0.504000
-0.600000 0.211800 0.182900 -0.672000 -0.280000 0.672000
-0.600000 0.200800 0.176700 -0.712000 -0.296000 0.624000
-0.604600 0.200800 0.182900 -0.672000 -0.288000 0.664000
-0.600000 0.150600 0.141200 -0.712000 -0.440000 0.536000
-0.641000 0.150600 0.182900 -0.528000 -0.464000 0.696000
-0.600000 0.134700 0.121900 -0.776000 -0.456000 0.424000
-0.650000 0.141000 0.182900 -0.512000 -0.488000 0.704000
-0.627900 0.100400 0.121900 -0.608000 -0.608000 0.504000
-0.650000 0.100400 0.150000 -0.536000 -0.592000 0.592000
-0.650000 0.080100 0.121900 -0.576000 -0.640000 0.496000
-0.685300 0.100400 0.182900 -0.504000 -0.560000 0.648000
-0.692100 0.050200 0.121900 -0.432000 -0.784000 0.424000
-0.700000 0.088000 0.182900 -0.464000 -0.608000 0.640000
-0.700000 0.050200 0.131500 -0.112000 -0.824000 0.544000
-0.750000 0.062100 0.182900 -0.416000 -0.632000 0.648000
-0.744700 0.050200 0.121900 0.096000 -0.864000 0.480000
-0.750000 0.050900 0.121900 0.096000 -0.792000 0.600000
-0.750000 0.050200 0.120200 -0.160000 -0.904000 0.376000
-0.751700 0.050200 0.121900 -0.392000 -0.816000 0.416000
-0.750000 0.031700 0.060900 -0.136000 -0.928000 0.336000
-0.800000 0.028400 0.121900 -0.376000 -0.808000 0.432000
-0.798100 0.000000 0.060900 -0.504000 -0.792000 0.312000
-0.800000 0.000000 0.064400 -0.576000 -0.736000 0.344000
-0.800000 -0.001000 0.060900 -0.584000 -0.776000 0.216000
-0.829700 0.000000 0.121900 -0.704000 -0.616000 0.344000
-0.843600 -0.050200 0.060900 -0.704000 -0.672000 0.184000
-0.850000 -0.029600 0.121900 -0.840000 -0.432000 0.312000
-0.850000 -0.050200 0.089500 -0.768000 -0.592000 0.216000
-0.857500 -0.050200 0.121900 -0.848000 -0.448000 0.272000
-0.850000 -0.056700 0.060900 -0.720000 -0.664000 0.176000
-0.892500 -0.100400 0.121900 -0.688000 -0.680000 0.240000
-0.881900 -0.100400 0.060900 -0.752000 -0.632000 0.152000
-0.850000 -0.056700 0.060900 -0.720000 -0.664000 0.176000
-0.873300 -0.100400 0.000000 -0.752000 -0.632000 0.120000
-0.850000 -0.068700 0.000000 -0.752000 -0.640000 0.136000
-0.865600 -0.100400 -0.060900 -0.776000 -0.616000 0.120000
-0.850000 -0.079400 -0.060900 -0.768000 -0.616000 0.120000
-0.858300 -0.100400 -0.121900 -0.792000 -0.600000 0.056000
-0.850000 -0.088400 -0.121900 -0.808000 -0.584000 0.016000
-0.858100 -0.100400 -0.182900 -0.824000 -0.552000 0.000000
-0.850000 -0.086900 -0.182900 -0.848000 -0.512000 -0.048000
-0.860900 -0.100400 -0.243900 -0.856000 -0.496000 -0.072000
-0.850000 -0.077200 -0.243900 -0.824000 -0.432000 -0.344000
-0.869700 -0.100400 -0.304800 -0.880000 -0.248000 -0.400000
-0.850000 -0.050200 -0.276700 -0.784000 -0.280000 -0.544000
-0.867300 -0.050200 -0.304800 -0.784000 -0.136000 -0.600000
-0.850000 0.000000 -0.279000 -0.536000 0.488000 -0.680000
-0.877300 0.000000 -0.304800 -0.592000 0.480000 -0.632000
-0.877300 0.000000 -0.304800 -0.592000 0.480000 -0.632000
-0.600000 0.150600 0.141200 -0.712000 -0.440000 0.536000
-0.600000 0.150600 0.141200 -0.712000 -0.440000 0.536000
-0.600000 0.200800 0.176700 -0.712000 -0.296000 0.624000
-0.591100 0.150600 0.121900 -0.792000 -0.400000 0.440000
-0.567500 0.200800 0.121900 -0.784000 -0.344000 0.504000
-0.560700 0.150600 0.060900 -0.704000 -0.368000 0.592000
-0.550000 0.200800 0.086900 -0.880000 -0.256000 0.392000
-0.550000 0.174700 0.060900 -0.744000 -0.320000 0.576000
-0.538800 0.200800 0.060900 -0.824000 -0.216000 0.520000
-0.550000 0.150600 0.048400 -0.632000 -0.416000 0.640000
-0.500000 0.200800 0.008600 -0.576000 -0.176000 0.792000
-0.510200 0.150600 0.000000 -0.752000 -0.384000 0.520000
-0.500000 0.181600 0.000000 -0.600000 -0.304000 0.728000
-0.500000 0.150600 -0.020200 -0.704000 -0.472000 0.520000
-0.488800 0.200800 0.000000 -0.512000 0.024000 0.856000
-0.460500 0.150600 -0.060900 -0.624000 -0.512000 0.584000
-0.450000 0.200800 -0.035500 -0.536000 -0.264000 0.792000
-0.450000 0.163500 -0.060900 -0.600000 -0.504000 0.608000
-0.416500 0.200800 -0.060900 -0.560000 -0.352000 0.744000
-0.450000 0.150600 -0.075000 -0.616000 -0.488000 0.608000
-0.400000 0.200800 -0.077800 -0.600000 -0.432000 0.664000
-0.401900 0.150600 -0.121900 -0.864000 -0.496000 -0.024000
-0.400000 0.152400 -0.121900 -0.688000 -0.712000 -0.048000
-0.407800 0.150600 -0.182900 -0.544000 -0.240000 -0.800000
-0.400000 0.155900 -0.182900 -0.216000 -0.144000 -0.960000
-0.450000 0.150600 -0.187200 -0.088000 0.168000 -0.976000
-0.400000 0.200800 -0.189400 -0.152000 -0.072000 -0.984000
-0.450000 0.200800 -0.192400 -0.128000 -0.040000 -0.984000
-0.400000 0.251000 -0.186400 -0.152000 0.040000 -0.984000
-0.450000 0.251000 -0.188200 -0.104000 0.040000 -0.992000
-0.400000 0.301200 -0.184200 -0.016000 -0.016000 -0.992000
-0.450000 0.301200 -0.186200 0.000000 -0.016000 -0.992000
-0.400000 0.351500 -0.194500 0.000000 0.072000 -0.992000
-0.450000 0.351500 -0.196000 0.120000 0.128000 -0.976000
-0.400000 0.377300 -0.182900 0.016000 0.320000 -0.944000
-0.450000 0.373800 -0.182900 0.104000 0.432000 -0.888000
-0.400000 0.401700 -0.171200 0.088000 0.472000 -0.872000
-0.450000 0.401700 -0.160800 0.376000 0.656000 -0.640000
-0.400000 0.432800 -0.121900 0.160000 0.904000 -0.384000
-0.450000 0.422200 -0.121900 0.368000 0.832000 -0.392000
-0.400000 0.419800 -0.060900 0.080000 0.848000 0.520000
-0.450000 0.414500 -0.060900 0.192000 0.928000 0.304000
-0.400000 0.401700 -0.034800 -0.040000 0.584000 0.808000
-0.450000 0.401700 -0.038900 -0.120000 0.592000 0.784000
-0.400000 0.351500 -0.018700 -0.136000 -0.208000 0.960000
-0.450000 0.351500 -0.003200 -0.296000 0.344000 0.888000
-0.450000 0.401700 -0.038900 -0.120000 0.592000 0.784000
-0.458200 0.351500 0.000000 -0.280000 0.520000 0.800000
-0.500000 0.401700 -0.057700 0.096000 0.864000 0.480000
-0.500000 0.369100 0.000000 -0.184000 0.800000 0.552000
-0.517100 0.401700 -0.060900 0.080000 0.968000 0.224000
-0.550000 0.388900 0.000000 -0.392000 0.856000 0.320000
-0.550000 0.398000 -0.060900 0.000000 0.968000 -0.216000
-0.517100 0.401700 -0.060900 0.080000 0.968000 0.224000
-0.550000 0.362300 -0.121900 0.400000 0.656000 -0.632000
-0.500000 0.401700 -0.069300 0.168000 0.952000 -0.216000
-0.500000 0.393600 -0.121900 0.504000 0.744000 -0.432000
-0.488600 0.401700 -0.121900 0.504000 0.776000 -0.368000
-0.500000 0.355500 -0.182900 0.400000 0.616000 -0.664000
-0.450000 0.401700 -0.160800 0.376000 0.656000 -0.640000
-0.450000 0.373800 -0.182900 0.104000 0.432000 -0.888000
-0.500000 0.355500 -0.182900 0.400000 0.616000 -0.664000
-0.450000 0.351500 -0.196000 0.120000 0.128000 -0.976000
-0.500000 0.351500 -0.187300 0.416000 0.568000 -0.696000
-0.450000 0.301200 -0.186200 0.000000 -0.016000 -0.992000
-0.500000 0.301200 -0.193500 0.168000 0.072000 -0.976000
-0.450000 0.251000 -0.188200 -0.104000 0.040000 -0.992000
-0.500000 0.251000 -0.199400 0.072000 0.096000 -0.984000
-0.450000 0.200800 -0.192400 -0.128000 -0.040000 -0.984000
-0.500000 0.200800 -0.200200 -0.104000 -0.048000 -0.992000
-0.450000 0.150600 -0.187200 -0.088000 0.168000 -0.976000
-0.500000 0.150600 -0.194400 -0.208000 0.240000 -0.944000
-0.450000 0.100400 -0.233000 -0.008000 0.816000 -0.568000
-0.500000 0.100400 -0.210700 0.048000 0.704000 -0.704000
-0.450000 0.095300 -0.243900 -0.008000 0.856000 -0.512000
-0.500000 0.082500 -0.243900 0.216000 0.832000 -0.504000
-0.450000 0.055500 -0.304800 0.064000 0.864000 -0.496000
-0.500000 0.050200 -0.303800 0.264000 0.816000 -0.504000
-0.496000 0.050200 -0.304800 0.104000 0.800000 -0.576000
-0.500000 0.049600 -0.304800 0.264000 0.736000 -0.616000
-0.450000 0.050200 -0.314200 0.064000 0.744000 -0.656000
-0.500000 0.014000 -0.365800 0.216000 0.784000 -0.568000
-0.450000 0.007700 -0.365800 -0.264000 0.744000 -0.600000
-0.500000 0.000000 -0.393700 0.528000 0.072000 -0.840000
-0.450000 0.000000 -0.377000 -0.360000 0.400000 -0.840000
-0.500000 -0.027200 -0.365800 0.264000 -0.576000 -0.768000
-0.450000 -0.014200 -0.365800 -0.336000 -0.568000 -0.744000
-0.500000 -0.050200 -0.339600 -0.136000 -0.672000 -0.720000
-0.450000 -0.050200 -0.325200 -0.120000 -0.568000 -0.808000
-0.450000 -0.014200 -0.365800 -0.336000 -0.568000 -0.744000
-0.400000 -0.050200 -0.360800 0.184000 -0.432000 -0.872000
-0.431500 0.000000 -0.365800 -0.424000 0.312000 -0.840000
-0.400000 0.000000 -0.343200 -0.216000 0.592000 -0.768000
-0.450000 0.007700 -0.365800 -0.264000 0.744000 -0.600000
-0.400000 0.041200 -0.304800 -0.352000 0.672000 -0.648000
-0.450000 0.050200 -0.314200 0.064000 0.744000 -0.656000
-0.419200 0.050200 -0.304800 -0.224000 0.736000 -0.632000
-0.450000 0.055500 -0.304800 0.064000 0.864000 -0.496000
-0.400000 0.050200 -0.294000 -0.352000 0.672000 -0.640000
-0.450000 0.095300 -0.243900 -0.008000 0.856000 -0.512000
-0.400000 0.083700 -0.243900 -0.328000 0.768000 -0.536000
-0.450000 0.100400 -0.233000 -0.008000 0.816000 -0.568000
-0.400000 0.100400 -0.207800 -0.424000 0.688000 -0.576000
-0.450000 0.150600 -0.187200 -0.088000 0.168000 -0.976000
-0.400000 0.146600 -0.182900 -0.440000 0.464000 -0.760000
-0.407800 0.150600 -0.182900 -0.544000 -0.240000 -0.800000
-0.400000 0.100400 -0.150800 -0.768000 0.376000 0.512000
-0.401900 0.150600 -0.121900 -0.864000 -0.496000 -0.024000
-0.415000 0.100400 -0.121900 -0.640000 0.192000 0.736000
-0.450000 0.150600 -0.075000 -0.616000 -0.488000 0.608000
-0.450000 0.100400 -0.090700 -0.384000 -0.320000 0.856000
-0.460500 0.150600 -0.060900 -0.624000 -0.512000 0.584000
-0.500000 0.100400 -0.067100 -0.632000 -0.296000 0.704000
-0.500000 0.107000 -0.060900 -0.608000 -0.480000 0.616000
-0.504600 0.100400 -0.060900 -0.704000 -0.248000 0.656000
-0.500000 0.150600 -0.020200 -0.704000 -0.472000 0.520000
-0.550000 0.100400 -0.005700 -0.672000 -0.576000 0.448000
-0.510200 0.150600 0.000000 -0.752000 -0.384000 0.520000
-0.550000 0.104000 0.000000 -0.664000 -0.568000 0.464000
-0.550000 0.150600 0.048400 -0.632000 -0.416000 0.640000
-0.553100 0.100400 0.000000 -0.664000 -0.576000 0.464000
-0.560700 0.150600 0.060900 -0.704000 -0.368000 0.592000
-0.593200 0.100400 0.060900 -0.640000 -0.584000 0.496000
-0.591100 0.150600 0.121900 -0.792000 -0.400000 0.440000
-0.600000 0.100400 0.071800 -0.648000 -0.592000 0.472000
-0.600000 0.134700 0.121900 -0.776000 -0.456000 0.424000
-0.627900 0.100400 0.121900 -0.608000 -0.608000 0.504000
-0.600000 0.100400 0.071800 -0.648000 -0.592000 0.472000
-0.650000 0.080100 0.121900 -0.576000 -0.640000 0.496000
-0.600000 0.093600 0.060900 -0.624000 -0.616000 0.464000
-0.650000 0.050200 0.073400 -0.576000 -0.624000 0.512000
-0.641200 0.050200 0.060900 -0.600000 -0.608000 0.512000
-0.650000 0.041800 0.060900 -0.568000 -0.648000 0.504000
-0.602900 0.050200 0.000000 -0.576000 -0.704000 0.400000
-0.650000 0.013100 0.000000 -0.448000 -0.792000 0.392000
-0.600000 0.050200 -0.005300 -0.440000 -0.752000 0.480000
-0.650000 0.000000 -0.040500 0.104000 -0.944000 0.296000
-0.600000 0.000000 -0.044900 -0.016000 -0.720000 0.688000
-0.650000 -0.010200 -0.060900 0.168000 -0.784000 0.592000
-0.600000 -0.012300 -0.060900 0.104000 -0.576000 0.800000
-0.650000 -0.033500 -0.121900 0.512000 -0.672000 0.520000
-0.600000 -0.050200 -0.088500 0.448000 -0.400000 0.792000
-0.638000 -0.050200 -0.121900 0.800000 -0.536000 0.256000
-0.600000 -0.100400 -0.077400 0.584000 0.048000 0.800000
-0.626600 -0.100400 -0.121900 0.848000 0.208000 0.472000
-0.638000 -0.050200 -0.121900 0.800000 -0.536000 0.256000
-0.638900 -0.100400 -0.182900 0.920000 0.368000 0.072000
-0.649100 -0.050200 -0.182900 0.816000 -0.544000 0.144000
-0.637300 -0.100400 -0.243900 0.848000 0.016000 -0.520000
-0.637200 -0.050200 -0.243900 0.840000 -0.080000 -0.528000
-0.604900 -0.100400 -0.304800 0.744000 -0.360000 -0.552000
-0.600000 -0.050200 -0.286000 0.712000 0.144000 -0.680000
-0.600000 -0.086300 -0.304800 0.440000 0.312000 -0.832000
-0.587300 -0.050200 -0.304800 0.688000 0.056000 -0.712000
-0.589400 -0.100400 -0.304800 -0.440000 -0.424000 -0.784000
-0.550000 -0.083700 -0.304800 0.088000 -0.736000 -0.664000
-0.550000 -0.100400 -0.280800 -0.008000 -0.528000 -0.840000
-0.500000 -0.082600 -0.304800 0.216000 -0.680000 -0.688000
-0.500000 -0.100400 -0.277800 0.560000 -0.104000 -0.816000
-0.475800 -0.100400 -0.304800 0.512000 -0.104000 -0.848000
-0.500000 -0.127100 -0.304800 0.480000 0.456000 -0.744000
-0.500000 -0.100400 -0.277800 0.560000 -0.104000 -0.816000
-0.523400 -0.150600 -0.304800 0.376000 0.592000 -0.704000
-0.550000 -0.100400 -0.280800 -0.008000 -0.528000 -0.840000
-0.550000 -0.150600 -0.287800 0.352000 0.528000 -0.768000
-0.589400 -0.100400 -0.304800 -0.440000 -0.424000 -0.784000
-0.600000 -0.150600 -0.265200 0.248000 0.032000 -0.960000
-0.600000 -0.105700 -0.304800 0.312000 -0.728000 -0.600000
-0.650000 -0.150600 -0.274900 0.544000 0.464000 -0.688000
-0.604900 -0.100400 -0.304800 0.744000 -0.360000 -0.552000
-0.650000 -0.120200 -0.243900 0.704000 0.520000 -0.472000
-0.637300 -0.100400 -0.243900 0.848000 0.016000 -0.520000
-0.650000 -0.117900 -0.182900 0.792000 0.600000 0.024000
-0.638900 -0.100400 -0.182900 0.920000 0.368000 0.072000
-0.650000 -0.146100 -0.121900 0.720000 0.504000 0.464000
-0.626600 -0.100400 -0.121900 0.848000 0.208000 0.472000
-0.626600 -0.100400 -0.121900 0.848000 0.208000 0.472000
-0.591100 0.150600 0.121900 -0.792000 -0.400000 0.440000
-0.591100 0.150600 0.121900 -0.792000 -0.400000 0.440000
-0.600000 0.150600 0.141200 -0.712000 -0.440000 0.536000
-0.600000 0.134700 0.121900 -0.776000 -0.456000 0.424000
-0.600000 0.134700 0.121900 -0.776000 -0.456000 0.424000
-0.650000 0.141000 0.182900 -0.512000 -0.488000 0.704000
-0.650000 0.141000 0.182900 -0.512000 -0.488000 0.704000
-0.685300 0.100400 0.182900 -0.504000 -0.560000 0.648000
-0.650000 0.100400 0.150000 -0.536000 -0.592000 0.592000
-0.650000 0.100400 0.150000 -0.536000 -0.592000 0.592000
-0.692100 0.050200 0.121900 -0.432000 -0.784000 0.424000
-0.692100 0.050200 0.121900 -0.432000 -0.784000 0.424000
-0.700000 0.050200 0.131500 -0.112000 -0.824000 0.544000
-0.700000 0.046100 0.121900 -0.152000 -0.904000 0.376000
-0.744700 0.050200 0.121900 0.096000 -0.864000 0.480000
-0.700000 0.026800 0.060900 -0.288000 -0.896000 0.328000
-0.750000 0.050200 0.120200 -0.160000 -0.904000 0.376000
-0.750000 0.031700 0.060900 -0.136000 -0.928000 0.336000
-0.700000 0.026800 0.060900 -0.288000 -0.896000 0.328000
-0.750000 0.013300 0.000000 -0.240000 -0.936000 0.240000
-0.700000 0.012000 0.000000 -0.032000 -0.960000 0.272000
-0.750000 0.001600 -0.060900 -0.416000 -0.904000 -0.016000
-0.700000 0.001400 -0.060900 0.088000 -0.968000 0.192000
-0.750000 0.004300 -0.121900 -0.408000 -0.880000 -0.216000
-0.700000 0.000400 -0.121900 0.224000 -0.968000 0.032000
-0.750000 0.019900 -0.182900 -0.176000 -0.792000 -0.576000
-0.700000 0.009000 -0.182900 0.456000 -0.744000 -0.472000
-0.750000 0.050200 -0.223600 -0.168000 -0.552000 -0.808000
-0.700000 0.050200 -0.225700 0.368000 -0.368000 -0.848000
-0.750000 0.100400 -0.218500 0.200000 0.232000 -0.944000
-0.700000 0.100400 -0.234000 0.272000 0.000000 -0.960000
-0.750000 0.150600 -0.191500 0.256000 0.656000 -0.704000
-0.700000 0.150600 -0.210500 0.296000 0.424000 -0.848000
-0.750000 0.157000 -0.182900 0.280000 0.720000 -0.624000
-0.700000 0.190400 -0.182900 0.432000 0.560000 -0.696000
-0.750000 0.186400 -0.121900 0.504000 0.648000 -0.560000
-0.700000 0.200800 -0.171600 0.480000 0.608000 -0.616000
-0.734900 0.200800 -0.121900 0.552000 0.608000 -0.552000
-0.700000 0.229200 -0.121900 0.528000 0.656000 -0.528000
-0.750000 0.200800 -0.104400 0.480000 0.680000 -0.544000
-0.700000 0.251000 -0.093200 0.552000 0.600000 -0.568000
-0.750000 0.228900 -0.060900 0.576000 0.696000 -0.416000
-0.725300 0.251000 -0.060900 0.696000 0.648000 -0.288000
-0.750000 0.219200 0.000000 0.672000 0.728000 0.080000
-0.721000 0.251000 0.000000 0.784000 0.608000 -0.040000
-0.750000 0.222200 0.060900 0.704000 0.696000 -0.080000
-0.727500 0.251000 0.060900 0.792000 0.584000 -0.112000
-0.750000 0.233400 0.121900 0.720000 0.680000 -0.080000
-0.736800 0.251000 0.121900 0.752000 0.632000 0.144000
-0.727500 0.251000 0.060900 0.792000 0.584000 -0.112000
-0.700000 0.297800 0.121900 0.728000 0.680000 -0.032000
-0.700000 0.290800 0.060900 0.800000 0.576000 -0.104000
-0.696500 0.301200 0.121900 0.712000 0.672000 0.168000
-0.692400 0.301200 0.060900 0.752000 0.648000 -0.056000
-0.653800 0.351500 0.121900 0.656000 0.616000 0.424000
-0.663900 0.351500 0.060900 0.768000 0.624000 0.096000
-0.650000 0.355500 0.121900 0.632000 0.632000 0.432000
-0.650000 0.370100 0.060900 0.776000 0.624000 0.048000
-0.600000 0.382600 0.121900 0.272000 0.776000 0.560000
-0.612200 0.401700 0.060900 0.488000 0.832000 0.224000
-0.600000 0.401700 0.085900 0.096000 0.928000 0.336000
-0.600000 0.407100 0.060900 0.120000 0.968000 0.184000
-0.584600 0.401700 0.060900 -0.416000 0.872000 0.248000
-0.600000 0.410900 0.000000 0.104000 0.992000 -0.032000
-0.568400 0.401700 0.000000 -0.472000 0.832000 -0.264000
-0.600000 0.401700 -0.057700 0.168000 0.920000 -0.344000
-0.600000 0.410900 0.000000 0.104000 0.992000 -0.032000
-0.616700 0.401700 0.000000 0.496000 0.864000 -0.032000
-0.600000 0.407100 0.060900 0.120000 0.968000 0.184000
-0.612200 0.401700 0.060900 0.488000 0.832000 0.224000
-0.616700 0.401700 0.000000 0.496000 0.864000 -0.032000
-0.650000 0.370100 0.060900 0.776000 0.624000 0.048000
-0.650000 0.368200 0.000000 0.792000 0.584000 -0.144000
-0.663900 0.351500 0.060900 0.768000 0.624000 0.096000
-0.660900 0.351500 0.000000 0.832000 0.512000 -0.176000
-0.692400 0.301200 0.060900 0.752000 0.648000 -0.056000
-0.685300 0.301200 0.000000 0.832000 0.536000 -0.104000
-0.700000 0.290800 0.060900 0.800000 0.576000 -0.104000
-0.700000 0.279600 0.000000 0.792000 0.600000 -0.048000
-0.727500 0.251000 0.060900 0.792000 0.584000 -0.112000
-0.721000 0.251000 0.000000 0.784000 0.608000 -0.040000
-0.700000 0.279600 0.000000 0.792000 0.600000 -0.048000
-0.725300 0.251000 -0.060900 0.696000 0.648000 -0.288000
-0.700000 0.278700 -0.060900 0.648000 0.584000 -0.472000
-0.700000 0.251000 -0.093200 0.552000 0.600000 -0.568000
-0.680100 0.301200 -0.060900 0.752000 0.544000 -0.368000
-0.673000 0.251000 -0.121900 0.568000 0.576000 -0.584000
-0.650000 0.301200 -0.100800 0.528000 0.504000 -0.672000
-0.650000 0.278000 -0.121900 0.448000 0.624000 -0.624000
-0.608400 0.301200 -0.121900 0.448000 0.488000 -0.744000
-0.650000 0.251000 -0.154700 0.488000 0.640000 -0.584000
-0.600000 0.301200 -0.128700 0.472000 0.520000 -0.704000
-0.608400 0.251000 -0.182900 0.328000 0.488000 -0.800000
-0.600000 0.256700 -0.182900 0.328000 0.496000 -0.792000
-0.600000 0.251000 -0.187000 0.320000 0.456000 -0.816000
-0.608400 0.251000 -0.182900 0.328000 0.488000 -0.800000
-0.600000 0.200800 -0.209200 0.248000 0.288000 -0.920000
-0.650000 0.227800 -0.182900 0.368000 0.576000 -0.720000
-0.650000 0.200800 -0.204000 0.272000 0.408000 -0.864000
-0.687200 0.200800 -0.182900 0.432000 0.544000 -0.712000
-0.650000 0.150600 -0.219600 0.200000 0.280000 -0.928000
-0.700000 0.190400 -0.182900 0.432000 0.560000 -0.696000
-0.700000 0.150600 -0.210500 0.296000 0.424000 -0.848000
-0.650000 0.150600 -0.219600 0.200000 0.280000 -0.928000
-0.700000 0.100400 -0.234000 0.272000 0.000000 -0.960000
-0.650000 0.100400 -0.241400 0.232000 0.064000 -0.968000
-0.700000 0.050200 -0.225700 0.368000 -0.368000 -0.848000
-0.650000 0.067400 -0.243900 0.208000 0.056000 -0.968000
-0.653800 0.050200 -0.243900 0.232000 0.032000 -0.968000
-0.650000 0.050200 -0.244900 0.216000 0.040000 -0.968000
-0.653800 0.000000 -0.243900 0.576000 -0.112000 -0.808000
-0.650000 0.000000 -0.248500 0.680000 -0.160000 -0.712000
-0.650000 -0.016900 -0.243900 0.704000 -0.184000 -0.672000
-0.600000 0.000000 -0.284600 0.512000 0.112000 -0.840000
-0.637200 -0.050200 -0.243900 0.840000 -0.080000 -0.528000
-0.600000 -0.050200 -0.286000 0.712000 0.144000 -0.680000
-0.600000 0.000000 -0.284600 0.512000 0.112000 -0.840000
-0.587300 -0.050200 -0.304800 0.688000 0.056000 -0.712000
-0.578400 0.000000 -0.304800 0.536000 0.480000 -0.688000
-0.578400 0.000000 -0.304800 0.536000 0.480000 -0.688000
-0.750000 0.062100 0.182900 -0.416000 -0.632000 0.648000
-0.750000 0.062100 0.182900 -0.416000 -0.632000 0.648000
-0.750000 0.050900 0.121900 0.096000 -0.792000 0.600000
-0.762700 0.050200 0.182900 -0.512000 -0.672000 0.520000
-0.751700 0.050200 0.121900 -0.392000 -0.816000 0.416000
-0.800000 0.035400 0.182900 -0.432000 -0.808000 0.384000
-0.800000 0.028400 0.121900 -0.376000 -0.808000 0.432000
-0.846600 0.000000 0.182900 -0.736000 -0.616000 0.264000
-0.829700 0.000000 0.121900 -0.704000 -0.616000 0.344000
-0.850000 -0.004200 0.182900 -0.720000 -0.616000 0.288000
-0.850000 -0.029600 0.121900 -0.840000 -0.432000 0.312000
-0.880500 -0.050200 0.182900 -0.744000 -0.528000 0.384000
-0.857500 -0.050200 0.121900 -0.848000 -0.448000 0.272000
-0.900000 -0.076800 0.182900 -0.504000 -0.624000 0.592000
-0.892500 -0.100400 0.121900 -0.688000 -0.680000 0.240000
-0.900000 -0.100400 0.145900 -0.608000 -0.728000 0.304000
-0.900000 -0.076800 0.182900 -0.504000 -0.624000 0.592000
-0.934300 -0.100400 0.182900 -0.392000 -0.752000 0.520000
-0.934300 -0.100400 0.182900 -0.392000 -0.752000 0.520000
-0.800000 0.150600 0.181400 0.520000 0.336000 0.776000
-0.800000 0.150600 0.181400 0.520000 0.336000 0.776000
-0.850000 0.150600 0.126500 0.640000 0.560000 0.512000
-0.800000 0.190400 0.121900 0.624000 0.752000 0.168000
-0.850000 0.151600 0.121900 0.680000 0.720000 0.080000
-0.800000 0.182100 0.060900 0.560000 0.824000 -0.024000
-0.850000 0.154700 0.060900 0.576000 0.800000 0.096000
-0.800000 0.184600 0.000000 0.464000 0.872000 0.120000
-0.850000 0.161100 0.000000 0.480000 0.856000 0.160000
-0.800000 0.194300 -0.060900 0.416000 0.824000 -0.360000
-0.850000 0.171300 -0.060900 0.448000 0.864000 -0.216000
-0.800000 0.164900 -0.121900 0.312000 0.800000 -0.504000
-0.850000 0.155600 -0.121900 0.432000 0.856000 -0.272000
-0.800000 0.150600 -0.164100 0.256000 0.800000 -0.528000
-0.850000 0.150600 -0.140900 0.432000 0.840000 -0.304000
-0.800000 0.138600 -0.182900 0.232000 0.712000 -0.656000
-0.850000 0.127100 -0.182900 0.192000 0.744000 -0.632000
-0.800000 0.100400 -0.216300 0.104000 0.416000 -0.896000
-0.850000 0.100400 -0.218500 0.128000 0.592000 -0.784000
-0.800000 0.050200 -0.233400 -0.176000 0.416000 -0.880000
-0.850000 0.050200 -0.237100 -0.376000 0.576000 -0.720000
-0.800000 0.000000 -0.217200 -0.656000 -0.464000 -0.584000
-0.850000 0.042400 -0.243900 -0.408000 0.528000 -0.736000
-0.819700 0.000000 -0.243900 -0.752000 -0.192000 -0.616000
-0.850000 0.000000 -0.279000 -0.536000 0.488000 -0.680000
-0.835300 -0.050200 -0.243900 -0.840000 -0.416000 -0.336000
-0.850000 -0.050200 -0.276700 -0.784000 -0.280000 -0.544000
-0.850000 -0.077200 -0.243900 -0.824000 -0.432000 -0.344000
-0.835300 -0.050200 -0.243900 -0.840000 -0.416000 -0.336000
-0.850000 -0.086900 -0.182900 -0.848000 -0.512000 -0.048000
-0.822900 -0.050200 -0.182900 -0.792000 -0.592000 -0.088000
-0.850000 -0.088400 -0.121900 -0.808000 -0.584000 0.016000
-0.818400 -0.050200 -0.121900 -0.760000 -0.640000 0.016000
-0.850000 -0.079400 -0.060900 -0.768000 -0.616000 0.120000
-0.823600 -0.050200 -0.060900 -0.736000 -0.664000 0.112000
-0.850000 -0.068700 0.000000 -0.752000 -0.640000 0.136000
-0.832800 -0.050200 0.000000 -0.728000 -0.656000 0.144000
-0.850000 -0.056700 0.060900 -0.720000 -0.664000 0.176000
-0.843600 -0.050200 0.060900 -0.704000 -0.672000 0.184000
-0.850000 -0.050200 0.089500 -0.768000 -0.592000 0.216000
-0.850000 -0.050200 0.089500 -0.768000 -0.592000 0.216000
-0.850000 0.150600 0.126500 0.640000 0.560000 0.512000
-0.850000 0.150600 0.126500 0.640000 0.560000 0.512000
-0.850000 0.151600 0.121900 0.680000 0.720000 0.080000
-0.850900 0.150600 0.121900 0.704000 0.704000 0.080000
-0.850000 0.154700 0.060900 0.576000 0.800000 0.096000
-0.855400 0.150600 0.060900 0.680000 0.720000 0.072000
-0.850000 0.161100 0.000000 0.480000 0.856000 0.160000
-0.867700 0.150600 0.000000 0.552000 0.816000 0.152000
-0.850000 0.171300 -0.060900 0.448000 0.864000 -0.216000
-0.888500 0.150600 -0.060900 0.504000 0.856000 -0.040000
-0.850000 0.155600 -0.121900 0.432000 0.856000 -0.272000
-0.859300 0.150600 -0.121900 0.456000 0.840000 -0.272000
-0.850000 0.150600 -0.140900 0.432000 0.840000 -0.304000
-0.850000 0.150600 -0.140900 0.432000 0.840000 -0.304000
-0.891700 0.100400 0.182900 0.576000 0.688000 0.424000
-0.891700 0.100400 0.182900 0.576000 0.688000 0.424000
-0.900000 0.100400 0.165200 0.584000 0.744000 0.296000
-0.900000 0.093100 0.182900 0.568000 0.672000 0.464000
-0.911800 0.100400 0.121900 0.528000 0.800000 0.264000
-0.940200 0.050200 0.182900 0.624000 0.528000 0.568000
-0.950000 0.069700 0.121900 0.360000 0.840000 0.384000
-0.950000 0.050200 0.169400 0.600000 0.560000 0.560000
-1.000000 0.053600 0.121900 0.280000 0.872000 0.392000
-1.000000 0.050200 0.131000 0.336000 0.784000 0.512000
-0.950000 0.050200 0.169400 0.600000 0.560000 0.560000
-1.000000 0.004900 0.182900 0.336000 0.520000 0.776000
-0.950000 0.037400 0.182900 0.520000 0.504000 0.680000
-0.950000 0.050200 0.169400 0.600000 0.560000 0.560000
-0.940200 0.050200 0.182900 0.624000 0.528000 0.568000
-0.940200 0.050200 0.182900 0.624000 0.528000 0.568000
-0.900000 0.100400 0.165200 0.584000 0.744000 0.296000
-0.900000 0.100400 0.165200 0.584000 0.744000 0.296000
-0.900000 0.107300 0.121900 0.512000 0.832000 0.184000
-0.911800 0.100400 0.121900 0.528000 0.800000 0.264000
-0.900000 0.118900 0.060900 0.472000 0.856000 0.184000
-0.936800 0.100400 0.060900 0.456000 0.872000 0.168000
-0.900000 0.131100 0.000000 0.480000 0.848000 0.192000
-0.950000 0.100400 0.012800 0.496000 0.848000 0.136000
-0.950000 0.102000 0.000000 0.472000 0.864000 0.120000
-0.952900 0.100400 0.000000 0.504000 0.848000 0.120000
-0.950000 0.106300 -0.060900 0.576000 0.776000 -0.240000
-0.957800 0.100400 -0.060900 0.544000 0.824000 -0.120000
-0.950000 0.100400 -0.078300 0.560000 0.768000 -0.304000
-1.000000 0.074600 -0.060900 0.496000 0.816000 -0.280000
-0.950000 0.086300 -0.121900 0.544000 0.784000 -0.280000
-1.000000 0.056100 -0.121900 0.488000 0.808000 -0.304000
-0.950000 0.069900 -0.182900 0.544000 0.736000 -0.392000
-1.000000 0.050200 -0.141200 0.512000 0.792000 -0.320000
-0.978000 0.050200 -0.182900 0.512000 0.768000 -0.376000
-1.000000 0.035800 -0.182900 0.504000 0.768000 -0.376000
-0.950000 0.050200 -0.224500 0.472000 0.712000 -0.504000
-1.000000 0.004200 -0.243900 0.464000 0.680000 -0.552000
-0.950000 0.037500 -0.243900 0.432000 0.688000 -0.576000
-1.000000 0.000000 -0.249700 0.512000 0.464000 -0.720000
-0.950000 0.000000 -0.291100 0.424000 0.536000 -0.720000
-1.000000 -0.050200 -0.288900 0.520000 0.432000 -0.728000
-0.950000 -0.016600 -0.304800 0.448000 0.520000 -0.720000
-0.981700 -0.050200 -0.304800 0.528000 0.432000 -0.720000
-0.950000 -0.050200 -0.338500 0.440000 0.400000 -0.800000
-1.000000 -0.073100 -0.304800 0.536000 0.424000 -0.720000
-0.950000 -0.100400 -0.351000 0.336000 0.064000 -0.936000
-1.000000 -0.100400 -0.325200 0.488000 0.344000 -0.792000
-0.950000 -0.150600 -0.345500 -0.032000 0.064000 -0.992000
-1.000000 -0.150600 -0.335800 0.136000 0.136000 -0.976000
-0.950000 -0.200800 -0.357000 -0.272000 -0.104000 -0.952000
-1.000000 -0.200800 -0.338800 0.136000 -0.384000 -0.904000
-0.950000 -0.251000 -0.328200 -0.712000 -0.568000 -0.392000
-1.000000 -0.251000 -0.355700 -0.816000 -0.248000 -0.504000
-1.000000 -0.251000 -0.355700 -0.816000 -0.248000 -0.504000
-1.000000 -0.012000 0.182900 0.384000 -0.248000 0.880000
-1.000000 -0.012000 0.182900 0.384000 -0.248000 0.880000
-1.000000 -0.050200 0.168100 0.416000 -0.344000 0.832000
-0.975800 -0.050200 0.182900 0.464000 -0.232000 0.848000
-1.000000 -0.100400 0.134700 0.432000 -0.528000 0.720000
-0.959000 -0.100400 0.182900 0.616000 -0.584000 0.520000
-0.959000 -0.100400 0.182900 0.616000 -0.584000 0.520000
--0.900000 0.200800 0.074800 0.296000 0.712000 0.624000
--0.900000 0.200800 0.074800 0.296000 0.712000 0.624000
--0.900000 0.210300 0.060900 0.312000 0.744000 0.576000
--0.879600 0.200800 0.060900 0.352000 0.712000 0.600000
--0.900000 0.240500 0.000000 0.368000 0.840000 0.376000
--0.850000 0.200800 0.035600 0.384000 0.744000 0.536000
--0.850000 0.219100 0.000000 0.368000 0.824000 0.424000
--0.811000 0.200800 0.000000 0.408000 0.816000 0.392000
--0.811000 0.200800 0.000000 0.408000 0.816000 0.392000
--0.900000 -0.127600 0.121900 -0.608000 -0.704000 0.344000
--0.900000 -0.127600 0.121900 -0.608000 -0.704000 0.344000
--0.900000 -0.149700 0.060900 -0.696000 -0.664000 0.232000
--0.878400 -0.150600 0.121900 -0.736000 -0.560000 0.368000
--0.899200 -0.150600 0.060900 -0.816000 -0.504000 0.256000
--0.851500 -0.200800 0.121900 -0.832000 -0.360000 0.408000
--0.869300 -0.200800 0.060900 -0.824000 -0.496000 0.248000
--0.899200 -0.150600 0.060900 -0.816000 -0.504000 0.256000
--0.882700 -0.200800 0.000000 -0.840000 -0.496000 0.192000
--0.900000 -0.150600 0.057700 -0.744000 -0.616000 0.232000
--0.900000 -0.169600 0.000000 -0.800000 -0.552000 0.224000
--0.882700 -0.200800 0.000000 -0.840000 -0.496000 0.192000
--0.900000 -0.192500 -0.060900 -0.856000 -0.488000 0.144000
--0.895700 -0.200800 -0.060900 -0.864000 -0.480000 0.136000
--0.900000 -0.200800 -0.096200 -0.752000 -0.632000 0.128000
--0.860100 -0.251000 -0.060900 -0.808000 -0.568000 0.112000
--0.900000 -0.204500 -0.121900 -0.688000 -0.712000 0.104000
--0.866600 -0.251000 -0.121900 -0.808000 -0.576000 0.072000
--0.900000 -0.206900 -0.182900 -0.648000 -0.752000 0.056000
--0.864200 -0.251000 -0.182900 -0.800000 -0.592000 0.000000
--0.900000 -0.212400 -0.243900 -0.672000 -0.712000 0.176000
--0.869200 -0.251000 -0.243900 -0.768000 -0.600000 0.200000
--0.900000 -0.236500 -0.304800 -0.680000 -0.456000 -0.560000
--0.891700 -0.251000 -0.304800 -0.808000 -0.512000 -0.264000
--0.891700 -0.251000 -0.304800 -0.808000 -0.512000 -0.264000
--0.850000 0.184100 0.060900 0.376000 0.632000 0.664000
--0.850000 0.184100 0.060900 0.376000 0.632000 0.664000
--0.850000 0.150600 0.098600 0.360000 0.600000 0.704000
--0.800000 0.153700 0.060900 0.432000 0.632000 0.632000
--0.800000 0.150600 0.064100 0.424000 0.560000 0.704000
--0.796300 0.150600 0.060900 0.512000 0.584000 0.616000
--0.800000 0.153700 0.060900 0.432000 0.632000 0.632000
--0.750000 0.150600 0.014500 0.472000 0.624000 0.608000
--0.800000 0.195100 0.000000 0.456000 0.768000 0.432000
--0.750000 0.162200 0.000000 0.464000 0.672000 0.560000
--0.750000 0.150600 0.014500 0.472000 0.624000 0.608000
--0.734000 0.150600 0.000000 0.496000 0.640000 0.576000
--0.750000 0.162200 0.000000 0.464000 0.672000 0.560000
--0.700000 0.150600 -0.043600 0.552000 0.712000 0.424000
--0.750000 0.191300 -0.060900 0.496000 0.856000 0.072000
--0.700000 0.159000 -0.060900 0.600000 0.776000 0.184000
--0.750000 0.174400 -0.121900 0.448000 0.824000 -0.336000
--0.700000 0.150600 -0.089800 0.592000 0.744000 -0.280000
--0.715000 0.150600 -0.121900 0.512000 0.744000 -0.408000
--0.700000 0.140000 -0.121900 0.536000 0.728000 -0.408000
--0.750000 0.150600 -0.159200 0.432000 0.664000 -0.600000
--0.700000 0.100400 -0.182100 0.536000 0.592000 -0.592000
--0.750000 0.132600 -0.182900 0.408000 0.656000 -0.624000
--0.700900 0.100400 -0.182900 0.440000 0.608000 -0.648000
--0.750000 0.100400 -0.222000 0.432000 0.576000 -0.680000
--0.700000 0.099700 -0.182900 0.504000 0.560000 -0.640000
--0.750000 0.077000 -0.243900 0.368000 0.552000 -0.744000
--0.700000 0.050200 -0.235800 0.504000 0.432000 -0.744000
--0.711800 0.050200 -0.243900 0.416000 0.432000 -0.792000
--0.700000 0.037400 -0.243900 0.440000 0.392000 -0.800000
--0.750000 0.050200 -0.267100 0.368000 0.432000 -0.816000
--0.700000 0.000000 -0.262900 0.392000 0.288000 -0.864000
--0.750000 0.000000 -0.285200 0.328000 0.160000 -0.920000
--0.750000 0.000000 -0.285200 0.328000 0.160000 -0.920000
--0.750000 0.012900 0.121900 0.496000 0.384000 0.768000
--0.750000 0.012900 0.121900 0.496000 0.384000 0.768000
--0.781300 0.050200 0.121900 0.536000 0.400000 0.736000
--0.750000 0.050200 0.097600 0.464000 0.408000 0.776000
--0.750000 0.050200 0.097600 0.464000 0.408000 0.776000
--0.800000 -0.280700 0.121900 -0.736000 -0.528000 0.408000
--0.800000 -0.280700 0.121900 -0.736000 -0.528000 0.408000
--0.783300 -0.301200 0.121900 -0.688000 -0.568000 0.440000
--0.800000 -0.301200 0.085900 -0.768000 -0.544000 0.304000
--0.800000 -0.301200 0.085900 -0.768000 -0.544000 0.304000
--0.750000 -0.342500 0.121900 -0.536000 -0.592000 0.592000
--0.750000 -0.342500 0.121900 -0.536000 -0.592000 0.592000
--0.739400 -0.351500 0.121900 -0.528000 -0.576000 0.616000
--0.750000 -0.351500 0.110100 -0.600000 -0.584000 0.536000
--0.750000 -0.351500 0.110100 -0.600000 -0.584000 0.536000
--0.701000 -0.451900 0.060900 -0.792000 -0.480000 0.344000
--0.701000 -0.451900 0.060900 -0.792000 -0.480000 0.344000
--0.700000 -0.451900 0.063700 -0.672000 -0.600000 0.424000
--0.700000 -0.453200 0.060900 -0.560000 -0.720000 0.392000
--0.700000 -0.453200 0.060900 -0.560000 -0.720000 0.392000
--0.650000 -0.141800 0.121900 0.432000 0.328000 0.832000
--0.650000 -0.141800 0.121900 0.432000 0.328000 0.832000
--0.677900 -0.100400 0.121900 0.528000 0.328000 0.776000
--0.650000 -0.100400 0.096100 0.592000 0.288000 0.744000
--0.650000 -0.100400 0.096100 0.592000 0.288000 0.744000
--0.600000 -0.122400 0.060900 0.616000 0.400000 0.664000
--0.600000 -0.122400 0.060900 0.616000 0.400000 0.664000
--0.575700 -0.150600 0.060900 0.384000 0.664000 0.632000
--0.600000 -0.150600 0.080700 0.576000 0.424000 0.688000
--0.600000 -0.150600 0.080700 0.576000 0.424000 0.688000
--0.559300 -0.200800 0.121900 0.160000 0.720000 0.672000
--0.559300 -0.200800 0.121900 0.160000 0.720000 0.672000
--0.550000 -0.200800 0.118700 0.032000 0.784000 0.608000
--0.550000 -0.202900 0.121900 0.032000 0.728000 0.680000
--0.536800 -0.200800 0.121900 -0.104000 0.736000 0.664000
--0.536800 -0.200800 0.121900 -0.104000 0.736000 0.664000
--0.550000 -0.494000 0.121900 0.024000 -0.832000 0.536000
--0.550000 -0.494000 0.121900 0.024000 -0.832000 0.536000
--0.550000 -0.502100 0.104800 0.104000 -0.840000 0.520000
--0.500000 -0.486900 0.121900 0.296000 -0.800000 0.504000
--0.500000 -0.502100 0.088800 0.616000 -0.688000 0.376000
--0.450000 -0.453600 0.121900 0.584000 -0.744000 0.288000
--0.489100 -0.502100 0.060900 0.704000 -0.616000 0.328000
--0.450000 -0.471900 0.060900 0.592000 -0.752000 0.272000
--0.450000 -0.471900 0.060900 0.592000 -0.752000 0.272000
--0.550000 -0.502100 0.104800 0.104000 -0.840000 0.520000
--0.550000 -0.502100 0.104800 0.104000 -0.840000 0.520000
--0.550000 -0.532000 0.060900 0.080000 -0.776000 0.624000
--0.500000 -0.502100 0.088800 0.616000 -0.688000 0.376000
--0.500000 -0.517700 0.060900 0.632000 -0.632000 0.440000
--0.489100 -0.502100 0.060900 0.704000 -0.616000 0.328000
--0.489100 -0.502100 0.060900 0.704000 -0.616000 0.328000
--0.405500 -0.100400 0.060900 -0.712000 0.456000 0.520000
--0.405500 -0.100400 0.060900 -0.712000 0.456000 0.520000
--0.400000 -0.090100 0.060900 -0.696000 0.400000 0.584000
--0.400000 -0.100400 0.069600 -0.688000 0.456000 0.552000
--0.367400 -0.050200 0.060900 -0.696000 0.408000 0.584000
--0.351400 -0.100400 0.121900 -0.608000 0.368000 0.696000
--0.350000 -0.050200 0.083200 -0.416000 0.344000 0.832000
--0.350000 -0.097900 0.121900 -0.560000 0.424000 0.704000
--0.300000 -0.050200 0.104800 -0.312000 0.512000 0.792000
--0.300000 -0.066800 0.121900 -0.280000 0.584000 0.752000
--0.255700 -0.050200 0.121900 -0.192000 0.512000 0.832000
--0.255700 -0.050200 0.121900 -0.192000 0.512000 0.832000
--0.350000 -0.001900 0.060900 -0.656000 0.280000 0.688000
--0.350000 -0.001900 0.060900 -0.656000 0.280000 0.688000
--0.350000 -0.050200 0.083200 -0.416000 0.344000 0.832000
--0.367400 -0.050200 0.060900 -0.696000 0.408000 0.584000
--0.367400 -0.050200 0.060900 -0.696000 0.408000 0.584000
--0.351400 -0.100400 0.121900 -0.608000 0.368000 0.696000
--0.351400 -0.100400 0.121900 -0.608000 0.368000 0.696000
--0.400000 -0.140400 0.121900 -0.448000 0.624000 0.632000
--0.400000 -0.100400 0.069600 -0.688000 0.456000 0.552000
--0.400000 -0.100400 0.069600 -0.688000 0.456000 0.552000
--0.400000 -0.401700 0.111300 0.640000 -0.680000 0.336000
--0.400000 -0.401700 0.111300 0.640000 -0.680000 0.336000
--0.400000 -0.423000 0.060900 0.616000 -0.696000 0.360000
--0.350000 -0.401700 0.073400 0.632000 -0.688000 0.344000
--0.350000 -0.406300 0.060900 0.592000 -0.728000 0.320000
--0.344500 -0.401700 0.060900 0.632000 -0.688000 0.328000
--0.344500 -0.401700 0.060900 0.632000 -0.688000 0.328000
--0.348200 0.000000 0.060900 -0.376000 0.448000 0.800000
--0.348200 0.000000 0.060900 -0.376000 0.448000 0.800000
--0.300000 0.027200 0.060900 -0.160000 0.552000 0.808000
--0.300000 0.000000 0.088800 -0.240000 0.432000 0.864000
--0.250000 0.033500 0.060900 0.056000 0.528000 0.840000
--0.250000 0.000000 0.079500 -0.144000 0.552000 0.816000
--0.200000 0.020500 0.060900 0.664000 0.440000 0.600000
--0.200000 0.000000 0.081400 0.696000 0.336000 0.624000
--0.190300 0.000000 0.060900 0.816000 0.200000 0.536000
--0.200000 -0.050200 0.072600 0.688000 0.360000 0.624000
--0.193200 -0.050200 0.060900 0.808000 0.008000 0.584000
--0.200000 -0.100400 0.076800 0.784000 -0.136000 0.600000
--0.190200 -0.100400 0.060900 0.752000 -0.248000 0.600000
--0.200000 -0.121800 0.060900 0.728000 -0.328000 0.592000
--0.200000 -0.121800 0.060900 0.728000 -0.328000 0.592000
--0.250000 0.000000 0.079500 -0.144000 0.552000 0.816000
--0.250000 0.000000 0.079500 -0.144000 0.552000 0.816000
--0.200000 0.000000 0.081400 0.696000 0.336000 0.624000
--0.250000 -0.048000 0.121900 0.272000 0.640000 0.704000
--0.200000 -0.050200 0.072600 0.688000 0.360000 0.624000
--0.247100 -0.050200 0.121900 0.488000 0.512000 0.696000
--0.200000 -0.100400 0.076800 0.784000 -0.136000 0.600000
--0.230200 -0.100400 0.121900 0.776000 -0.176000 0.600000
--0.230200 -0.100400 0.121900 0.776000 -0.176000 0.600000
-0.550000 0.351500 0.078000 -0.616000 0.672000 0.392000
-0.550000 0.351500 0.078000 -0.616000 0.672000 0.392000
-0.540600 0.351500 0.060900 -0.584000 0.632000 0.496000
-0.550000 0.359900 0.060900 -0.592000 0.640000 0.480000
-0.500000 0.351500 0.029100 -0.680000 0.048000 0.728000
-0.550000 0.388900 0.000000 -0.392000 0.856000 0.320000
-0.500000 0.369100 0.000000 -0.184000 0.800000 0.552000
-0.500000 0.351500 0.029100 -0.680000 0.048000 0.728000
-0.458200 0.351500 0.000000 -0.280000 0.520000 0.800000
-0.458200 0.351500 0.000000 -0.280000 0.520000 0.800000
-0.550000 0.246100 0.121900 -0.904000 -0.224000 0.352000
-0.550000 0.246100 0.121900 -0.904000 -0.224000 0.352000
-0.550000 0.200800 0.086900 -0.880000 -0.256000 0.392000
-0.548800 0.251000 0.121900 -0.912000 -0.176000 0.360000
-0.538800 0.200800 0.060900 -0.824000 -0.216000 0.520000
-0.533200 0.251000 0.060900 -0.856000 0.032000 0.512000
-0.500000 0.200800 0.008600 -0.576000 -0.176000 0.792000
-0.500800 0.251000 0.000000 -0.792000 -0.016000 0.608000
-0.500000 0.245700 0.000000 -0.568000 0.120000 0.808000
-0.500000 0.251000 -0.000900 -0.496000 0.112000 0.856000
-0.488800 0.200800 0.000000 -0.512000 0.024000 0.856000
-0.450000 0.251000 -0.039600 -0.400000 -0.080000 0.904000
-0.450000 0.200800 -0.035500 -0.536000 -0.264000 0.792000
-0.400000 0.251000 -0.058700 -0.328000 -0.176000 0.920000
-0.416500 0.200800 -0.060900 -0.560000 -0.352000 0.744000
-0.400000 0.242400 -0.060900 -0.352000 -0.192000 0.904000
-0.400000 0.200800 -0.077800 -0.600000 -0.432000 0.664000
-0.395100 0.251000 -0.060900 -0.344000 -0.184000 0.912000
-0.366500 0.200800 -0.121900 -0.760000 -0.624000 0.168000
-0.350000 0.251000 -0.088400 -0.448000 -0.320000 0.824000
-0.350000 0.218900 -0.121900 -0.504000 -0.816000 0.264000
-0.300000 0.251000 -0.114600 -0.168000 -0.536000 0.824000
-0.300000 0.236900 -0.121900 -0.304000 -0.688000 0.640000
-0.271900 0.251000 -0.121900 -0.240000 -0.760000 0.592000
-0.300000 0.251000 -0.156100 -0.368000 -0.808000 -0.448000
-0.300000 0.236900 -0.121900 -0.304000 -0.688000 0.640000
-0.321900 0.251000 -0.182900 -0.240000 -0.296000 -0.920000
-0.350000 0.218900 -0.121900 -0.504000 -0.816000 0.264000
-0.350000 0.236900 -0.182900 -0.272000 -0.424000 -0.856000
-0.366500 0.200800 -0.121900 -0.760000 -0.624000 0.168000
-0.380800 0.200800 -0.182900 -0.440000 -0.264000 -0.856000
-0.400000 0.152400 -0.121900 -0.688000 -0.712000 -0.048000
-0.400000 0.155900 -0.182900 -0.216000 -0.144000 -0.960000
-0.380800 0.200800 -0.182900 -0.440000 -0.264000 -0.856000
-0.400000 0.200800 -0.189400 -0.152000 -0.072000 -0.984000
-0.350000 0.236900 -0.182900 -0.272000 -0.424000 -0.856000
-0.400000 0.251000 -0.186400 -0.152000 0.040000 -0.984000
-0.350000 0.251000 -0.187300 -0.168000 -0.184000 -0.960000
-0.400000 0.301200 -0.184200 -0.016000 -0.016000 -0.992000
-0.350000 0.301200 -0.184400 -0.056000 0.000000 -0.992000
-0.400000 0.351500 -0.194500 0.000000 0.072000 -0.992000
-0.350000 0.351500 -0.192800 0.000000 0.056000 -0.992000
-0.400000 0.377300 -0.182900 0.016000 0.320000 -0.944000
-0.350000 0.377400 -0.182900 0.000000 0.280000 -0.952000
-0.400000 0.401700 -0.171200 0.088000 0.472000 -0.872000
-0.350000 0.401700 -0.174600 0.056000 0.440000 -0.888000
-0.400000 0.432800 -0.121900 0.160000 0.904000 -0.384000
-0.350000 0.445000 -0.121900 0.208000 0.960000 -0.152000
-0.400000 0.419800 -0.060900 0.080000 0.848000 0.520000
-0.350000 0.424300 -0.060900 0.120000 0.824000 0.544000
-0.400000 0.401700 -0.034800 -0.040000 0.584000 0.808000
-0.350000 0.401700 -0.031000 0.032000 0.488000 0.864000
-0.400000 0.351500 -0.018700 -0.136000 -0.208000 0.960000
-0.350000 0.351500 -0.021800 0.032000 -0.048000 0.992000
-0.350000 0.401700 -0.031000 0.032000 0.488000 0.864000
-0.300000 0.351500 -0.009100 -0.016000 -0.144000 0.984000
-0.300000 0.401700 -0.022200 0.096000 0.472000 0.864000
-0.350000 0.401700 -0.031000 0.032000 0.488000 0.864000
-0.300000 0.430700 -0.060900 0.128000 0.808000 0.568000
-0.350000 0.424300 -0.060900 0.120000 0.824000 0.544000
-0.300000 0.451900 -0.106900 0.184000 0.864000 0.456000
-0.350000 0.445000 -0.121900 0.208000 0.960000 -0.152000
-0.323400 0.451900 -0.121900 0.248000 0.944000 -0.200000
-0.350000 0.401700 -0.174600 0.056000 0.440000 -0.888000
-0.300000 0.451900 -0.131100 0.200000 0.712000 -0.664000
-0.300000 0.401700 -0.174800 0.040000 0.368000 -0.920000
-0.350000 0.401700 -0.174600 0.056000 0.440000 -0.888000
-0.300000 0.379400 -0.182900 -0.016000 0.272000 -0.960000
-0.350000 0.377400 -0.182900 0.000000 0.280000 -0.952000
-0.300000 0.351500 -0.193900 -0.008000 0.064000 -0.992000
-0.350000 0.351500 -0.192800 0.000000 0.056000 -0.992000
-0.300000 0.301200 -0.184400 -0.064000 -0.072000 -0.992000
-0.350000 0.301200 -0.184400 -0.056000 0.000000 -0.992000
-0.300000 0.284000 -0.182900 -0.168000 -0.184000 -0.960000
-0.350000 0.251000 -0.187300 -0.168000 -0.184000 -0.960000
-0.321900 0.251000 -0.182900 -0.240000 -0.296000 -0.920000
-0.350000 0.236900 -0.182900 -0.272000 -0.424000 -0.856000
-0.350000 0.236900 -0.182900 -0.272000 -0.424000 -0.856000
-0.550000 0.246100 0.121900 -0.904000 -0.224000 0.352000
-0.550000 0.246100 0.121900 -0.904000 -0.224000 0.352000
-0.567500 0.200800 0.121900 -0.784000 -0.344000 0.504000
-0.550000 0.200800 0.086900 -0.880000 -0.256000 0.392000
-0.550000 0.200800 0.086900 -0.880000 -0.256000 0.392000
-0.600000 0.100400 0.071800 -0.648000 -0.592000 0.472000
-0.600000 0.100400 0.071800 -0.648000 -0.592000 0.472000
-0.600000 0.093600 0.060900 -0.624000 -0.616000 0.464000
-0.593200 0.100400 0.060900 -0.640000 -0.584000 0.496000
-0.600000 0.053300 0.000000 -0.472000 -0.712000 0.512000
-0.553100 0.100400 0.000000 -0.664000 -0.576000 0.464000
-0.600000 0.050200 -0.005300 -0.440000 -0.752000 0.480000
-0.550000 0.100400 -0.005700 -0.672000 -0.576000 0.448000
-0.550000 0.050200 -0.037800 -0.320000 -0.688000 0.640000
-0.504600 0.100400 -0.060900 -0.704000 -0.248000 0.656000
-0.500000 0.050200 -0.057700 -0.560000 0.128000 0.816000
-0.500000 0.067400 -0.060900 -0.592000 0.120000 0.792000
-0.495100 0.050200 -0.060900 -0.456000 0.136000 0.872000
-0.500000 0.100400 -0.067100 -0.632000 -0.296000 0.704000
-0.450000 0.050200 -0.077000 -0.360000 0.120000 0.920000
-0.450000 0.100400 -0.090700 -0.384000 -0.320000 0.856000
-0.400000 0.050200 -0.114800 -0.552000 0.256000 0.784000
-0.415000 0.100400 -0.121900 -0.640000 0.192000 0.736000
-0.400000 0.072600 -0.121900 -0.632000 0.256000 0.720000
-0.400000 0.100400 -0.150800 -0.768000 0.376000 0.512000
-0.393200 0.050200 -0.121900 -0.648000 0.352000 0.664000
-0.381500 0.100400 -0.182900 -0.896000 0.440000 -0.008000
-0.357200 0.050200 -0.182900 -0.736000 0.640000 0.184000
-0.400000 0.100400 -0.207800 -0.424000 0.688000 -0.576000
-0.351400 0.050200 -0.243900 -0.480000 0.768000 -0.416000
-0.400000 0.083700 -0.243900 -0.328000 0.768000 -0.536000
-0.400000 0.050200 -0.294000 -0.352000 0.672000 -0.640000
-0.351400 0.050200 -0.243900 -0.480000 0.768000 -0.416000
-0.400000 0.041200 -0.304800 -0.352000 0.672000 -0.648000
-0.350000 0.049300 -0.243900 -0.512000 0.784000 -0.320000
-0.350000 0.024300 -0.304800 -0.456000 0.784000 -0.408000
-0.300000 0.032100 -0.243900 -0.576000 0.680000 -0.432000
-0.301400 0.000000 -0.304800 -0.584000 0.656000 -0.464000
-0.300000 0.000000 -0.302400 -0.544000 0.608000 -0.568000
-0.300000 -0.003100 -0.304800 -0.376000 0.424000 -0.816000
-0.301400 0.000000 -0.304800 -0.584000 0.656000 -0.464000
-0.300000 -0.050200 -0.319900 -0.536000 0.224000 -0.808000
-0.350000 0.000000 -0.339100 -0.264000 0.552000 -0.784000
-0.342100 -0.050200 -0.365800 -0.640000 -0.104000 -0.752000
-0.350000 -0.037900 -0.365800 -0.440000 0.432000 -0.776000
-0.350000 -0.050200 -0.374000 -0.496000 -0.096000 -0.856000
-0.383500 -0.050200 -0.365800 0.200000 -0.288000 -0.928000
-0.350000 -0.059800 -0.365800 -0.280000 -0.560000 -0.768000
-0.400000 -0.050200 -0.360800 0.184000 -0.432000 -0.872000
-0.350000 -0.100400 -0.331300 -0.432000 -0.520000 -0.728000
-0.400000 -0.100400 -0.340000 -0.040000 -0.360000 -0.928000
-0.350000 -0.127600 -0.304800 0.032000 -0.600000 -0.792000
-0.400000 -0.150600 -0.318400 -0.432000 -0.416000 -0.792000
-0.380400 -0.150600 -0.304800 -0.424000 -0.456000 -0.776000
-0.400000 -0.168700 -0.304800 -0.504000 -0.464000 -0.720000
-0.350000 -0.150600 -0.283600 -0.064000 -0.424000 -0.896000
-0.400000 -0.200800 -0.276700 0.448000 -0.472000 -0.752000
-0.350000 -0.200800 -0.271400 0.216000 0.224000 -0.944000
-0.400000 -0.249400 -0.243900 0.760000 -0.472000 -0.424000
-0.350000 -0.228300 -0.304800 0.616000 0.528000 -0.576000
-0.399000 -0.251000 -0.243900 0.912000 -0.008000 -0.392000
-0.366700 -0.251000 -0.304800 0.704000 0.488000 -0.496000
-0.350000 -0.228300 -0.304800 0.616000 0.528000 -0.576000
-0.350000 -0.251000 -0.329500 0.536000 0.472000 -0.688000
-0.320800 -0.200800 -0.304800 0.496000 0.328000 -0.800000
-0.300000 -0.251000 -0.347800 0.304000 0.384000 -0.864000
-0.300000 -0.200800 -0.324200 0.480000 0.248000 -0.832000
-0.320800 -0.200800 -0.304800 0.496000 0.328000 -0.800000
-0.300000 -0.150600 -0.312600 0.312000 -0.200000 -0.920000
-0.313400 -0.150600 -0.304800 0.400000 -0.360000 -0.840000
-0.300000 -0.100400 -0.310000 -0.248000 0.072000 -0.960000
-0.350000 -0.127600 -0.304800 0.032000 -0.600000 -0.792000
-0.350000 -0.100400 -0.331300 -0.432000 -0.520000 -0.728000
-0.300000 -0.100400 -0.310000 -0.248000 0.072000 -0.960000
-0.350000 -0.059800 -0.365800 -0.280000 -0.560000 -0.768000
-0.300000 -0.050200 -0.319900 -0.536000 0.224000 -0.808000
-0.342100 -0.050200 -0.365800 -0.640000 -0.104000 -0.752000
-0.350000 -0.059800 -0.365800 -0.280000 -0.560000 -0.768000
-0.350000 -0.050200 -0.374000 -0.496000 -0.096000 -0.856000
-0.350000 -0.050200 -0.374000 -0.496000 -0.096000 -0.856000
-0.650000 0.080100 0.121900 -0.576000 -0.640000 0.496000
-0.650000 0.080100 0.121900 -0.576000 -0.640000 0.496000
-0.692100 0.050200 0.121900 -0.432000 -0.784000 0.424000
-0.650000 0.050200 0.073400 -0.576000 -0.624000 0.512000
-0.700000 0.046100 0.121900 -0.152000 -0.904000 0.376000
-0.650000 0.041800 0.060900 -0.568000 -0.648000 0.504000
-0.700000 0.026800 0.060900 -0.288000 -0.896000 0.328000
-0.650000 0.013100 0.000000 -0.448000 -0.792000 0.392000
-0.700000 0.012000 0.000000 -0.032000 -0.960000 0.272000
-0.650000 0.000000 -0.040500 0.104000 -0.944000 0.296000
-0.700000 0.001400 -0.060900 0.088000 -0.968000 0.192000
-0.686800 0.000000 -0.060900 0.208000 -0.960000 0.144000
-0.700000 0.000400 -0.121900 0.224000 -0.968000 0.032000
-0.698200 0.000000 -0.121900 0.296000 -0.952000 0.032000
-0.700000 0.009000 -0.182900 0.456000 -0.744000 -0.472000
-0.687300 0.000000 -0.182900 0.648000 -0.600000 -0.456000
-0.700000 0.050200 -0.225700 0.368000 -0.368000 -0.848000
-0.653800 0.000000 -0.243900 0.576000 -0.112000 -0.808000
-0.653800 0.050200 -0.243900 0.232000 0.032000 -0.968000
-0.653800 0.050200 -0.243900 0.232000 0.032000 -0.968000
-0.750000 0.233400 0.121900 0.720000 0.680000 -0.080000
-0.750000 0.233400 0.121900 0.720000 0.680000 -0.080000
-0.788900 0.200800 0.121900 0.632000 0.744000 0.184000
-0.750000 0.222200 0.060900 0.704000 0.696000 -0.080000
-0.772600 0.200800 0.060900 0.648000 0.736000 -0.136000
-0.750000 0.219200 0.000000 0.672000 0.728000 0.080000
-0.770200 0.200800 0.000000 0.616000 0.776000 0.056000
-0.750000 0.228900 -0.060900 0.576000 0.696000 -0.416000
-0.787300 0.200800 -0.060900 0.520000 0.824000 -0.184000
-0.750000 0.200800 -0.104400 0.480000 0.680000 -0.544000
-0.800000 0.194300 -0.060900 0.416000 0.824000 -0.360000
-0.750000 0.186400 -0.121900 0.504000 0.648000 -0.560000
-0.800000 0.164900 -0.121900 0.312000 0.800000 -0.504000
-0.750000 0.157000 -0.182900 0.280000 0.720000 -0.624000
-0.800000 0.150600 -0.164100 0.256000 0.800000 -0.528000
-0.769100 0.150600 -0.182900 0.248000 0.704000 -0.648000
-0.800000 0.138600 -0.182900 0.232000 0.712000 -0.656000
-0.750000 0.150600 -0.191500 0.256000 0.656000 -0.704000
-0.800000 0.100400 -0.216300 0.104000 0.416000 -0.896000
-0.750000 0.100400 -0.218500 0.200000 0.232000 -0.944000
-0.800000 0.050200 -0.233400 -0.176000 0.416000 -0.880000
-0.750000 0.050200 -0.223600 -0.168000 -0.552000 -0.808000
-0.800000 0.000000 -0.217200 -0.656000 -0.464000 -0.584000
-0.750000 0.019900 -0.182900 -0.176000 -0.792000 -0.576000
-0.776700 0.000000 -0.182900 -0.576000 -0.728000 -0.360000
-0.750000 0.004300 -0.121900 -0.408000 -0.880000 -0.216000
-0.756600 0.000000 -0.121900 -0.496000 -0.856000 -0.080000
-0.750000 0.001600 -0.060900 -0.416000 -0.904000 -0.016000
-0.753100 0.000000 -0.060900 -0.472000 -0.872000 0.000000
-0.750000 0.013300 0.000000 -0.240000 -0.936000 0.240000
-0.772100 0.000000 0.000000 -0.504000 -0.832000 0.224000
-0.750000 0.031700 0.060900 -0.136000 -0.928000 0.336000
-0.798100 0.000000 0.060900 -0.504000 -0.792000 0.312000
-0.772100 0.000000 0.000000 -0.504000 -0.832000 0.224000
-0.800000 -0.001000 0.060900 -0.584000 -0.776000 0.216000
-0.800000 -0.015400 0.000000 -0.560000 -0.800000 0.184000
-0.843600 -0.050200 0.060900 -0.704000 -0.672000 0.184000
-0.832800 -0.050200 0.000000 -0.728000 -0.656000 0.144000
-0.800000 -0.015400 0.000000 -0.560000 -0.800000 0.184000
-0.823600 -0.050200 -0.060900 -0.736000 -0.664000 0.112000
-0.800000 -0.024700 -0.060900 -0.616000 -0.776000 0.088000
-0.818400 -0.050200 -0.121900 -0.760000 -0.640000 0.016000
-0.800000 -0.027900 -0.121900 -0.664000 -0.736000 -0.072000
-0.822900 -0.050200 -0.182900 -0.792000 -0.592000 -0.088000
-0.800000 -0.017800 -0.182900 -0.616000 -0.680000 -0.376000
-0.835300 -0.050200 -0.243900 -0.840000 -0.416000 -0.336000
-0.800000 0.000000 -0.217200 -0.656000 -0.464000 -0.584000
-0.819700 0.000000 -0.243900 -0.752000 -0.192000 -0.616000
-0.819700 0.000000 -0.243900 -0.752000 -0.192000 -0.616000
-0.788900 0.200800 0.121900 0.632000 0.744000 0.184000
-0.788900 0.200800 0.121900 0.632000 0.744000 0.184000
-0.800000 0.190400 0.121900 0.624000 0.752000 0.168000
-0.772600 0.200800 0.060900 0.648000 0.736000 -0.136000
-0.800000 0.182100 0.060900 0.560000 0.824000 -0.024000
-0.770200 0.200800 0.000000 0.616000 0.776000 0.056000
-0.800000 0.184600 0.000000 0.464000 0.872000 0.120000
-0.787300 0.200800 -0.060900 0.520000 0.824000 -0.184000
-0.800000 0.194300 -0.060900 0.416000 0.824000 -0.360000
-0.800000 0.194300 -0.060900 0.416000 0.824000 -0.360000
-0.800000 0.028400 0.121900 -0.376000 -0.808000 0.432000
-0.800000 0.028400 0.121900 -0.376000 -0.808000 0.432000
-0.829700 0.000000 0.121900 -0.704000 -0.616000 0.344000
-0.800000 0.000000 0.064400 -0.576000 -0.736000 0.344000
-0.800000 0.000000 0.064400 -0.576000 -0.736000 0.344000
-0.911800 0.100400 0.121900 0.528000 0.800000 0.264000
-0.911800 0.100400 0.121900 0.528000 0.800000 0.264000
-0.950000 0.069700 0.121900 0.360000 0.840000 0.384000
-0.936800 0.100400 0.060900 0.456000 0.872000 0.168000
-0.950000 0.091300 0.060900 0.600000 0.776000 0.176000
-0.950000 0.100400 0.012800 0.496000 0.848000 0.136000
-1.000000 0.068400 0.060900 0.464000 0.872000 0.104000
-0.952900 0.100400 0.000000 0.504000 0.848000 0.120000
-1.000000 0.075000 0.000000 0.472000 0.872000 0.072000
-0.957800 0.100400 -0.060900 0.544000 0.824000 -0.120000
-1.000000 0.074600 -0.060900 0.496000 0.816000 -0.280000
-1.000000 0.074600 -0.060900 0.496000 0.816000 -0.280000
-0.950000 -0.142500 0.121900 -0.608000 -0.672000 0.392000
-0.950000 -0.142500 0.121900 -0.608000 -0.672000 0.392000
-0.950000 -0.150600 0.094900 -0.648000 -0.696000 0.272000
-0.900000 -0.107100 0.121900 -0.584000 -0.768000 0.240000
-0.942000 -0.150600 0.060900 -0.704000 -0.672000 0.200000
-0.900000 -0.117100 0.060900 -0.656000 -0.736000 0.136000
-0.931300 -0.150600 0.000000 -0.640000 -0.744000 0.144000
-0.900000 -0.125700 0.000000 -0.664000 -0.728000 0.136000
-0.917800 -0.150600 -0.060900 -0.640000 -0.736000 0.184000
-0.900000 -0.135500 -0.060900 -0.672000 -0.712000 0.168000
-0.902600 -0.150600 -0.121900 -0.664000 -0.736000 0.096000
-0.900000 -0.148200 -0.121900 -0.664000 -0.728000 0.088000
-0.900000 -0.150600 -0.145400 -0.696000 -0.704000 0.104000
-0.902600 -0.150600 -0.121900 -0.664000 -0.736000 0.096000
-0.900000 -0.155900 -0.182900 -0.744000 -0.648000 0.112000
-0.950000 -0.200400 -0.121900 -0.720000 -0.672000 0.136000
-0.939100 -0.200800 -0.182900 -0.712000 -0.672000 0.160000
-0.950000 -0.200800 -0.124000 -0.680000 -0.712000 0.160000
-0.950000 -0.211700 -0.182900 -0.704000 -0.680000 0.176000
-0.939100 -0.200800 -0.182900 -0.712000 -0.672000 0.160000
-0.950000 -0.224400 -0.243900 -0.688000 -0.640000 0.328000
-0.928800 -0.200800 -0.243900 -0.736000 -0.616000 0.240000
-0.939100 -0.200800 -0.182900 -0.712000 -0.672000 0.160000
-0.900000 -0.163000 -0.243900 -0.816000 -0.552000 0.128000
-0.900000 -0.155900 -0.182900 -0.744000 -0.648000 0.112000
-0.890800 -0.150600 -0.243900 -0.848000 -0.512000 0.064000
-0.895100 -0.150600 -0.182900 -0.744000 -0.648000 0.104000
-0.900000 -0.155900 -0.182900 -0.744000 -0.648000 0.112000
-0.900000 -0.150600 -0.145400 -0.696000 -0.704000 0.104000
-0.900000 -0.150600 -0.145400 -0.696000 -0.704000 0.104000
-0.950000 -0.150600 0.094900 -0.648000 -0.696000 0.272000
-0.950000 -0.150600 0.094900 -0.648000 -0.696000 0.272000
-0.950000 -0.158100 0.060900 -0.608000 -0.760000 0.200000
-0.942000 -0.150600 0.060900 -0.704000 -0.672000 0.200000
-0.950000 -0.168100 0.000000 -0.640000 -0.744000 0.184000
-0.931300 -0.150600 0.000000 -0.640000 -0.744000 0.144000
-0.950000 -0.183700 -0.060900 -0.632000 -0.728000 0.232000
-0.917800 -0.150600 -0.060900 -0.640000 -0.736000 0.184000
-0.950000 -0.200400 -0.121900 -0.720000 -0.672000 0.136000
-0.902600 -0.150600 -0.121900 -0.664000 -0.736000 0.096000
-0.902600 -0.150600 -0.121900 -0.664000 -0.736000 0.096000
-1.000000 0.053600 0.121900 0.280000 0.872000 0.392000
-1.000000 0.053600 0.121900 0.280000 0.872000 0.392000
-0.950000 0.069700 0.121900 0.360000 0.840000 0.384000
-1.000000 0.068400 0.060900 0.464000 0.872000 0.104000
-0.950000 0.091300 0.060900 0.600000 0.776000 0.176000
-0.950000 0.091300 0.060900 0.600000 0.776000 0.176000
--1.000000 -0.090800 0.060900 -0.320000 -0.912000 0.248000
--1.000000 -0.090800 0.060900 -0.320000 -0.912000 0.248000
--0.973400 -0.100400 0.060900 -0.344000 -0.904000 0.240000
--1.000000 -0.100400 0.014600 -0.304000 -0.920000 0.208000
--1.000000 -0.100400 0.014600 -0.304000 -0.920000 0.208000
--0.950000 0.258900 0.000000 0.296000 0.848000 0.432000
--0.950000 0.258900 0.000000 0.296000 0.848000 0.432000
--0.928700 0.251000 0.000000 0.312000 0.848000 0.408000
--0.950000 0.251000 0.016800 0.288000 0.808000 0.504000
--0.950000 0.251000 0.016800 0.288000 0.808000 0.504000
--0.900000 -0.149700 0.060900 -0.696000 -0.664000 0.232000
--0.900000 -0.149700 0.060900 -0.696000 -0.664000 0.232000
--0.899200 -0.150600 0.060900 -0.816000 -0.504000 0.256000
--0.900000 -0.150600 0.057700 -0.744000 -0.616000 0.232000
--0.900000 -0.150600 0.057700 -0.744000 -0.616000 0.232000
--0.750000 0.106000 0.060900 0.496000 0.464000 0.728000
--0.750000 0.106000 0.060900 0.496000 0.464000 0.728000
--0.796300 0.150600 0.060900 0.512000 0.584000 0.616000
--0.750000 0.150600 0.014500 0.472000 0.624000 0.608000
--0.750000 0.150600 0.014500 0.472000 0.624000 0.608000
--0.750800 -0.401700 0.000000 -0.816000 -0.520000 0.208000
--0.750800 -0.401700 0.000000 -0.816000 -0.520000 0.208000
--0.750000 -0.401700 0.004100 -0.816000 -0.520000 0.232000
--0.750000 -0.403200 0.000000 -0.832000 -0.504000 0.216000
--0.750000 -0.403200 0.000000 -0.832000 -0.504000 0.216000
--0.700000 0.051600 0.060900 0.528000 0.416000 0.728000
--0.700000 0.051600 0.060900 0.528000 0.416000 0.728000
--0.744800 0.100400 0.060900 0.496000 0.456000 0.728000
--0.700000 0.100400 0.019100 0.504000 0.504000 0.688000
--0.700000 0.100400 0.019100 0.504000 0.504000 0.688000
--0.700000 0.121800 0.000000 0.536000 0.544000 0.632000
--0.700000 0.121800 0.000000 0.536000 0.544000 0.632000
--0.680200 0.100400 0.000000 0.600000 0.440000 0.656000
--0.700000 0.100400 0.019100 0.504000 0.504000 0.688000
--0.700000 0.100400 0.019100 0.504000 0.504000 0.688000
--0.650000 -0.023500 0.060900 0.576000 0.360000 0.720000
--0.650000 -0.023500 0.060900 0.576000 0.360000 0.720000
--0.666100 0.000000 0.060900 0.560000 0.376000 0.728000
--0.650000 0.000000 0.045200 0.576000 0.400000 0.704000
--0.650000 0.000000 0.045200 0.576000 0.400000 0.704000
--0.650000 0.063100 0.000000 0.592000 0.392000 0.696000
--0.650000 0.063100 0.000000 0.592000 0.392000 0.696000
--0.641800 0.050200 0.000000 0.616000 0.400000 0.664000
--0.650000 0.050200 0.008200 0.568000 0.384000 0.720000
--0.650000 0.050200 0.008200 0.568000 0.384000 0.720000
--0.650000 -0.495900 0.060900 -0.528000 -0.720000 0.432000
--0.650000 -0.495900 0.060900 -0.528000 -0.720000 0.432000
--0.640700 -0.502100 0.060900 -0.496000 -0.728000 0.456000
--0.650000 -0.502100 0.048300 -0.536000 -0.712000 0.440000
--0.650000 -0.502100 0.048300 -0.536000 -0.712000 0.440000
--0.633400 -0.552300 0.000000 -0.384000 -0.672000 0.624000
--0.633400 -0.552300 0.000000 -0.384000 -0.672000 0.624000
--0.600000 -0.552300 0.023900 -0.224000 -0.776000 0.584000
--0.600000 -0.566300 0.000000 -0.184000 -0.816000 0.544000
--0.550000 -0.552300 0.031000 0.256000 -0.800000 0.528000
--0.550000 -0.565800 0.000000 0.224000 -0.872000 0.424000
--0.509600 -0.552300 0.000000 0.320000 -0.840000 0.424000
--0.509600 -0.552300 0.000000 0.320000 -0.840000 0.424000
--0.600000 -0.018300 0.000000 0.712000 0.368000 0.584000
--0.600000 -0.018300 0.000000 0.712000 0.368000 0.584000
--0.584800 -0.050200 0.000000 0.744000 0.336000 0.568000
--0.600000 -0.050200 0.018400 0.648000 0.320000 0.688000
--0.600000 -0.050200 0.018400 0.648000 0.320000 0.688000
--0.472400 -0.150600 0.060900 -0.464000 0.768000 0.416000
--0.472400 -0.150600 0.060900 -0.464000 0.768000 0.416000
--0.500000 -0.166600 0.060900 -0.304000 0.832000 0.448000
--0.500000 -0.150600 0.019400 -0.216000 0.856000 0.464000
--0.500000 -0.150600 0.019400 -0.216000 0.856000 0.464000
--0.434300 -0.100400 0.000000 -0.648000 0.720000 0.208000
--0.434300 -0.100400 0.000000 -0.648000 0.720000 0.208000
--0.405500 -0.100400 0.060900 -0.712000 0.456000 0.520000
--0.400000 -0.050900 0.000000 -0.776000 0.576000 0.224000
--0.400000 -0.090100 0.060900 -0.696000 0.400000 0.584000
--0.399300 -0.050200 0.000000 -0.696000 0.680000 0.184000
--0.367400 -0.050200 0.060900 -0.696000 0.408000 0.584000
--0.367400 -0.050200 0.060900 -0.696000 0.408000 0.584000
--0.355100 0.050200 0.000000 -0.872000 0.216000 0.416000
--0.355100 0.050200 0.000000 -0.872000 0.216000 0.416000
--0.350000 0.077100 0.000000 -0.776000 0.256000 0.568000
--0.350000 0.050200 0.010900 -0.568000 0.448000 0.680000
--0.321000 0.100400 0.000000 -0.264000 0.416000 0.864000
--0.300000 0.050200 0.038600 -0.224000 0.544000 0.800000
--0.300000 0.100400 0.006400 -0.200000 0.408000 0.880000
--0.250000 0.050200 0.048300 0.000000 0.552000 0.832000
--0.250000 0.100400 0.002600 0.144000 0.496000 0.848000
--0.250000 0.100400 0.002600 0.144000 0.496000 0.848000
--0.350000 0.000000 0.059800 -0.688000 0.400000 0.592000
--0.350000 0.000000 0.059800 -0.688000 0.400000 0.592000
--0.350000 0.050200 0.010900 -0.568000 0.448000 0.680000
--0.373100 0.000000 0.000000 -0.880000 0.240000 0.392000
--0.355100 0.050200 0.000000 -0.872000 0.216000 0.416000
--0.377800 0.000000 -0.060900 -0.864000 0.424000 -0.248000
--0.358600 0.050200 -0.060900 -0.920000 0.168000 -0.328000
--0.372200 0.000000 -0.121900 -0.848000 0.480000 -0.200000
--0.350000 0.050200 -0.078800 -0.832000 0.272000 -0.472000
--0.350000 0.031200 -0.121900 -0.744000 0.552000 -0.352000
--0.335400 0.050200 -0.121900 -0.752000 0.472000 -0.456000
--0.350000 0.000000 -0.171400 -0.688000 0.416000 -0.584000
--0.301000 0.050200 -0.182900 -0.704000 0.472000 -0.512000
--0.340600 0.000000 -0.182900 -0.696000 0.480000 -0.520000
--0.350000 0.000000 -0.171400 -0.688000 0.416000 -0.584000
--0.350000 -0.016600 -0.182900 -0.688000 0.360000 -0.616000
--0.372200 0.000000 -0.121900 -0.848000 0.480000 -0.200000
--0.365500 -0.050200 -0.182900 -0.728000 0.384000 -0.560000
--0.399400 -0.050200 -0.121900 -0.760000 0.504000 -0.392000
--0.400000 -0.096400 -0.182900 -0.664000 0.552000 -0.496000
--0.400000 -0.050900 -0.121900 -0.736000 0.536000 -0.408000
--0.403600 -0.100400 -0.182900 -0.616000 0.592000 -0.512000
--0.434900 -0.100400 -0.121900 -0.608000 0.744000 -0.256000
--0.434900 -0.100400 -0.121900 -0.608000 0.744000 -0.256000
--0.350000 0.000000 0.059800 -0.688000 0.400000 0.592000
--0.350000 0.000000 0.059800 -0.688000 0.400000 0.592000
--0.350000 0.050200 0.010900 -0.568000 0.448000 0.680000
--0.348200 0.000000 0.060900 -0.376000 0.448000 0.800000
--0.300000 0.050200 0.038600 -0.224000 0.544000 0.800000
--0.300000 0.027200 0.060900 -0.160000 0.552000 0.808000
--0.250000 0.050200 0.048300 0.000000 0.552000 0.832000
--0.250000 0.033500 0.060900 0.056000 0.528000 0.840000
--0.200000 0.050200 0.037800 0.512000 0.448000 0.720000
--0.200000 0.020500 0.060900 0.664000 0.440000 0.600000
--0.200000 0.020500 0.060900 0.664000 0.440000 0.600000
--0.208400 0.401700 0.000000 -0.424000 0.248000 0.864000
--0.208400 0.401700 0.000000 -0.424000 0.248000 0.864000
--0.200000 0.408700 0.000000 -0.112000 0.496000 0.856000
--0.200000 0.401700 0.005100 -0.168000 0.288000 0.936000
--0.185900 0.401700 0.000000 0.264000 0.248000 0.928000
--0.200000 0.384800 0.000000 -0.112000 -0.232000 0.960000
--0.150000 0.401700 -0.011900 0.240000 0.256000 0.928000
--0.200000 0.351500 -0.009600 0.208000 -0.208000 0.952000
--0.150000 0.351500 -0.029900 0.096000 -0.168000 0.976000
--0.200000 0.301200 -0.022600 0.056000 -0.176000 0.976000
--0.150000 0.301200 -0.033800 0.040000 -0.024000 0.992000
--0.200000 0.251000 -0.048300 -0.120000 -0.296000 0.944000
--0.150000 0.251000 -0.027500 -0.136000 -0.104000 0.984000
--0.200000 0.206100 -0.060900 -0.448000 -0.184000 0.872000
--0.150000 0.200800 -0.027500 -0.320000 -0.168000 0.928000
--0.198000 0.200800 -0.060900 -0.464000 0.288000 0.832000
--0.150000 0.150600 -0.037800 0.256000 -0.016000 0.960000
--0.200000 0.199100 -0.060900 -0.320000 0.504000 0.792000
--0.200000 0.150600 -0.023100 -0.360000 0.472000 0.792000
--0.250000 0.177000 -0.060900 -0.096000 0.568000 0.808000
--0.250000 0.150600 -0.042200 0.008000 0.568000 0.816000
--0.277600 0.200800 -0.060900 0.584000 -0.072000 0.800000
--0.300000 0.150600 -0.036000 -0.360000 0.064000 0.920000
--0.300000 0.200800 -0.040500 0.440000 0.208000 0.864000
--0.346000 0.150600 -0.060900 -0.768000 -0.144000 0.616000
--0.350000 0.200800 -0.003200 -0.528000 -0.104000 0.832000
--0.350000 0.153200 -0.060900 -0.608000 -0.784000 0.016000
--0.368900 0.200800 -0.060900 -0.952000 0.040000 -0.280000
--0.350000 0.200800 -0.076700 -0.368000 -0.104000 -0.920000
--0.356100 0.251000 -0.060900 -0.936000 0.104000 -0.312000
--0.350000 0.251000 -0.067500 -0.624000 0.048000 -0.768000
--0.353500 0.301200 -0.060900 -0.872000 0.080000 -0.464000
--0.350000 0.301200 -0.064600 -0.624000 0.064000 -0.768000
--0.350000 0.329400 -0.060900 -0.960000 0.152000 -0.224000
--0.300000 0.301200 -0.089300 -0.344000 0.056000 -0.936000
--0.344500 0.351500 -0.060900 -0.776000 0.288000 0.552000
--0.300000 0.351500 -0.083400 -0.432000 0.176000 -0.880000
--0.307400 0.401700 -0.060900 -0.696000 0.688000 -0.152000
--0.300000 0.401700 -0.066400 -0.448000 0.440000 -0.768000
--0.300000 0.408800 -0.060900 -0.664000 0.712000 -0.184000
--0.250000 0.401700 -0.091800 -0.416000 0.456000 -0.776000
--0.250000 0.447500 -0.060900 -0.512000 0.744000 0.408000
--0.208300 0.401700 -0.121900 -0.432000 0.432000 -0.784000
--0.242600 0.451900 -0.060900 -0.440000 0.728000 0.512000
--0.200000 0.409200 -0.121900 -0.400000 0.464000 -0.776000
--0.200000 0.451900 -0.081300 -0.400000 0.504000 -0.752000
--0.152100 0.451900 -0.121900 -0.424000 0.536000 -0.720000
--0.200000 0.477600 -0.060900 -0.544000 0.808000 -0.208000
--0.150000 0.453400 -0.121900 -0.320000 0.624000 -0.704000
--0.150000 0.501300 -0.060900 -0.376000 0.880000 -0.280000
--0.100000 0.479800 -0.121900 -0.288000 0.584000 -0.752000
--0.146800 0.502100 -0.060900 -0.272000 0.960000 0.016000
--0.100000 0.502100 -0.081300 -0.184000 0.840000 -0.488000
--0.100000 0.517800 -0.060900 -0.120000 0.976000 0.136000
--0.050000 0.502100 -0.117100 -0.040000 0.912000 -0.392000
--0.050000 0.515300 -0.060900 0.432000 0.792000 0.408000
--0.033200 0.502100 -0.060900 0.616000 0.496000 0.600000
--0.050000 0.502100 -0.046900 0.400000 0.496000 0.760000
--0.023600 0.451900 -0.060900 0.376000 0.152000 0.904000
--0.050000 0.451900 -0.049700 0.432000 0.024000 0.896000
--0.005200 0.401700 -0.060900 0.264000 0.168000 0.944000
--0.050000 0.401700 -0.052300 0.176000 0.040000 0.976000
-0.000000 0.393800 -0.060900 0.224000 0.176000 0.952000
--0.050000 0.351500 -0.043600 0.248000 0.032000 0.960000
-0.000000 0.351500 -0.051600 0.280000 -0.248000 0.920000
--0.050000 0.301200 -0.044600 0.440000 -0.008000 0.896000
-0.000000 0.334500 -0.060900 0.312000 -0.368000 0.864000
--0.027600 0.301200 -0.060900 0.456000 -0.208000 0.856000
-0.000000 0.301200 -0.076500 0.296000 -0.272000 0.904000
--0.035000 0.251000 -0.060900 0.512000 -0.448000 0.728000
-0.000000 0.251000 -0.086600 0.344000 -0.360000 0.864000
--0.050000 0.236000 -0.060900 0.536000 -0.496000 0.672000
-0.000000 0.211400 -0.121900 0.496000 -0.712000 0.480000
--0.050000 0.200800 -0.090500 0.520000 -0.520000 0.672000
--0.012800 0.200800 -0.121900 0.688000 -0.616000 0.376000
--0.050000 0.170300 -0.121900 0.584000 -0.576000 0.560000
-0.000000 0.200800 -0.169000 0.576000 -0.744000 0.320000
--0.050000 0.150600 -0.159500 0.712000 -0.480000 0.504000
-0.000000 0.195100 -0.182900 0.504000 -0.656000 -0.544000
--0.033200 0.150600 -0.182900 0.832000 -0.552000 -0.016000
-0.000000 0.200800 -0.186400 0.272000 -0.456000 -0.840000
--0.050000 0.150600 -0.210200 0.840000 -0.208000 -0.496000
--0.050000 0.200800 -0.204500 0.304000 -0.328000 -0.888000
--0.077600 0.150600 -0.243900 0.320000 0.328000 -0.880000
--0.100000 0.200800 -0.221500 0.056000 0.392000 -0.912000
--0.100000 0.164100 -0.243900 -0.032000 0.432000 -0.896000
--0.150000 0.200800 -0.199200 -0.328000 0.272000 -0.896000
--0.126800 0.150600 -0.243900 -0.208000 0.496000 -0.832000
--0.150000 0.150600 -0.235500 -0.296000 0.536000 -0.784000
--0.150000 0.141700 -0.243900 -0.352000 0.528000 -0.768000
--0.200000 0.150600 -0.197300 -0.488000 0.464000 -0.728000
--0.198500 0.100400 -0.243900 -0.376000 0.480000 -0.784000
--0.200000 0.100400 -0.242800 -0.520000 0.512000 -0.672000
--0.200000 0.099300 -0.243900 -0.456000 0.488000 -0.736000
--0.249100 0.100400 -0.182900 -0.576000 0.496000 -0.640000
--0.250000 0.055800 -0.243900 -0.560000 0.648000 -0.504000
--0.250000 0.099600 -0.182900 -0.488000 0.616000 -0.608000
--0.256300 0.050200 -0.243900 -0.592000 0.624000 -0.488000
--0.300000 0.052000 -0.182900 -0.664000 0.464000 -0.568000
--0.300000 0.050200 -0.185100 -0.648000 0.560000 -0.504000
--0.256300 0.050200 -0.243900 -0.592000 0.624000 -0.488000
--0.300000 0.001800 -0.243900 -0.496000 0.680000 -0.520000
--0.250000 0.050200 -0.254100 -0.584000 0.656000 -0.464000
--0.300000 0.000000 -0.248500 -0.656000 0.560000 -0.488000
--0.250000 0.000000 -0.286200 -0.320000 0.712000 -0.616000
--0.300000 -0.050200 -0.270300 -0.824000 0.232000 -0.512000
--0.250000 -0.028200 -0.304800 -0.400000 0.416000 -0.808000
--0.266700 -0.050200 -0.304800 -0.504000 0.288000 -0.808000
--0.250000 -0.050200 -0.318700 -0.440000 0.320000 -0.832000
--0.288100 -0.100400 -0.304800 -0.408000 0.240000 -0.872000
--0.250000 -0.100400 -0.327300 -0.384000 0.152000 -0.904000
--0.300000 -0.118900 -0.304800 -0.376000 0.264000 -0.880000
--0.250000 -0.150600 -0.327500 -0.120000 0.152000 -0.976000
--0.300000 -0.150600 -0.319300 -0.256000 0.480000 -0.832000
--0.250000 -0.200800 -0.333200 0.168000 0.080000 -0.976000
--0.300000 -0.200800 -0.340600 0.016000 0.280000 -0.952000
--0.250000 -0.251000 -0.337900 0.384000 0.112000 -0.912000
--0.300000 -0.251000 -0.348000 0.192000 0.248000 -0.944000
--0.250000 -0.301200 -0.349000 0.296000 0.272000 -0.912000
--0.300000 -0.296900 -0.365800 0.296000 0.528000 -0.784000
--0.291400 -0.301200 -0.365800 0.272000 0.504000 -0.808000
--0.300000 -0.301200 -0.369600 0.320000 0.544000 -0.768000
--0.250000 -0.342900 -0.365800 0.504000 0.512000 -0.680000
--0.300000 -0.341100 -0.426800 -0.128000 0.536000 -0.832000
--0.250000 -0.351500 -0.379700 0.552000 0.712000 -0.416000
--0.273100 -0.351500 -0.426800 0.480000 0.752000 -0.440000
--0.250000 -0.368100 -0.426800 0.504000 0.792000 -0.336000
--0.250000 -0.351500 -0.379700 0.552000 0.712000 -0.416000
--0.200000 -0.393200 -0.426800 0.696000 0.632000 -0.328000
--0.241400 -0.351500 -0.365800 0.488000 0.640000 -0.576000
--0.200000 -0.365300 -0.365800 0.504000 0.768000 -0.376000
--0.200000 -0.351500 -0.343300 0.312000 0.640000 -0.696000
--0.241400 -0.351500 -0.365800 0.488000 0.640000 -0.576000
--0.200000 -0.301200 -0.313400 0.328000 0.152000 -0.928000
--0.250000 -0.342900 -0.365800 0.504000 0.512000 -0.680000
--0.250000 -0.301200 -0.349000 0.296000 0.272000 -0.912000
--0.291400 -0.301200 -0.365800 0.272000 0.504000 -0.808000
--0.291400 -0.301200 -0.365800 0.272000 0.504000 -0.808000
--0.200000 0.401700 0.005100 -0.168000 0.288000 0.936000
--0.200000 0.401700 0.005100 -0.168000 0.288000 0.936000
--0.200000 0.384800 0.000000 -0.112000 -0.232000 0.960000
--0.208400 0.401700 0.000000 -0.424000 0.248000 0.864000
--0.200000 0.351500 -0.009600 0.208000 -0.208000 0.952000
--0.250000 0.401700 -0.023000 -0.400000 -0.016000 0.912000
--0.250000 0.351500 -0.004200 0.040000 0.000000 0.992000
--0.300000 0.401700 -0.053800 -0.512000 0.520000 0.672000
--0.300000 0.351500 -0.024700 -0.384000 0.216000 0.896000
--0.307400 0.401700 -0.060900 -0.696000 0.688000 -0.152000
--0.344500 0.351500 -0.060900 -0.776000 0.288000 0.552000
--0.300000 0.351500 -0.024700 -0.384000 0.216000 0.896000
--0.350000 0.329400 -0.060900 -0.960000 0.152000 -0.224000
--0.300000 0.301200 -0.020200 -0.184000 0.032000 0.976000
--0.350000 0.301200 -0.051600 -0.832000 0.120000 0.528000
--0.300000 0.251000 -0.020200 0.208000 -0.160000 0.960000
--0.350000 0.251000 -0.040500 -0.808000 0.200000 0.544000
--0.300000 0.200800 -0.040500 0.440000 0.208000 0.864000
--0.350000 0.200800 -0.003200 -0.528000 -0.104000 0.832000
--0.350000 0.251000 -0.040500 -0.808000 0.200000 0.544000
--0.368900 0.200800 -0.060900 -0.952000 0.040000 -0.280000
--0.356100 0.251000 -0.060900 -0.936000 0.104000 -0.312000
--0.350000 0.251000 -0.040500 -0.808000 0.200000 0.544000
--0.353500 0.301200 -0.060900 -0.872000 0.080000 -0.464000
--0.350000 0.301200 -0.051600 -0.832000 0.120000 0.528000
--0.350000 0.329400 -0.060900 -0.960000 0.152000 -0.224000
--0.350000 0.329400 -0.060900 -0.960000 0.152000 -0.224000
--0.250000 -0.301200 0.006000 0.344000 -0.608000 0.704000
--0.250000 -0.301200 0.006000 0.344000 -0.608000 0.704000
--0.235900 -0.301200 0.000000 0.272000 -0.568000 0.768000
--0.250000 -0.307700 0.000000 0.288000 -0.576000 0.760000
--0.250000 -0.307700 0.000000 0.288000 -0.576000 0.760000
--0.169100 -0.301200 0.000000 -0.376000 -0.392000 0.832000
--0.169100 -0.301200 0.000000 -0.376000 -0.392000 0.832000
--0.150000 -0.301200 0.010200 -0.304000 -0.280000 0.904000
--0.150000 -0.346200 0.000000 -0.392000 -0.160000 0.904000
--0.100000 -0.301200 0.037800 -0.016000 -0.152000 0.984000
--0.100000 -0.344900 0.000000 0.072000 -0.528000 0.840000
--0.050000 -0.301200 0.029100 0.312000 -0.280000 0.904000
--0.050000 -0.329200 0.000000 0.264000 -0.624000 0.720000
--0.002200 -0.301200 0.000000 0.384000 -0.648000 0.648000
--0.050000 -0.351500 -0.027000 0.488000 -0.688000 0.528000
-0.000000 -0.301200 -0.001900 0.408000 -0.704000 0.568000
--0.029100 -0.351500 -0.060900 0.584000 -0.680000 0.424000
-0.000000 -0.326800 -0.060900 0.344000 -0.824000 0.432000
-0.000000 -0.351500 -0.112600 0.544000 -0.704000 0.448000
-0.032200 -0.301200 -0.060900 0.552000 -0.696000 0.448000
-0.006400 -0.351500 -0.121900 0.552000 -0.776000 0.288000
-0.050000 -0.301200 -0.085900 0.528000 -0.704000 0.464000
-0.050000 -0.321600 -0.121900 0.584000 -0.712000 0.376000
-0.074000 -0.301200 -0.121900 0.536000 -0.792000 0.264000
-0.050000 -0.327900 -0.182900 0.552000 -0.824000 0.048000
-0.088900 -0.301200 -0.182900 0.488000 -0.864000 0.072000
-0.050000 -0.327900 -0.243900 0.480000 -0.872000 0.000000
-0.091700 -0.301200 -0.243900 0.488000 -0.864000 -0.008000
-0.050000 -0.326800 -0.304800 0.424000 -0.880000 -0.184000
-0.085600 -0.301200 -0.304800 0.544000 -0.768000 -0.320000
-0.050000 -0.303000 -0.365800 0.400000 -0.792000 -0.448000
-0.052200 -0.301200 -0.365800 0.552000 -0.720000 -0.416000
-0.050000 -0.301200 -0.369000 0.376000 -0.768000 -0.512000
-0.100000 -0.263400 -0.365800 0.480000 -0.672000 -0.544000
-0.050000 -0.251000 -0.406500 0.232000 -0.312000 -0.912000
-0.100000 -0.251000 -0.380100 0.472000 -0.384000 -0.784000
-0.050000 -0.206300 -0.365800 -0.112000 0.608000 -0.776000
-0.100000 -0.224900 -0.365800 0.352000 0.456000 -0.808000
-0.050000 -0.200800 -0.360800 -0.016000 0.576000 -0.808000
-0.100000 -0.200800 -0.352600 0.240000 0.528000 -0.800000
-0.100000 -0.224900 -0.365800 0.352000 0.456000 -0.808000
-0.150000 -0.200800 -0.325200 0.160000 0.176000 -0.968000
-0.118000 -0.251000 -0.365800 0.536000 -0.224000 -0.808000
-0.150000 -0.251000 -0.336000 0.080000 -0.336000 -0.928000
-0.100000 -0.263400 -0.365800 0.480000 -0.672000 -0.544000
-0.150000 -0.287400 -0.304800 0.000000 -0.712000 -0.688000
-0.100000 -0.292600 -0.304800 0.432000 -0.840000 -0.304000
-0.150000 -0.287700 -0.243900 -0.208000 -0.968000 0.064000
-0.100000 -0.296900 -0.243900 0.408000 -0.912000 0.000000
-0.150000 -0.278000 -0.182900 -0.064000 -0.936000 0.328000
-0.100000 -0.295100 -0.182900 0.440000 -0.880000 0.144000
-0.150000 -0.253200 -0.121900 0.192000 -0.808000 0.552000
-0.100000 -0.284500 -0.121900 0.464000 -0.744000 0.472000
-0.150000 -0.251000 -0.118100 0.224000 -0.792000 0.560000
-0.100000 -0.256900 -0.060900 0.456000 -0.800000 0.368000
-0.110300 -0.251000 -0.060900 0.504000 -0.760000 0.392000
-0.100000 -0.251000 -0.044600 0.544000 -0.608000 0.568000
-0.130700 -0.200800 -0.060900 0.504000 0.008000 0.856000
-0.100000 -0.200800 -0.044900 0.416000 0.232000 0.872000
-0.100000 -0.170000 -0.060900 0.256000 0.296000 0.912000
-0.050000 -0.200800 -0.016400 0.232000 0.648000 0.720000
-0.076800 -0.150600 -0.060900 0.208000 0.432000 0.872000
-0.050000 -0.150600 -0.053500 0.160000 0.448000 0.872000
-0.050000 -0.140200 -0.060900 0.152000 0.504000 0.848000
-0.000000 -0.150600 -0.047300 0.168000 0.600000 0.768000
-0.000000 -0.136800 -0.060900 0.088000 0.520000 0.840000
--0.050000 -0.150600 -0.033100 0.152000 0.512000 0.840000
--0.050000 -0.119400 -0.060900 0.168000 0.528000 0.824000
--0.100000 -0.150600 -0.019000 0.512000 0.456000 0.720000
--0.100000 -0.105500 -0.060900 0.480000 0.464000 0.736000
--0.129500 -0.150600 0.000000 0.416000 0.264000 0.864000
--0.104300 -0.100400 -0.060900 0.528000 0.416000 0.728000
--0.150000 -0.104300 0.000000 0.496000 0.120000 0.848000
--0.150000 -0.100400 -0.001300 0.848000 0.032000 0.520000
--0.150600 -0.100400 0.000000 0.800000 0.040000 0.592000
--0.150000 -0.050200 -0.005700 0.768000 -0.024000 0.632000
--0.152800 -0.050200 0.000000 0.848000 0.032000 0.520000
--0.150000 0.000000 -0.001200 0.744000 0.064000 0.656000
--0.150800 0.000000 0.000000 0.744000 0.072000 0.656000
--0.150000 0.050200 -0.012600 0.624000 0.240000 0.728000
--0.163800 0.050200 0.000000 0.704000 0.216000 0.664000
--0.150000 0.100400 -0.027500 0.432000 0.296000 0.848000
--0.200000 0.089800 0.000000 0.216000 0.544000 0.800000
--0.200000 0.100400 -0.008800 0.176000 0.488000 0.848000
--0.238500 0.100400 0.000000 0.152000 0.496000 0.848000
--0.200000 0.150600 -0.023100 -0.360000 0.472000 0.792000
--0.250000 0.104200 0.000000 0.144000 0.480000 0.856000
--0.250000 0.150600 -0.042200 0.008000 0.568000 0.816000
--0.300000 0.112500 0.000000 -0.064000 0.472000 0.872000
--0.300000 0.150600 -0.036000 -0.360000 0.064000 0.920000
--0.300000 0.150600 -0.036000 -0.360000 0.064000 0.920000
--0.150000 -0.104300 0.000000 0.496000 0.120000 0.848000
--0.150000 -0.104300 0.000000 0.496000 0.120000 0.848000
--0.129500 -0.150600 0.000000 0.416000 0.264000 0.864000
--0.150000 -0.150600 0.010200 0.376000 0.208000 0.896000
--0.100000 -0.188700 0.000000 0.176000 0.408000 0.888000
--0.150000 -0.200800 0.013600 0.104000 0.200000 0.968000
--0.100000 -0.200800 0.005100 0.056000 0.344000 0.936000
--0.150000 -0.251000 0.002400 -0.056000 -0.176000 0.976000
--0.100000 -0.251000 0.029400 -0.128000 0.120000 0.976000
--0.150000 -0.301200 0.010200 -0.304000 -0.280000 0.904000
--0.100000 -0.301200 0.037800 -0.016000 -0.152000 0.984000
--0.100000 -0.251000 0.029400 -0.128000 0.120000 0.976000
--0.050000 -0.301200 0.029100 0.312000 -0.280000 0.904000
--0.050000 -0.251000 0.040700 0.136000 0.064000 0.984000
--0.002200 -0.301200 0.000000 0.384000 -0.648000 0.648000
-0.000000 -0.251000 0.031300 0.424000 -0.232000 0.872000
-0.000000 -0.299000 0.000000 0.440000 -0.464000 0.760000
-0.050000 -0.251000 0.003400 0.512000 0.320000 0.792000
-0.050000 -0.253500 0.000000 0.448000 -0.608000 0.648000
-0.054200 -0.251000 0.000000 0.552000 0.192000 0.800000
-0.050000 -0.286400 -0.060900 0.528000 -0.720000 0.440000
-0.100000 -0.251000 -0.044600 0.544000 -0.608000 0.568000
-0.100000 -0.256900 -0.060900 0.456000 -0.800000 0.368000
-0.050000 -0.286400 -0.060900 0.528000 -0.720000 0.440000
-0.100000 -0.284500 -0.121900 0.464000 -0.744000 0.472000
-0.050000 -0.301200 -0.085900 0.528000 -0.704000 0.464000
-0.074000 -0.301200 -0.121900 0.536000 -0.792000 0.264000
-0.100000 -0.284500 -0.121900 0.464000 -0.744000 0.472000
-0.088900 -0.301200 -0.182900 0.488000 -0.864000 0.072000
-0.100000 -0.295100 -0.182900 0.440000 -0.880000 0.144000
-0.091700 -0.301200 -0.243900 0.488000 -0.864000 -0.008000
-0.100000 -0.296900 -0.243900 0.408000 -0.912000 0.000000
-0.085600 -0.301200 -0.304800 0.544000 -0.768000 -0.320000
-0.100000 -0.292600 -0.304800 0.432000 -0.840000 -0.304000
-0.052200 -0.301200 -0.365800 0.552000 -0.720000 -0.416000
-0.100000 -0.263400 -0.365800 0.480000 -0.672000 -0.544000
-0.100000 -0.263400 -0.365800 0.480000 -0.672000 -0.544000
--0.100000 -0.200800 0.005100 0.056000 0.344000 0.936000
--0.100000 -0.200800 0.005100 0.056000 0.344000 0.936000
--0.050000 -0.200800 0.008600 0.032000 0.536000 0.840000
--0.100000 -0.188700 0.000000 0.176000 0.408000 0.888000
--0.050000 -0.190400 0.000000 0.096000 0.648000 0.744000
--0.100000 -0.150600 -0.019000 0.512000 0.456000 0.720000
--0.050000 -0.150600 -0.033100 0.152000 0.512000 0.840000
--0.050000 -0.190400 0.000000 0.096000 0.648000 0.744000
-0.000000 -0.150600 -0.047300 0.168000 0.600000 0.768000
-0.000000 -0.198800 0.000000 0.160000 0.688000 0.704000
-0.050000 -0.150600 -0.053500 0.160000 0.448000 0.872000
-0.006800 -0.200800 0.000000 0.232000 0.576000 0.776000
-0.050000 -0.200800 -0.016400 0.232000 0.648000 0.720000
-0.050000 -0.244100 0.000000 0.488000 0.320000 0.800000
-0.100000 -0.200800 -0.044900 0.416000 0.232000 0.872000
-0.054200 -0.251000 0.000000 0.552000 0.192000 0.800000
-0.100000 -0.251000 -0.044600 0.544000 -0.608000 0.568000
-0.100000 -0.251000 -0.044600 0.544000 -0.608000 0.568000
--0.100000 -0.200800 0.005100 0.056000 0.344000 0.936000
--0.100000 -0.200800 0.005100 0.056000 0.344000 0.936000
--0.100000 -0.251000 0.029400 -0.128000 0.120000 0.976000
--0.050000 -0.200800 0.008600 0.032000 0.536000 0.840000
--0.050000 -0.251000 0.040700 0.136000 0.064000 0.984000
-0.000000 -0.200800 0.002300 0.160000 0.560000 0.808000
-0.000000 -0.251000 0.031300 0.424000 -0.232000 0.872000
-0.006800 -0.200800 0.000000 0.232000 0.576000 0.776000
-0.050000 -0.251000 0.003400 0.512000 0.320000 0.792000
-0.050000 -0.244100 0.000000 0.488000 0.320000 0.800000
-0.054200 -0.251000 0.000000 0.552000 0.192000 0.800000
-0.054200 -0.251000 0.000000 0.552000 0.192000 0.800000
--0.050000 -0.190400 0.000000 0.096000 0.648000 0.744000
--0.050000 -0.190400 0.000000 0.096000 0.648000 0.744000
--0.050000 -0.200800 0.008600 0.032000 0.536000 0.840000
-0.000000 -0.198800 0.000000 0.160000 0.688000 0.704000
-0.000000 -0.200800 0.002300 0.160000 0.560000 0.808000
-0.006800 -0.200800 0.000000 0.232000 0.576000 0.776000
-0.006800 -0.200800 0.000000 0.232000 0.576000 0.776000
-0.500000 0.245700 0.000000 -0.568000 0.120000 0.808000
-0.500000 0.245700 0.000000 -0.568000 0.120000 0.808000
-0.500000 0.200800 0.008600 -0.576000 -0.176000 0.792000
-0.488800 0.200800 0.000000 -0.512000 0.024000 0.856000
-0.500000 0.181600 0.000000 -0.600000 -0.304000 0.728000
-0.500000 0.181600 0.000000 -0.600000 -0.304000 0.728000
-0.550000 0.174700 0.060900 -0.744000 -0.320000 0.576000
-0.550000 0.174700 0.060900 -0.744000 -0.320000 0.576000
-0.560700 0.150600 0.060900 -0.704000 -0.368000 0.592000
-0.550000 0.150600 0.048400 -0.632000 -0.416000 0.640000
-0.550000 0.150600 0.048400 -0.632000 -0.416000 0.640000
-0.641200 0.050200 0.060900 -0.600000 -0.608000 0.512000
-0.641200 0.050200 0.060900 -0.600000 -0.608000 0.512000
-0.600000 0.093600 0.060900 -0.624000 -0.616000 0.464000
-0.602900 0.050200 0.000000 -0.576000 -0.704000 0.400000
-0.600000 0.053300 0.000000 -0.472000 -0.712000 0.512000
-0.600000 0.050200 -0.005300 -0.440000 -0.752000 0.480000
-0.600000 0.050200 -0.005300 -0.440000 -0.752000 0.480000
--0.915700 -0.150600 0.000000 -0.696000 -0.672000 0.232000
--0.915700 -0.150600 0.000000 -0.696000 -0.672000 0.232000
--0.950000 -0.123700 0.000000 -0.488000 -0.840000 0.216000
--0.932400 -0.150600 -0.060900 -0.688000 -0.696000 0.176000
--0.950000 -0.136200 -0.060900 -0.528000 -0.832000 0.152000
--0.943100 -0.150600 -0.121900 -0.672000 -0.720000 0.120000
--0.950000 -0.144800 -0.121900 -0.536000 -0.832000 0.120000
--0.950000 -0.150600 -0.169000 -0.584000 -0.792000 0.136000
--0.943100 -0.150600 -0.121900 -0.672000 -0.720000 0.120000
--0.950000 -0.152700 -0.182900 -0.600000 -0.784000 0.144000
--0.903800 -0.200800 -0.121900 -0.696000 -0.704000 0.120000
--0.907400 -0.200800 -0.182900 -0.688000 -0.712000 0.072000
--0.950000 -0.152700 -0.182900 -0.600000 -0.784000 0.144000
--0.914100 -0.200800 -0.243900 -0.664000 -0.728000 0.128000
--0.950000 -0.161800 -0.243900 -0.584000 -0.784000 0.176000
--0.931500 -0.200800 -0.304800 -0.648000 -0.520000 -0.544000
--0.950000 -0.180000 -0.304800 -0.552000 -0.600000 -0.568000
--0.900000 -0.200800 -0.331500 -0.576000 -0.328000 -0.736000
--0.950000 -0.150600 -0.330800 -0.416000 -0.432000 -0.792000
--0.900000 -0.150600 -0.338300 -0.216000 -0.104000 -0.968000
--0.900000 -0.200800 -0.331500 -0.576000 -0.328000 -0.736000
--0.850000 -0.150600 -0.349400 0.072000 0.056000 -0.992000
--0.850000 -0.200800 -0.351200 -0.168000 0.112000 -0.976000
--0.800000 -0.150600 -0.340500 0.312000 0.288000 -0.896000
--0.800000 -0.200800 -0.355700 0.080000 0.256000 -0.960000
--0.750000 -0.150600 -0.317800 0.416000 0.384000 -0.816000
--0.750000 -0.200800 -0.348300 0.272000 0.384000 -0.872000
--0.731900 -0.150600 -0.304800 0.424000 0.400000 -0.808000
--0.700000 -0.200800 -0.326900 0.208000 0.528000 -0.816000
--0.700000 -0.175200 -0.304800 0.352000 0.528000 -0.768000
--0.651700 -0.200800 -0.304800 0.320000 0.544000 -0.768000
--0.700000 -0.150600 -0.284500 0.376000 0.392000 -0.832000
--0.650000 -0.200800 -0.303800 0.136000 0.680000 -0.712000
--0.650000 -0.150600 -0.267500 0.376000 0.464000 -0.792000
--0.650000 -0.150600 -0.267500 0.376000 0.464000 -0.792000
--0.895700 -0.200800 -0.060900 -0.864000 -0.480000 0.136000
--0.895700 -0.200800 -0.060900 -0.864000 -0.480000 0.136000
--0.882700 -0.200800 0.000000 -0.840000 -0.496000 0.192000
--0.860100 -0.251000 -0.060900 -0.808000 -0.568000 0.112000
--0.852600 -0.251000 0.000000 -0.800000 -0.568000 0.168000
--0.852600 -0.251000 0.000000 -0.800000 -0.568000 0.168000
--0.700000 -0.502100 -0.057900 -0.752000 -0.512000 0.400000
--0.700000 -0.502100 -0.057900 -0.752000 -0.512000 0.400000
--0.700000 -0.507800 -0.060900 -0.864000 -0.200000 0.448000
--0.701200 -0.502100 -0.060900 -0.816000 -0.416000 0.392000
--0.700000 -0.552300 -0.082500 -0.736000 -0.280000 0.608000
--0.723300 -0.502100 -0.121900 -0.896000 -0.224000 0.368000
--0.750000 -0.552300 -0.119400 0.072000 0.512000 0.848000
--0.750000 -0.549900 -0.121900 0.080000 0.648000 0.752000
--0.800000 -0.552300 -0.095900 0.424000 0.264000 0.864000
--0.800000 -0.539500 -0.121900 0.176000 0.680000 0.704000
--0.850000 -0.552300 -0.082300 -0.704000 -0.480000 0.504000
--0.850000 -0.519700 -0.121900 0.200000 0.624000 0.752000
--0.868200 -0.552300 -0.121900 -0.520000 -0.224000 0.816000
--0.850000 -0.502100 -0.144600 0.400000 0.776000 0.480000
--0.900000 -0.511500 -0.121900 -0.520000 -0.664000 0.528000
--0.878700 -0.502100 -0.121900 0.408000 0.368000 0.832000
--0.900000 -0.502100 -0.104000 -0.752000 0.000000 0.656000
--0.900000 -0.492700 -0.121900 -0.520000 0.712000 0.448000
--0.906100 -0.502100 -0.121900 -0.920000 0.072000 0.376000
--0.900000 -0.462200 -0.182900 0.320000 0.888000 0.304000
--0.925200 -0.502100 -0.182900 -0.976000 -0.008000 0.208000
--0.900000 -0.451900 -0.229200 0.512000 0.832000 0.168000
--0.929300 -0.502100 -0.243900 -0.992000 0.064000 -0.008000
--0.921000 -0.451900 -0.243900 -0.184000 0.968000 0.160000
--0.920600 -0.502100 -0.304800 -0.888000 -0.288000 -0.344000
--0.912200 -0.451900 -0.304800 -0.496000 0.720000 -0.464000
--0.900000 -0.502100 -0.352600 -0.672000 0.128000 -0.720000
--0.900000 -0.451900 -0.318500 0.104000 0.872000 -0.464000
--0.864000 -0.502100 -0.365800 -0.304000 0.480000 -0.816000
--0.891000 -0.451900 -0.304800 0.528000 0.824000 -0.192000
--0.850000 -0.496800 -0.365800 -0.176000 0.616000 -0.760000
--0.850000 -0.473200 -0.304800 0.272000 0.896000 -0.336000
--0.800000 -0.496400 -0.365800 -0.664000 0.416000 -0.608000
--0.800000 -0.473000 -0.304800 -0.736000 0.648000 -0.168000
--0.786000 -0.451900 -0.365800 -0.872000 0.080000 -0.472000
--0.787800 -0.451900 -0.304800 -0.984000 0.136000 -0.040000
--0.796500 -0.401700 -0.365800 -0.952000 -0.168000 -0.232000
--0.797400 -0.401700 -0.304800 -0.928000 -0.344000 0.056000
--0.800000 -0.388500 -0.365800 -0.864000 -0.288000 -0.400000
--0.800000 -0.395700 -0.304800 -0.920000 -0.376000 0.000000
--0.797400 -0.401700 -0.304800 -0.928000 -0.344000 0.056000
--0.800000 -0.365300 -0.243900 -0.880000 -0.440000 0.160000
--0.781800 -0.401700 -0.243900 -0.912000 -0.336000 0.208000
--0.800000 -0.355500 -0.182900 -0.872000 -0.472000 0.032000
--0.775200 -0.401700 -0.182900 -0.904000 -0.400000 0.120000
--0.800000 -0.354700 -0.121900 -0.848000 -0.512000 0.080000
--0.771000 -0.401700 -0.121900 -0.872000 -0.456000 0.128000
--0.800000 -0.351500 -0.101400 -0.840000 -0.528000 0.104000
--0.762700 -0.401700 -0.060900 -0.840000 -0.496000 0.168000
--0.794800 -0.351500 -0.060900 -0.816000 -0.552000 0.144000
--0.800000 -0.351500 -0.101400 -0.840000 -0.528000 0.104000
--0.800000 -0.343900 -0.060900 -0.816000 -0.552000 0.128000
--0.800000 -0.343900 -0.060900 -0.816000 -0.552000 0.128000
--0.700000 0.150600 -0.043600 0.552000 0.712000 0.424000
--0.700000 0.150600 -0.043600 0.552000 0.712000 0.424000
--0.700000 0.159000 -0.060900 0.600000 0.776000 0.184000
--0.689800 0.150600 -0.060900 0.640000 0.736000 0.192000
--0.700000 0.150600 -0.089800 0.592000 0.744000 -0.280000
--0.650000 0.112000 -0.060900 0.672000 0.704000 0.200000
--0.700000 0.140000 -0.121900 0.536000 0.728000 -0.408000
--0.650000 0.100400 -0.098000 0.720000 0.624000 -0.288000
--0.657700 0.100400 -0.121900 0.728000 0.576000 -0.360000
--0.650000 0.089500 -0.121900 0.728000 0.552000 -0.384000
--0.700000 0.100400 -0.182100 0.536000 0.592000 -0.592000
--0.650000 0.050200 -0.178200 0.664000 0.544000 -0.504000
--0.700000 0.099700 -0.182900 0.504000 0.560000 -0.640000
--0.652800 0.050200 -0.182900 0.592000 0.536000 -0.592000
--0.700000 0.050200 -0.235800 0.504000 0.432000 -0.744000
--0.650000 0.045800 -0.182900 0.672000 0.432000 -0.592000
--0.700000 0.037400 -0.243900 0.440000 0.392000 -0.800000
--0.650000 0.000000 -0.224600 0.632000 0.368000 -0.672000
--0.669700 0.000000 -0.243900 0.480000 0.312000 -0.808000
--0.700000 0.037400 -0.243900 0.440000 0.392000 -0.800000
--0.700000 0.000000 -0.262900 0.392000 0.288000 -0.864000
--0.700000 0.000000 -0.262900 0.392000 0.288000 -0.864000
--0.650000 -0.541900 0.000000 -0.528000 -0.600000 0.592000
--0.650000 -0.541900 0.000000 -0.528000 -0.600000 0.592000
--0.633400 -0.552300 0.000000 -0.384000 -0.672000 0.624000
--0.650000 -0.552300 -0.012600 -0.496000 -0.592000 0.624000
--0.650000 -0.552300 -0.012600 -0.496000 -0.592000 0.624000
--0.452400 -0.100400 -0.060900 -0.344000 0.936000 -0.016000
--0.452400 -0.100400 -0.060900 -0.344000 0.936000 -0.016000
--0.450000 -0.099400 -0.060900 -0.760000 0.616000 0.160000
--0.450000 -0.100400 -0.057100 -0.400000 0.872000 0.264000
--0.406900 -0.050200 -0.060900 -0.848000 0.520000 0.000000
--0.434300 -0.100400 0.000000 -0.648000 0.720000 0.208000
--0.400000 -0.050200 -0.003200 -0.712000 0.672000 0.168000
--0.400000 -0.050900 0.000000 -0.776000 0.576000 0.224000
--0.399300 -0.050200 0.000000 -0.696000 0.680000 0.184000
--0.399300 -0.050200 0.000000 -0.696000 0.680000 0.184000
--0.466200 -0.502100 0.000000 0.712000 -0.616000 0.320000
--0.466200 -0.502100 0.000000 0.712000 -0.616000 0.320000
--0.450000 -0.489500 0.000000 0.584000 -0.760000 0.264000
--0.450000 -0.502100 -0.045100 0.560000 -0.696000 0.432000
--0.403800 -0.451900 0.000000 0.744000 -0.560000 0.352000
--0.400000 -0.502100 -0.024700 0.848000 -0.224000 0.464000
--0.400000 -0.451900 -0.009600 0.744000 -0.536000 0.376000
--0.403800 -0.451900 0.000000 0.744000 -0.560000 0.352000
--0.400000 -0.447100 0.000000 0.720000 -0.584000 0.344000
--0.400000 -0.451900 -0.009600 0.744000 -0.536000 0.376000
--0.350000 -0.427600 0.000000 0.560000 -0.752000 0.336000
--0.350000 -0.451900 -0.058800 0.248000 -0.624000 0.728000
--0.350000 -0.451900 -0.058800 0.248000 -0.624000 0.728000
--0.500000 -0.552300 -0.009400 0.352000 -0.840000 0.400000
--0.500000 -0.552300 -0.009400 0.352000 -0.840000 0.400000
--0.478800 -0.552300 -0.060900 0.704000 -0.592000 0.376000
--0.500000 -0.570000 -0.060900 0.480000 -0.800000 0.328000
--0.452200 -0.552300 -0.121900 0.864000 0.184000 0.464000
--0.500000 -0.589900 -0.121900 0.408000 -0.832000 0.352000
--0.450000 -0.552300 -0.127200 0.616000 -0.144000 0.768000
--0.500000 -0.602500 -0.155300 0.000000 -0.920000 0.376000
--0.450000 -0.558900 -0.121900 0.808000 0.320000 0.488000
--0.474100 -0.602500 -0.121900 -0.520000 -0.712000 0.456000
--0.450000 -0.602500 -0.084100 -0.232000 -0.736000 0.624000
--0.450000 -0.612400 -0.121900 0.032000 -0.944000 0.312000
--0.410500 -0.602500 -0.121900 0.456000 -0.632000 0.616000
--0.450000 -0.629600 -0.182900 -0.344000 -0.872000 0.320000
--0.400000 -0.602500 -0.131300 0.560000 -0.576000 0.584000
--0.400000 -0.651500 -0.182900 -0.552000 -0.472000 0.672000
--0.386500 -0.602500 -0.182900 0.376000 -0.032000 0.920000
--0.400000 -0.652700 -0.184800 -0.640000 -0.536000 0.536000
--0.350000 -0.647900 -0.182900 0.008000 0.768000 0.624000
--0.396000 -0.652700 -0.182900 -0.176000 0.000000 0.984000
--0.350000 -0.652700 -0.168800 -0.864000 0.056000 0.488000
--0.350700 -0.703000 -0.182900 -0.792000 -0.176000 0.576000
--0.350000 -0.703000 -0.180700 -0.616000 -0.504000 0.592000
--0.350000 -0.704300 -0.182900 -0.112000 -0.808000 0.576000
--0.300000 -0.703000 -0.173800 0.616000 -0.544000 0.552000
--0.300000 -0.708000 -0.182900 0.360000 -0.768000 0.520000
--0.293800 -0.703000 -0.182900 0.608000 -0.624000 0.488000
--0.300000 -0.736500 -0.243900 0.320000 -0.832000 0.440000
--0.256000 -0.703000 -0.243900 0.696000 -0.392000 0.584000
--0.300000 -0.753200 -0.286100 0.088000 -0.928000 0.352000
--0.250000 -0.703000 -0.252700 0.704000 -0.368000 0.600000
--0.281500 -0.753200 -0.304800 0.312000 -0.920000 -0.216000
--0.250000 -0.737300 -0.304800 0.568000 -0.808000 -0.112000
--0.300000 -0.753200 -0.317300 0.136000 -0.840000 -0.512000
--0.250000 -0.703000 -0.346500 0.432000 -0.280000 -0.848000
--0.300000 -0.703000 -0.365100 0.056000 -0.232000 -0.968000
--0.250000 -0.652700 -0.361600 0.240000 -0.216000 -0.944000
--0.300000 -0.687100 -0.365800 0.104000 -0.048000 -0.992000
--0.282800 -0.652700 -0.365800 0.080000 -0.160000 -0.976000
--0.300000 -0.652700 -0.367500 0.064000 -0.112000 -0.984000
--0.300000 -0.687100 -0.365800 0.104000 -0.048000 -0.992000
--0.350000 -0.652700 -0.376000 0.560000 0.160000 -0.808000
--0.350000 -0.679200 -0.365800 -0.072000 -0.176000 -0.976000
--0.400000 -0.652700 -0.368100 -0.128000 -0.872000 -0.456000
--0.400000 -0.653700 -0.365800 -0.176000 -0.888000 -0.416000
--0.405700 -0.652700 -0.365800 -0.144000 -0.920000 -0.344000
--0.400000 -0.672200 -0.304800 -0.400000 -0.904000 -0.128000
--0.450000 -0.652700 -0.319500 -0.256000 -0.952000 -0.136000
--0.450000 -0.654300 -0.304800 -0.272000 -0.952000 0.040000
--0.455200 -0.652700 -0.304800 -0.280000 -0.952000 0.040000
--0.450000 -0.652700 -0.293400 -0.288000 -0.936000 0.160000
--0.500000 -0.637800 -0.304800 -0.208000 -0.976000 -0.032000
--0.450000 -0.644000 -0.243900 -0.352000 -0.912000 0.200000
--0.500000 -0.625200 -0.243900 -0.096000 -0.960000 0.240000
--0.450000 -0.629600 -0.182900 -0.344000 -0.872000 0.320000
--0.500000 -0.610400 -0.182900 -0.136000 -0.936000 0.304000
--0.450000 -0.612400 -0.121900 0.032000 -0.944000 0.312000
--0.500000 -0.602500 -0.155300 0.000000 -0.920000 0.376000
--0.474100 -0.602500 -0.121900 -0.520000 -0.712000 0.456000
--0.474100 -0.602500 -0.121900 -0.520000 -0.712000 0.456000
--0.350000 0.148000 -0.060900 -0.504000 0.552000 0.656000
--0.350000 0.148000 -0.060900 -0.504000 0.552000 0.656000
--0.350000 0.100400 -0.017600 -0.744000 0.352000 0.552000
--0.361800 0.100400 -0.060900 -0.920000 0.112000 -0.352000
--0.350000 0.077100 0.000000 -0.776000 0.256000 0.568000
--0.358600 0.050200 -0.060900 -0.920000 0.168000 -0.328000
--0.355100 0.050200 0.000000 -0.872000 0.216000 0.416000
--0.355100 0.050200 0.000000 -0.872000 0.216000 0.416000
--0.307400 0.401700 -0.060900 -0.696000 0.688000 -0.152000
--0.307400 0.401700 -0.060900 -0.696000 0.688000 -0.152000
--0.300000 0.408800 -0.060900 -0.664000 0.712000 -0.184000
--0.300000 0.401700 -0.053800 -0.512000 0.520000 0.672000
--0.250000 0.447500 -0.060900 -0.512000 0.744000 0.408000
--0.250000 0.401700 -0.023000 -0.400000 -0.016000 0.912000
--0.242600 0.451900 -0.060900 -0.440000 0.728000 0.512000
--0.208400 0.401700 0.000000 -0.424000 0.248000 0.864000
--0.200000 0.451900 -0.034900 -0.360000 0.584000 0.720000
--0.200000 0.408700 0.000000 -0.112000 0.496000 0.856000
--0.150000 0.451900 -0.004000 -0.136000 0.584000 0.792000
--0.185900 0.401700 0.000000 0.264000 0.248000 0.928000
--0.150000 0.401700 -0.011900 0.240000 0.256000 0.928000
--0.150000 0.451900 -0.004000 -0.136000 0.584000 0.792000
--0.100000 0.401700 -0.042400 0.232000 -0.088000 0.960000
--0.100000 0.451900 -0.019200 0.136000 0.056000 0.984000
--0.050000 0.401700 -0.052300 0.176000 0.040000 0.976000
--0.050000 0.451900 -0.049700 0.432000 0.024000 0.896000
--0.100000 0.451900 -0.019200 0.136000 0.056000 0.984000
--0.050000 0.502100 -0.046900 0.400000 0.496000 0.760000
--0.100000 0.502100 -0.041900 -0.080000 0.528000 0.840000
--0.050000 0.515300 -0.060900 0.432000 0.792000 0.408000
--0.100000 0.517800 -0.060900 -0.120000 0.976000 0.136000
--0.100000 0.502100 -0.041900 -0.080000 0.528000 0.840000
--0.146800 0.502100 -0.060900 -0.272000 0.960000 0.016000
--0.100000 0.451900 -0.019200 0.136000 0.056000 0.984000
--0.150000 0.501300 -0.060900 -0.376000 0.880000 -0.280000
--0.150000 0.451900 -0.004000 -0.136000 0.584000 0.792000
--0.200000 0.477600 -0.060900 -0.544000 0.808000 -0.208000
--0.200000 0.451900 -0.034900 -0.360000 0.584000 0.720000
--0.242600 0.451900 -0.060900 -0.440000 0.728000 0.512000
--0.200000 0.477600 -0.060900 -0.544000 0.808000 -0.208000
--0.200000 0.451900 -0.081300 -0.400000 0.504000 -0.752000
--0.200000 0.451900 -0.081300 -0.400000 0.504000 -0.752000
--0.321000 0.100400 0.000000 -0.264000 0.416000 0.864000
--0.321000 0.100400 0.000000 -0.264000 0.416000 0.864000
--0.350000 0.077100 0.000000 -0.776000 0.256000 0.568000
--0.350000 0.100400 -0.017600 -0.744000 0.352000 0.552000
--0.350000 0.100400 -0.017600 -0.744000 0.352000 0.552000
--0.250000 0.351500 -0.004200 0.040000 0.000000 0.992000
--0.250000 0.351500 -0.004200 0.040000 0.000000 0.992000
--0.300000 0.351500 -0.024700 -0.384000 0.216000 0.896000
--0.250000 0.301200 -0.005700 0.112000 -0.104000 0.984000
--0.300000 0.301200 -0.020200 -0.184000 0.032000 0.976000
--0.250000 0.251000 -0.029400 0.176000 -0.456000 0.864000
--0.300000 0.251000 -0.020200 0.208000 -0.160000 0.960000
--0.250000 0.219300 -0.060900 0.304000 -0.640000 0.696000
--0.300000 0.200800 -0.040500 0.440000 0.208000 0.864000
--0.277600 0.200800 -0.060900 0.584000 -0.072000 0.800000
--0.250000 0.219300 -0.060900 0.304000 -0.640000 0.696000
--0.250000 0.200800 -0.094600 -0.184000 -0.064000 0.976000
--0.200000 0.206100 -0.060900 -0.448000 -0.184000 0.872000
--0.200000 0.200800 -0.062300 -0.304000 0.376000 0.864000
--0.198000 0.200800 -0.060900 -0.464000 0.288000 0.832000
--0.200000 0.199100 -0.060900 -0.320000 0.504000 0.792000
--0.200000 0.200800 -0.062300 -0.304000 0.376000 0.864000
--0.250000 0.177000 -0.060900 -0.096000 0.568000 0.808000
--0.250000 0.200800 -0.094600 -0.184000 -0.064000 0.976000
--0.277600 0.200800 -0.060900 0.584000 -0.072000 0.800000
--0.277600 0.200800 -0.060900 0.584000 -0.072000 0.800000
--0.250000 -0.351500 -0.038300 0.104000 -0.504000 0.848000
--0.250000 -0.351500 -0.038300 0.104000 -0.504000 0.848000
--0.300000 -0.351500 -0.012600 0.872000 -0.352000 0.320000
--0.250000 -0.401700 -0.058800 -0.096000 -0.136000 0.984000
--0.300000 -0.401700 -0.045100 0.792000 -0.248000 0.544000
--0.250000 -0.451900 -0.040500 -0.352000 -0.008000 0.928000
--0.300000 -0.435300 -0.060900 -0.192000 -0.360000 0.912000
--0.287100 -0.451900 -0.060900 -0.448000 -0.328000 0.824000
--0.300000 -0.451900 -0.070300 -0.328000 -0.392000 0.856000
--0.279200 -0.502100 -0.060900 -0.688000 -0.328000 0.640000
--0.300000 -0.502100 -0.097100 -0.592000 -0.576000 0.560000
--0.250000 -0.533000 -0.060900 -0.336000 -0.760000 0.544000
--0.300000 -0.516400 -0.121900 -0.256000 -0.872000 0.400000
--0.250000 -0.552300 -0.101500 -0.080000 -0.904000 0.400000
--0.260200 -0.552300 -0.121900 -0.560000 -0.752000 0.336000
--0.250000 -0.559400 -0.121900 -0.088000 -0.912000 0.384000
--0.285200 -0.552300 -0.182900 -0.616000 -0.680000 0.384000
--0.250000 -0.581300 -0.182900 -0.104000 -0.888000 0.440000
--0.300000 -0.552300 -0.209900 -0.624000 -0.616000 0.456000
--0.250000 -0.602500 -0.226600 0.288000 -0.512000 0.800000
--0.300000 -0.594300 -0.243900 -0.424000 -0.464000 0.768000
--0.286800 -0.602500 -0.243900 -0.320000 0.232000 0.912000
--0.300000 -0.602500 -0.250000 -0.408000 0.368000 0.824000
--0.300000 -0.607200 -0.243900 -0.248000 0.672000 0.688000
--0.344900 -0.602500 -0.304800 -0.744000 0.664000 -0.032000
--0.350000 -0.630200 -0.243900 -0.144000 0.776000 0.600000
--0.350000 -0.605300 -0.304800 0.248000 0.960000 -0.032000
--0.371400 -0.602500 -0.243900 0.928000 0.016000 0.352000
--0.351600 -0.602500 -0.304800 0.944000 0.304000 0.024000
--0.363900 -0.552300 -0.243900 0.816000 -0.480000 0.304000
--0.350000 -0.594300 -0.304800 0.520000 -0.800000 0.280000
--0.350000 -0.552300 -0.283400 -0.096000 -0.680000 0.720000
--0.344900 -0.602500 -0.304800 -0.744000 0.664000 -0.032000
--0.317500 -0.552300 -0.243900 -0.600000 -0.648000 0.448000
--0.300000 -0.602500 -0.250000 -0.408000 0.368000 0.824000
--0.300000 -0.594300 -0.243900 -0.424000 -0.464000 0.768000
--0.317500 -0.552300 -0.243900 -0.600000 -0.648000 0.448000
--0.300000 -0.552300 -0.209900 -0.624000 -0.616000 0.456000
--0.350000 -0.535600 -0.243900 0.360000 -0.840000 0.384000
--0.300000 -0.538300 -0.182900 -0.584000 -0.696000 0.408000
--0.350000 -0.518400 -0.182900 -0.088000 -0.928000 0.360000
--0.300000 -0.516400 -0.121900 -0.256000 -0.872000 0.400000
--0.350000 -0.503000 -0.121900 0.232000 -0.880000 0.400000
--0.300000 -0.502100 -0.097100 -0.592000 -0.576000 0.560000
--0.350000 -0.502100 -0.119400 0.240000 -0.864000 0.424000
--0.300000 -0.451900 -0.070300 -0.328000 -0.392000 0.856000
--0.350000 -0.453900 -0.060900 0.248000 -0.624000 0.728000
--0.338500 -0.451900 -0.060900 0.112000 -0.632000 0.760000
--0.300000 -0.451900 -0.070300 -0.328000 -0.392000 0.856000
--0.300000 -0.435300 -0.060900 -0.192000 -0.360000 0.912000
--0.300000 -0.435300 -0.060900 -0.192000 -0.360000 0.912000
--0.287100 -0.451900 -0.060900 -0.448000 -0.328000 0.824000
--0.287100 -0.451900 -0.060900 -0.448000 -0.328000 0.824000
--0.279200 -0.502100 -0.060900 -0.688000 -0.328000 0.640000
--0.250000 -0.451900 -0.040500 -0.352000 -0.008000 0.928000
--0.250000 -0.502100 -0.016400 -0.320000 -0.344000 0.872000
--0.200000 -0.451900 -0.018000 0.376000 -0.112000 0.912000
--0.200000 -0.502100 -0.039000 0.512000 -0.608000 0.592000
--0.250000 -0.502100 -0.016400 -0.320000 -0.344000 0.872000
--0.200000 -0.511900 -0.060900 0.416000 -0.800000 0.424000
--0.250000 -0.533000 -0.060900 -0.336000 -0.760000 0.544000
--0.200000 -0.534300 -0.121900 0.456000 -0.832000 0.296000
--0.250000 -0.552300 -0.101500 -0.080000 -0.904000 0.400000
--0.235800 -0.552300 -0.121900 0.448000 -0.816000 0.336000
--0.250000 -0.559400 -0.121900 -0.088000 -0.912000 0.384000
--0.204600 -0.552300 -0.182900 0.504000 -0.776000 0.360000
--0.250000 -0.581300 -0.182900 -0.104000 -0.888000 0.440000
--0.200000 -0.552300 -0.190900 0.520000 -0.768000 0.360000
--0.250000 -0.602500 -0.226600 0.288000 -0.512000 0.800000
--0.200000 -0.579600 -0.243900 0.568000 -0.648000 0.496000
--0.233200 -0.602500 -0.243900 0.608000 -0.320000 0.720000
--0.200000 -0.602500 -0.268600 0.488000 -0.432000 0.752000
--0.241600 -0.652700 -0.243900 0.680000 -0.216000 0.688000
--0.200000 -0.652700 -0.286600 0.488000 -0.272000 0.824000
--0.250000 -0.679700 -0.243900 0.728000 -0.208000 0.640000
--0.200000 -0.693500 -0.304800 0.872000 -0.464000 -0.120000
--0.250000 -0.703000 -0.252700 0.704000 -0.368000 0.600000
--0.204300 -0.703000 -0.304800 0.856000 -0.496000 -0.088000
--0.250000 -0.737300 -0.304800 0.568000 -0.808000 -0.112000
--0.250000 -0.703000 -0.346500 0.432000 -0.280000 -0.848000
--0.204300 -0.703000 -0.304800 0.856000 -0.496000 -0.088000
--0.250000 -0.652700 -0.361600 0.240000 -0.216000 -0.944000
--0.200000 -0.693500 -0.304800 0.872000 -0.464000 -0.120000
--0.200000 -0.652700 -0.326500 0.488000 -0.272000 -0.824000
--0.171500 -0.652700 -0.304800 0.576000 -0.304000 0.752000
--0.200000 -0.693500 -0.304800 0.872000 -0.464000 -0.120000
--0.200000 -0.652700 -0.286600 0.488000 -0.272000 0.824000
--0.200000 -0.652700 -0.286600 0.488000 -0.272000 0.824000
--0.279200 -0.502100 -0.060900 -0.688000 -0.328000 0.640000
--0.279200 -0.502100 -0.060900 -0.688000 -0.328000 0.640000
--0.250000 -0.502100 -0.016400 -0.320000 -0.344000 0.872000
--0.250000 -0.533000 -0.060900 -0.336000 -0.760000 0.544000
--0.250000 -0.533000 -0.060900 -0.336000 -0.760000 0.544000
--0.200000 0.351500 -0.009600 0.208000 -0.208000 0.952000
--0.200000 0.351500 -0.009600 0.208000 -0.208000 0.952000
--0.250000 0.351500 -0.004200 0.040000 0.000000 0.992000
--0.200000 0.301200 -0.022600 0.056000 -0.176000 0.976000
--0.250000 0.301200 -0.005700 0.112000 -0.104000 0.984000
--0.200000 0.251000 -0.048300 -0.120000 -0.296000 0.944000
--0.250000 0.251000 -0.029400 0.176000 -0.456000 0.864000
--0.200000 0.206100 -0.060900 -0.448000 -0.184000 0.872000
--0.250000 0.219300 -0.060900 0.304000 -0.640000 0.696000
--0.250000 0.219300 -0.060900 0.304000 -0.640000 0.696000
--0.200000 -0.351500 -0.031500 -0.320000 -0.128000 0.936000
--0.200000 -0.351500 -0.031500 -0.320000 -0.128000 0.936000
--0.250000 -0.351500 -0.038300 0.104000 -0.504000 0.848000
--0.200000 -0.401700 -0.023400 -0.056000 -0.008000 0.992000
--0.250000 -0.401700 -0.058800 -0.096000 -0.136000 0.984000
--0.200000 -0.451900 -0.018000 0.376000 -0.112000 0.912000
--0.250000 -0.451900 -0.040500 -0.352000 -0.008000 0.928000
--0.250000 -0.451900 -0.040500 -0.352000 -0.008000 0.928000
--0.200000 0.150600 -0.023100 -0.360000 0.472000 0.792000
--0.200000 0.150600 -0.023100 -0.360000 0.472000 0.792000
--0.200000 0.100400 -0.008800 0.176000 0.488000 0.848000
--0.150000 0.150600 -0.037800 0.256000 -0.016000 0.960000
--0.150000 0.100400 -0.027500 0.432000 0.296000 0.848000
--0.114400 0.150600 -0.060900 0.520000 -0.344000 0.776000
--0.122500 0.100400 -0.060900 0.768000 -0.048000 0.624000
--0.100000 0.150600 -0.075000 0.592000 -0.416000 0.688000
--0.100000 0.100400 -0.099400 0.760000 -0.264000 0.584000
--0.067900 0.150600 -0.121900 0.736000 -0.432000 0.504000
--0.089100 0.100400 -0.121900 0.816000 -0.232000 0.520000
--0.050000 0.150600 -0.159500 0.712000 -0.480000 0.504000
--0.053800 0.100400 -0.182900 0.984000 -0.072000 0.112000
--0.050000 0.116900 -0.182900 0.944000 -0.304000 0.048000
--0.051400 0.100400 -0.243900 0.776000 0.216000 -0.576000
--0.050000 0.150600 -0.210200 0.840000 -0.208000 -0.496000
--0.077600 0.150600 -0.243900 0.320000 0.328000 -0.880000
--0.051400 0.100400 -0.243900 0.776000 0.216000 -0.576000
--0.100000 0.150600 -0.251000 -0.024000 0.408000 -0.904000
--0.100000 0.100400 -0.276400 0.032000 0.376000 -0.920000
--0.126800 0.150600 -0.243900 -0.208000 0.496000 -0.832000
--0.150000 0.100400 -0.267100 -0.312000 0.440000 -0.832000
--0.150000 0.141700 -0.243900 -0.352000 0.528000 -0.768000
--0.198500 0.100400 -0.243900 -0.376000 0.480000 -0.784000
--0.150000 0.100400 -0.267100 -0.312000 0.440000 -0.832000
--0.200000 0.099300 -0.243900 -0.456000 0.488000 -0.736000
--0.150000 0.050200 -0.299600 -0.080000 0.408000 -0.904000
--0.200000 0.050200 -0.277000 -0.312000 0.416000 -0.848000
--0.150000 0.040500 -0.304800 -0.136000 0.416000 -0.896000
--0.200000 0.008900 -0.304800 -0.304000 0.456000 -0.832000
--0.150000 0.000000 -0.322200 0.064000 0.240000 -0.968000
--0.200000 0.000000 -0.310700 -0.288000 0.424000 -0.848000
--0.150000 -0.050200 -0.328000 0.128000 0.064000 -0.984000
--0.200000 -0.050200 -0.330400 -0.144000 0.264000 -0.944000
--0.150000 -0.100400 -0.338700 0.056000 -0.088000 -0.992000
--0.200000 -0.100400 -0.330100 -0.024000 -0.008000 -0.992000
--0.150000 -0.150600 -0.309500 -0.032000 -0.400000 -0.912000
--0.200000 -0.150600 -0.333300 0.216000 -0.272000 -0.936000
--0.200000 -0.100400 -0.330100 -0.024000 -0.008000 -0.992000
--0.250000 -0.150600 -0.327500 -0.120000 0.152000 -0.976000
--0.250000 -0.100400 -0.327300 -0.384000 0.152000 -0.904000
--0.200000 -0.100400 -0.330100 -0.024000 -0.008000 -0.992000
--0.250000 -0.050200 -0.318700 -0.440000 0.320000 -0.832000
--0.200000 -0.050200 -0.330400 -0.144000 0.264000 -0.944000
--0.250000 -0.028200 -0.304800 -0.400000 0.416000 -0.808000
--0.200000 0.000000 -0.310700 -0.288000 0.424000 -0.848000
--0.213400 0.000000 -0.304800 -0.304000 0.448000 -0.832000
--0.200000 0.008900 -0.304800 -0.304000 0.456000 -0.832000
--0.250000 0.000000 -0.286200 -0.320000 0.712000 -0.616000
--0.200000 0.050200 -0.277000 -0.312000 0.416000 -0.848000
--0.250000 0.050200 -0.254100 -0.584000 0.656000 -0.464000
--0.200000 0.099300 -0.243900 -0.456000 0.488000 -0.736000
--0.250000 0.055800 -0.243900 -0.560000 0.648000 -0.504000
--0.250000 0.050200 -0.254100 -0.584000 0.656000 -0.464000
--0.256300 0.050200 -0.243900 -0.592000 0.624000 -0.488000
--0.256300 0.050200 -0.243900 -0.592000 0.624000 -0.488000
--0.200000 -0.502100 -0.039000 0.512000 -0.608000 0.592000
--0.200000 -0.502100 -0.039000 0.512000 -0.608000 0.592000
--0.181900 -0.502100 -0.060900 0.504000 -0.680000 0.520000
--0.200000 -0.511900 -0.060900 0.416000 -0.800000 0.424000
--0.200000 -0.511900 -0.060900 0.416000 -0.800000 0.424000
--0.100000 0.401700 -0.042400 0.232000 -0.088000 0.960000
--0.100000 0.401700 -0.042400 0.232000 -0.088000 0.960000
--0.150000 0.401700 -0.011900 0.240000 0.256000 0.928000
--0.100000 0.351500 -0.035500 0.120000 0.000000 0.992000
--0.150000 0.351500 -0.029900 0.096000 -0.168000 0.976000
--0.100000 0.301200 -0.032000 0.168000 0.008000 0.984000
--0.150000 0.301200 -0.033800 0.040000 -0.024000 0.992000
--0.100000 0.251000 -0.029400 0.344000 -0.104000 0.928000
--0.150000 0.251000 -0.027500 -0.136000 -0.104000 0.984000
--0.100000 0.200800 -0.041900 0.456000 -0.304000 0.832000
--0.150000 0.200800 -0.027500 -0.320000 -0.168000 0.928000
--0.100000 0.167200 -0.060900 0.520000 -0.424000 0.736000
--0.150000 0.150600 -0.037800 0.256000 -0.016000 0.960000
--0.114400 0.150600 -0.060900 0.520000 -0.344000 0.776000
--0.100000 0.167200 -0.060900 0.520000 -0.424000 0.736000
--0.100000 0.150600 -0.075000 0.592000 -0.416000 0.688000
--0.078700 0.200800 -0.060900 0.568000 -0.416000 0.704000
--0.067900 0.150600 -0.121900 0.736000 -0.432000 0.504000
--0.050000 0.200800 -0.090500 0.520000 -0.520000 0.672000
--0.050000 0.170300 -0.121900 0.584000 -0.576000 0.560000
--0.067900 0.150600 -0.121900 0.736000 -0.432000 0.504000
--0.050000 0.150600 -0.159500 0.712000 -0.480000 0.504000
--0.050000 0.150600 -0.159500 0.712000 -0.480000 0.504000
--0.150000 0.100400 -0.027500 0.432000 0.296000 0.848000
--0.150000 0.100400 -0.027500 0.432000 0.296000 0.848000
--0.150000 0.050200 -0.012600 0.624000 0.240000 0.728000
--0.122500 0.100400 -0.060900 0.768000 -0.048000 0.624000
--0.123500 0.050200 -0.060900 0.888000 -0.104000 0.440000
--0.100000 0.100400 -0.099400 0.760000 -0.264000 0.584000
--0.100700 0.050200 -0.121900 0.856000 0.048000 0.504000
--0.100000 0.054100 -0.121900 0.816000 -0.176000 0.544000
--0.100000 0.050200 -0.123300 0.696000 -0.176000 0.688000
--0.089100 0.100400 -0.121900 0.816000 -0.232000 0.520000
--0.051100 0.050200 -0.182900 0.712000 0.184000 0.664000
--0.053800 0.100400 -0.182900 0.984000 -0.072000 0.112000
--0.050000 0.050200 -0.189300 0.800000 0.488000 0.336000
--0.051400 0.100400 -0.243900 0.776000 0.216000 -0.576000
--0.050000 0.095100 -0.243900 0.808000 0.256000 -0.520000
--0.100000 0.100400 -0.276400 0.032000 0.376000 -0.920000
--0.050000 0.050200 -0.257500 0.608000 0.208000 -0.760000
--0.100000 0.050200 -0.292200 0.304000 0.312000 -0.896000
--0.050000 0.000000 -0.288000 0.256000 0.560000 -0.776000
--0.100000 0.022400 -0.304800 0.184000 0.304000 -0.928000
--0.077600 0.000000 -0.304800 0.248000 0.344000 -0.896000
--0.100000 0.000000 -0.309600 0.168000 0.152000 -0.968000
--0.050000 -0.015100 -0.304800 0.280000 0.536000 -0.784000
--0.100000 -0.050200 -0.318600 0.080000 0.144000 -0.984000
--0.050000 -0.050200 -0.321000 0.120000 0.280000 -0.944000
--0.100000 -0.100400 -0.323700 -0.040000 -0.152000 -0.984000
--0.050000 -0.100400 -0.342800 0.056000 -0.032000 -0.992000
--0.100000 -0.150600 -0.315000 -0.456000 -0.064000 -0.880000
--0.050000 -0.150600 -0.332400 0.016000 -0.080000 -0.992000
--0.050000 -0.100400 -0.342800 0.056000 -0.032000 -0.992000
-0.000000 -0.150600 -0.318000 0.160000 0.016000 -0.984000
-0.000000 -0.100400 -0.336000 0.328000 -0.184000 -0.920000
-0.050000 -0.150600 -0.318000 0.352000 0.312000 -0.872000
-0.039400 -0.100400 -0.304800 0.408000 0.224000 -0.880000
-0.050000 -0.119800 -0.304800 0.416000 0.264000 -0.864000
-0.050000 -0.100400 -0.298100 0.360000 0.248000 -0.896000
-0.096000 -0.150600 -0.304800 0.176000 0.336000 -0.920000
-0.100000 -0.100400 -0.298900 0.040000 0.136000 -0.984000
-0.100000 -0.150600 -0.303900 -0.176000 0.088000 -0.976000
-0.114400 -0.100400 -0.304800 -0.344000 0.128000 -0.928000
-0.101900 -0.150600 -0.304800 -0.296000 0.368000 -0.872000
-0.100000 -0.150600 -0.303900 -0.176000 0.088000 -0.976000
-0.100000 -0.151600 -0.304800 -0.176000 0.536000 -0.816000
-0.096000 -0.150600 -0.304800 0.176000 0.336000 -0.920000
-0.096000 -0.150600 -0.304800 0.176000 0.336000 -0.920000
--0.150000 0.050200 -0.012600 0.624000 0.240000 0.728000
--0.150000 0.050200 -0.012600 0.624000 0.240000 0.728000
--0.150000 0.000000 -0.001200 0.744000 0.064000 0.656000
--0.123500 0.050200 -0.060900 0.888000 -0.104000 0.440000
--0.120900 0.000000 -0.060900 0.800000 0.080000 0.592000
--0.100700 0.050200 -0.121900 0.856000 0.048000 0.504000
--0.100000 0.000000 -0.110200 0.808000 0.176000 0.552000
--0.100000 0.044900 -0.121900 0.816000 0.112000 0.552000
--0.089600 0.000000 -0.121900 0.568000 0.512000 0.632000
--0.100000 0.050200 -0.123300 0.696000 -0.176000 0.688000
--0.050000 0.000000 -0.158900 0.584000 0.336000 0.728000
--0.051100 0.050200 -0.182900 0.712000 0.184000 0.664000
--0.050000 0.047900 -0.182900 0.488000 0.480000 0.720000
--0.050000 0.050200 -0.189300 0.800000 0.488000 0.336000
-0.000000 0.039200 -0.182900 0.256000 0.544000 0.792000
-0.000000 0.050200 -0.198900 0.168000 0.840000 0.504000
-0.050000 0.005700 -0.182900 0.312000 0.584000 0.744000
-0.046000 0.050200 -0.243900 0.728000 0.480000 -0.472000
-0.050000 0.042300 -0.243900 0.688000 0.376000 -0.616000
-0.000000 0.050200 -0.275900 0.288000 0.416000 -0.856000
-0.050000 0.000000 -0.258500 0.448000 0.256000 -0.848000
-0.000000 0.000000 -0.289100 0.520000 0.272000 -0.800000
-0.050000 -0.050200 -0.279200 0.280000 0.320000 -0.896000
-0.000000 -0.038700 -0.304800 0.368000 0.192000 -0.904000
-0.004800 -0.050200 -0.304800 0.368000 0.176000 -0.904000
-0.000000 -0.050200 -0.306900 0.320000 0.152000 -0.928000
-0.039400 -0.100400 -0.304800 0.408000 0.224000 -0.880000
-0.000000 -0.100400 -0.336000 0.328000 -0.184000 -0.920000
-0.000000 -0.050200 -0.306900 0.320000 0.152000 -0.928000
--0.050000 -0.100400 -0.342800 0.056000 -0.032000 -0.992000
--0.050000 -0.050200 -0.321000 0.120000 0.280000 -0.944000
-0.000000 -0.050200 -0.306900 0.320000 0.152000 -0.928000
--0.050000 -0.015100 -0.304800 0.280000 0.536000 -0.784000
-0.000000 -0.038700 -0.304800 0.368000 0.192000 -0.904000
--0.050000 0.000000 -0.288000 0.256000 0.560000 -0.776000
-0.000000 0.000000 -0.289100 0.520000 0.272000 -0.800000
--0.050000 0.050200 -0.257500 0.608000 0.208000 -0.760000
-0.000000 0.050200 -0.275900 0.288000 0.416000 -0.856000
--0.050000 0.095100 -0.243900 0.808000 0.256000 -0.520000
-0.000000 0.087200 -0.243900 0.456000 0.816000 -0.344000
--0.050000 0.050200 -0.189300 0.800000 0.488000 0.336000
-0.000000 0.050200 -0.198900 0.168000 0.840000 0.504000
-0.000000 0.087200 -0.243900 0.456000 0.816000 -0.344000
-0.046000 0.050200 -0.243900 0.728000 0.480000 -0.472000
-0.000000 0.050200 -0.275900 0.288000 0.416000 -0.856000
-0.000000 0.050200 -0.275900 0.288000 0.416000 -0.856000
--0.150000 0.000000 -0.001200 0.744000 0.064000 0.656000
--0.150000 0.000000 -0.001200 0.744000 0.064000 0.656000
--0.150000 -0.050200 -0.005700 0.768000 -0.024000 0.632000
--0.120900 0.000000 -0.060900 0.800000 0.080000 0.592000
--0.114700 -0.050200 -0.060900 0.632000 0.112000 0.760000
--0.100000 0.000000 -0.110200 0.808000 0.176000 0.552000
--0.100000 -0.050200 -0.077100 0.584000 0.232000 0.768000
--0.089600 0.000000 -0.121900 0.568000 0.512000 0.632000
--0.050000 -0.050200 -0.098600 0.240000 0.488000 0.832000
--0.050000 -0.024600 -0.121900 0.296000 0.656000 0.688000
-0.000000 -0.050200 -0.114000 0.064000 0.408000 0.904000
-0.000000 -0.035500 -0.121900 0.072000 0.496000 0.856000
-0.050000 -0.050200 -0.115700 0.016000 0.416000 0.904000
-0.050000 -0.038600 -0.121900 0.000000 0.528000 0.840000
-0.100000 -0.050200 -0.113200 -0.016000 0.464000 0.880000
-0.100000 -0.037100 -0.121900 -0.016000 0.544000 0.832000
-0.150000 -0.050200 -0.113700 0.032000 0.448000 0.888000
-0.150000 -0.036300 -0.121900 0.008000 0.488000 0.864000
-0.100000 -0.037100 -0.121900 -0.016000 0.544000 0.832000
-0.150000 0.000000 -0.166100 -0.096000 0.688000 0.712000
-0.100000 0.000000 -0.179900 0.000000 0.528000 0.840000
-0.150000 0.016800 -0.182900 -0.152000 0.840000 0.520000
-0.100000 0.004900 -0.182900 -0.288000 0.864000 0.400000
-0.150000 0.015400 -0.243900 -0.208000 0.728000 -0.640000
-0.100000 0.000000 -0.203800 -0.256000 0.936000 -0.224000
-0.113100 0.000000 -0.243900 -0.392000 0.768000 -0.496000
-0.100000 -0.005500 -0.243900 -0.184000 0.760000 -0.616000
-0.150000 0.000000 -0.257100 -0.208000 0.552000 -0.800000
-0.100000 -0.050200 -0.272200 -0.136000 0.384000 -0.904000
-0.150000 -0.050200 -0.298400 -0.176000 0.328000 -0.920000
-0.100000 -0.100400 -0.298900 0.040000 0.136000 -0.984000
-0.150000 -0.064700 -0.304800 -0.200000 0.328000 -0.912000
-0.114400 -0.100400 -0.304800 -0.344000 0.128000 -0.928000
-0.114400 -0.100400 -0.304800 -0.344000 0.128000 -0.928000
--0.150000 -0.050200 -0.005700 0.768000 -0.024000 0.632000
--0.150000 -0.050200 -0.005700 0.768000 -0.024000 0.632000
--0.150000 -0.100400 -0.001300 0.848000 0.032000 0.520000
--0.114700 -0.050200 -0.060900 0.632000 0.112000 0.760000
--0.104300 -0.100400 -0.060900 0.528000 0.416000 0.728000
--0.100000 -0.050200 -0.077100 0.584000 0.232000 0.768000
--0.100000 -0.100400 -0.064700 0.496000 0.416000 0.752000
--0.050000 -0.050200 -0.098600 0.240000 0.488000 0.832000
--0.050000 -0.100400 -0.073900 0.136000 0.480000 0.864000
-0.000000 -0.050200 -0.114000 0.064000 0.408000 0.904000
-0.000000 -0.100400 -0.085100 0.096000 0.456000 0.880000
-0.050000 -0.050200 -0.115700 0.016000 0.416000 0.904000
-0.050000 -0.100400 -0.083400 0.000000 0.440000 0.888000
-0.100000 -0.050200 -0.113200 -0.016000 0.464000 0.880000
-0.100000 -0.100400 -0.084200 0.032000 0.360000 0.928000
-0.150000 -0.050200 -0.113700 0.032000 0.448000 0.888000
-0.150000 -0.100400 -0.080500 0.184000 0.336000 0.920000
-0.100000 -0.100400 -0.084200 0.032000 0.360000 0.928000
-0.150000 -0.150600 -0.071000 0.136000 0.176000 0.968000
-0.100000 -0.150600 -0.068400 0.184000 0.416000 0.888000
-0.150000 -0.200800 -0.071800 0.312000 -0.208000 0.920000
-0.100000 -0.170000 -0.060900 0.256000 0.296000 0.912000
-0.130700 -0.200800 -0.060900 0.504000 0.008000 0.856000
-0.150000 -0.200800 -0.071800 0.312000 -0.208000 0.920000
-0.110300 -0.251000 -0.060900 0.504000 -0.760000 0.392000
-0.150000 -0.251000 -0.118100 0.224000 -0.792000 0.560000
-0.150000 -0.251000 -0.118100 0.224000 -0.792000 0.560000
--0.100000 -0.188700 0.000000 0.176000 0.408000 0.888000
--0.100000 -0.188700 0.000000 0.176000 0.408000 0.888000
--0.129500 -0.150600 0.000000 0.416000 0.264000 0.864000
--0.100000 -0.150600 -0.019000 0.512000 0.456000 0.720000
--0.100000 -0.150600 -0.019000 0.512000 0.456000 0.720000
--0.150000 -0.346200 0.000000 -0.392000 -0.160000 0.904000
--0.150000 -0.346200 0.000000 -0.392000 -0.160000 0.904000
--0.150000 -0.351500 -0.001100 -0.192000 -0.352000 0.912000
--0.100000 -0.344900 0.000000 0.072000 -0.528000 0.840000
--0.100000 -0.351500 -0.005700 0.248000 -0.576000 0.776000
--0.050000 -0.329200 0.000000 0.264000 -0.624000 0.720000
--0.050000 -0.351500 -0.027000 0.488000 -0.688000 0.528000
--0.100000 -0.351500 -0.005700 0.248000 -0.576000 0.776000
--0.050000 -0.370100 -0.060900 0.592000 -0.672000 0.424000
--0.100000 -0.401700 -0.044900 0.592000 -0.496000 0.624000
--0.087700 -0.401700 -0.060900 0.608000 -0.600000 0.504000
--0.100000 -0.415900 -0.060900 0.680000 -0.544000 0.480000
--0.054100 -0.401700 -0.121900 0.656000 -0.688000 0.280000
--0.100000 -0.451900 -0.117700 0.624000 -0.664000 0.392000
--0.098000 -0.451900 -0.121900 0.712000 -0.680000 0.120000
--0.100000 -0.453500 -0.121900 0.600000 -0.776000 0.168000
--0.098100 -0.451900 -0.182900 0.736000 -0.672000 0.032000
--0.100000 -0.453800 -0.182900 0.696000 -0.712000 0.024000
--0.094700 -0.451900 -0.243900 0.784000 -0.568000 0.216000
--0.100000 -0.458900 -0.243900 0.744000 -0.632000 0.192000
--0.061500 -0.451900 -0.304800 0.928000 -0.352000 0.088000
--0.100000 -0.502100 -0.283200 0.616000 -0.376000 0.680000
--0.074100 -0.502100 -0.304800 0.864000 -0.480000 0.112000
--0.100000 -0.549700 -0.304800 0.696000 -0.392000 0.592000
--0.100000 -0.502100 -0.325200 0.520000 -0.368000 -0.760000
--0.101500 -0.552300 -0.304800 0.552000 -0.392000 0.720000
--0.147100 -0.502100 -0.365800 0.472000 -0.192000 -0.848000
--0.150000 -0.552300 -0.337600 0.424000 -0.304000 -0.840000
--0.150000 -0.505900 -0.365800 0.272000 -0.320000 -0.904000
--0.196100 -0.552300 -0.365800 0.320000 -0.272000 -0.904000
--0.150000 -0.502100 -0.367300 0.088000 -0.320000 -0.936000
--0.200000 -0.552300 -0.367100 0.360000 -0.232000 -0.896000
--0.200000 -0.502100 -0.370700 0.184000 -0.352000 -0.912000
--0.200000 -0.502100 -0.370700 0.184000 -0.352000 -0.912000
--0.100000 -0.351500 -0.005700 0.248000 -0.576000 0.776000
--0.100000 -0.351500 -0.005700 0.248000 -0.576000 0.776000
--0.150000 -0.351500 -0.001100 -0.192000 -0.352000 0.912000
--0.100000 -0.401700 -0.044900 0.592000 -0.496000 0.624000
--0.150000 -0.401700 -0.019000 0.408000 -0.232000 0.880000
--0.100000 -0.415900 -0.060900 0.680000 -0.544000 0.480000
--0.150000 -0.451900 -0.041900 0.560000 -0.440000 0.696000
--0.133200 -0.451900 -0.060900 0.584000 -0.656000 0.464000
--0.150000 -0.470000 -0.060900 0.568000 -0.552000 0.600000
--0.100000 -0.451900 -0.117700 0.624000 -0.664000 0.392000
--0.150000 -0.502100 -0.111600 0.592000 -0.752000 0.280000
--0.100000 -0.453500 -0.121900 0.600000 -0.776000 0.168000
--0.146100 -0.502100 -0.121900 0.616000 -0.744000 0.232000
--0.100000 -0.453800 -0.182900 0.696000 -0.712000 0.024000
--0.141200 -0.502100 -0.182900 0.696000 -0.688000 0.184000
--0.100000 -0.458900 -0.243900 0.744000 -0.632000 0.192000
--0.125700 -0.502100 -0.243900 0.664000 -0.408000 0.624000
--0.100000 -0.502100 -0.283200 0.616000 -0.376000 0.680000
--0.150000 -0.530700 -0.243900 0.632000 -0.664000 0.392000
--0.100000 -0.549700 -0.304800 0.696000 -0.392000 0.592000
--0.150000 -0.552300 -0.270100 0.544000 -0.504000 0.656000
--0.101500 -0.552300 -0.304800 0.552000 -0.392000 0.720000
--0.150000 -0.602500 -0.302600 0.392000 -0.240000 0.880000
--0.145700 -0.602500 -0.304800 0.824000 -0.528000 0.192000
--0.150000 -0.609400 -0.304800 0.840000 -0.512000 0.152000
--0.150000 -0.602500 -0.307600 0.456000 -0.280000 -0.840000
--0.145700 -0.602500 -0.304800 0.824000 -0.528000 0.192000
--0.150000 -0.552300 -0.337600 0.424000 -0.304000 -0.840000
--0.101500 -0.552300 -0.304800 0.552000 -0.392000 0.720000
--0.101500 -0.552300 -0.304800 0.552000 -0.392000 0.720000
--0.050000 0.401700 -0.052300 0.176000 0.040000 0.976000
--0.050000 0.401700 -0.052300 0.176000 0.040000 0.976000
--0.100000 0.401700 -0.042400 0.232000 -0.088000 0.960000
--0.050000 0.351500 -0.043600 0.248000 0.032000 0.960000
--0.100000 0.351500 -0.035500 0.120000 0.000000 0.992000
--0.050000 0.301200 -0.044600 0.440000 -0.008000 0.896000
--0.100000 0.301200 -0.032000 0.168000 0.008000 0.984000
--0.050000 0.251000 -0.047300 0.528000 -0.360000 0.760000
--0.100000 0.251000 -0.029400 0.344000 -0.104000 0.928000
--0.050000 0.236000 -0.060900 0.536000 -0.496000 0.672000
--0.100000 0.200800 -0.041900 0.456000 -0.304000 0.832000
--0.078700 0.200800 -0.060900 0.568000 -0.416000 0.704000
--0.100000 0.167200 -0.060900 0.520000 -0.424000 0.736000
--0.100000 0.167200 -0.060900 0.520000 -0.424000 0.736000
--0.027600 0.301200 -0.060900 0.456000 -0.208000 0.856000
--0.027600 0.301200 -0.060900 0.456000 -0.208000 0.856000
--0.050000 0.301200 -0.044600 0.440000 -0.008000 0.896000
--0.035000 0.251000 -0.060900 0.512000 -0.448000 0.728000
--0.050000 0.251000 -0.047300 0.528000 -0.360000 0.760000
--0.050000 0.236000 -0.060900 0.536000 -0.496000 0.672000
--0.050000 0.236000 -0.060900 0.536000 -0.496000 0.672000
--0.002200 -0.301200 0.000000 0.384000 -0.648000 0.648000
--0.002200 -0.301200 0.000000 0.384000 -0.648000 0.648000
-0.000000 -0.299000 0.000000 0.440000 -0.464000 0.760000
-0.000000 -0.301200 -0.001900 0.408000 -0.704000 0.568000
-0.050000 -0.253500 0.000000 0.448000 -0.608000 0.648000
-0.032200 -0.301200 -0.060900 0.552000 -0.696000 0.448000
-0.050000 -0.286400 -0.060900 0.528000 -0.720000 0.440000
-0.050000 -0.301200 -0.085900 0.528000 -0.704000 0.464000
-0.050000 -0.301200 -0.085900 0.528000 -0.704000 0.464000
--0.050000 -0.351500 -0.027000 0.488000 -0.688000 0.528000
--0.050000 -0.351500 -0.027000 0.488000 -0.688000 0.528000
--0.029100 -0.351500 -0.060900 0.584000 -0.680000 0.424000
--0.050000 -0.370100 -0.060900 0.592000 -0.672000 0.424000
-0.000000 -0.351500 -0.112600 0.544000 -0.704000 0.448000
--0.050000 -0.398200 -0.121900 0.592000 -0.704000 0.368000
-0.000000 -0.356400 -0.121900 0.560000 -0.728000 0.384000
--0.050000 -0.389600 -0.182900 0.656000 -0.736000 -0.128000
-0.000000 -0.353400 -0.182900 0.520000 -0.832000 -0.160000
--0.050000 -0.380500 -0.243900 0.664000 -0.736000 -0.104000
-0.000000 -0.351500 -0.193300 0.504000 -0.832000 -0.176000
--0.013800 -0.351500 -0.243900 0.552000 -0.808000 -0.168000
-0.000000 -0.343100 -0.243900 0.464000 -0.864000 -0.160000
--0.026900 -0.351500 -0.304800 0.608000 -0.688000 -0.384000
-0.000000 -0.336000 -0.304800 0.392000 -0.872000 -0.264000
--0.050000 -0.351500 -0.336900 0.024000 -0.576000 -0.808000
-0.000000 -0.316900 -0.365800 0.224000 -0.832000 -0.496000
--0.050000 -0.309800 -0.365800 -0.336000 -0.416000 -0.840000
-0.000000 -0.301200 -0.413400 -0.392000 -0.192000 -0.896000
--0.050000 -0.301200 -0.370400 -0.392000 -0.264000 -0.872000
-0.000000 -0.251000 -0.386300 -0.352000 0.496000 -0.792000
--0.050000 -0.266900 -0.365800 -0.288000 0.088000 -0.944000
--0.044700 -0.251000 -0.365800 -0.216000 0.376000 -0.896000
--0.050000 -0.251000 -0.364300 -0.216000 0.352000 -0.904000
-0.000000 -0.238800 -0.365800 -0.192000 0.648000 -0.728000
--0.050000 -0.200800 -0.320900 -0.056000 0.280000 -0.952000
-0.000000 -0.200800 -0.332000 -0.296000 0.528000 -0.784000
-0.000000 -0.238800 -0.365800 -0.192000 0.648000 -0.728000
-0.050000 -0.200800 -0.360800 -0.016000 0.576000 -0.808000
-0.050000 -0.206300 -0.365800 -0.112000 0.608000 -0.776000
-0.000000 -0.238800 -0.365800 -0.192000 0.648000 -0.728000
-0.050000 -0.251000 -0.406500 0.232000 -0.312000 -0.912000
-0.000000 -0.251000 -0.386300 -0.352000 0.496000 -0.792000
-0.050000 -0.301200 -0.369000 0.376000 -0.768000 -0.512000
-0.000000 -0.301200 -0.413400 -0.392000 -0.192000 -0.896000
-0.050000 -0.303000 -0.365800 0.400000 -0.792000 -0.448000
-0.000000 -0.316900 -0.365800 0.224000 -0.832000 -0.496000
-0.050000 -0.326800 -0.304800 0.424000 -0.880000 -0.184000
-0.000000 -0.336000 -0.304800 0.392000 -0.872000 -0.264000
-0.050000 -0.327900 -0.243900 0.480000 -0.872000 0.000000
-0.000000 -0.343100 -0.243900 0.464000 -0.864000 -0.160000
-0.050000 -0.327900 -0.182900 0.552000 -0.824000 0.048000
-0.000000 -0.351500 -0.193300 0.504000 -0.832000 -0.176000
-0.003100 -0.351500 -0.182900 0.504000 -0.840000 -0.160000
-0.000000 -0.353400 -0.182900 0.520000 -0.832000 -0.160000
-0.006400 -0.351500 -0.121900 0.552000 -0.776000 0.288000
-0.000000 -0.356400 -0.121900 0.560000 -0.728000 0.384000
-0.000000 -0.351500 -0.112600 0.544000 -0.704000 0.448000
-0.000000 -0.351500 -0.112600 0.544000 -0.704000 0.448000
-0.000000 0.351500 -0.051600 0.280000 -0.248000 0.920000
-0.000000 0.351500 -0.051600 0.280000 -0.248000 0.920000
-0.000000 0.393800 -0.060900 0.224000 0.176000 0.952000
-0.042100 0.351500 -0.060900 0.160000 -0.080000 0.976000
-0.000000 0.401700 -0.062800 0.256000 0.176000 0.944000
-0.050000 0.351500 -0.062500 0.000000 -0.264000 0.960000
-0.050000 0.401700 -0.062500 -0.008000 0.136000 0.984000
-0.065700 0.351500 -0.060900 -0.064000 -0.312000 0.944000
-0.100000 0.401700 -0.066700 -0.048000 0.000000 0.992000
-0.100000 0.368600 -0.060900 0.104000 0.120000 0.984000
-0.150000 0.401700 -0.062100 -0.392000 -0.400000 0.816000
-0.111400 0.351500 -0.060900 0.184000 -0.224000 0.952000
-0.150000 0.351500 -0.070300 -0.056000 -0.480000 0.872000
-0.100000 0.345700 -0.060900 0.056000 -0.392000 0.912000
-0.150000 0.301200 -0.094700 0.096000 -0.408000 0.904000
-0.100000 0.301200 -0.081200 0.144000 -0.392000 0.904000
-0.150000 0.253300 -0.121900 0.144000 -0.672000 0.712000
-0.100000 0.251000 -0.119300 0.048000 -0.664000 0.736000
-0.134200 0.251000 -0.121900 0.072000 -0.752000 0.648000
-0.100000 0.248700 -0.121900 0.064000 -0.824000 0.552000
-0.150000 0.251000 -0.128300 0.144000 -0.904000 0.392000
-0.100000 0.246100 -0.182900 0.136000 -0.488000 -0.856000
-0.150000 0.224100 -0.182900 0.056000 -0.672000 -0.728000
-0.100000 0.251000 -0.185300 0.160000 -0.296000 -0.936000
-0.150000 0.251000 -0.192500 0.112000 0.024000 -0.992000
-0.100000 0.301200 -0.188500 0.112000 0.128000 -0.984000
-0.150000 0.284700 -0.182900 0.352000 0.368000 -0.856000
-0.133500 0.301200 -0.182900 0.272000 0.264000 -0.920000
-0.150000 0.251000 -0.128300 0.144000 -0.904000 0.392000
-0.150000 0.301200 -0.172900 0.456000 0.432000 -0.768000
-0.134200 0.251000 -0.121900 0.072000 -0.752000 0.648000
-0.150000 0.253300 -0.121900 0.144000 -0.672000 0.712000
-0.150000 0.301200 -0.172900 0.456000 0.432000 -0.768000
-0.200000 0.269500 -0.121900 -0.008000 -0.896000 0.432000
-0.200000 0.301200 -0.179700 -0.152000 -0.352000 -0.920000
-0.250000 0.256500 -0.121900 -0.200000 -0.800000 0.552000
-0.215700 0.301200 -0.182900 -0.120000 -0.160000 -0.976000
-0.250000 0.284000 -0.182900 -0.096000 -0.256000 -0.952000
-0.250000 0.301200 -0.184400 -0.080000 -0.056000 -0.992000
-0.215700 0.301200 -0.182900 -0.120000 -0.160000 -0.976000
-0.250000 0.351500 -0.189100 -0.160000 0.168000 -0.968000
-0.226900 0.351500 -0.182900 -0.224000 0.192000 -0.952000
-0.250000 0.370000 -0.182900 -0.184000 0.304000 -0.928000
-0.200000 0.351500 -0.169700 -0.320000 0.304000 -0.888000
-0.250000 0.401700 -0.172700 -0.016000 0.288000 -0.952000
-0.200000 0.401700 -0.169400 -0.056000 0.168000 -0.976000
-0.250000 0.451900 -0.137900 0.128000 0.536000 -0.824000
-0.200000 0.451900 -0.151000 0.136000 0.400000 -0.896000
-0.250000 0.466900 -0.121900 0.232000 0.968000 0.016000
-0.200000 0.484800 -0.121900 0.312000 0.872000 0.360000
-0.250000 0.451900 -0.094000 0.248000 0.784000 0.552000
-0.200000 0.453000 -0.060900 0.112000 0.728000 0.672000
-0.203100 0.451900 -0.060900 0.264000 0.672000 0.680000
-0.200000 0.451900 -0.059700 0.136000 0.632000 0.760000
-0.250000 0.432000 -0.060900 0.224000 0.624000 0.736000
-0.200000 0.401700 -0.033800 -0.352000 0.000000 0.928000
-0.250000 0.401700 -0.026800 -0.216000 0.176000 0.952000
-0.200000 0.352900 -0.060900 -0.368000 -0.496000 0.776000
-0.250000 0.351500 -0.020200 -0.488000 -0.416000 0.760000
-0.201200 0.351500 -0.060900 -0.488000 -0.576000 0.648000
-0.250000 0.317900 -0.060900 -0.432000 -0.680000 0.584000
-0.200000 0.351500 -0.062100 -0.312000 -0.640000 0.696000
-0.250000 0.301200 -0.083600 -0.096000 -0.744000 0.648000
-0.200000 0.301200 -0.098800 -0.120000 -0.584000 0.800000
-0.250000 0.256500 -0.121900 -0.200000 -0.800000 0.552000
-0.200000 0.269500 -0.121900 -0.008000 -0.896000 0.432000
-0.200000 0.301200 -0.098800 -0.120000 -0.584000 0.800000
-0.150000 0.253300 -0.121900 0.144000 -0.672000 0.712000
-0.150000 0.301200 -0.094700 0.096000 -0.408000 0.904000
-0.200000 0.301200 -0.098800 -0.120000 -0.584000 0.800000
-0.150000 0.351500 -0.070300 -0.056000 -0.480000 0.872000
-0.200000 0.351500 -0.062100 -0.312000 -0.640000 0.696000
-0.150000 0.401700 -0.062100 -0.392000 -0.400000 0.816000
-0.200000 0.352900 -0.060900 -0.368000 -0.496000 0.776000
-0.151400 0.401700 -0.060900 -0.480000 -0.416000 0.760000
-0.200000 0.401700 -0.033800 -0.352000 0.000000 0.928000
-0.150000 0.409600 -0.060900 -0.208000 -0.072000 0.968000
-0.200000 0.451900 -0.059700 0.136000 0.632000 0.760000
-0.150000 0.451900 -0.057100 -0.080000 0.496000 0.856000
-0.200000 0.453000 -0.060900 0.112000 0.728000 0.672000
-0.150000 0.456100 -0.060900 0.048000 0.664000 0.736000
-0.200000 0.484800 -0.121900 0.312000 0.872000 0.360000
-0.150000 0.502100 -0.119700 0.016000 0.656000 0.752000
-0.153400 0.502100 -0.121900 0.448000 0.824000 -0.336000
-0.150000 0.503100 -0.121900 0.272000 0.456000 -0.840000
-0.150000 0.502100 -0.123200 0.032000 0.424000 -0.896000
-0.138500 0.502100 -0.121900 -0.184000 0.952000 -0.216000
-0.150000 0.451900 -0.151900 0.184000 0.376000 -0.904000
-0.100000 0.494400 -0.121900 -0.184000 0.952000 -0.216000
-0.100000 0.451900 -0.146900 -0.088000 0.224000 -0.968000
-0.050000 0.485400 -0.121900 -0.032000 0.904000 -0.408000
-0.050000 0.451900 -0.139600 -0.080000 0.232000 -0.960000
-0.000000 0.493800 -0.121900 0.128000 0.960000 -0.232000
-0.000000 0.451900 -0.135500 0.000000 0.160000 -0.984000
--0.050000 0.500300 -0.121900 -0.104000 0.896000 -0.424000
--0.050000 0.451900 -0.137500 0.040000 0.112000 -0.992000
--0.100000 0.479800 -0.121900 -0.288000 0.584000 -0.752000
--0.100000 0.451900 -0.142300 -0.128000 0.312000 -0.936000
--0.150000 0.453400 -0.121900 -0.320000 0.624000 -0.704000
--0.150000 0.451900 -0.123200 -0.344000 0.512000 -0.784000
--0.152100 0.451900 -0.121900 -0.424000 0.536000 -0.720000
--0.150000 0.401700 -0.148200 -0.240000 0.400000 -0.872000
--0.200000 0.409200 -0.121900 -0.400000 0.464000 -0.776000
--0.200000 0.401700 -0.127400 -0.400000 0.440000 -0.800000
--0.208300 0.401700 -0.121900 -0.432000 0.432000 -0.784000
--0.200000 0.351500 -0.146000 -0.416000 0.224000 -0.872000
--0.233300 0.351500 -0.121900 -0.616000 0.184000 -0.752000
--0.200000 0.301200 -0.154100 -0.392000 0.112000 -0.904000
--0.245300 0.301200 -0.121900 -0.680000 0.120000 -0.720000
--0.200000 0.251000 -0.156200 -0.432000 0.168000 -0.880000
--0.250000 0.268200 -0.121900 -0.464000 0.088000 -0.872000
--0.250000 0.251000 -0.124000 -0.376000 0.088000 -0.920000
--0.254200 0.251000 -0.121900 -0.384000 0.088000 -0.912000
--0.250000 0.200800 -0.129700 -0.392000 0.152000 -0.904000
--0.263400 0.200800 -0.121900 -0.480000 0.216000 -0.840000
--0.250000 0.150600 -0.154100 -0.464000 0.344000 -0.808000
--0.295300 0.150600 -0.121900 -0.728000 0.520000 -0.432000
--0.250000 0.100400 -0.182000 -0.504000 0.488000 -0.704000
--0.300000 0.144000 -0.121900 -0.728000 0.496000 -0.456000
--0.300000 0.100400 -0.141500 -0.560000 0.512000 -0.640000
--0.250000 0.100400 -0.182000 -0.504000 0.488000 -0.704000
--0.300000 0.052000 -0.182900 -0.664000 0.464000 -0.568000
--0.250000 0.099600 -0.182900 -0.488000 0.616000 -0.608000
--0.250000 0.100400 -0.182000 -0.504000 0.488000 -0.704000
--0.249100 0.100400 -0.182900 -0.576000 0.496000 -0.640000
--0.250000 0.150600 -0.154100 -0.464000 0.344000 -0.808000
--0.216700 0.150600 -0.182900 -0.560000 0.376000 -0.728000
--0.250000 0.200800 -0.129700 -0.392000 0.152000 -0.904000
--0.200000 0.172600 -0.182900 -0.488000 0.416000 -0.760000
--0.200000 0.200800 -0.161600 -0.480000 0.384000 -0.776000
--0.173800 0.200800 -0.182900 -0.480000 0.344000 -0.800000
--0.200000 0.251000 -0.156200 -0.432000 0.168000 -0.880000
--0.153800 0.251000 -0.182900 -0.312000 0.176000 -0.928000
--0.200000 0.301200 -0.154100 -0.392000 0.112000 -0.904000
--0.150000 0.257900 -0.182900 -0.288000 0.168000 -0.936000
--0.150000 0.301200 -0.169700 -0.080000 0.248000 -0.960000
--0.100000 0.273500 -0.182900 -0.112000 0.208000 -0.968000
--0.100000 0.301200 -0.172200 -0.168000 0.416000 -0.888000
--0.058500 0.301200 -0.182900 -0.128000 0.320000 -0.936000
--0.100000 0.351500 -0.158200 0.008000 0.264000 -0.960000
--0.050000 0.304700 -0.182900 -0.120000 0.336000 -0.928000
--0.050000 0.351500 -0.155800 -0.048000 0.328000 -0.936000
-0.000000 0.313300 -0.182900 -0.064000 0.304000 -0.944000
-0.000000 0.351500 -0.164900 -0.080000 0.368000 -0.920000
-0.050000 0.327400 -0.182900 -0.016000 0.344000 -0.936000
-0.050000 0.351500 -0.166400 0.000000 0.392000 -0.912000
-0.100000 0.320500 -0.182900 0.096000 0.312000 -0.936000
-0.100000 0.351500 -0.169000 0.056000 0.272000 -0.952000
-0.133500 0.301200 -0.182900 0.272000 0.264000 -0.920000
-0.150000 0.351500 -0.160600 0.144000 0.128000 -0.976000
-0.150000 0.301200 -0.172900 0.456000 0.432000 -0.768000
-0.200000 0.351500 -0.169700 -0.320000 0.304000 -0.888000
-0.200000 0.301200 -0.179700 -0.152000 -0.352000 -0.920000
-0.226900 0.351500 -0.182900 -0.224000 0.192000 -0.952000
-0.215700 0.301200 -0.182900 -0.120000 -0.160000 -0.976000
-0.215700 0.301200 -0.182900 -0.120000 -0.160000 -0.976000
-0.000000 0.351500 -0.051600 0.280000 -0.248000 0.920000
-0.000000 0.351500 -0.051600 0.280000 -0.248000 0.920000
-0.042100 0.351500 -0.060900 0.160000 -0.080000 0.976000
-0.000000 0.334500 -0.060900 0.312000 -0.368000 0.864000
-0.050000 0.351500 -0.062500 0.000000 -0.264000 0.960000
-0.000000 0.301200 -0.076500 0.296000 -0.272000 0.904000
-0.050000 0.301200 -0.074400 0.160000 -0.248000 0.952000
-0.000000 0.251000 -0.086600 0.344000 -0.360000 0.864000
-0.050000 0.251000 -0.100200 0.224000 -0.464000 0.848000
-0.000000 0.211400 -0.121900 0.496000 -0.712000 0.480000
-0.050000 0.230600 -0.121900 0.312000 -0.824000 0.464000
-0.000000 0.200800 -0.169000 0.576000 -0.744000 0.320000
-0.050000 0.219300 -0.182900 0.280000 -0.632000 -0.712000
-0.008500 0.200800 -0.182900 0.416000 -0.688000 -0.584000
-0.050000 0.251000 -0.200200 0.040000 -0.232000 -0.968000
-0.000000 0.200800 -0.186400 0.272000 -0.456000 -0.840000
-0.000000 0.251000 -0.201400 0.024000 -0.152000 -0.984000
--0.050000 0.200800 -0.204500 0.304000 -0.328000 -0.888000
--0.050000 0.251000 -0.205600 -0.136000 0.216000 -0.960000
--0.100000 0.200800 -0.221500 0.056000 0.392000 -0.912000
--0.100000 0.251000 -0.188700 -0.192000 0.256000 -0.944000
--0.150000 0.200800 -0.199200 -0.328000 0.272000 -0.896000
--0.150000 0.251000 -0.184400 -0.280000 0.168000 -0.936000
--0.173800 0.200800 -0.182900 -0.480000 0.344000 -0.800000
--0.153800 0.251000 -0.182900 -0.312000 0.176000 -0.928000
--0.150000 0.251000 -0.184400 -0.280000 0.168000 -0.936000
--0.150000 0.257900 -0.182900 -0.288000 0.168000 -0.936000
--0.100000 0.251000 -0.188700 -0.192000 0.256000 -0.944000
--0.100000 0.273500 -0.182900 -0.112000 0.208000 -0.968000
--0.050000 0.251000 -0.205600 -0.136000 0.216000 -0.960000
--0.058500 0.301200 -0.182900 -0.128000 0.320000 -0.936000
--0.050000 0.301200 -0.184300 -0.112000 0.296000 -0.944000
--0.050000 0.304700 -0.182900 -0.120000 0.336000 -0.928000
-0.000000 0.301200 -0.186500 -0.056000 0.232000 -0.968000
-0.000000 0.313300 -0.182900 -0.064000 0.304000 -0.944000
-0.050000 0.301200 -0.192400 0.024000 0.192000 -0.976000
-0.050000 0.327400 -0.182900 -0.016000 0.344000 -0.936000
-0.100000 0.301200 -0.188500 0.112000 0.128000 -0.984000
-0.100000 0.320500 -0.182900 0.096000 0.312000 -0.936000
-0.133500 0.301200 -0.182900 0.272000 0.264000 -0.920000
-0.133500 0.301200 -0.182900 0.272000 0.264000 -0.920000
-0.000000 -0.301200 -0.001900 0.408000 -0.704000 0.568000
-0.000000 -0.301200 -0.001900 0.408000 -0.704000 0.568000
-0.032200 -0.301200 -0.060900 0.552000 -0.696000 0.448000
-0.000000 -0.326800 -0.060900 0.344000 -0.824000 0.432000
-0.000000 -0.326800 -0.060900 0.344000 -0.824000 0.432000
-0.065700 0.351500 -0.060900 -0.064000 -0.312000 0.944000
-0.065700 0.351500 -0.060900 -0.064000 -0.312000 0.944000
-0.100000 0.368600 -0.060900 0.104000 0.120000 0.984000
-0.100000 0.351500 -0.058100 0.120000 -0.240000 0.960000
-0.111400 0.351500 -0.060900 0.184000 -0.224000 0.952000
-0.100000 0.345700 -0.060900 0.056000 -0.392000 0.912000
-0.100000 0.351500 -0.058100 0.120000 -0.240000 0.960000
-0.065700 0.351500 -0.060900 -0.064000 -0.312000 0.944000
-0.100000 0.345700 -0.060900 0.056000 -0.392000 0.912000
-0.050000 0.351500 -0.062500 0.000000 -0.264000 0.960000
-0.100000 0.301200 -0.081200 0.144000 -0.392000 0.904000
-0.050000 0.301200 -0.074400 0.160000 -0.248000 0.952000
-0.100000 0.251000 -0.119300 0.048000 -0.664000 0.736000
-0.050000 0.251000 -0.100200 0.224000 -0.464000 0.848000
-0.100000 0.248700 -0.121900 0.064000 -0.824000 0.552000
-0.050000 0.230600 -0.121900 0.312000 -0.824000 0.464000
-0.100000 0.246100 -0.182900 0.136000 -0.488000 -0.856000
-0.050000 0.219300 -0.182900 0.280000 -0.632000 -0.712000
-0.100000 0.251000 -0.185300 0.160000 -0.296000 -0.936000
-0.050000 0.251000 -0.200200 0.040000 -0.232000 -0.968000
-0.100000 0.301200 -0.188500 0.112000 0.128000 -0.984000
-0.050000 0.301200 -0.192400 0.024000 0.192000 -0.976000
-0.050000 0.251000 -0.200200 0.040000 -0.232000 -0.968000
-0.000000 0.301200 -0.186500 -0.056000 0.232000 -0.968000
-0.000000 0.251000 -0.201400 0.024000 -0.152000 -0.984000
--0.050000 0.301200 -0.184300 -0.112000 0.296000 -0.944000
--0.050000 0.251000 -0.205600 -0.136000 0.216000 -0.960000
--0.050000 0.251000 -0.205600 -0.136000 0.216000 -0.960000
-0.150000 0.456100 -0.060900 0.048000 0.664000 0.736000
-0.150000 0.456100 -0.060900 0.048000 0.664000 0.736000
-0.150000 0.451900 -0.057100 -0.080000 0.496000 0.856000
-0.121900 0.451900 -0.060900 -0.112000 0.472000 0.872000
-0.150000 0.409600 -0.060900 -0.208000 -0.072000 0.968000
-0.100000 0.451900 -0.066700 -0.192000 0.072000 0.976000
-0.150000 0.401700 -0.062100 -0.392000 -0.400000 0.816000
-0.100000 0.401700 -0.066700 -0.048000 0.000000 0.992000
-0.100000 0.451900 -0.066700 -0.192000 0.072000 0.976000
-0.050000 0.401700 -0.062500 -0.008000 0.136000 0.984000
-0.050000 0.451900 -0.077800 0.016000 0.408000 0.912000
-0.000000 0.401700 -0.062800 0.256000 0.176000 0.944000
-0.000000 0.451900 -0.081100 0.280000 0.456000 0.832000
--0.005200 0.401700 -0.060900 0.264000 0.168000 0.944000
--0.023600 0.451900 -0.060900 0.376000 0.152000 0.904000
-0.000000 0.451900 -0.081100 0.280000 0.456000 0.832000
--0.033200 0.502100 -0.060900 0.616000 0.496000 0.600000
-0.000000 0.493800 -0.121900 0.128000 0.960000 -0.232000
--0.050000 0.502100 -0.117100 -0.040000 0.912000 -0.392000
--0.050000 0.500300 -0.121900 -0.104000 0.896000 -0.424000
--0.100000 0.502100 -0.081300 -0.184000 0.840000 -0.488000
--0.100000 0.479800 -0.121900 -0.288000 0.584000 -0.752000
--0.100000 0.479800 -0.121900 -0.288000 0.584000 -0.752000
-0.350000 0.302200 -0.060900 -0.144000 -0.624000 0.760000
-0.350000 0.302200 -0.060900 -0.144000 -0.624000 0.760000
-0.300000 0.310700 -0.060900 -0.072000 -0.760000 0.640000
-0.350000 0.351500 -0.021800 0.032000 -0.048000 0.992000
-0.300000 0.351500 -0.009100 -0.016000 -0.144000 0.984000
-0.300000 0.351500 -0.009100 -0.016000 -0.144000 0.984000
-0.395100 0.251000 -0.060900 -0.344000 -0.184000 0.912000
-0.395100 0.251000 -0.060900 -0.344000 -0.184000 0.912000
-0.400000 0.251000 -0.058700 -0.328000 -0.176000 0.920000
-0.400000 0.242400 -0.060900 -0.352000 -0.192000 0.904000
-0.400000 0.242400 -0.060900 -0.352000 -0.192000 0.904000
-0.450000 0.401700 -0.038900 -0.120000 0.592000 0.784000
-0.450000 0.401700 -0.038900 -0.120000 0.592000 0.784000
-0.500000 0.401700 -0.057700 0.096000 0.864000 0.480000
-0.450000 0.414500 -0.060900 0.192000 0.928000 0.304000
-0.500000 0.403100 -0.060900 0.112000 0.944000 0.280000
-0.450000 0.422200 -0.121900 0.368000 0.832000 -0.392000
-0.500000 0.401700 -0.069300 0.168000 0.952000 -0.216000
-0.488600 0.401700 -0.121900 0.504000 0.776000 -0.368000
-0.450000 0.422200 -0.121900 0.368000 0.832000 -0.392000
-0.450000 0.401700 -0.160800 0.376000 0.656000 -0.640000
-0.450000 0.401700 -0.160800 0.376000 0.656000 -0.640000
-0.460500 0.150600 -0.060900 -0.624000 -0.512000 0.584000
-0.460500 0.150600 -0.060900 -0.624000 -0.512000 0.584000
-0.500000 0.150600 -0.020200 -0.704000 -0.472000 0.520000
-0.500000 0.107000 -0.060900 -0.608000 -0.480000 0.616000
-0.500000 0.107000 -0.060900 -0.608000 -0.480000 0.616000
-0.500000 0.000000 -0.045100 -0.376000 -0.208000 0.896000
-0.500000 0.000000 -0.045100 -0.376000 -0.208000 0.896000
-0.500000 0.050200 -0.057700 -0.560000 0.128000 0.816000
-0.478700 0.000000 -0.060900 -0.440000 -0.008000 0.888000
-0.495100 0.050200 -0.060900 -0.456000 0.136000 0.872000
-0.450000 0.000000 -0.073300 -0.344000 -0.088000 0.928000
-0.450000 0.050200 -0.077000 -0.360000 0.120000 0.920000
-0.400000 0.000000 -0.102200 -0.272000 0.176000 0.936000
-0.400000 0.050200 -0.114800 -0.552000 0.256000 0.784000
-0.351500 0.000000 -0.121900 -0.376000 0.528000 0.752000
-0.393200 0.050200 -0.121900 -0.648000 0.352000 0.664000
-0.350000 0.000000 -0.123200 -0.512000 0.592000 0.608000
-0.357200 0.050200 -0.182900 -0.736000 0.640000 0.184000
-0.350000 0.043300 -0.182900 -0.488000 0.704000 0.504000
-0.351400 0.050200 -0.243900 -0.480000 0.768000 -0.416000
-0.350000 0.049300 -0.243900 -0.512000 0.784000 -0.320000
-0.350000 0.043300 -0.182900 -0.488000 0.704000 0.504000
-0.300000 0.032100 -0.243900 -0.576000 0.680000 -0.432000
-0.300000 0.018000 -0.182900 -0.296000 0.768000 0.552000
-0.350000 0.043300 -0.182900 -0.488000 0.704000 0.504000
-0.300000 0.000000 -0.166100 -0.488000 0.464000 0.728000
-0.350000 0.000000 -0.123200 -0.512000 0.592000 0.608000
-0.300000 -0.050200 -0.130700 -0.504000 0.472000 0.720000
-0.350000 -0.001200 -0.121900 -0.472000 0.472000 0.736000
-0.307700 -0.050200 -0.121900 -0.592000 0.464000 0.648000
-0.350000 -0.050200 -0.093300 -0.312000 0.392000 0.856000
-0.300000 -0.060700 -0.121900 -0.512000 0.456000 0.720000
-0.350000 -0.100400 -0.081200 -0.280000 0.032000 0.952000
-0.300000 -0.100400 -0.098900 -0.360000 0.344000 0.856000
-0.350000 -0.150600 -0.101500 0.088000 -0.352000 0.928000
-0.300000 -0.150600 -0.090800 0.240000 -0.024000 0.968000
-0.350000 -0.182300 -0.121900 -0.032000 -0.520000 0.848000
-0.300000 -0.200800 -0.101500 0.424000 -0.216000 0.872000
-0.329200 -0.200800 -0.121900 0.376000 -0.264000 0.880000
-0.300000 -0.234400 -0.121900 0.104000 -0.472000 0.872000
-0.350000 -0.200800 -0.137500 0.248000 -0.232000 0.936000
-0.300000 -0.251000 -0.132800 -0.224000 -0.464000 0.856000
-0.350000 -0.234100 -0.121900 0.384000 0.224000 0.888000
-0.328900 -0.251000 -0.121900 -0.264000 -0.304000 0.912000
-0.350000 -0.251000 -0.114600 0.576000 -0.200000 0.784000
-0.350000 -0.260400 -0.121900 0.448000 -0.472000 0.752000
-0.354900 -0.251000 -0.121900 0.704000 -0.304000 0.632000
-0.350000 -0.251000 -0.114600 0.576000 -0.200000 0.784000
-0.350000 -0.234100 -0.121900 0.384000 0.224000 0.888000
-0.354900 -0.251000 -0.121900 0.704000 -0.304000 0.632000
-0.350000 -0.200800 -0.137500 0.248000 -0.232000 0.936000
-0.400000 -0.203000 -0.121900 -0.184000 -0.672000 0.712000
-0.391400 -0.200800 -0.121900 -0.176000 -0.648000 0.736000
-0.400000 -0.200800 -0.119100 -0.200000 -0.688000 0.688000
-0.350000 -0.182300 -0.121900 -0.032000 -0.520000 0.848000
-0.400000 -0.150600 -0.068400 -0.344000 -0.312000 0.880000
-0.350000 -0.150600 -0.101500 0.088000 -0.352000 0.928000
-0.400000 -0.100400 -0.080400 -0.024000 0.176000 0.976000
-0.350000 -0.100400 -0.081200 -0.280000 0.032000 0.952000
-0.400000 -0.050200 -0.089900 -0.128000 0.176000 0.968000
-0.350000 -0.050200 -0.093300 -0.312000 0.392000 0.856000
-0.400000 0.000000 -0.102200 -0.272000 0.176000 0.936000
-0.350000 -0.001200 -0.121900 -0.472000 0.472000 0.736000
-0.351500 0.000000 -0.121900 -0.376000 0.528000 0.752000
-0.350000 0.000000 -0.123200 -0.512000 0.592000 0.608000
-0.350000 0.000000 -0.123200 -0.512000 0.592000 0.608000
-0.478700 0.000000 -0.060900 -0.440000 -0.008000 0.888000
-0.478700 0.000000 -0.060900 -0.440000 -0.008000 0.888000
-0.500000 0.000000 -0.045100 -0.376000 -0.208000 0.896000
-0.500000 -0.026100 -0.060900 -0.336000 -0.328000 0.872000
-0.550000 0.000000 -0.046900 0.008000 -0.120000 0.992000
-0.550000 -0.046200 -0.060900 -0.104000 -0.168000 0.976000
-0.600000 0.000000 -0.044900 -0.016000 -0.720000 0.688000
-0.600000 -0.012300 -0.060900 0.104000 -0.576000 0.800000
-0.550000 -0.046200 -0.060900 -0.104000 -0.168000 0.976000
-0.600000 -0.050200 -0.088500 0.448000 -0.400000 0.792000
-0.550000 -0.050200 -0.061500 -0.064000 -0.152000 0.984000
-0.600000 -0.100400 -0.077400 0.584000 0.048000 0.800000
-0.550000 -0.100400 -0.076900 0.056000 0.056000 0.992000
-0.550000 -0.050200 -0.061500 -0.064000 -0.152000 0.984000
-0.500000 -0.100400 -0.086800 -0.048000 0.256000 0.960000
-0.500000 -0.050200 -0.068900 -0.136000 -0.144000 0.976000
-0.450000 -0.100400 -0.078400 -0.088000 0.200000 0.968000
-0.450000 -0.050200 -0.086300 -0.128000 -0.040000 0.984000
-0.400000 -0.100400 -0.080400 -0.024000 0.176000 0.976000
-0.400000 -0.050200 -0.089900 -0.128000 0.176000 0.968000
-0.450000 -0.050200 -0.086300 -0.128000 -0.040000 0.984000
-0.400000 0.000000 -0.102200 -0.272000 0.176000 0.936000
-0.450000 0.000000 -0.073300 -0.344000 -0.088000 0.928000
-0.450000 -0.050200 -0.086300 -0.128000 -0.040000 0.984000
-0.478700 0.000000 -0.060900 -0.440000 -0.008000 0.888000
-0.500000 -0.050200 -0.068900 -0.136000 -0.144000 0.976000
-0.500000 -0.026100 -0.060900 -0.336000 -0.328000 0.872000
-0.550000 -0.050200 -0.061500 -0.064000 -0.152000 0.984000
-0.550000 -0.046200 -0.060900 -0.104000 -0.168000 0.976000
-0.550000 -0.046200 -0.060900 -0.104000 -0.168000 0.976000
-0.500000 0.401700 -0.057700 0.096000 0.864000 0.480000
-0.500000 0.401700 -0.057700 0.096000 0.864000 0.480000
-0.500000 0.403100 -0.060900 0.112000 0.944000 0.280000
-0.517100 0.401700 -0.060900 0.080000 0.968000 0.224000
-0.500000 0.401700 -0.069300 0.168000 0.952000 -0.216000
-0.500000 0.401700 -0.069300 0.168000 0.952000 -0.216000
-0.500000 0.266900 0.000000 -0.760000 -0.040000 0.640000
-0.500000 0.266900 0.000000 -0.760000 -0.040000 0.640000
-0.500800 0.251000 0.000000 -0.792000 -0.016000 0.608000
-0.500000 0.251000 -0.000900 -0.496000 0.112000 0.856000
-0.500000 0.251000 -0.000900 -0.496000 0.112000 0.856000
-0.500000 0.050200 -0.057700 -0.560000 0.128000 0.816000
-0.500000 0.050200 -0.057700 -0.560000 0.128000 0.816000
-0.500000 0.000000 -0.045100 -0.376000 -0.208000 0.896000
-0.550000 0.050200 -0.037800 -0.320000 -0.688000 0.640000
-0.550000 0.000000 -0.046900 0.008000 -0.120000 0.992000
-0.600000 0.050200 -0.005300 -0.440000 -0.752000 0.480000
-0.600000 0.000000 -0.044900 -0.016000 -0.720000 0.688000
-0.600000 0.000000 -0.044900 -0.016000 -0.720000 0.688000
-0.550000 0.104000 0.000000 -0.664000 -0.568000 0.464000
-0.550000 0.104000 0.000000 -0.664000 -0.568000 0.464000
-0.553100 0.100400 0.000000 -0.664000 -0.576000 0.464000
-0.550000 0.100400 -0.005700 -0.672000 -0.576000 0.448000
-0.550000 0.100400 -0.005700 -0.672000 -0.576000 0.448000
-0.550000 -0.200800 -0.034900 0.016000 -0.040000 0.992000
-0.550000 -0.200800 -0.034900 0.016000 -0.040000 0.992000
-0.600000 -0.200800 -0.056500 0.336000 0.448000 0.816000
-0.550000 -0.159500 -0.060900 0.248000 0.472000 0.840000
-0.600000 -0.194800 -0.060900 0.352000 0.496000 0.784000
-0.550000 -0.150600 -0.067100 0.240000 0.480000 0.840000
-0.600000 -0.150600 -0.093600 0.304000 0.568000 0.752000
-0.600000 -0.194800 -0.060900 0.352000 0.496000 0.784000
-0.650000 -0.150600 -0.116200 0.720000 0.480000 0.488000
-0.608400 -0.200800 -0.060900 0.360000 0.488000 0.792000
-0.650000 -0.200800 -0.092600 0.656000 0.384000 0.640000
-0.650000 -0.242600 -0.060900 0.392000 0.384000 0.824000
-0.677400 -0.200800 -0.121900 0.528000 0.512000 0.672000
-0.657600 -0.251000 -0.060900 0.456000 -0.072000 0.880000
-0.700000 -0.217500 -0.121900 0.616000 0.552000 0.544000
-0.700000 -0.251000 -0.086700 0.608000 0.464000 0.632000
-0.719200 -0.251000 -0.121900 0.760000 0.456000 0.440000
-0.700000 -0.301200 -0.068800 0.336000 0.392000 0.848000
-0.750000 -0.297400 -0.121900 0.656000 0.584000 0.464000
-0.750000 -0.301200 -0.116500 0.704000 0.400000 0.568000
-0.752700 -0.301200 -0.121900 0.792000 0.344000 0.488000
-0.750000 -0.351500 -0.097900 0.640000 0.048000 0.760000
-0.775700 -0.351500 -0.121900 0.600000 0.328000 0.720000
-0.750000 -0.401700 -0.115900 -0.264000 -0.344000 0.896000
-0.800000 -0.391100 -0.121900 0.384000 0.416000 0.816000
-0.800000 -0.401700 -0.115500 0.392000 0.184000 0.896000
-0.810500 -0.401700 -0.121900 0.456000 0.104000 0.872000
-0.800000 -0.418600 -0.121900 0.304000 -0.320000 0.888000
-0.850000 -0.401700 -0.151500 0.608000 0.552000 0.560000
-0.800000 -0.451900 -0.135400 0.168000 -0.384000 0.904000
-0.850000 -0.451900 -0.123600 0.328000 0.296000 0.888000
-0.800000 -0.502100 -0.171200 -0.360000 -0.648000 0.664000
-0.850000 -0.502100 -0.142100 -0.224000 -0.520000 0.816000
-0.800000 -0.511100 -0.182900 -0.376000 -0.744000 0.544000
-0.850000 -0.533300 -0.182900 -0.416000 -0.736000 0.528000
-0.800000 -0.519900 -0.243900 -0.400000 -0.904000 -0.112000
-0.850000 -0.540400 -0.243900 -0.360000 -0.768000 -0.512000
-0.800000 -0.502100 -0.293400 -0.120000 -0.840000 -0.520000
-0.850000 -0.504700 -0.304800 -0.096000 -0.664000 -0.736000
-0.832800 -0.502100 -0.304800 -0.104000 -0.544000 -0.824000
-0.850000 -0.502100 -0.307100 0.032000 -0.240000 -0.968000
-0.850000 -0.490600 -0.304800 0.216000 0.112000 -0.968000
-0.856800 -0.502100 -0.304800 0.288000 0.144000 -0.944000
-0.850000 -0.451900 -0.293100 0.448000 0.248000 -0.848000
-0.900000 -0.502100 -0.284600 -0.008000 -0.096000 -0.992000
-0.900000 -0.451900 -0.272400 0.368000 0.408000 -0.824000
-0.950000 -0.502100 -0.277800 0.272000 0.288000 -0.912000
-0.950000 -0.451900 -0.300000 0.488000 0.464000 -0.728000
-1.000000 -0.502100 -0.271100 0.392000 0.584000 -0.696000
-0.980700 -0.451900 -0.243900 0.752000 0.648000 0.032000
-1.000000 -0.475100 -0.243900 0.736000 0.608000 -0.280000
-0.950000 -0.451900 -0.206400 0.504000 0.736000 0.440000
-1.000000 -0.502100 -0.189300 0.760000 0.568000 0.296000
-0.950000 -0.463500 -0.182900 0.464000 0.672000 0.568000
-0.998000 -0.502100 -0.182900 0.528000 0.664000 0.520000
-0.950000 -0.502100 -0.136000 -0.296000 0.400000 0.864000
-1.000000 -0.503200 -0.182900 0.400000 0.704000 0.576000
-0.950000 -0.531200 -0.121900 -0.376000 0.368000 0.840000
-1.000000 -0.544400 -0.121900 0.360000 0.712000 0.592000
-0.950000 -0.552300 -0.115100 -0.432000 -0.368000 0.816000
-1.000000 -0.552300 -0.111000 0.040000 -0.024000 0.992000
-0.950000 -0.560000 -0.121900 -0.400000 -0.536000 0.728000
-1.000000 -0.602500 -0.115100 -0.504000 -0.464000 0.712000
-0.992300 -0.602500 -0.121900 -0.520000 -0.480000 0.696000
-1.000000 -0.611000 -0.121900 -0.528000 -0.480000 0.696000
-0.950000 -0.602500 -0.169200 -0.536000 -0.520000 0.656000
-1.000000 -0.652700 -0.168000 -0.488000 -0.568000 0.656000
-0.950000 -0.619400 -0.182900 -0.632000 -0.592000 0.480000
-0.983200 -0.652700 -0.182900 -0.528000 -0.608000 0.584000
-0.950000 -0.619400 -0.243900 -0.600000 -0.584000 -0.536000
-0.979500 -0.652700 -0.243900 -0.672000 -0.664000 -0.304000
-0.950000 -0.602500 -0.260200 -0.544000 -0.504000 -0.664000
-1.000000 -0.652700 -0.268800 -0.592000 -0.512000 -0.608000
-0.990600 -0.602500 -0.304800 -0.488000 -0.376000 -0.784000
-1.000000 -0.614600 -0.304800 -0.488000 -0.376000 -0.776000
-1.000000 -0.602500 -0.311200 -0.448000 -0.336000 -0.816000
-0.990600 -0.602500 -0.304800 -0.488000 -0.376000 -0.784000
-1.000000 -0.552300 -0.319800 -0.248000 0.216000 -0.936000
-0.953900 -0.552300 -0.304800 -0.328000 0.312000 -0.888000
-1.000000 -0.525900 -0.304800 -0.248000 0.496000 -0.824000
-0.950000 -0.552300 -0.303200 -0.304000 0.392000 -0.864000
-1.000000 -0.502100 -0.271100 0.392000 0.584000 -0.696000
-0.950000 -0.502100 -0.277800 0.272000 0.288000 -0.912000
-0.950000 -0.552300 -0.303200 -0.304000 0.392000 -0.864000
-0.900000 -0.502100 -0.284600 -0.008000 -0.096000 -0.992000
-0.900000 -0.552300 -0.278500 -0.424000 -0.592000 -0.672000
-0.856800 -0.502100 -0.304800 0.288000 0.144000 -0.944000
-0.868400 -0.552300 -0.243900 -0.552000 -0.760000 -0.328000
-0.850000 -0.504700 -0.304800 -0.096000 -0.664000 -0.736000
-0.850000 -0.540400 -0.243900 -0.360000 -0.768000 -0.512000
-0.868400 -0.552300 -0.243900 -0.552000 -0.760000 -0.328000
-0.850000 -0.533300 -0.182900 -0.416000 -0.736000 0.528000
-0.876500 -0.552300 -0.182900 -0.528000 -0.672000 0.504000
-0.850000 -0.502100 -0.142100 -0.224000 -0.520000 0.816000
-0.900000 -0.552300 -0.159100 -0.496000 -0.592000 0.632000
-0.900000 -0.502100 -0.123800 -0.168000 -0.208000 0.960000
-0.940600 -0.552300 -0.121900 -0.512000 -0.272000 0.808000
-0.950000 -0.502100 -0.136000 -0.296000 0.400000 0.864000
-0.950000 -0.531200 -0.121900 -0.376000 0.368000 0.840000
-0.940600 -0.552300 -0.121900 -0.512000 -0.272000 0.808000
-0.950000 -0.552300 -0.115100 -0.432000 -0.368000 0.816000
-0.950000 -0.560000 -0.121900 -0.400000 -0.536000 0.728000
-0.940600 -0.552300 -0.121900 -0.512000 -0.272000 0.808000
-0.950000 -0.602500 -0.169200 -0.536000 -0.520000 0.656000
-0.900000 -0.552300 -0.159100 -0.496000 -0.592000 0.632000
-0.935000 -0.602500 -0.182900 -0.552000 -0.552000 0.608000
-0.900000 -0.573700 -0.182900 -0.608000 -0.704000 0.344000
-0.933200 -0.602500 -0.243900 -0.584000 -0.624000 -0.512000
-0.900000 -0.578300 -0.243900 -0.552000 -0.704000 -0.440000
-0.950000 -0.602500 -0.260200 -0.544000 -0.504000 -0.664000
-0.900000 -0.552300 -0.278500 -0.424000 -0.592000 -0.672000
-0.950000 -0.552300 -0.303200 -0.304000 0.392000 -0.864000
-0.950000 -0.602500 -0.260200 -0.544000 -0.504000 -0.664000
-0.953900 -0.552300 -0.304800 -0.328000 0.312000 -0.888000
-0.990600 -0.602500 -0.304800 -0.488000 -0.376000 -0.784000
-0.990600 -0.602500 -0.304800 -0.488000 -0.376000 -0.784000
-0.550000 -0.242100 -0.060900 -0.400000 -0.536000 0.736000
-0.550000 -0.242100 -0.060900 -0.400000 -0.536000 0.736000
-0.550000 -0.200800 -0.034900 0.016000 -0.040000 0.992000
-0.562800 -0.251000 -0.060900 -0.368000 -0.568000 0.720000
-0.600000 -0.200800 -0.056500 0.336000 0.448000 0.816000
-0.600000 -0.251000 -0.042400 -0.104000 -0.208000 0.968000
-0.608400 -0.200800 -0.060900 0.360000 0.488000 0.792000
-0.650000 -0.251000 -0.056300 0.424000 -0.024000 0.896000
-0.650000 -0.242600 -0.060900 0.392000 0.384000 0.824000
-0.657600 -0.251000 -0.060900 0.456000 -0.072000 0.880000
-0.650000 -0.251000 -0.056300 0.424000 -0.024000 0.896000
-0.650000 -0.258100 -0.060900 0.392000 -0.456000 0.792000
-0.600000 -0.251000 -0.042400 -0.104000 -0.208000 0.968000
-0.600000 -0.272000 -0.060900 -0.264000 -0.632000 0.720000
-0.562800 -0.251000 -0.060900 -0.368000 -0.568000 0.720000
-0.600000 -0.301200 -0.098800 -0.176000 -0.576000 0.792000
-0.550000 -0.251000 -0.069700 -0.416000 -0.584000 0.688000
-0.552600 -0.301200 -0.121900 -0.368000 -0.384000 0.840000
-0.550000 -0.300100 -0.121900 -0.624000 -0.616000 0.472000
-0.550000 -0.301200 -0.123600 -0.624000 -0.440000 0.632000
-0.552600 -0.301200 -0.121900 -0.368000 -0.384000 0.840000
-0.550000 -0.317100 -0.121900 -0.368000 0.064000 0.920000
-0.600000 -0.333000 -0.121900 0.024000 -0.312000 0.944000
-0.558500 -0.351500 -0.121900 0.208000 -0.648000 0.728000
-0.600000 -0.351500 -0.136300 0.144000 -0.792000 0.584000
-0.550000 -0.353000 -0.121900 -0.032000 -0.832000 0.536000
-0.600000 -0.392700 -0.182900 -0.184000 -0.752000 0.624000
-0.550000 -0.389500 -0.182900 -0.304000 -0.784000 0.528000
-0.600000 -0.401700 -0.203000 -0.208000 -0.872000 0.432000
-0.550000 -0.401700 -0.218900 -0.128000 -0.904000 0.392000
-0.600000 -0.414700 -0.243900 -0.184000 -0.936000 0.272000
-0.550000 -0.409700 -0.243900 -0.144000 -0.944000 0.272000
-0.600000 -0.422100 -0.304800 -0.120000 -0.768000 -0.616000
-0.550000 -0.415900 -0.304800 -0.192000 -0.848000 -0.480000
-0.600000 -0.401700 -0.327900 -0.024000 -0.544000 -0.832000
-0.550000 -0.401700 -0.333700 -0.144000 -0.688000 -0.704000
-0.600000 -0.351500 -0.337900 0.040000 -0.080000 -0.992000
-0.550000 -0.351500 -0.364500 0.120000 -0.104000 -0.984000
-0.600000 -0.301200 -0.352300 -0.528000 -0.312000 -0.776000
-0.550000 -0.316300 -0.304800 -0.472000 0.688000 -0.536000
-0.567500 -0.301200 -0.304800 -0.696000 0.400000 -0.584000
-0.550000 -0.301200 -0.279200 -0.712000 0.120000 -0.680000
-0.550000 -0.272400 -0.304800 -0.680000 -0.440000 -0.576000
-0.550000 -0.272400 -0.304800 -0.680000 -0.440000 -0.576000
-0.616700 0.401700 0.000000 0.496000 0.864000 -0.032000
-0.616700 0.401700 0.000000 0.496000 0.864000 -0.032000
-0.650000 0.368200 0.000000 0.792000 0.584000 -0.144000
-0.600000 0.401700 -0.057700 0.168000 0.920000 -0.344000
-0.650000 0.351500 -0.057700 0.800000 0.552000 -0.208000
-0.600000 0.400600 -0.060900 -0.072000 0.912000 -0.384000
-0.648900 0.351500 -0.060900 0.576000 0.600000 -0.544000
-0.600000 0.351500 -0.101600 0.448000 0.496000 -0.736000
-0.650000 0.350500 -0.060900 0.712000 0.536000 -0.440000
-0.600000 0.310600 -0.121900 0.480000 0.424000 -0.760000
-0.650000 0.301200 -0.100800 0.528000 0.504000 -0.672000
-0.608400 0.301200 -0.121900 0.448000 0.488000 -0.744000
-0.600000 0.310600 -0.121900 0.480000 0.424000 -0.760000
-0.600000 0.301200 -0.128700 0.472000 0.520000 -0.704000
-0.600000 0.301200 -0.128700 0.472000 0.520000 -0.704000
-0.648900 0.351500 -0.060900 0.576000 0.600000 -0.544000
-0.648900 0.351500 -0.060900 0.576000 0.600000 -0.544000
-0.650000 0.350500 -0.060900 0.712000 0.536000 -0.440000
-0.650000 0.351500 -0.057700 0.800000 0.552000 -0.208000
-0.680100 0.301200 -0.060900 0.752000 0.544000 -0.368000
-0.660900 0.351500 0.000000 0.832000 0.512000 -0.176000
-0.685300 0.301200 0.000000 0.832000 0.536000 -0.104000
-0.680100 0.301200 -0.060900 0.752000 0.544000 -0.368000
-0.700000 0.279600 0.000000 0.792000 0.600000 -0.048000
-0.700000 0.278700 -0.060900 0.648000 0.584000 -0.472000
-0.700000 0.278700 -0.060900 0.648000 0.584000 -0.472000
-0.600000 -0.194800 -0.060900 0.352000 0.496000 0.784000
-0.600000 -0.194800 -0.060900 0.352000 0.496000 0.784000
-0.608400 -0.200800 -0.060900 0.360000 0.488000 0.792000
-0.600000 -0.200800 -0.056500 0.336000 0.448000 0.816000
-0.600000 -0.200800 -0.056500 0.336000 0.448000 0.816000
-0.650000 0.368200 0.000000 0.792000 0.584000 -0.144000
-0.650000 0.368200 0.000000 0.792000 0.584000 -0.144000
-0.650000 0.351500 -0.057700 0.800000 0.552000 -0.208000
-0.660900 0.351500 0.000000 0.832000 0.512000 -0.176000
-0.660900 0.351500 0.000000 0.832000 0.512000 -0.176000
-0.650000 0.000000 -0.040500 0.104000 -0.944000 0.296000
-0.650000 0.000000 -0.040500 0.104000 -0.944000 0.296000
-0.686800 0.000000 -0.060900 0.208000 -0.960000 0.144000
-0.650000 -0.010200 -0.060900 0.168000 -0.784000 0.592000
-0.698200 0.000000 -0.121900 0.296000 -0.952000 0.032000
-0.650000 -0.033500 -0.121900 0.512000 -0.672000 0.520000
-0.687300 0.000000 -0.182900 0.648000 -0.600000 -0.456000
-0.650000 -0.048900 -0.182900 0.792000 -0.584000 0.152000
-0.653800 0.000000 -0.243900 0.576000 -0.112000 -0.808000
-0.650000 -0.016900 -0.243900 0.704000 -0.184000 -0.672000
-0.650000 -0.048900 -0.182900 0.792000 -0.584000 0.152000
-0.637200 -0.050200 -0.243900 0.840000 -0.080000 -0.528000
-0.649100 -0.050200 -0.182900 0.816000 -0.544000 0.144000
-0.650000 -0.048900 -0.182900 0.792000 -0.584000 0.152000
-0.638000 -0.050200 -0.121900 0.800000 -0.536000 0.256000
-0.650000 -0.033500 -0.121900 0.512000 -0.672000 0.520000
-0.650000 -0.033500 -0.121900 0.512000 -0.672000 0.520000
-0.800000 -0.015400 0.000000 -0.560000 -0.800000 0.184000
-0.800000 -0.015400 0.000000 -0.560000 -0.800000 0.184000
-0.772100 0.000000 0.000000 -0.504000 -0.832000 0.224000
-0.800000 -0.024700 -0.060900 -0.616000 -0.776000 0.088000
-0.753100 0.000000 -0.060900 -0.472000 -0.872000 0.000000
-0.800000 -0.027900 -0.121900 -0.664000 -0.736000 -0.072000
-0.756600 0.000000 -0.121900 -0.496000 -0.856000 -0.080000
-0.800000 -0.017800 -0.182900 -0.616000 -0.680000 -0.376000
-0.776700 0.000000 -0.182900 -0.576000 -0.728000 -0.360000
-0.800000 0.000000 -0.217200 -0.656000 -0.464000 -0.584000
-0.800000 0.000000 -0.217200 -0.656000 -0.464000 -0.584000
-0.900000 0.131100 0.000000 0.480000 0.848000 0.192000
-0.900000 0.131100 0.000000 0.480000 0.848000 0.192000
-0.950000 0.102000 0.000000 0.472000 0.864000 0.120000
-0.900000 0.143500 -0.060900 0.528000 0.808000 -0.240000
-0.950000 0.106300 -0.060900 0.576000 0.776000 -0.240000
-0.900000 0.127900 -0.121900 0.560000 0.776000 -0.264000
-0.950000 0.100400 -0.078300 0.560000 0.768000 -0.304000
-0.931600 0.100400 -0.121900 0.600000 0.744000 -0.272000
-0.950000 0.086300 -0.121900 0.544000 0.784000 -0.280000
-0.912000 0.100400 -0.182900 0.600000 0.704000 -0.360000
-0.950000 0.069900 -0.182900 0.544000 0.736000 -0.392000
-0.900000 0.100400 -0.203200 0.536000 0.688000 -0.472000
-0.950000 0.050200 -0.224500 0.472000 0.712000 -0.504000
-0.900000 0.070800 -0.243900 -0.096000 0.744000 -0.656000
-0.929600 0.050200 -0.243900 0.432000 0.672000 -0.584000
-0.900000 0.050200 -0.268900 0.208000 0.672000 -0.696000
-0.950000 0.037500 -0.243900 0.432000 0.688000 -0.576000
-0.900000 0.016700 -0.304800 -0.152000 0.720000 -0.664000
-0.950000 0.000000 -0.291100 0.424000 0.536000 -0.720000
-0.927400 0.000000 -0.304800 0.400000 0.560000 -0.720000
-0.950000 -0.016600 -0.304800 0.448000 0.520000 -0.720000
-0.900000 0.000000 -0.329500 -0.080000 0.648000 -0.744000
-0.950000 -0.050200 -0.338500 0.440000 0.400000 -0.800000
-0.900000 -0.050200 -0.348300 -0.256000 0.192000 -0.944000
-0.950000 -0.100400 -0.351000 0.336000 0.064000 -0.936000
-0.900000 -0.100400 -0.341700 -0.464000 -0.104000 -0.872000
-0.950000 -0.150600 -0.345500 -0.032000 0.064000 -0.992000
-0.900000 -0.150600 -0.332000 -0.672000 -0.328000 -0.656000
-0.900000 -0.150600 -0.332000 -0.672000 -0.328000 -0.656000
-0.995800 -0.200800 0.000000 -0.648000 -0.704000 0.264000
-0.995800 -0.200800 0.000000 -0.648000 -0.704000 0.264000
-0.950000 -0.168100 0.000000 -0.640000 -0.744000 0.184000
-0.973000 -0.200800 -0.060900 -0.584000 -0.760000 0.264000
-0.950000 -0.183700 -0.060900 -0.632000 -0.728000 0.232000
-0.950500 -0.200800 -0.121900 -0.632000 -0.744000 0.192000
-0.950000 -0.200400 -0.121900 -0.720000 -0.672000 0.136000
-0.950000 -0.200800 -0.124000 -0.680000 -0.712000 0.160000
-0.950000 -0.200800 -0.124000 -0.680000 -0.712000 0.160000
--0.910500 0.251000 -0.121900 0.344000 0.880000 -0.304000
--0.910500 0.251000 -0.121900 0.344000 0.880000 -0.304000
--0.900000 0.246900 -0.121900 0.360000 0.872000 -0.304000
--0.900000 0.251000 -0.101700 0.376000 0.896000 -0.216000
--0.900000 0.251000 -0.101700 0.376000 0.896000 -0.216000
--0.900000 -0.502100 -0.104000 -0.752000 0.000000 0.656000
--0.900000 -0.502100 -0.104000 -0.752000 0.000000 0.656000
--0.900000 -0.511500 -0.121900 -0.520000 -0.664000 0.528000
--0.906100 -0.502100 -0.121900 -0.920000 0.072000 0.376000
--0.900000 -0.542100 -0.182900 -0.808000 -0.560000 0.136000
--0.925200 -0.502100 -0.182900 -0.976000 -0.008000 0.208000
--0.900000 -0.551700 -0.243900 -0.808000 -0.568000 -0.120000
--0.929300 -0.502100 -0.243900 -0.992000 0.064000 -0.008000
--0.900000 -0.539600 -0.304800 -0.720000 -0.488000 -0.480000
--0.920600 -0.502100 -0.304800 -0.888000 -0.288000 -0.344000
--0.900000 -0.502100 -0.352600 -0.672000 0.128000 -0.720000
--0.900000 -0.539600 -0.304800 -0.720000 -0.488000 -0.480000
--0.864000 -0.502100 -0.365800 -0.304000 0.480000 -0.816000
--0.891900 -0.552300 -0.304800 -0.800000 -0.568000 -0.136000
--0.860100 -0.552300 -0.365800 -0.680000 -0.432000 -0.584000
--0.850000 -0.602000 -0.304800 -0.640000 -0.736000 -0.184000
--0.850000 -0.564700 -0.365800 -0.608000 -0.528000 -0.584000
--0.849200 -0.602500 -0.304800 -0.536000 -0.720000 -0.432000
--0.806700 -0.602500 -0.365800 -0.520000 -0.656000 -0.536000
--0.800000 -0.636000 -0.304800 -0.536000 -0.792000 -0.272000
--0.800000 -0.607700 -0.365800 -0.488000 -0.640000 -0.584000
--0.750000 -0.652200 -0.304800 -0.040000 -0.952000 -0.288000
--0.750000 -0.628000 -0.365800 -0.232000 -0.808000 -0.528000
--0.734200 -0.652700 -0.304800 -0.024000 -0.976000 -0.192000
--0.700000 -0.639000 -0.365800 -0.040000 -0.920000 -0.376000
--0.700000 -0.652700 -0.309000 0.024000 -0.952000 -0.296000
--0.650000 -0.641900 -0.365800 -0.024000 -0.952000 -0.280000
--0.688500 -0.652700 -0.304800 0.080000 -0.992000 -0.064000
--0.650000 -0.650400 -0.304800 0.048000 -0.992000 0.096000
--0.700000 -0.652700 -0.298900 0.056000 -0.976000 0.184000
--0.650000 -0.641500 -0.243900 0.040000 -0.976000 0.168000
--0.700000 -0.645500 -0.243900 -0.008000 -0.984000 0.160000
--0.650000 -0.630900 -0.182900 0.008000 -0.968000 0.232000
--0.700000 -0.633400 -0.182900 -0.064000 -0.960000 0.248000
--0.650000 -0.615500 -0.121900 -0.008000 -0.952000 0.304000
--0.700000 -0.614700 -0.121900 -0.136000 -0.888000 0.424000
--0.650000 -0.602500 -0.069700 -0.072000 -0.800000 0.584000
--0.700000 -0.602500 -0.083600 -0.192000 -0.680000 0.704000
--0.650000 -0.594800 -0.060900 -0.368000 -0.640000 0.664000
--0.700000 -0.552300 -0.082500 -0.736000 -0.280000 0.608000
--0.685200 -0.552300 -0.060900 -0.696000 -0.384000 0.592000
--0.700000 -0.507800 -0.060900 -0.864000 -0.200000 0.448000
--0.700000 -0.507800 -0.060900 -0.864000 -0.200000 0.448000
--0.868200 -0.552300 -0.121900 -0.520000 -0.224000 0.816000
--0.868200 -0.552300 -0.121900 -0.520000 -0.224000 0.816000
--0.850000 -0.552300 -0.082300 -0.704000 -0.480000 0.504000
--0.850000 -0.569100 -0.121900 -0.488000 -0.776000 0.384000
--0.800000 -0.552300 -0.095900 0.424000 0.264000 0.864000
--0.800000 -0.584500 -0.121900 -0.288000 -0.544000 0.776000
--0.750000 -0.552300 -0.119400 0.072000 0.512000 0.848000
--0.764000 -0.602500 -0.121900 -0.176000 -0.816000 0.544000
--0.750000 -0.602500 -0.116200 -0.176000 -0.808000 0.544000
--0.750000 -0.605000 -0.121900 -0.152000 -0.872000 0.456000
--0.700000 -0.602500 -0.083600 -0.192000 -0.680000 0.704000
--0.700000 -0.614700 -0.121900 -0.136000 -0.888000 0.424000
--0.750000 -0.605000 -0.121900 -0.152000 -0.872000 0.456000
--0.700000 -0.633400 -0.182900 -0.064000 -0.960000 0.248000
--0.750000 -0.630100 -0.182900 -0.144000 -0.912000 0.360000
--0.700000 -0.645500 -0.243900 -0.008000 -0.984000 0.160000
--0.750000 -0.646000 -0.243900 -0.088000 -0.984000 0.144000
--0.700000 -0.652700 -0.298900 0.056000 -0.976000 0.184000
--0.750000 -0.652200 -0.304800 -0.040000 -0.952000 -0.288000
--0.734200 -0.652700 -0.304800 -0.024000 -0.976000 -0.192000
--0.700000 -0.652700 -0.298900 0.056000 -0.976000 0.184000
--0.700000 -0.653800 -0.304800 0.056000 -0.992000 -0.080000
--0.688500 -0.652700 -0.304800 0.080000 -0.992000 -0.064000
--0.700000 -0.652700 -0.309000 0.024000 -0.952000 -0.296000
--0.700000 -0.653800 -0.304800 0.056000 -0.992000 -0.080000
--0.734200 -0.652700 -0.304800 -0.024000 -0.976000 -0.192000
--0.734200 -0.652700 -0.304800 -0.024000 -0.976000 -0.192000
--0.804300 0.200800 -0.121900 0.384000 0.872000 -0.288000
--0.804300 0.200800 -0.121900 0.384000 0.872000 -0.288000
--0.800000 0.198900 -0.121900 0.384000 0.872000 -0.288000
--0.800000 0.200800 -0.113900 0.392000 0.880000 -0.256000
--0.800000 0.200800 -0.113900 0.392000 0.880000 -0.256000
--0.762700 -0.401700 -0.060900 -0.840000 -0.496000 0.168000
--0.762700 -0.401700 -0.060900 -0.840000 -0.496000 0.168000
--0.771000 -0.401700 -0.121900 -0.872000 -0.456000 0.128000
--0.750000 -0.426100 -0.060900 -0.864000 -0.448000 0.200000
--0.750000 -0.448400 -0.121900 -0.880000 -0.432000 0.160000
--0.735400 -0.451900 -0.060900 -0.768000 -0.512000 0.360000
--0.748200 -0.451900 -0.121900 -0.880000 -0.440000 0.160000
--0.701200 -0.502100 -0.060900 -0.816000 -0.416000 0.392000
--0.723300 -0.502100 -0.121900 -0.896000 -0.224000 0.368000
--0.748200 -0.451900 -0.121900 -0.880000 -0.440000 0.160000
--0.749300 -0.502100 -0.182900 -0.920000 -0.232000 0.288000
--0.750000 -0.451900 -0.133400 -0.896000 -0.392000 0.184000
--0.750000 -0.499500 -0.182900 -0.936000 -0.200000 0.264000
--0.757600 -0.451900 -0.182900 -0.952000 -0.232000 0.184000
--0.750000 -0.502100 -0.184800 -0.496000 0.696000 0.496000
--0.769800 -0.451900 -0.243900 -0.952000 -0.080000 0.272000
--0.800000 -0.502100 -0.227500 0.432000 0.824000 0.352000
--0.800000 -0.496000 -0.243900 0.424000 0.840000 0.320000
--0.820300 -0.502100 -0.182900 0.496000 0.792000 0.344000
--0.850000 -0.480800 -0.243900 0.376000 0.912000 0.152000
--0.850000 -0.490700 -0.182900 0.328000 0.896000 0.288000
--0.896800 -0.451900 -0.243900 0.600000 0.776000 0.136000
--0.900000 -0.462200 -0.182900 0.320000 0.888000 0.304000
--0.900000 -0.451900 -0.229200 0.512000 0.832000 0.168000
--0.896800 -0.451900 -0.243900 0.600000 0.776000 0.136000
--0.900000 -0.449600 -0.243900 0.496000 0.856000 0.136000
--0.891000 -0.451900 -0.304800 0.528000 0.824000 -0.192000
--0.900000 -0.446300 -0.304800 0.160000 0.912000 -0.360000
--0.900000 -0.451900 -0.318500 0.104000 0.872000 -0.464000
--0.912200 -0.451900 -0.304800 -0.496000 0.720000 -0.464000
--0.900000 -0.446300 -0.304800 0.160000 0.912000 -0.360000
--0.921000 -0.451900 -0.243900 -0.184000 0.968000 0.160000
--0.900000 -0.449600 -0.243900 0.496000 0.856000 0.136000
--0.900000 -0.451900 -0.229200 0.512000 0.832000 0.168000
--0.900000 -0.451900 -0.229200 0.512000 0.832000 0.168000
--0.700000 -0.602500 -0.083600 -0.192000 -0.680000 0.704000
--0.700000 -0.602500 -0.083600 -0.192000 -0.680000 0.704000
--0.750000 -0.602500 -0.116200 -0.176000 -0.808000 0.544000
--0.700000 -0.552300 -0.082500 -0.736000 -0.280000 0.608000
--0.750000 -0.552300 -0.119400 0.072000 0.512000 0.848000
--0.750000 -0.552300 -0.119400 0.072000 0.512000 0.848000
--0.650000 -0.594800 -0.060900 -0.368000 -0.640000 0.664000
--0.650000 -0.594800 -0.060900 -0.368000 -0.640000 0.664000
--0.650000 -0.602500 -0.069700 -0.072000 -0.800000 0.584000
--0.600000 -0.601900 -0.060900 -0.072000 -0.808000 0.568000
--0.600000 -0.602500 -0.062100 -0.056000 -0.816000 0.560000
--0.550000 -0.588500 -0.060900 0.224000 -0.888000 0.384000
--0.550000 -0.602500 -0.100200 0.256000 -0.912000 0.288000
--0.500000 -0.570000 -0.060900 0.480000 -0.800000 0.328000
--0.531000 -0.602500 -0.121900 0.248000 -0.920000 0.272000
--0.500000 -0.589900 -0.121900 0.408000 -0.832000 0.352000
--0.500000 -0.602500 -0.155300 0.000000 -0.920000 0.376000
--0.531000 -0.602500 -0.121900 0.248000 -0.920000 0.272000
--0.500000 -0.610400 -0.182900 -0.136000 -0.936000 0.304000
--0.550000 -0.606400 -0.121900 0.192000 -0.952000 0.216000
--0.550000 -0.618800 -0.182900 0.168000 -0.944000 0.272000
--0.600000 -0.616000 -0.121900 0.080000 -0.960000 0.256000
--0.600000 -0.629300 -0.182900 0.072000 -0.968000 0.224000
--0.650000 -0.615500 -0.121900 -0.008000 -0.952000 0.304000
--0.650000 -0.630900 -0.182900 0.008000 -0.968000 0.232000
--0.600000 -0.629300 -0.182900 0.072000 -0.968000 0.224000
--0.650000 -0.641500 -0.243900 0.040000 -0.976000 0.168000
--0.600000 -0.640700 -0.243900 0.080000 -0.976000 0.192000
--0.650000 -0.650400 -0.304800 0.048000 -0.992000 0.096000
--0.600000 -0.650800 -0.304800 0.064000 -0.992000 0.000000
--0.650000 -0.641900 -0.365800 -0.024000 -0.952000 -0.280000
--0.600000 -0.645500 -0.365800 0.016000 -0.968000 -0.216000
--0.650000 -0.621300 -0.426800 -0.080000 -0.904000 -0.400000
--0.600000 -0.630300 -0.426800 -0.072000 -0.944000 -0.312000
--0.600000 -0.645500 -0.365800 0.016000 -0.968000 -0.216000
--0.550000 -0.626200 -0.426800 0.144000 -0.960000 -0.232000
--0.550000 -0.637200 -0.365800 0.152000 -0.968000 -0.168000
--0.500000 -0.621400 -0.426800 0.072000 -0.968000 -0.232000
--0.500000 -0.633000 -0.365800 -0.088000 -0.968000 -0.200000
--0.450000 -0.629300 -0.426800 -0.048000 -0.904000 -0.416000
--0.450000 -0.645700 -0.365800 -0.144000 -0.904000 -0.392000
--0.400000 -0.621700 -0.426800 0.392000 -0.856000 -0.304000
--0.405700 -0.652700 -0.365800 -0.144000 -0.920000 -0.344000
--0.400000 -0.652700 -0.368100 -0.128000 -0.872000 -0.456000
--0.400000 -0.652700 -0.368100 -0.128000 -0.872000 -0.456000
--0.650000 -0.602500 -0.069700 -0.072000 -0.800000 0.584000
--0.650000 -0.602500 -0.069700 -0.072000 -0.800000 0.584000
--0.650000 -0.615500 -0.121900 -0.008000 -0.952000 0.304000
--0.600000 -0.602500 -0.062100 -0.056000 -0.816000 0.560000
--0.600000 -0.616000 -0.121900 0.080000 -0.960000 0.256000
--0.550000 -0.602500 -0.100200 0.256000 -0.912000 0.288000
--0.550000 -0.606400 -0.121900 0.192000 -0.952000 0.216000
--0.531000 -0.602500 -0.121900 0.248000 -0.920000 0.272000
--0.531000 -0.602500 -0.121900 0.248000 -0.920000 0.272000
--0.554400 -0.050200 -0.060900 0.944000 0.280000 0.128000
--0.554400 -0.050200 -0.060900 0.944000 0.280000 0.128000
--0.586600 -0.050200 -0.121900 0.872000 0.224000 -0.424000
--0.550000 -0.066800 -0.060900 0.944000 0.320000 -0.008000
--0.578300 -0.100400 -0.121900 0.848000 0.312000 -0.424000
--0.550000 -0.100400 -0.079500 0.552000 0.552000 -0.616000
--0.550000 -0.145600 -0.121900 0.512000 0.792000 -0.312000
--0.578300 -0.100400 -0.121900 0.848000 0.312000 -0.424000
--0.550000 -0.150600 -0.142400 0.376000 0.896000 -0.200000
--0.594100 -0.100400 -0.182900 0.816000 0.296000 -0.480000
--0.561800 -0.150600 -0.182900 0.544000 0.784000 -0.280000
--0.550000 -0.150600 -0.142400 0.376000 0.896000 -0.200000
--0.550000 -0.155500 -0.182900 0.296000 0.920000 -0.232000
--0.550000 -0.155500 -0.182900 0.296000 0.920000 -0.232000
--0.452400 -0.100400 -0.060900 -0.344000 0.936000 -0.016000
--0.452400 -0.100400 -0.060900 -0.344000 0.936000 -0.016000
--0.450000 -0.100400 -0.065100 -0.512000 0.824000 -0.200000
--0.450000 -0.099400 -0.060900 -0.760000 0.616000 0.160000
--0.450000 -0.099400 -0.060900 -0.760000 0.616000 0.160000
--0.450000 -0.512800 -0.060900 0.208000 -0.760000 0.608000
--0.450000 -0.512800 -0.060900 0.208000 -0.760000 0.608000
--0.478800 -0.552300 -0.060900 0.704000 -0.592000 0.376000
--0.450000 -0.549200 -0.121900 -0.080000 -0.800000 0.584000
--0.452200 -0.552300 -0.121900 0.864000 0.184000 0.464000
--0.450000 -0.552300 -0.127200 0.616000 -0.144000 0.768000
--0.450000 -0.549200 -0.121900 -0.080000 -0.800000 0.584000
--0.440600 -0.552300 -0.121900 -0.264000 -0.768000 0.568000
--0.450000 -0.512800 -0.060900 0.208000 -0.760000 0.608000
--0.400000 -0.552300 -0.100200 0.624000 -0.512000 0.584000
--0.400000 -0.527700 -0.060900 0.080000 -0.768000 0.624000
--0.393200 -0.552300 -0.121900 0.872000 -0.352000 0.320000
--0.380200 -0.502100 -0.060900 0.648000 -0.616000 0.432000
--0.350000 -0.503000 -0.121900 0.232000 -0.880000 0.400000
--0.350000 -0.502100 -0.119400 0.240000 -0.864000 0.424000
--0.380200 -0.502100 -0.060900 0.648000 -0.616000 0.432000
--0.350000 -0.453900 -0.060900 0.248000 -0.624000 0.728000
--0.350000 -0.453900 -0.060900 0.248000 -0.624000 0.728000
--0.450000 -0.602500 -0.084100 -0.232000 -0.736000 0.624000
--0.450000 -0.602500 -0.084100 -0.232000 -0.736000 0.624000
--0.450000 -0.558900 -0.121900 0.808000 0.320000 0.488000
--0.410500 -0.602500 -0.121900 0.456000 -0.632000 0.616000
--0.450000 -0.552300 -0.127200 0.616000 -0.144000 0.768000
--0.400000 -0.602500 -0.131300 0.560000 -0.576000 0.584000
--0.440600 -0.552300 -0.121900 -0.264000 -0.768000 0.568000
--0.400000 -0.588000 -0.121900 0.672000 -0.144000 0.720000
--0.400000 -0.552300 -0.100200 0.624000 -0.512000 0.584000
--0.393200 -0.552300 -0.121900 0.872000 -0.352000 0.320000
--0.400000 -0.588000 -0.121900 0.672000 -0.144000 0.720000
--0.379200 -0.552300 -0.182900 0.864000 -0.416000 0.264000
--0.400000 -0.602500 -0.131300 0.560000 -0.576000 0.584000
--0.386500 -0.602500 -0.182900 0.376000 -0.032000 0.920000
--0.379200 -0.552300 -0.182900 0.864000 -0.416000 0.264000
--0.371400 -0.602500 -0.243900 0.928000 0.016000 0.352000
--0.363900 -0.552300 -0.243900 0.816000 -0.480000 0.304000
--0.379200 -0.552300 -0.182900 0.864000 -0.416000 0.264000
--0.350000 -0.535600 -0.243900 0.360000 -0.840000 0.384000
--0.350000 -0.518400 -0.182900 -0.088000 -0.928000 0.360000
--0.379200 -0.552300 -0.182900 0.864000 -0.416000 0.264000
--0.350000 -0.503000 -0.121900 0.232000 -0.880000 0.400000
--0.393200 -0.552300 -0.121900 0.872000 -0.352000 0.320000
--0.393200 -0.552300 -0.121900 0.872000 -0.352000 0.320000
--0.350000 0.148000 -0.060900 -0.504000 0.552000 0.656000
--0.350000 0.148000 -0.060900 -0.504000 0.552000 0.656000
--0.361800 0.100400 -0.060900 -0.920000 0.112000 -0.352000
--0.350000 0.100400 -0.076700 -0.736000 0.256000 -0.616000
--0.358600 0.050200 -0.060900 -0.920000 0.168000 -0.328000
--0.350000 0.050200 -0.078800 -0.832000 0.272000 -0.472000
--0.350000 0.100400 -0.076700 -0.736000 0.256000 -0.616000
--0.335400 0.050200 -0.121900 -0.752000 0.472000 -0.456000
--0.317300 0.100400 -0.121900 -0.712000 0.264000 -0.640000
--0.317300 0.100400 -0.121900 -0.712000 0.264000 -0.640000
--0.377800 0.000000 -0.060900 -0.864000 0.424000 -0.248000
--0.377800 0.000000 -0.060900 -0.864000 0.424000 -0.248000
--0.400000 -0.037800 -0.060900 -0.728000 0.664000 0.152000
--0.372200 0.000000 -0.121900 -0.848000 0.480000 -0.200000
--0.400000 -0.050200 -0.118700 -0.832000 0.528000 -0.160000
--0.399400 -0.050200 -0.121900 -0.760000 0.504000 -0.392000
--0.400000 -0.050900 -0.121900 -0.736000 0.536000 -0.408000
--0.400000 -0.050900 -0.121900 -0.736000 0.536000 -0.408000
--0.350000 0.301200 -0.064600 -0.624000 0.064000 -0.768000
--0.350000 0.301200 -0.064600 -0.624000 0.064000 -0.768000
--0.300000 0.301200 -0.089300 -0.344000 0.056000 -0.936000
--0.350000 0.251000 -0.067500 -0.624000 0.048000 -0.768000
--0.300000 0.251000 -0.090000 -0.368000 0.088000 -0.920000
--0.350000 0.200800 -0.076700 -0.368000 -0.104000 -0.920000
--0.300000 0.200800 -0.077300 -0.504000 0.240000 -0.824000
--0.350000 0.153200 -0.060900 -0.608000 -0.784000 0.016000
--0.300000 0.150600 -0.105900 -0.768000 0.536000 -0.320000
--0.346000 0.150600 -0.060900 -0.768000 -0.144000 0.616000
--0.346000 0.150600 -0.060900 -0.768000 -0.144000 0.616000
--0.300000 0.401700 -0.066400 -0.448000 0.440000 -0.768000
--0.300000 0.401700 -0.066400 -0.448000 0.440000 -0.768000
--0.250000 0.401700 -0.091800 -0.416000 0.456000 -0.776000
--0.300000 0.351500 -0.083400 -0.432000 0.176000 -0.880000
--0.250000 0.351500 -0.107800 -0.464000 0.176000 -0.864000
--0.300000 0.301200 -0.089300 -0.344000 0.056000 -0.936000
--0.250000 0.301200 -0.116200 -0.672000 0.120000 -0.720000
--0.300000 0.251000 -0.090000 -0.368000 0.088000 -0.920000
--0.250000 0.268200 -0.121900 -0.464000 0.088000 -0.872000
--0.254200 0.251000 -0.121900 -0.384000 0.088000 -0.912000
--0.300000 0.251000 -0.090000 -0.368000 0.088000 -0.920000
--0.263400 0.200800 -0.121900 -0.480000 0.216000 -0.840000
--0.300000 0.200800 -0.077300 -0.504000 0.240000 -0.824000
--0.295300 0.150600 -0.121900 -0.728000 0.520000 -0.432000
--0.300000 0.150600 -0.105900 -0.768000 0.536000 -0.320000
--0.300000 0.144000 -0.121900 -0.728000 0.496000 -0.456000
--0.300000 0.144000 -0.121900 -0.728000 0.496000 -0.456000
--0.250000 0.401700 -0.091800 -0.416000 0.456000 -0.776000
--0.250000 0.401700 -0.091800 -0.416000 0.456000 -0.776000
--0.208300 0.401700 -0.121900 -0.432000 0.432000 -0.784000
--0.250000 0.351500 -0.107800 -0.464000 0.176000 -0.864000
--0.233300 0.351500 -0.121900 -0.616000 0.184000 -0.752000
--0.250000 0.301200 -0.116200 -0.672000 0.120000 -0.720000
--0.245300 0.301200 -0.121900 -0.680000 0.120000 -0.720000
--0.250000 0.268200 -0.121900 -0.464000 0.088000 -0.872000
--0.250000 0.268200 -0.121900 -0.464000 0.088000 -0.872000
--0.104300 -0.100400 -0.060900 0.528000 0.416000 0.728000
--0.104300 -0.100400 -0.060900 0.528000 0.416000 0.728000
--0.100000 -0.100400 -0.064700 0.496000 0.416000 0.752000
--0.100000 -0.105500 -0.060900 0.480000 0.464000 0.736000
--0.050000 -0.100400 -0.073900 0.136000 0.480000 0.864000
--0.050000 -0.119400 -0.060900 0.168000 0.528000 0.824000
-0.000000 -0.100400 -0.085100 0.096000 0.456000 0.880000
-0.000000 -0.136800 -0.060900 0.088000 0.520000 0.840000
-0.050000 -0.100400 -0.083400 0.000000 0.440000 0.888000
-0.050000 -0.140200 -0.060900 0.152000 0.504000 0.848000
-0.100000 -0.100400 -0.084200 0.032000 0.360000 0.928000
-0.076800 -0.150600 -0.060900 0.208000 0.432000 0.872000
-0.100000 -0.150600 -0.068400 0.184000 0.416000 0.888000
-0.100000 -0.170000 -0.060900 0.256000 0.296000 0.912000
-0.100000 -0.170000 -0.060900 0.256000 0.296000 0.912000
--0.133200 -0.451900 -0.060900 0.584000 -0.656000 0.464000
--0.133200 -0.451900 -0.060900 0.584000 -0.656000 0.464000
--0.100000 -0.415900 -0.060900 0.680000 -0.544000 0.480000
--0.100000 -0.451900 -0.117700 0.624000 -0.664000 0.392000
--0.100000 -0.451900 -0.117700 0.624000 -0.664000 0.392000
--0.150000 -0.502100 -0.111600 0.592000 -0.752000 0.280000
--0.150000 -0.502100 -0.111600 0.592000 -0.752000 0.280000
--0.146100 -0.502100 -0.121900 0.616000 -0.744000 0.232000
--0.150000 -0.505100 -0.121900 0.584000 -0.768000 0.240000
--0.141200 -0.502100 -0.182900 0.696000 -0.688000 0.184000
--0.150000 -0.510100 -0.182900 0.616000 -0.760000 0.168000
--0.125700 -0.502100 -0.243900 0.664000 -0.408000 0.624000
--0.150000 -0.530700 -0.243900 0.632000 -0.664000 0.392000
--0.150000 -0.530700 -0.243900 0.632000 -0.664000 0.392000
--0.078700 0.200800 -0.060900 0.568000 -0.416000 0.704000
--0.078700 0.200800 -0.060900 0.568000 -0.416000 0.704000
--0.050000 0.236000 -0.060900 0.536000 -0.496000 0.672000
--0.050000 0.200800 -0.090500 0.520000 -0.520000 0.672000
--0.050000 0.200800 -0.090500 0.520000 -0.520000 0.672000
--0.100000 0.100400 -0.099400 0.760000 -0.264000 0.584000
--0.100000 0.100400 -0.099400 0.760000 -0.264000 0.584000
--0.089100 0.100400 -0.121900 0.816000 -0.232000 0.520000
--0.100000 0.054100 -0.121900 0.816000 -0.176000 0.544000
--0.100000 0.054100 -0.121900 0.816000 -0.176000 0.544000
--0.050000 -0.370100 -0.060900 0.592000 -0.672000 0.424000
--0.050000 -0.370100 -0.060900 0.592000 -0.672000 0.424000
--0.087700 -0.401700 -0.060900 0.608000 -0.600000 0.504000
--0.050000 -0.398200 -0.121900 0.592000 -0.704000 0.368000
--0.054100 -0.401700 -0.121900 0.656000 -0.688000 0.280000
--0.050000 -0.389600 -0.182900 0.656000 -0.736000 -0.128000
--0.061900 -0.401700 -0.182900 0.744000 -0.648000 -0.120000
--0.050000 -0.380500 -0.243900 0.664000 -0.736000 -0.104000
--0.071000 -0.401700 -0.243900 0.856000 -0.496000 -0.072000
--0.050000 -0.374600 -0.304800 0.584000 -0.672000 -0.448000
--0.073900 -0.401700 -0.304800 0.784000 -0.304000 -0.528000
--0.050000 -0.351500 -0.336900 0.024000 -0.576000 -0.808000
--0.100000 -0.401700 -0.330800 0.576000 -0.152000 -0.792000
--0.100000 -0.351500 -0.338800 0.024000 -0.312000 -0.944000
--0.150000 -0.401700 -0.364300 0.552000 0.080000 -0.824000
--0.150000 -0.351500 -0.350300 0.512000 0.192000 -0.832000
--0.100000 -0.351500 -0.338800 0.024000 -0.312000 -0.944000
--0.150000 -0.301200 -0.318500 -0.024000 0.504000 -0.856000
--0.100000 -0.301200 -0.349000 -0.368000 0.264000 -0.888000
--0.150000 -0.286300 -0.304800 -0.184000 0.480000 -0.848000
--0.100000 -0.251000 -0.333700 -0.512000 0.248000 -0.816000
--0.123600 -0.251000 -0.304800 -0.536000 0.288000 -0.784000
--0.100000 -0.200800 -0.311700 -0.496000 0.128000 -0.856000
--0.108400 -0.200800 -0.304800 -0.496000 -0.048000 -0.856000
--0.123600 -0.251000 -0.304800 -0.536000 0.288000 -0.784000
--0.150000 -0.200800 -0.284500 0.024000 -0.216000 -0.968000
--0.150000 -0.251000 -0.289400 -0.264000 0.272000 -0.920000
--0.196100 -0.200800 -0.304800 0.360000 -0.200000 -0.904000
--0.195100 -0.251000 -0.304800 0.376000 0.112000 -0.912000
--0.150000 -0.251000 -0.289400 -0.264000 0.272000 -0.920000
--0.150000 -0.286300 -0.304800 -0.184000 0.480000 -0.848000
--0.123600 -0.251000 -0.304800 -0.536000 0.288000 -0.784000
--0.123600 -0.251000 -0.304800 -0.536000 0.288000 -0.784000
-0.000000 0.393800 -0.060900 0.224000 0.176000 0.952000
-0.000000 0.393800 -0.060900 0.224000 0.176000 0.952000
--0.005200 0.401700 -0.060900 0.264000 0.168000 0.944000
-0.000000 0.401700 -0.062800 0.256000 0.176000 0.944000
-0.000000 0.401700 -0.062800 0.256000 0.176000 0.944000
-0.000000 0.493800 -0.121900 0.128000 0.960000 -0.232000
-0.000000 0.493800 -0.121900 0.128000 0.960000 -0.232000
-0.000000 0.451900 -0.081100 0.280000 0.456000 0.832000
-0.050000 0.485400 -0.121900 -0.032000 0.904000 -0.408000
-0.050000 0.451900 -0.077800 0.016000 0.408000 0.912000
-0.100000 0.494400 -0.121900 -0.184000 0.952000 -0.216000
-0.100000 0.451900 -0.066700 -0.192000 0.072000 0.976000
-0.138500 0.502100 -0.121900 -0.184000 0.952000 -0.216000
-0.121900 0.451900 -0.060900 -0.112000 0.472000 0.872000
-0.150000 0.502100 -0.119700 0.016000 0.656000 0.752000
-0.150000 0.456100 -0.060900 0.048000 0.664000 0.736000
-0.150000 0.456100 -0.060900 0.048000 0.664000 0.736000
-0.150000 0.503100 -0.121900 0.272000 0.456000 -0.840000
-0.150000 0.503100 -0.121900 0.272000 0.456000 -0.840000
-0.150000 0.502100 -0.119700 0.016000 0.656000 0.752000
-0.138500 0.502100 -0.121900 -0.184000 0.952000 -0.216000
-0.138500 0.502100 -0.121900 -0.184000 0.952000 -0.216000
-0.150000 0.409600 -0.060900 -0.208000 -0.072000 0.968000
-0.150000 0.409600 -0.060900 -0.208000 -0.072000 0.968000
-0.151400 0.401700 -0.060900 -0.480000 -0.416000 0.760000
-0.150000 0.401700 -0.062100 -0.392000 -0.400000 0.816000
-0.150000 0.401700 -0.062100 -0.392000 -0.400000 0.816000
-0.150000 -0.251000 -0.118100 0.224000 -0.792000 0.560000
-0.150000 -0.251000 -0.118100 0.224000 -0.792000 0.560000
-0.161400 -0.251000 -0.121900 0.152000 -0.792000 0.576000
-0.150000 -0.253200 -0.121900 0.192000 -0.808000 0.552000
-0.150000 -0.253200 -0.121900 0.192000 -0.808000 0.552000
-0.250000 0.432000 -0.060900 0.224000 0.624000 0.736000
-0.250000 0.432000 -0.060900 0.224000 0.624000 0.736000
-0.203100 0.451900 -0.060900 0.264000 0.672000 0.680000
-0.250000 0.451900 -0.094000 0.248000 0.784000 0.552000
-0.250000 0.451900 -0.094000 0.248000 0.784000 0.552000
-0.200000 0.352900 -0.060900 -0.368000 -0.496000 0.776000
-0.200000 0.352900 -0.060900 -0.368000 -0.496000 0.776000
-0.201200 0.351500 -0.060900 -0.488000 -0.576000 0.648000
-0.200000 0.351500 -0.062100 -0.312000 -0.640000 0.696000
-0.200000 0.351500 -0.062100 -0.312000 -0.640000 0.696000
-0.200000 -0.041200 -0.121900 0.160000 0.488000 0.856000
-0.200000 -0.041200 -0.121900 0.160000 0.488000 0.856000
-0.222300 -0.050200 -0.121900 0.200000 0.432000 0.872000
-0.200000 -0.050200 -0.116900 0.136000 0.368000 0.912000
-0.200000 -0.050200 -0.116900 0.136000 0.368000 0.912000
-0.300000 0.451900 -0.106900 0.184000 0.864000 0.456000
-0.300000 0.451900 -0.106900 0.184000 0.864000 0.456000
-0.300000 0.458100 -0.121900 0.224000 0.952000 -0.176000
-0.323400 0.451900 -0.121900 0.248000 0.944000 -0.200000
-0.300000 0.451900 -0.131100 0.200000 0.712000 -0.664000
-0.300000 0.451900 -0.131100 0.200000 0.712000 -0.664000
-0.366500 0.200800 -0.121900 -0.760000 -0.624000 0.168000
-0.366500 0.200800 -0.121900 -0.760000 -0.624000 0.168000
-0.400000 0.200800 -0.077800 -0.600000 -0.432000 0.664000
-0.400000 0.152400 -0.121900 -0.688000 -0.712000 -0.048000
-0.400000 0.152400 -0.121900 -0.688000 -0.712000 -0.048000
-0.400000 0.072600 -0.121900 -0.632000 0.256000 0.720000
-0.400000 0.072600 -0.121900 -0.632000 0.256000 0.720000
-0.400000 0.050200 -0.114800 -0.552000 0.256000 0.784000
-0.393200 0.050200 -0.121900 -0.648000 0.352000 0.664000
-0.393200 0.050200 -0.121900 -0.648000 0.352000 0.664000
-0.450000 -0.100400 -0.078400 -0.088000 0.200000 0.968000
-0.450000 -0.100400 -0.078400 -0.088000 0.200000 0.968000
-0.400000 -0.100400 -0.080400 -0.024000 0.176000 0.976000
-0.450000 -0.150600 -0.064700 -0.192000 0.128000 0.968000
-0.400000 -0.150600 -0.068400 -0.344000 -0.312000 0.880000
-0.450000 -0.200800 -0.072200 -0.256000 -0.536000 0.800000
-0.400000 -0.200800 -0.119100 -0.200000 -0.688000 0.688000
-0.450000 -0.227100 -0.121900 -0.296000 -0.712000 0.624000
-0.400000 -0.203000 -0.121900 -0.184000 -0.672000 0.712000
-0.450000 -0.251000 -0.179900 -0.288000 -0.680000 0.664000
-0.400000 -0.249800 -0.182900 0.472000 -0.752000 0.448000
-0.415700 -0.251000 -0.182900 -0.088000 -0.872000 0.480000
-0.400000 -0.249400 -0.243900 0.760000 -0.472000 -0.424000
-0.450000 -0.251000 -0.203800 -0.216000 -0.960000 -0.144000
-0.450000 -0.248400 -0.243900 -0.224000 -0.888000 -0.384000
-0.459300 -0.251000 -0.243900 -0.280000 -0.864000 -0.400000
-0.459300 -0.251000 -0.243900 -0.280000 -0.864000 -0.400000
-0.450000 0.163500 -0.060900 -0.600000 -0.504000 0.608000
-0.450000 0.163500 -0.060900 -0.600000 -0.504000 0.608000
-0.460500 0.150600 -0.060900 -0.624000 -0.512000 0.584000
-0.450000 0.150600 -0.075000 -0.616000 -0.488000 0.608000
-0.450000 0.150600 -0.075000 -0.616000 -0.488000 0.608000
-0.504600 0.100400 -0.060900 -0.704000 -0.248000 0.656000
-0.504600 0.100400 -0.060900 -0.704000 -0.248000 0.656000
-0.500000 0.067400 -0.060900 -0.592000 0.120000 0.792000
-0.500000 0.100400 -0.067100 -0.632000 -0.296000 0.704000
-0.500000 0.100400 -0.067100 -0.632000 -0.296000 0.704000
-0.550000 -0.159500 -0.060900 0.248000 0.472000 0.840000
-0.550000 -0.159500 -0.060900 0.248000 0.472000 0.840000
-0.530700 -0.150600 -0.060900 0.208000 0.504000 0.832000
-0.550000 -0.150600 -0.067100 0.240000 0.480000 0.840000
-0.550000 -0.150600 -0.067100 0.240000 0.480000 0.840000
-0.546800 -0.351500 -0.121900 -0.560000 -0.304000 0.760000
-0.546800 -0.351500 -0.121900 -0.560000 -0.304000 0.760000
-0.550000 -0.317100 -0.121900 -0.368000 0.064000 0.920000
-0.550000 -0.351500 -0.118900 -0.368000 0.056000 0.920000
-0.558500 -0.351500 -0.121900 0.208000 -0.648000 0.728000
-0.550000 -0.353000 -0.121900 -0.032000 -0.832000 0.536000
-0.550000 -0.351500 -0.118900 -0.368000 0.056000 0.920000
-0.546800 -0.351500 -0.121900 -0.560000 -0.304000 0.760000
-0.550000 -0.353000 -0.121900 -0.032000 -0.832000 0.536000
-0.500000 -0.351500 -0.156800 -0.392000 -0.248000 0.880000
-0.550000 -0.389500 -0.182900 -0.304000 -0.784000 0.528000
-0.500000 -0.372900 -0.182900 -0.184000 -0.776000 0.592000
-0.550000 -0.401700 -0.218900 -0.128000 -0.904000 0.392000
-0.500000 -0.400600 -0.243900 0.024000 -0.920000 0.384000
-0.503900 -0.401700 -0.243900 -0.232000 -0.936000 0.256000
-0.500000 -0.400200 -0.304800 -0.176000 -0.672000 -0.712000
-0.502600 -0.401700 -0.304800 -0.320000 -0.840000 -0.416000
-0.500000 -0.351500 -0.354900 -0.384000 -0.472000 -0.784000
-0.550000 -0.401700 -0.333700 -0.144000 -0.688000 -0.704000
-0.550000 -0.351500 -0.364500 0.120000 -0.104000 -0.984000
-0.500000 -0.351500 -0.354900 -0.384000 -0.472000 -0.784000
-0.550000 -0.316300 -0.304800 -0.472000 0.688000 -0.536000
-0.500000 -0.333600 -0.304800 -0.408000 0.824000 -0.376000
-0.550000 -0.301200 -0.279200 -0.712000 0.120000 -0.680000
-0.500000 -0.310500 -0.243900 -0.600000 0.776000 -0.152000
-0.513800 -0.301200 -0.243900 -0.728000 0.592000 -0.328000
-0.500000 -0.316400 -0.182900 -0.704000 0.472000 0.520000
-0.511800 -0.301200 -0.182900 -0.912000 0.352000 0.176000
-0.500000 -0.351500 -0.156800 -0.392000 -0.248000 0.880000
-0.550000 -0.301200 -0.123600 -0.624000 -0.440000 0.632000
-0.546800 -0.351500 -0.121900 -0.560000 -0.304000 0.760000
-0.550000 -0.317100 -0.121900 -0.368000 0.064000 0.920000
-0.550000 -0.317100 -0.121900 -0.368000 0.064000 0.920000
-0.550000 -0.242100 -0.060900 -0.400000 -0.536000 0.736000
-0.550000 -0.242100 -0.060900 -0.400000 -0.536000 0.736000
-0.562800 -0.251000 -0.060900 -0.368000 -0.568000 0.720000
-0.550000 -0.251000 -0.069700 -0.416000 -0.584000 0.688000
-0.550000 -0.251000 -0.069700 -0.416000 -0.584000 0.688000
-0.552600 -0.301200 -0.121900 -0.368000 -0.384000 0.840000
-0.552600 -0.301200 -0.121900 -0.368000 -0.384000 0.840000
-0.600000 -0.301200 -0.098800 -0.176000 -0.576000 0.792000
-0.600000 -0.333000 -0.121900 0.024000 -0.312000 0.944000
-0.650000 -0.301200 -0.100200 0.264000 -0.568000 0.768000
-0.650000 -0.327200 -0.121900 -0.280000 -0.536000 0.792000
-0.700000 -0.301200 -0.068800 0.336000 0.392000 0.848000
-0.679500 -0.351500 -0.121900 -0.424000 -0.464000 0.768000
-0.700000 -0.351500 -0.108700 -0.352000 -0.464000 0.808000
-0.700000 -0.372000 -0.121900 -0.360000 -0.440000 0.816000
-0.750000 -0.351500 -0.097900 0.640000 0.048000 0.760000
-0.737900 -0.401700 -0.121900 -0.352000 -0.448000 0.816000
-0.750000 -0.401700 -0.115900 -0.264000 -0.344000 0.896000
-0.750000 -0.411100 -0.121900 -0.304000 -0.456000 0.824000
-0.800000 -0.401700 -0.115500 0.392000 0.184000 0.896000
-0.800000 -0.418600 -0.121900 0.304000 -0.320000 0.888000
-0.750000 -0.411100 -0.121900 -0.304000 -0.456000 0.824000
-0.800000 -0.451900 -0.135400 0.168000 -0.384000 0.904000
-0.750000 -0.451900 -0.153800 -0.384000 -0.528000 0.752000
-0.800000 -0.502100 -0.171200 -0.360000 -0.648000 0.664000
-0.750000 -0.479900 -0.182900 -0.456000 -0.632000 0.616000
-0.783200 -0.502100 -0.182900 -0.448000 -0.720000 0.512000
-0.750000 -0.502100 -0.236900 -0.448000 -0.776000 0.432000
-0.800000 -0.511100 -0.182900 -0.376000 -0.744000 0.544000
-0.750000 -0.505200 -0.243900 -0.480000 -0.856000 0.152000
-0.800000 -0.519900 -0.243900 -0.400000 -0.904000 -0.112000
-0.750000 -0.502100 -0.254300 -0.448000 -0.832000 -0.312000
-0.800000 -0.502100 -0.293400 -0.120000 -0.840000 -0.520000
-0.750000 -0.487000 -0.304800 -0.104000 -0.744000 -0.656000
-0.800000 -0.493800 -0.304800 0.032000 -0.688000 -0.720000
-0.750000 -0.451900 -0.330900 0.152000 -0.080000 -0.984000
-0.800000 -0.451900 -0.330300 0.328000 0.200000 -0.920000
-0.750000 -0.401700 -0.321600 0.336000 0.000000 -0.936000
-0.800000 -0.418300 -0.304800 0.408000 0.496000 -0.760000
-0.779200 -0.401700 -0.304800 0.400000 0.336000 -0.848000
-0.800000 -0.401700 -0.291400 0.440000 0.456000 -0.760000
-0.754800 -0.351500 -0.304800 0.424000 0.136000 -0.888000
-0.800000 -0.351500 -0.277300 0.568000 0.408000 -0.704000
-0.750000 -0.334300 -0.304800 0.512000 0.112000 -0.840000
-0.800000 -0.328800 -0.243900 0.640000 0.656000 -0.384000
-0.750000 -0.301200 -0.299800 0.512000 0.144000 -0.840000
-0.780500 -0.301200 -0.243900 0.848000 0.504000 -0.128000
-0.750000 -0.251000 -0.256700 0.824000 0.520000 -0.208000
-0.752500 -0.251000 -0.243900 0.840000 0.528000 -0.096000
-0.750000 -0.247000 -0.243900 0.832000 0.536000 -0.096000
-0.750000 -0.251000 -0.218200 0.840000 0.520000 0.096000
-0.717800 -0.200800 -0.243900 0.824000 0.560000 -0.064000
-0.746300 -0.251000 -0.182900 0.848000 0.496000 0.152000
-0.713600 -0.200800 -0.182900 0.824000 0.512000 0.224000
-0.719200 -0.251000 -0.121900 0.760000 0.456000 0.440000
-0.700000 -0.200800 -0.144600 0.696000 0.528000 0.480000
-0.700000 -0.217500 -0.121900 0.616000 0.552000 0.544000
-0.677400 -0.200800 -0.121900 0.528000 0.512000 0.672000
-0.700000 -0.200800 -0.144600 0.696000 0.528000 0.480000
-0.652900 -0.150600 -0.121900 0.752000 0.456000 0.464000
-0.700000 -0.178500 -0.182900 0.792000 0.568000 0.200000
-0.675300 -0.150600 -0.182900 0.768000 0.552000 0.296000
-0.700000 -0.175300 -0.243900 0.752000 0.600000 -0.240000
-0.674200 -0.150600 -0.243900 0.696000 0.600000 -0.384000
-0.674200 -0.150600 -0.243900 0.696000 0.600000 -0.384000
-0.600000 -0.272000 -0.060900 -0.264000 -0.632000 0.720000
-0.600000 -0.272000 -0.060900 -0.264000 -0.632000 0.720000
-0.600000 -0.301200 -0.098800 -0.176000 -0.576000 0.792000
-0.650000 -0.258100 -0.060900 0.392000 -0.456000 0.792000
-0.650000 -0.301200 -0.100200 0.264000 -0.568000 0.768000
-0.657600 -0.251000 -0.060900 0.456000 -0.072000 0.880000
-0.700000 -0.301200 -0.068800 0.336000 0.392000 0.848000
-0.700000 -0.251000 -0.086700 0.608000 0.464000 0.632000
-0.700000 -0.251000 -0.086700 0.608000 0.464000 0.632000
-0.650000 0.350500 -0.060900 0.712000 0.536000 -0.440000
-0.650000 0.350500 -0.060900 0.712000 0.536000 -0.440000
-0.650000 0.301200 -0.100800 0.528000 0.504000 -0.672000
-0.680100 0.301200 -0.060900 0.752000 0.544000 -0.368000
-0.680100 0.301200 -0.060900 0.752000 0.544000 -0.368000
-0.700000 0.251000 -0.093200 0.552000 0.600000 -0.568000
-0.700000 0.251000 -0.093200 0.552000 0.600000 -0.568000
-0.673000 0.251000 -0.121900 0.568000 0.576000 -0.584000
-0.700000 0.229200 -0.121900 0.528000 0.656000 -0.528000
-0.650000 0.251000 -0.154700 0.488000 0.640000 -0.584000
-0.700000 0.200800 -0.171600 0.480000 0.608000 -0.616000
-0.650000 0.227800 -0.182900 0.368000 0.576000 -0.720000
-0.687200 0.200800 -0.182900 0.432000 0.544000 -0.712000
-0.700000 0.200800 -0.171600 0.480000 0.608000 -0.616000
-0.700000 0.190400 -0.182900 0.432000 0.560000 -0.696000
-0.700000 0.190400 -0.182900 0.432000 0.560000 -0.696000
-0.650000 -0.200800 -0.092600 0.656000 0.384000 0.640000
-0.650000 -0.200800 -0.092600 0.656000 0.384000 0.640000
-0.650000 -0.150600 -0.116200 0.720000 0.480000 0.488000
-0.677400 -0.200800 -0.121900 0.528000 0.512000 0.672000
-0.652900 -0.150600 -0.121900 0.752000 0.456000 0.464000
-0.652900 -0.150600 -0.121900 0.752000 0.456000 0.464000
-0.734900 0.200800 -0.121900 0.552000 0.608000 -0.552000
-0.734900 0.200800 -0.121900 0.552000 0.608000 -0.552000
-0.750000 0.186400 -0.121900 0.504000 0.648000 -0.560000
-0.750000 0.200800 -0.104400 0.480000 0.680000 -0.544000
-0.750000 0.200800 -0.104400 0.480000 0.680000 -0.544000
-0.750000 -0.351500 -0.097900 0.640000 0.048000 0.760000
-0.750000 -0.351500 -0.097900 0.640000 0.048000 0.760000
-0.700000 -0.351500 -0.108700 -0.352000 -0.464000 0.808000
-0.750000 -0.301200 -0.116500 0.704000 0.400000 0.568000
-0.700000 -0.301200 -0.068800 0.336000 0.392000 0.848000
-0.700000 -0.301200 -0.068800 0.336000 0.392000 0.848000
--0.950000 -0.150600 -0.169000 -0.584000 -0.792000 0.136000
--0.950000 -0.150600 -0.169000 -0.584000 -0.792000 0.136000
--0.950000 -0.152700 -0.182900 -0.600000 -0.784000 0.144000
--0.952800 -0.150600 -0.182900 -0.568000 -0.808000 0.136000
--0.950000 -0.161800 -0.243900 -0.584000 -0.784000 0.176000
--0.966700 -0.150600 -0.243900 -0.472000 -0.864000 0.152000
--0.950000 -0.180000 -0.304800 -0.552000 -0.600000 -0.568000
--0.989000 -0.150600 -0.304800 -0.440000 -0.624000 -0.640000
--0.950000 -0.150600 -0.330800 -0.416000 -0.432000 -0.792000
--0.950000 -0.150600 -0.330800 -0.416000 -0.432000 -0.792000
--0.900000 -0.492700 -0.121900 -0.520000 0.712000 0.448000
--0.900000 -0.492700 -0.121900 -0.520000 0.712000 0.448000
--0.900000 -0.462200 -0.182900 0.320000 0.888000 0.304000
--0.878700 -0.502100 -0.121900 0.408000 0.368000 0.832000
--0.850000 -0.490700 -0.182900 0.328000 0.896000 0.288000
--0.850000 -0.502100 -0.144600 0.400000 0.776000 0.480000
--0.820300 -0.502100 -0.182900 0.496000 0.792000 0.344000
--0.850000 -0.519700 -0.121900 0.200000 0.624000 0.752000
--0.800000 -0.513200 -0.182900 -0.080000 0.880000 0.456000
--0.800000 -0.539500 -0.121900 0.176000 0.680000 0.704000
--0.750000 -0.503000 -0.182900 -0.200000 0.848000 0.472000
--0.750000 -0.549900 -0.121900 0.080000 0.648000 0.752000
--0.749300 -0.502100 -0.182900 -0.920000 -0.232000 0.288000
--0.723300 -0.502100 -0.121900 -0.896000 -0.224000 0.368000
--0.723300 -0.502100 -0.121900 -0.896000 -0.224000 0.368000
--0.900000 -0.511500 -0.121900 -0.520000 -0.664000 0.528000
--0.900000 -0.511500 -0.121900 -0.520000 -0.664000 0.528000
--0.900000 -0.542100 -0.182900 -0.808000 -0.560000 0.136000
--0.868200 -0.552300 -0.121900 -0.520000 -0.224000 0.816000
--0.892400 -0.552300 -0.182900 -0.760000 -0.624000 0.176000
--0.850000 -0.569100 -0.121900 -0.488000 -0.776000 0.384000
--0.850000 -0.592600 -0.182900 -0.520000 -0.800000 0.264000
--0.800000 -0.584500 -0.121900 -0.288000 -0.544000 0.776000
--0.832500 -0.602500 -0.182900 -0.576000 -0.768000 0.272000
--0.800000 -0.602500 -0.136500 -0.416000 -0.648000 0.632000
--0.800000 -0.620600 -0.182900 -0.312000 -0.880000 0.336000
--0.764000 -0.602500 -0.121900 -0.176000 -0.816000 0.544000
--0.750000 -0.630100 -0.182900 -0.144000 -0.912000 0.360000
--0.750000 -0.605000 -0.121900 -0.152000 -0.872000 0.456000
--0.750000 -0.605000 -0.121900 -0.152000 -0.872000 0.456000
--0.802000 -0.351500 -0.121900 -0.840000 -0.520000 0.096000
--0.802000 -0.351500 -0.121900 -0.840000 -0.520000 0.096000
--0.832400 -0.301200 -0.121900 -0.840000 -0.528000 0.048000
--0.802200 -0.351500 -0.182900 -0.872000 -0.480000 0.016000
--0.831100 -0.301200 -0.182900 -0.848000 -0.520000 0.016000
--0.807300 -0.351500 -0.243900 -0.864000 -0.472000 0.152000
--0.834700 -0.301200 -0.243900 -0.840000 -0.504000 0.184000
--0.834700 -0.301200 -0.243900 -0.840000 -0.504000 0.184000
--0.779100 0.150600 -0.182900 0.400000 0.664000 -0.616000
--0.779100 0.150600 -0.182900 0.400000 0.664000 -0.616000
--0.750000 0.132600 -0.182900 0.408000 0.656000 -0.624000
--0.750000 0.150600 -0.159200 0.432000 0.664000 -0.600000
--0.750000 0.150600 -0.159200 0.432000 0.664000 -0.600000
--0.750000 -0.448400 -0.121900 -0.880000 -0.432000 0.160000
--0.750000 -0.448400 -0.121900 -0.880000 -0.432000 0.160000
--0.750000 -0.451900 -0.133400 -0.896000 -0.392000 0.184000
--0.771000 -0.401700 -0.121900 -0.872000 -0.456000 0.128000
--0.757600 -0.451900 -0.182900 -0.952000 -0.232000 0.184000
--0.775200 -0.401700 -0.182900 -0.904000 -0.400000 0.120000
--0.769800 -0.451900 -0.243900 -0.952000 -0.080000 0.272000
--0.781800 -0.401700 -0.243900 -0.912000 -0.336000 0.208000
--0.787800 -0.451900 -0.304800 -0.984000 0.136000 -0.040000
--0.797400 -0.401700 -0.304800 -0.928000 -0.344000 0.056000
--0.797400 -0.401700 -0.304800 -0.928000 -0.344000 0.056000
--0.800000 -0.584500 -0.121900 -0.288000 -0.544000 0.776000
--0.800000 -0.584500 -0.121900 -0.288000 -0.544000 0.776000
--0.764000 -0.602500 -0.121900 -0.176000 -0.816000 0.544000
--0.800000 -0.602500 -0.136500 -0.416000 -0.648000 0.632000
--0.800000 -0.602500 -0.136500 -0.416000 -0.648000 0.632000
--0.750000 0.174400 -0.121900 0.448000 0.824000 -0.336000
--0.750000 0.174400 -0.121900 0.448000 0.824000 -0.336000
--0.750000 0.150600 -0.159200 0.432000 0.664000 -0.600000
--0.715000 0.150600 -0.121900 0.512000 0.744000 -0.408000
--0.715000 0.150600 -0.121900 0.512000 0.744000 -0.408000
--0.700900 0.100400 -0.182900 0.440000 0.608000 -0.648000
--0.700900 0.100400 -0.182900 0.440000 0.608000 -0.648000
--0.700000 0.099700 -0.182900 0.504000 0.560000 -0.640000
--0.700000 0.100400 -0.182100 0.536000 0.592000 -0.592000
--0.700000 0.100400 -0.182100 0.536000 0.592000 -0.592000
--0.750000 -0.448400 -0.121900 -0.880000 -0.432000 0.160000
--0.750000 -0.448400 -0.121900 -0.880000 -0.432000 0.160000
--0.748200 -0.451900 -0.121900 -0.880000 -0.440000 0.160000
--0.750000 -0.451900 -0.133400 -0.896000 -0.392000 0.184000
--0.750000 -0.451900 -0.133400 -0.896000 -0.392000 0.184000
--0.700000 0.140000 -0.121900 0.536000 0.728000 -0.408000
--0.700000 0.140000 -0.121900 0.536000 0.728000 -0.408000
--0.700000 0.100400 -0.182100 0.536000 0.592000 -0.592000
--0.657700 0.100400 -0.121900 0.728000 0.576000 -0.360000
--0.657700 0.100400 -0.121900 0.728000 0.576000 -0.360000
--0.652800 0.050200 -0.182900 0.592000 0.536000 -0.592000
--0.652800 0.050200 -0.182900 0.592000 0.536000 -0.592000
--0.650000 0.045800 -0.182900 0.672000 0.432000 -0.592000
--0.650000 0.050200 -0.178200 0.664000 0.544000 -0.504000
--0.621400 0.000000 -0.182900 0.848000 0.280000 -0.440000
--0.614300 0.050200 -0.121900 0.720000 0.480000 -0.480000
--0.601900 0.000000 -0.121900 0.848000 0.208000 -0.472000
--0.601900 0.000000 -0.121900 0.848000 0.208000 -0.472000
--0.650000 0.089500 -0.121900 0.728000 0.552000 -0.384000
--0.650000 0.089500 -0.121900 0.728000 0.552000 -0.384000
--0.650000 0.050200 -0.178200 0.664000 0.544000 -0.504000
--0.614300 0.050200 -0.121900 0.720000 0.480000 -0.480000
--0.614300 0.050200 -0.121900 0.720000 0.480000 -0.480000
--0.491700 -0.150600 -0.182900 -0.448000 0.848000 -0.264000
--0.491700 -0.150600 -0.182900 -0.448000 0.848000 -0.264000
--0.500000 -0.150600 -0.154000 -0.424000 0.880000 -0.160000
--0.500000 -0.154300 -0.182900 -0.320000 0.920000 -0.176000
--0.500000 -0.154300 -0.182900 -0.320000 0.920000 -0.176000
--0.372200 0.000000 -0.121900 -0.848000 0.480000 -0.200000
--0.372200 0.000000 -0.121900 -0.848000 0.480000 -0.200000
--0.350000 0.000000 -0.171400 -0.688000 0.416000 -0.584000
--0.350000 0.031200 -0.121900 -0.744000 0.552000 -0.352000
--0.350000 0.031200 -0.121900 -0.744000 0.552000 -0.352000
--0.350000 -0.652700 -0.168800 -0.864000 0.056000 0.488000
--0.350000 -0.652700 -0.168800 -0.864000 0.056000 0.488000
--0.300000 -0.652700 -0.176500 0.496000 0.568000 0.648000
--0.350000 -0.647900 -0.182900 0.008000 0.768000 0.624000
--0.300000 -0.647500 -0.182900 0.464000 0.632000 0.616000
--0.350000 -0.630200 -0.243900 -0.144000 0.776000 0.600000
--0.300000 -0.607200 -0.243900 -0.248000 0.672000 0.688000
--0.300000 -0.647500 -0.182900 0.464000 0.632000 0.616000
--0.286800 -0.602500 -0.243900 -0.320000 0.232000 0.912000
--0.293900 -0.652700 -0.182900 0.576000 0.496000 0.640000
--0.250000 -0.602500 -0.226600 0.288000 -0.512000 0.800000
--0.250000 -0.652700 -0.232900 0.624000 0.072000 0.768000
--0.233200 -0.602500 -0.243900 0.608000 -0.320000 0.720000
--0.241600 -0.652700 -0.243900 0.680000 -0.216000 0.688000
--0.250000 -0.652700 -0.232900 0.624000 0.072000 0.768000
--0.250000 -0.679700 -0.243900 0.728000 -0.208000 0.640000
--0.293900 -0.652700 -0.182900 0.576000 0.496000 0.640000
--0.256000 -0.703000 -0.243900 0.696000 -0.392000 0.584000
--0.293800 -0.703000 -0.182900 0.608000 -0.624000 0.488000
--0.293900 -0.652700 -0.182900 0.576000 0.496000 0.640000
--0.300000 -0.703000 -0.173800 0.616000 -0.544000 0.552000
--0.300000 -0.652700 -0.176500 0.496000 0.568000 0.648000
--0.350000 -0.703000 -0.180700 -0.616000 -0.504000 0.592000
--0.350000 -0.652700 -0.168800 -0.864000 0.056000 0.488000
--0.350000 -0.652700 -0.168800 -0.864000 0.056000 0.488000
--0.260200 -0.552300 -0.121900 -0.560000 -0.752000 0.336000
--0.260200 -0.552300 -0.121900 -0.560000 -0.752000 0.336000
--0.300000 -0.516400 -0.121900 -0.256000 -0.872000 0.400000
--0.285200 -0.552300 -0.182900 -0.616000 -0.680000 0.384000
--0.300000 -0.538300 -0.182900 -0.584000 -0.696000 0.408000
--0.300000 -0.552300 -0.209900 -0.624000 -0.616000 0.456000
--0.300000 -0.552300 -0.209900 -0.624000 -0.616000 0.456000
--0.300000 -0.647500 -0.182900 0.464000 0.632000 0.616000
--0.300000 -0.647500 -0.182900 0.464000 0.632000 0.616000
--0.293900 -0.652700 -0.182900 0.576000 0.496000 0.640000
--0.300000 -0.652700 -0.176500 0.496000 0.568000 0.648000
--0.300000 -0.652700 -0.176500 0.496000 0.568000 0.648000
--0.200000 0.251000 -0.156200 -0.432000 0.168000 -0.880000
--0.200000 0.251000 -0.156200 -0.432000 0.168000 -0.880000
--0.250000 0.251000 -0.124000 -0.376000 0.088000 -0.920000
--0.200000 0.200800 -0.161600 -0.480000 0.384000 -0.776000
--0.250000 0.200800 -0.129700 -0.392000 0.152000 -0.904000
--0.250000 0.200800 -0.129700 -0.392000 0.152000 -0.904000
--0.200000 -0.534300 -0.121900 0.456000 -0.832000 0.296000
--0.200000 -0.534300 -0.121900 0.456000 -0.832000 0.296000
--0.235800 -0.552300 -0.121900 0.448000 -0.816000 0.336000
--0.200000 -0.549300 -0.182900 0.504000 -0.784000 0.344000
--0.204600 -0.552300 -0.182900 0.504000 -0.776000 0.360000
--0.200000 -0.552300 -0.190900 0.520000 -0.768000 0.360000
--0.200000 -0.552300 -0.190900 0.520000 -0.768000 0.360000
--0.200000 0.401700 -0.127400 -0.400000 0.440000 -0.800000
--0.200000 0.401700 -0.127400 -0.400000 0.440000 -0.800000
--0.150000 0.401700 -0.148200 -0.240000 0.400000 -0.872000
--0.200000 0.351500 -0.146000 -0.416000 0.224000 -0.872000
--0.150000 0.351500 -0.156300 -0.024000 0.152000 -0.984000
--0.200000 0.301200 -0.154100 -0.392000 0.112000 -0.904000
--0.150000 0.301200 -0.169700 -0.080000 0.248000 -0.960000
--0.150000 0.351500 -0.156300 -0.024000 0.152000 -0.984000
--0.100000 0.301200 -0.172200 -0.168000 0.416000 -0.888000
--0.100000 0.351500 -0.158200 0.008000 0.264000 -0.960000
--0.150000 0.351500 -0.156300 -0.024000 0.152000 -0.984000
--0.100000 0.401700 -0.143600 0.056000 0.120000 -0.984000
--0.150000 0.401700 -0.148200 -0.240000 0.400000 -0.872000
--0.100000 0.451900 -0.142300 -0.128000 0.312000 -0.936000
--0.150000 0.451900 -0.123200 -0.344000 0.512000 -0.784000
--0.150000 0.451900 -0.123200 -0.344000 0.512000 -0.784000
--0.100000 0.044900 -0.121900 0.816000 0.112000 0.552000
--0.100000 0.044900 -0.121900 0.816000 0.112000 0.552000
--0.100700 0.050200 -0.121900 0.856000 0.048000 0.504000
--0.100000 0.050200 -0.123300 0.696000 -0.176000 0.688000
--0.100000 0.050200 -0.123300 0.696000 -0.176000 0.688000
--0.100000 0.451900 -0.142300 -0.128000 0.312000 -0.936000
--0.100000 0.451900 -0.142300 -0.128000 0.312000 -0.936000
--0.050000 0.451900 -0.137500 0.040000 0.112000 -0.992000
--0.100000 0.401700 -0.143600 0.056000 0.120000 -0.984000
--0.050000 0.401700 -0.142300 0.000000 0.168000 -0.984000
--0.100000 0.351500 -0.158200 0.008000 0.264000 -0.960000
--0.050000 0.351500 -0.155800 -0.048000 0.328000 -0.936000
--0.050000 0.401700 -0.142300 0.000000 0.168000 -0.984000
-0.000000 0.351500 -0.164900 -0.080000 0.368000 -0.920000
-0.000000 0.401700 -0.144600 -0.056000 0.192000 -0.976000
-0.050000 0.351500 -0.166400 0.000000 0.392000 -0.912000
-0.050000 0.401700 -0.150400 -0.088000 0.216000 -0.968000
-0.100000 0.351500 -0.169000 0.056000 0.272000 -0.952000
-0.100000 0.401700 -0.152800 -0.048000 0.168000 -0.984000
-0.150000 0.351500 -0.160600 0.144000 0.128000 -0.976000
-0.150000 0.401700 -0.154900 -0.096000 0.088000 -0.984000
-0.200000 0.351500 -0.169700 -0.320000 0.304000 -0.888000
-0.200000 0.401700 -0.169400 -0.056000 0.168000 -0.976000
-0.150000 0.401700 -0.154900 -0.096000 0.088000 -0.984000
-0.200000 0.451900 -0.151000 0.136000 0.400000 -0.896000
-0.150000 0.451900 -0.151900 0.184000 0.376000 -0.904000
-0.200000 0.484800 -0.121900 0.312000 0.872000 0.360000
-0.150000 0.502100 -0.123200 0.032000 0.424000 -0.896000
-0.153400 0.502100 -0.121900 0.448000 0.824000 -0.336000
-0.153400 0.502100 -0.121900 0.448000 0.824000 -0.336000
--0.089600 0.000000 -0.121900 0.568000 0.512000 0.632000
--0.089600 0.000000 -0.121900 0.568000 0.512000 0.632000
--0.050000 0.000000 -0.158900 0.584000 0.336000 0.728000
--0.050000 -0.024600 -0.121900 0.296000 0.656000 0.688000
-0.000000 0.000000 -0.165000 0.096000 0.640000 0.752000
-0.000000 -0.035500 -0.121900 0.072000 0.496000 0.856000
-0.050000 0.000000 -0.179700 0.216000 0.504000 0.832000
-0.050000 -0.038600 -0.121900 0.000000 0.528000 0.840000
-0.100000 0.000000 -0.179900 0.000000 0.528000 0.840000
-0.100000 -0.037100 -0.121900 -0.016000 0.544000 0.832000
-0.100000 -0.037100 -0.121900 -0.016000 0.544000 0.832000
--0.054100 -0.401700 -0.121900 0.656000 -0.688000 0.280000
--0.054100 -0.401700 -0.121900 0.656000 -0.688000 0.280000
--0.098000 -0.451900 -0.121900 0.712000 -0.680000 0.120000
--0.061900 -0.401700 -0.182900 0.744000 -0.648000 -0.120000
--0.098100 -0.451900 -0.182900 0.736000 -0.672000 0.032000
--0.071000 -0.401700 -0.243900 0.856000 -0.496000 -0.072000
--0.094700 -0.451900 -0.243900 0.784000 -0.568000 0.216000
--0.073900 -0.401700 -0.304800 0.784000 -0.304000 -0.528000
--0.061500 -0.451900 -0.304800 0.928000 -0.352000 0.088000
--0.100000 -0.401700 -0.330800 0.576000 -0.152000 -0.792000
--0.100000 -0.451900 -0.336100 0.496000 -0.048000 -0.856000
--0.150000 -0.401700 -0.364300 0.552000 0.080000 -0.824000
--0.145700 -0.451900 -0.365800 0.464000 0.040000 -0.880000
--0.150000 -0.417500 -0.365800 0.544000 0.056000 -0.832000
--0.150000 -0.451900 -0.368100 0.456000 -0.056000 -0.880000
--0.145700 -0.451900 -0.365800 0.464000 0.040000 -0.880000
--0.150000 -0.502100 -0.367300 0.088000 -0.320000 -0.936000
--0.147100 -0.502100 -0.365800 0.472000 -0.192000 -0.848000
--0.150000 -0.505900 -0.365800 0.272000 -0.320000 -0.904000
--0.150000 -0.505900 -0.365800 0.272000 -0.320000 -0.904000
--0.050000 0.401700 -0.142300 0.000000 0.168000 -0.984000
--0.050000 0.401700 -0.142300 0.000000 0.168000 -0.984000
--0.050000 0.451900 -0.137500 0.040000 0.112000 -0.992000
-0.000000 0.401700 -0.144600 -0.056000 0.192000 -0.976000
-0.000000 0.451900 -0.135500 0.000000 0.160000 -0.984000
-0.050000 0.401700 -0.150400 -0.088000 0.216000 -0.968000
-0.050000 0.451900 -0.139600 -0.080000 0.232000 -0.960000
-0.100000 0.401700 -0.152800 -0.048000 0.168000 -0.984000
-0.100000 0.451900 -0.146900 -0.088000 0.224000 -0.968000
-0.150000 0.401700 -0.154900 -0.096000 0.088000 -0.984000
-0.150000 0.451900 -0.151900 0.184000 0.376000 -0.904000
-0.150000 0.451900 -0.151900 0.184000 0.376000 -0.904000
--0.012800 0.200800 -0.121900 0.688000 -0.616000 0.376000
--0.012800 0.200800 -0.121900 0.688000 -0.616000 0.376000
-0.000000 0.211400 -0.121900 0.496000 -0.712000 0.480000
-0.000000 0.200800 -0.169000 0.576000 -0.744000 0.320000
-0.000000 0.200800 -0.169000 0.576000 -0.744000 0.320000
--0.050000 0.150600 -0.159500 0.712000 -0.480000 0.504000
--0.050000 0.150600 -0.159500 0.712000 -0.480000 0.504000
--0.033200 0.150600 -0.182900 0.832000 -0.552000 -0.016000
--0.050000 0.116900 -0.182900 0.944000 -0.304000 0.048000
--0.050000 0.150600 -0.210200 0.840000 -0.208000 -0.496000
--0.050000 0.150600 -0.210200 0.840000 -0.208000 -0.496000
--0.050000 0.047900 -0.182900 0.488000 0.480000 0.720000
--0.050000 0.047900 -0.182900 0.488000 0.480000 0.720000
--0.050000 0.000000 -0.158900 0.584000 0.336000 0.728000
-0.000000 0.039200 -0.182900 0.256000 0.544000 0.792000
-0.000000 0.000000 -0.165000 0.096000 0.640000 0.752000
-0.050000 0.005700 -0.182900 0.312000 0.584000 0.744000
-0.050000 0.000000 -0.179700 0.216000 0.504000 0.832000
-0.100000 0.004900 -0.182900 -0.288000 0.864000 0.400000
-0.100000 0.000000 -0.179900 0.000000 0.528000 0.840000
-0.100000 0.000000 -0.179900 0.000000 0.528000 0.840000
-0.000000 0.200800 -0.169000 0.576000 -0.744000 0.320000
-0.000000 0.200800 -0.169000 0.576000 -0.744000 0.320000
-0.008500 0.200800 -0.182900 0.416000 -0.688000 -0.584000
-0.000000 0.195100 -0.182900 0.504000 -0.656000 -0.544000
-0.000000 0.200800 -0.186400 0.272000 -0.456000 -0.840000
-0.000000 0.200800 -0.186400 0.272000 -0.456000 -0.840000
-0.050000 -0.327900 -0.182900 0.552000 -0.824000 0.048000
-0.050000 -0.327900 -0.182900 0.552000 -0.824000 0.048000
-0.003100 -0.351500 -0.182900 0.504000 -0.840000 -0.160000
-0.050000 -0.321600 -0.121900 0.584000 -0.712000 0.376000
-0.006400 -0.351500 -0.121900 0.552000 -0.776000 0.288000
-0.006400 -0.351500 -0.121900 0.552000 -0.776000 0.288000
-0.150000 0.251000 -0.128300 0.144000 -0.904000 0.392000
-0.150000 0.251000 -0.128300 0.144000 -0.904000 0.392000
-0.150000 0.284700 -0.182900 0.352000 0.368000 -0.856000
-0.194700 0.251000 -0.182900 0.496000 -0.104000 -0.856000
-0.150000 0.251000 -0.192500 0.112000 0.024000 -0.992000
-0.150000 0.224100 -0.182900 0.056000 -0.672000 -0.728000
-0.194700 0.251000 -0.182900 0.496000 -0.104000 -0.856000
-0.150000 0.251000 -0.128300 0.144000 -0.904000 0.392000
-0.150000 0.251000 -0.128300 0.144000 -0.904000 0.392000
-0.211500 -0.301200 -0.182900 -0.568000 -0.672000 0.464000
-0.211500 -0.301200 -0.182900 -0.568000 -0.672000 0.464000
-0.250000 -0.301200 -0.149400 -0.376000 -0.584000 0.712000
-0.250000 -0.319600 -0.182900 -0.280000 -0.832000 0.472000
-0.300000 -0.301200 -0.149800 -0.024000 -0.480000 0.872000
-0.300000 -0.330300 -0.182900 -0.312000 -0.696000 0.632000
-0.350000 -0.301200 -0.148100 0.392000 -0.048000 0.912000
-0.331500 -0.351500 -0.182900 -0.432000 -0.576000 0.688000
-0.350000 -0.351500 -0.171100 -0.312000 -0.512000 0.792000
-0.350000 -0.366900 -0.182900 -0.368000 -0.552000 0.736000
-0.400000 -0.351500 -0.165500 0.064000 -0.056000 0.992000
-0.400000 -0.370500 -0.182900 -0.008000 -0.616000 0.776000
-0.450000 -0.351500 -0.174300 0.040000 0.080000 0.992000
-0.450000 -0.370700 -0.182900 -0.080000 -0.520000 0.848000
-0.500000 -0.351500 -0.156800 -0.392000 -0.248000 0.880000
-0.500000 -0.372900 -0.182900 -0.184000 -0.776000 0.592000
-0.450000 -0.370700 -0.182900 -0.080000 -0.520000 0.848000
-0.500000 -0.400600 -0.243900 0.024000 -0.920000 0.384000
-0.450000 -0.401700 -0.212100 0.240000 -0.816000 0.520000
-0.496800 -0.401700 -0.243900 0.256000 -0.880000 0.376000
-0.450000 -0.418500 -0.243900 -0.152000 -0.896000 0.400000
-0.492100 -0.401700 -0.304800 0.152000 -0.576000 -0.792000
-0.450000 -0.411100 -0.304800 -0.144000 -0.808000 -0.560000
-0.450000 -0.401700 -0.316200 -0.184000 -0.360000 -0.904000
-0.428900 -0.401700 -0.304800 -0.392000 -0.464000 -0.784000
-0.450000 -0.380500 -0.304800 -0.144000 0.256000 -0.952000
-0.400000 -0.401700 -0.257800 0.112000 -0.952000 -0.280000
-0.450000 -0.351500 -0.290700 -0.176000 0.632000 -0.744000
-0.400000 -0.388800 -0.304800 0.392000 -0.800000 -0.448000
-0.437100 -0.351500 -0.304800 0.688000 0.472000 -0.536000
-0.400000 -0.351500 -0.338800 0.360000 -0.568000 -0.728000
-0.401200 -0.301200 -0.304800 0.744000 0.488000 -0.440000
-0.400000 -0.301200 -0.307300 0.704000 0.496000 -0.496000
-0.400000 -0.299100 -0.304800 0.736000 0.472000 -0.472000
-0.401200 -0.301200 -0.304800 0.744000 0.488000 -0.440000
-0.400000 -0.252300 -0.243900 0.744000 0.488000 -0.440000
-0.429200 -0.301200 -0.243900 0.816000 0.544000 -0.176000
-0.400000 -0.252800 -0.182900 0.760000 0.464000 0.440000
-0.427100 -0.301200 -0.182900 0.776000 0.464000 0.416000
-0.400000 -0.301200 -0.149800 0.528000 0.376000 0.752000
-0.450000 -0.338000 -0.182900 0.248000 0.592000 0.752000
-0.400000 -0.351500 -0.165500 0.064000 -0.056000 0.992000
-0.450000 -0.351500 -0.174300 0.040000 0.080000 0.992000
-0.450000 -0.338000 -0.182900 0.248000 0.592000 0.752000
-0.500000 -0.351500 -0.156800 -0.392000 -0.248000 0.880000
-0.500000 -0.316400 -0.182900 -0.704000 0.472000 0.520000
-0.450000 -0.338000 -0.182900 0.248000 0.592000 0.752000
-0.500000 -0.310500 -0.243900 -0.600000 0.776000 -0.152000
-0.450000 -0.327300 -0.243900 -0.064000 0.864000 -0.488000
-0.500000 -0.333600 -0.304800 -0.408000 0.824000 -0.376000
-0.450000 -0.351500 -0.290700 -0.176000 0.632000 -0.744000
-0.458900 -0.351500 -0.304800 -0.472000 0.360000 -0.792000
-0.450000 -0.380500 -0.304800 -0.144000 0.256000 -0.952000
-0.500000 -0.400200 -0.304800 -0.176000 -0.672000 -0.712000
-0.492100 -0.401700 -0.304800 0.152000 -0.576000 -0.792000
-0.500000 -0.400600 -0.243900 0.024000 -0.920000 0.384000
-0.496800 -0.401700 -0.243900 0.256000 -0.880000 0.376000
-0.496800 -0.401700 -0.243900 0.256000 -0.880000 0.376000
-0.265700 0.200800 -0.182900 -0.312000 -0.760000 -0.552000
-0.265700 0.200800 -0.182900 -0.312000 -0.760000 -0.552000
-0.300000 0.218000 -0.182900 0.768000 0.424000 -0.464000
-0.300000 0.200800 -0.174500 0.536000 -0.360000 0.752000
-0.306800 0.200800 -0.182900 0.752000 -0.400000 -0.512000
-0.300000 0.193900 -0.182900 0.520000 -0.696000 -0.480000
-0.300000 0.200800 -0.185900 0.256000 -0.192000 -0.944000
-0.265700 0.200800 -0.182900 -0.312000 -0.760000 -0.552000
-0.300000 0.218000 -0.182900 0.768000 0.424000 -0.464000
-0.300000 0.200800 -0.185900 0.256000 -0.192000 -0.944000
-0.306800 0.200800 -0.182900 0.752000 -0.400000 -0.512000
-0.306800 0.200800 -0.182900 0.752000 -0.400000 -0.512000
-0.265700 0.200800 -0.182900 -0.312000 -0.760000 -0.552000
-0.265700 0.200800 -0.182900 -0.312000 -0.760000 -0.552000
-0.300000 0.200800 -0.174500 0.536000 -0.360000 0.752000
-0.300000 0.193900 -0.182900 0.520000 -0.696000 -0.480000
-0.300000 0.193900 -0.182900 0.520000 -0.696000 -0.480000
-0.300000 0.284000 -0.182900 -0.168000 -0.184000 -0.960000
-0.300000 0.284000 -0.182900 -0.168000 -0.184000 -0.960000
-0.300000 0.251000 -0.156100 -0.368000 -0.808000 -0.448000
-0.321900 0.251000 -0.182900 -0.240000 -0.296000 -0.920000
-0.321900 0.251000 -0.182900 -0.240000 -0.296000 -0.920000
-0.307700 -0.050200 -0.121900 -0.592000 0.464000 0.648000
-0.307700 -0.050200 -0.121900 -0.592000 0.464000 0.648000
-0.300000 -0.060700 -0.121900 -0.512000 0.456000 0.720000
-0.300000 -0.050200 -0.130700 -0.504000 0.472000 0.720000
-0.300000 -0.050200 -0.130700 -0.504000 0.472000 0.720000
-0.329200 -0.200800 -0.121900 0.376000 -0.264000 0.880000
-0.329200 -0.200800 -0.121900 0.376000 -0.264000 0.880000
-0.350000 -0.182300 -0.121900 -0.032000 -0.520000 0.848000
-0.350000 -0.200800 -0.137500 0.248000 -0.232000 0.936000
-0.391400 -0.200800 -0.121900 -0.176000 -0.648000 0.736000
-0.391400 -0.200800 -0.121900 -0.176000 -0.648000 0.736000
-0.400000 0.100400 -0.150800 -0.768000 0.376000 0.512000
-0.400000 0.100400 -0.150800 -0.768000 0.376000 0.512000
-0.381500 0.100400 -0.182900 -0.896000 0.440000 -0.008000
-0.400000 0.146600 -0.182900 -0.440000 0.464000 -0.760000
-0.400000 0.100400 -0.207800 -0.424000 0.688000 -0.576000
-0.400000 0.100400 -0.207800 -0.424000 0.688000 -0.576000
-0.400000 -0.203000 -0.121900 -0.184000 -0.672000 0.712000
-0.400000 -0.203000 -0.121900 -0.184000 -0.672000 0.712000
-0.354900 -0.251000 -0.121900 0.704000 -0.304000 0.632000
-0.400000 -0.249800 -0.182900 0.472000 -0.752000 0.448000
-0.398900 -0.251000 -0.182900 0.896000 -0.160000 0.400000
-0.400000 -0.249400 -0.243900 0.760000 -0.472000 -0.424000
-0.399000 -0.251000 -0.243900 0.912000 -0.008000 -0.392000
-0.399000 -0.251000 -0.243900 0.912000 -0.008000 -0.392000
-0.400000 -0.351500 -0.165500 0.064000 -0.056000 0.992000
-0.400000 -0.351500 -0.165500 0.064000 -0.056000 0.992000
-0.350000 -0.351500 -0.171100 -0.312000 -0.512000 0.792000
-0.400000 -0.301200 -0.149800 0.528000 0.376000 0.752000
-0.350000 -0.301200 -0.148100 0.392000 -0.048000 0.912000
-0.350000 -0.301200 -0.148100 0.392000 -0.048000 0.912000
-0.450000 -0.251000 -0.179900 -0.288000 -0.680000 0.664000
-0.450000 -0.251000 -0.179900 -0.288000 -0.680000 0.664000
-0.450000 -0.255300 -0.182900 -0.208000 -0.656000 0.712000
-0.415700 -0.251000 -0.182900 -0.088000 -0.872000 0.480000
-0.450000 -0.251000 -0.203800 -0.216000 -0.960000 -0.144000
-0.450000 -0.251000 -0.203800 -0.216000 -0.960000 -0.144000
-0.500000 0.355500 -0.182900 0.400000 0.616000 -0.664000
-0.500000 0.355500 -0.182900 0.400000 0.616000 -0.664000
-0.506000 0.351500 -0.182900 0.424000 0.584000 -0.680000
-0.500000 0.393600 -0.121900 0.504000 0.744000 -0.432000
-0.550000 0.351500 -0.135900 0.456000 0.632000 -0.616000
-0.550000 0.362300 -0.121900 0.400000 0.656000 -0.632000
-0.566700 0.351500 -0.121900 0.448000 0.536000 -0.704000
-0.566700 0.351500 -0.121900 0.448000 0.536000 -0.704000
-0.550000 0.351500 -0.135900 0.456000 0.632000 -0.616000
-0.550000 0.351500 -0.135900 0.456000 0.632000 -0.616000
-0.550000 0.301200 -0.167400 0.408000 0.504000 -0.752000
-0.506000 0.351500 -0.182900 0.424000 0.584000 -0.680000
-0.526000 0.301200 -0.182900 0.408000 0.312000 -0.848000
-0.500000 0.351500 -0.187300 0.416000 0.568000 -0.696000
-0.500000 0.301200 -0.193500 0.168000 0.072000 -0.976000
-0.526000 0.301200 -0.182900 0.408000 0.312000 -0.848000
-0.500000 0.251000 -0.199400 0.072000 0.096000 -0.984000
-0.550000 0.283200 -0.182900 0.320000 0.472000 -0.816000
-0.550000 0.251000 -0.199600 0.176000 0.288000 -0.936000
-0.500000 0.251000 -0.199400 0.072000 0.096000 -0.984000
-0.550000 0.200800 -0.211100 0.016000 0.048000 -0.992000
-0.500000 0.200800 -0.200200 -0.104000 -0.048000 -0.992000
-0.550000 0.150600 -0.215400 -0.144000 0.080000 -0.984000
-0.500000 0.150600 -0.194400 -0.208000 0.240000 -0.944000
-0.550000 0.100400 -0.212600 -0.200000 0.352000 -0.904000
-0.500000 0.100400 -0.210700 0.048000 0.704000 -0.704000
-0.550000 0.067800 -0.243900 0.024000 0.672000 -0.728000
-0.500000 0.082500 -0.243900 0.216000 0.832000 -0.504000
-0.550000 0.050200 -0.258400 0.160000 0.632000 -0.752000
-0.500000 0.050200 -0.303800 0.264000 0.816000 -0.504000
-0.550000 0.015600 -0.304800 0.472000 0.712000 -0.512000
-0.500000 0.049600 -0.304800 0.264000 0.736000 -0.616000
-0.550000 0.000000 -0.335900 0.576000 0.464000 -0.664000
-0.500000 0.014000 -0.365800 0.216000 0.784000 -0.568000
-0.524100 0.000000 -0.365800 0.648000 0.312000 -0.688000
-0.500000 0.000000 -0.393700 0.528000 0.072000 -0.840000
-0.500000 -0.027200 -0.365800 0.264000 -0.576000 -0.768000
-0.524100 0.000000 -0.365800 0.648000 0.312000 -0.688000
-0.500000 -0.050200 -0.339600 -0.136000 -0.672000 -0.720000
-0.550000 0.000000 -0.335900 0.576000 0.464000 -0.664000
-0.550000 -0.050200 -0.345500 0.192000 -0.560000 -0.792000
-0.550000 -0.050200 -0.345500 0.192000 -0.560000 -0.792000
-0.526000 0.301200 -0.182900 0.408000 0.312000 -0.848000
-0.526000 0.301200 -0.182900 0.408000 0.312000 -0.848000
-0.550000 0.283200 -0.182900 0.320000 0.472000 -0.816000
-0.550000 0.301200 -0.167400 0.408000 0.504000 -0.752000
-0.550000 0.301200 -0.167400 0.408000 0.504000 -0.752000
-0.500000 -0.250100 -0.121900 -0.432000 -0.712000 0.536000
-0.500000 -0.250100 -0.121900 -0.432000 -0.712000 0.536000
-0.501100 -0.251000 -0.121900 -0.552000 -0.624000 0.544000
-0.500000 -0.251000 -0.123800 -0.544000 -0.688000 0.456000
-0.500000 -0.251000 -0.123800 -0.544000 -0.688000 0.456000
-0.608400 0.251000 -0.182900 0.328000 0.488000 -0.800000
-0.608400 0.251000 -0.182900 0.328000 0.488000 -0.800000
-0.650000 0.227800 -0.182900 0.368000 0.576000 -0.720000
-0.650000 0.251000 -0.154700 0.488000 0.640000 -0.584000
-0.650000 0.251000 -0.154700 0.488000 0.640000 -0.584000
-0.600000 -0.333000 -0.121900 0.024000 -0.312000 0.944000
-0.600000 -0.333000 -0.121900 0.024000 -0.312000 0.944000
-0.600000 -0.351500 -0.136300 0.144000 -0.792000 0.584000
-0.650000 -0.327200 -0.121900 -0.280000 -0.536000 0.792000
-0.650000 -0.351500 -0.143500 -0.280000 -0.536000 0.784000
-0.679500 -0.351500 -0.121900 -0.424000 -0.464000 0.768000
-0.650000 -0.401700 -0.175000 -0.240000 -0.688000 0.680000
-0.700000 -0.372000 -0.121900 -0.360000 -0.440000 0.816000
-0.700000 -0.401700 -0.145100 -0.400000 -0.504000 0.752000
-0.737900 -0.401700 -0.121900 -0.352000 -0.448000 0.816000
-0.700000 -0.435200 -0.182900 -0.448000 -0.712000 0.536000
-0.750000 -0.411100 -0.121900 -0.304000 -0.456000 0.824000
-0.719600 -0.451900 -0.182900 -0.568000 -0.640000 0.512000
-0.750000 -0.451900 -0.153800 -0.384000 -0.528000 0.752000
-0.750000 -0.479900 -0.182900 -0.456000 -0.632000 0.616000
-0.719600 -0.451900 -0.182900 -0.568000 -0.640000 0.512000
-0.750000 -0.502100 -0.236900 -0.448000 -0.776000 0.432000
-0.700000 -0.451900 -0.215800 -0.528000 -0.696000 0.472000
-0.744200 -0.502100 -0.243900 -0.480000 -0.864000 0.128000
-0.700000 -0.472400 -0.243900 -0.560000 -0.816000 -0.016000
-0.750000 -0.502100 -0.254300 -0.448000 -0.832000 -0.312000
-0.700000 -0.481300 -0.304800 -0.240000 -0.712000 -0.656000
-0.750000 -0.487000 -0.304800 -0.104000 -0.744000 -0.656000
-0.700000 -0.451900 -0.321600 -0.136000 -0.312000 -0.936000
-0.750000 -0.451900 -0.330900 0.152000 -0.080000 -0.984000
-0.700000 -0.401700 -0.334100 0.120000 -0.128000 -0.976000
-0.750000 -0.401700 -0.321600 0.336000 0.000000 -0.936000
-0.700000 -0.351500 -0.333900 0.344000 -0.040000 -0.936000
-0.750000 -0.351500 -0.307800 0.512000 0.128000 -0.840000
-0.700000 -0.301200 -0.354900 0.160000 -0.240000 -0.952000
-0.750000 -0.334300 -0.304800 0.512000 0.112000 -0.840000
-0.744500 -0.301200 -0.304800 0.640000 0.104000 -0.760000
-0.750000 -0.301200 -0.299800 0.512000 0.144000 -0.840000
-0.728900 -0.251000 -0.304800 0.720000 0.440000 -0.528000
-0.750000 -0.251000 -0.256700 0.824000 0.520000 -0.208000
-0.700000 -0.211400 -0.304800 0.288000 0.624000 -0.720000
-0.750000 -0.247000 -0.243900 0.832000 0.536000 -0.096000
-0.700000 -0.200800 -0.294000 0.576000 0.608000 -0.536000
-0.717800 -0.200800 -0.243900 0.824000 0.560000 -0.064000
-0.700000 -0.175300 -0.243900 0.752000 0.600000 -0.240000
-0.713600 -0.200800 -0.182900 0.824000 0.512000 0.224000
-0.700000 -0.178500 -0.182900 0.792000 0.568000 0.200000
-0.700000 -0.200800 -0.144600 0.696000 0.528000 0.480000
-0.700000 -0.200800 -0.144600 0.696000 0.528000 0.480000
-0.600000 -0.351500 -0.136300 0.144000 -0.792000 0.584000
-0.600000 -0.351500 -0.136300 0.144000 -0.792000 0.584000
-0.650000 -0.351500 -0.143500 -0.280000 -0.536000 0.784000
-0.600000 -0.392700 -0.182900 -0.184000 -0.752000 0.624000
-0.650000 -0.401700 -0.175000 -0.240000 -0.688000 0.680000
-0.628900 -0.401700 -0.182900 -0.216000 -0.760000 0.608000
-0.650000 -0.407700 -0.182900 -0.272000 -0.728000 0.624000
-0.600000 -0.401700 -0.203000 -0.208000 -0.872000 0.432000
-0.650000 -0.436800 -0.243900 -0.416000 -0.848000 0.320000
-0.600000 -0.414700 -0.243900 -0.184000 -0.936000 0.272000
-0.650000 -0.449600 -0.304800 -0.280000 -0.432000 -0.848000
-0.600000 -0.422100 -0.304800 -0.120000 -0.768000 -0.616000
-0.650000 -0.401700 -0.330300 -0.240000 -0.360000 -0.896000
-0.600000 -0.401700 -0.327900 -0.024000 -0.544000 -0.832000
-0.650000 -0.351500 -0.332000 0.016000 -0.144000 -0.984000
-0.600000 -0.351500 -0.337900 0.040000 -0.080000 -0.992000
-0.650000 -0.301200 -0.350300 0.016000 -0.440000 -0.888000
-0.600000 -0.301200 -0.352300 -0.528000 -0.312000 -0.776000
-0.600000 -0.301200 -0.352300 -0.528000 -0.312000 -0.776000
-0.650000 0.278000 -0.121900 0.448000 0.624000 -0.624000
-0.650000 0.278000 -0.121900 0.448000 0.624000 -0.624000
-0.650000 0.251000 -0.154700 0.488000 0.640000 -0.584000
-0.673000 0.251000 -0.121900 0.568000 0.576000 -0.584000
-0.673000 0.251000 -0.121900 0.568000 0.576000 -0.584000
-0.700000 -0.401700 -0.145100 -0.400000 -0.504000 0.752000
-0.700000 -0.401700 -0.145100 -0.400000 -0.504000 0.752000
-0.650000 -0.401700 -0.175000 -0.240000 -0.688000 0.680000
-0.700000 -0.435200 -0.182900 -0.448000 -0.712000 0.536000
-0.650000 -0.407700 -0.182900 -0.272000 -0.728000 0.624000
-0.700000 -0.451900 -0.215800 -0.528000 -0.696000 0.472000
-0.650000 -0.436800 -0.243900 -0.416000 -0.848000 0.320000
-0.673600 -0.451900 -0.243900 -0.480000 -0.752000 0.448000
-0.650000 -0.449600 -0.304800 -0.280000 -0.432000 -0.848000
-0.653100 -0.451900 -0.304800 -0.336000 -0.480000 -0.800000
-0.650000 -0.401700 -0.330300 -0.240000 -0.360000 -0.896000
-0.700000 -0.451900 -0.321600 -0.136000 -0.312000 -0.936000
-0.700000 -0.401700 -0.334100 0.120000 -0.128000 -0.976000
-0.650000 -0.401700 -0.330300 -0.240000 -0.360000 -0.896000
-0.700000 -0.351500 -0.333900 0.344000 -0.040000 -0.936000
-0.650000 -0.351500 -0.332000 0.016000 -0.144000 -0.984000
-0.700000 -0.301200 -0.354900 0.160000 -0.240000 -0.952000
-0.650000 -0.301200 -0.350300 0.016000 -0.440000 -0.888000
-0.650000 -0.301200 -0.350300 0.016000 -0.440000 -0.888000
-0.719200 -0.251000 -0.121900 0.760000 0.456000 0.440000
-0.719200 -0.251000 -0.121900 0.760000 0.456000 0.440000
-0.750000 -0.297400 -0.121900 0.656000 0.584000 0.464000
-0.746300 -0.251000 -0.182900 0.848000 0.496000 0.152000
-0.750000 -0.257500 -0.182900 0.856000 0.488000 0.120000
-0.750000 -0.251000 -0.218200 0.840000 0.520000 0.096000
-0.777000 -0.301200 -0.182900 0.784000 0.536000 0.304000
-0.752500 -0.251000 -0.243900 0.840000 0.528000 -0.096000
-0.780500 -0.301200 -0.243900 0.848000 0.504000 -0.128000
-0.777000 -0.301200 -0.182900 0.784000 0.536000 0.304000
-0.800000 -0.328800 -0.243900 0.640000 0.656000 -0.384000
-0.800000 -0.333100 -0.182900 0.680000 0.680000 0.256000
-0.829500 -0.351500 -0.243900 0.648000 0.640000 -0.400000
-0.821300 -0.351500 -0.182900 0.624000 0.648000 0.416000
-0.850000 -0.375700 -0.243900 0.544000 0.616000 -0.552000
-0.850000 -0.381900 -0.182900 0.632000 0.696000 0.328000
-0.890600 -0.401700 -0.243900 0.576000 0.616000 -0.528000
-0.872200 -0.401700 -0.182900 0.632000 0.640000 0.416000
-0.900000 -0.412700 -0.243900 0.520000 0.640000 -0.552000
-0.900000 -0.433800 -0.182900 0.512000 0.688000 0.504000
-0.950000 -0.433400 -0.243900 0.528000 0.832000 0.152000
-0.933400 -0.451900 -0.182900 0.464000 0.712000 0.512000
-0.950000 -0.451900 -0.206400 0.504000 0.736000 0.440000
-0.950000 -0.463500 -0.182900 0.464000 0.672000 0.568000
-0.933400 -0.451900 -0.182900 0.464000 0.712000 0.512000
-0.950000 -0.502100 -0.136000 -0.296000 0.400000 0.864000
-0.900000 -0.451900 -0.156900 0.400000 0.632000 0.656000
-0.900000 -0.502100 -0.123800 -0.168000 -0.208000 0.960000
-0.850000 -0.451900 -0.123600 0.328000 0.296000 0.888000
-0.850000 -0.502100 -0.142100 -0.224000 -0.520000 0.816000
-0.850000 -0.502100 -0.142100 -0.224000 -0.520000 0.816000
-0.750000 -0.257500 -0.182900 0.856000 0.488000 0.120000
-0.750000 -0.257500 -0.182900 0.856000 0.488000 0.120000
-0.750000 -0.297400 -0.121900 0.656000 0.584000 0.464000
-0.777000 -0.301200 -0.182900 0.784000 0.536000 0.304000
-0.752700 -0.301200 -0.121900 0.792000 0.344000 0.488000
-0.800000 -0.333100 -0.182900 0.680000 0.680000 0.256000
-0.775700 -0.351500 -0.121900 0.600000 0.328000 0.720000
-0.800000 -0.351500 -0.149400 0.664000 0.512000 0.528000
-0.800000 -0.391100 -0.121900 0.384000 0.416000 0.816000
-0.821300 -0.351500 -0.182900 0.624000 0.648000 0.416000
-0.810500 -0.401700 -0.121900 0.456000 0.104000 0.872000
-0.850000 -0.381900 -0.182900 0.632000 0.696000 0.328000
-0.850000 -0.401700 -0.151500 0.608000 0.552000 0.560000
-0.872200 -0.401700 -0.182900 0.632000 0.640000 0.416000
-0.850000 -0.451900 -0.123600 0.328000 0.296000 0.888000
-0.900000 -0.433800 -0.182900 0.512000 0.688000 0.504000
-0.900000 -0.451900 -0.156900 0.400000 0.632000 0.656000
-0.933400 -0.451900 -0.182900 0.464000 0.712000 0.512000
-0.933400 -0.451900 -0.182900 0.464000 0.712000 0.512000
-0.783200 -0.502100 -0.182900 -0.448000 -0.720000 0.512000
-0.783200 -0.502100 -0.182900 -0.448000 -0.720000 0.512000
-0.800000 -0.502100 -0.171200 -0.360000 -0.648000 0.664000
-0.800000 -0.511100 -0.182900 -0.376000 -0.744000 0.544000
-0.800000 -0.511100 -0.182900 -0.376000 -0.744000 0.544000
-0.800000 -0.333100 -0.182900 0.680000 0.680000 0.256000
-0.800000 -0.333100 -0.182900 0.680000 0.680000 0.256000
-0.821300 -0.351500 -0.182900 0.624000 0.648000 0.416000
-0.800000 -0.351500 -0.149400 0.664000 0.512000 0.528000
-0.800000 -0.351500 -0.149400 0.664000 0.512000 0.528000
-0.900000 -0.552300 -0.159100 -0.496000 -0.592000 0.632000
-0.900000 -0.552300 -0.159100 -0.496000 -0.592000 0.632000
-0.900000 -0.573700 -0.182900 -0.608000 -0.704000 0.344000
-0.876500 -0.552300 -0.182900 -0.528000 -0.672000 0.504000
-0.900000 -0.578300 -0.243900 -0.552000 -0.704000 -0.440000
-0.868400 -0.552300 -0.243900 -0.552000 -0.760000 -0.328000
-0.900000 -0.552300 -0.278500 -0.424000 -0.592000 -0.672000
-0.900000 -0.552300 -0.278500 -0.424000 -0.592000 -0.672000
-0.900000 0.127900 -0.121900 0.560000 0.776000 -0.264000
-0.900000 0.127900 -0.121900 0.560000 0.776000 -0.264000
-0.931600 0.100400 -0.121900 0.600000 0.744000 -0.272000
-0.900000 0.111100 -0.182900 0.552000 0.712000 -0.416000
-0.912000 0.100400 -0.182900 0.600000 0.704000 -0.360000
-0.900000 0.100400 -0.203200 0.536000 0.688000 -0.472000
-0.900000 0.100400 -0.203200 0.536000 0.688000 -0.472000
-0.950000 -0.602500 -0.169200 -0.536000 -0.520000 0.656000
-0.950000 -0.602500 -0.169200 -0.536000 -0.520000 0.656000
-0.950000 -0.619400 -0.182900 -0.632000 -0.592000 0.480000
-0.935000 -0.602500 -0.182900 -0.552000 -0.552000 0.608000
-0.950000 -0.619400 -0.243900 -0.600000 -0.584000 -0.536000
-0.933200 -0.602500 -0.243900 -0.584000 -0.624000 -0.512000
-0.950000 -0.602500 -0.260200 -0.544000 -0.504000 -0.664000
-0.950000 -0.602500 -0.260200 -0.544000 -0.504000 -0.664000
-1.000000 -0.251000 -0.154300 -0.728000 -0.648000 0.200000
-1.000000 -0.251000 -0.154300 -0.728000 -0.648000 0.200000
-1.000000 -0.258900 -0.182900 -0.752000 -0.616000 0.208000
-0.993400 -0.251000 -0.182900 -0.736000 -0.640000 0.200000
-1.000000 -0.277900 -0.243900 -0.712000 -0.592000 0.360000
-0.978600 -0.251000 -0.243900 -0.696000 -0.616000 0.352000
-0.978600 -0.251000 -0.243900 -0.696000 -0.616000 0.352000
-0.950000 -0.560000 -0.121900 -0.400000 -0.536000 0.728000
-0.950000 -0.560000 -0.121900 -0.400000 -0.536000 0.728000
-0.992300 -0.602500 -0.121900 -0.520000 -0.480000 0.696000
-0.950000 -0.602500 -0.169200 -0.536000 -0.520000 0.656000
-0.950000 -0.602500 -0.169200 -0.536000 -0.520000 0.656000
-1.000000 -0.652700 -0.168000 -0.488000 -0.568000 0.656000
-1.000000 -0.652700 -0.168000 -0.488000 -0.568000 0.656000
-1.000000 -0.666200 -0.182900 -0.536000 -0.632000 0.544000
-0.983200 -0.652700 -0.182900 -0.528000 -0.608000 0.584000
-1.000000 -0.673300 -0.243900 -0.656000 -0.656000 -0.368000
-0.979500 -0.652700 -0.243900 -0.672000 -0.664000 -0.304000
-1.000000 -0.652700 -0.268800 -0.592000 -0.512000 -0.608000
-1.000000 -0.652700 -0.268800 -0.592000 -0.512000 -0.608000
--1.000000 0.256900 -0.182900 0.288000 0.752000 -0.584000
--1.000000 0.256900 -0.182900 0.288000 0.752000 -0.584000
--1.000000 0.251000 -0.191500 0.280000 0.728000 -0.616000
--0.985000 0.251000 -0.182900 0.288000 0.752000 -0.576000
--0.985000 0.251000 -0.182900 0.288000 0.752000 -0.576000
--0.980800 0.200800 -0.243900 0.232000 0.632000 -0.736000
--0.980800 0.200800 -0.243900 0.232000 0.632000 -0.736000
--0.950000 0.189400 -0.243900 0.264000 0.616000 -0.728000
--0.950000 0.200800 -0.231900 0.272000 0.640000 -0.704000
--0.950000 0.200800 -0.231900 0.272000 0.640000 -0.704000
--0.900000 0.214200 -0.182900 0.360000 0.720000 -0.576000
--0.900000 0.214200 -0.182900 0.360000 0.720000 -0.576000
--0.900000 0.200800 -0.201400 0.352000 0.680000 -0.640000
--0.874200 0.200800 -0.182900 0.360000 0.712000 -0.584000
--0.874200 0.200800 -0.182900 0.360000 0.712000 -0.584000
--0.878700 0.150600 -0.243900 0.328000 0.616000 -0.704000
--0.878700 0.150600 -0.243900 0.328000 0.616000 -0.704000
--0.850000 0.135500 -0.243900 0.320000 0.608000 -0.712000
--0.850000 0.150600 -0.229000 0.320000 0.608000 -0.720000
--0.850000 0.150600 -0.229000 0.320000 0.608000 -0.720000
--0.900000 -0.542100 -0.182900 -0.808000 -0.560000 0.136000
--0.900000 -0.542100 -0.182900 -0.808000 -0.560000 0.136000
--0.900000 -0.551700 -0.243900 -0.808000 -0.568000 -0.120000
--0.892400 -0.552300 -0.182900 -0.760000 -0.624000 0.176000
--0.899500 -0.552300 -0.243900 -0.800000 -0.592000 -0.072000
--0.850000 -0.592600 -0.182900 -0.520000 -0.800000 0.264000
--0.851300 -0.602500 -0.243900 -0.680000 -0.720000 -0.008000
--0.850000 -0.602500 -0.238600 -0.616000 -0.752000 0.216000
--0.850000 -0.603800 -0.243900 -0.656000 -0.744000 0.064000
--0.832500 -0.602500 -0.182900 -0.576000 -0.768000 0.272000
--0.800000 -0.632800 -0.243900 -0.432000 -0.896000 0.072000
--0.800000 -0.620600 -0.182900 -0.312000 -0.880000 0.336000
--0.750000 -0.646000 -0.243900 -0.088000 -0.984000 0.144000
--0.750000 -0.630100 -0.182900 -0.144000 -0.912000 0.360000
--0.750000 -0.630100 -0.182900 -0.144000 -0.912000 0.360000
--0.820300 -0.502100 -0.182900 0.496000 0.792000 0.344000
--0.820300 -0.502100 -0.182900 0.496000 0.792000 0.344000
--0.800000 -0.502100 -0.227500 0.432000 0.824000 0.352000
--0.800000 -0.513200 -0.182900 -0.080000 0.880000 0.456000
--0.750000 -0.502100 -0.184800 -0.496000 0.696000 0.496000
--0.750000 -0.503000 -0.182900 -0.200000 0.848000 0.472000
--0.749300 -0.502100 -0.182900 -0.920000 -0.232000 0.288000
--0.750000 -0.502100 -0.184800 -0.496000 0.696000 0.496000
--0.750000 -0.499500 -0.182900 -0.936000 -0.200000 0.264000
--0.750000 -0.499500 -0.182900 -0.936000 -0.200000 0.264000
--0.850000 -0.592600 -0.182900 -0.520000 -0.800000 0.264000
--0.850000 -0.592600 -0.182900 -0.520000 -0.800000 0.264000
--0.832500 -0.602500 -0.182900 -0.576000 -0.768000 0.272000
--0.850000 -0.602500 -0.238600 -0.616000 -0.752000 0.216000
--0.850000 -0.602500 -0.238600 -0.616000 -0.752000 0.216000
--0.650000 0.045800 -0.182900 0.672000 0.432000 -0.592000
--0.650000 0.045800 -0.182900 0.672000 0.432000 -0.592000
--0.650000 0.000000 -0.224600 0.632000 0.368000 -0.672000
--0.621400 0.000000 -0.182900 0.848000 0.280000 -0.440000
--0.621400 0.000000 -0.182900 0.848000 0.280000 -0.440000
--0.600000 -0.629300 -0.182900 0.072000 -0.968000 0.224000
--0.600000 -0.629300 -0.182900 0.072000 -0.968000 0.224000
--0.600000 -0.640700 -0.243900 0.080000 -0.976000 0.192000
--0.550000 -0.618800 -0.182900 0.168000 -0.944000 0.272000
--0.550000 -0.629900 -0.243900 0.160000 -0.960000 0.200000
--0.500000 -0.610400 -0.182900 -0.136000 -0.936000 0.304000
--0.500000 -0.625200 -0.243900 -0.096000 -0.960000 0.240000
--0.550000 -0.629900 -0.243900 0.160000 -0.960000 0.200000
--0.500000 -0.637800 -0.304800 -0.208000 -0.976000 -0.032000
--0.550000 -0.639800 -0.304800 0.152000 -0.984000 0.000000
--0.500000 -0.633000 -0.365800 -0.088000 -0.968000 -0.200000
--0.550000 -0.637200 -0.365800 0.152000 -0.968000 -0.168000
--0.550000 -0.639800 -0.304800 0.152000 -0.984000 0.000000
--0.600000 -0.645500 -0.365800 0.016000 -0.968000 -0.216000
--0.600000 -0.650800 -0.304800 0.064000 -0.992000 0.000000
--0.550000 -0.639800 -0.304800 0.152000 -0.984000 0.000000
--0.600000 -0.640700 -0.243900 0.080000 -0.976000 0.192000
--0.550000 -0.629900 -0.243900 0.160000 -0.960000 0.200000
--0.550000 -0.629900 -0.243900 0.160000 -0.960000 0.200000
--0.403600 -0.100400 -0.182900 -0.616000 0.592000 -0.512000
--0.403600 -0.100400 -0.182900 -0.616000 0.592000 -0.512000
--0.400000 -0.100400 -0.188300 -0.616000 0.576000 -0.520000
--0.400000 -0.096400 -0.182900 -0.664000 0.552000 -0.496000
--0.354400 -0.100400 -0.243900 -0.584000 0.448000 -0.664000
--0.365500 -0.050200 -0.182900 -0.728000 0.384000 -0.560000
--0.350000 -0.093900 -0.243900 -0.600000 0.408000 -0.680000
--0.350000 -0.050200 -0.209400 -0.696000 0.392000 -0.584000
--0.321700 -0.050200 -0.243900 -0.656000 0.344000 -0.656000
--0.350000 -0.016600 -0.182900 -0.688000 0.360000 -0.616000
--0.301700 0.000000 -0.243900 -0.744000 0.392000 -0.536000
--0.340600 0.000000 -0.182900 -0.696000 0.480000 -0.520000
--0.340600 0.000000 -0.182900 -0.696000 0.480000 -0.520000
--0.444500 -0.150600 -0.243900 -0.312000 0.784000 -0.528000
--0.444500 -0.150600 -0.243900 -0.312000 0.784000 -0.528000
--0.450000 -0.150600 -0.239400 -0.408000 0.792000 -0.448000
--0.450000 -0.152500 -0.243900 -0.384000 0.800000 -0.448000
--0.450000 -0.152500 -0.243900 -0.384000 0.800000 -0.448000
--0.400000 -0.651500 -0.182900 -0.552000 -0.472000 0.672000
--0.400000 -0.651500 -0.182900 -0.552000 -0.472000 0.672000
--0.400000 -0.652700 -0.184800 -0.640000 -0.536000 0.536000
--0.450000 -0.629600 -0.182900 -0.344000 -0.872000 0.320000
--0.428400 -0.652700 -0.243900 -0.584000 -0.736000 0.336000
--0.450000 -0.644000 -0.243900 -0.352000 -0.912000 0.200000
--0.450000 -0.652700 -0.293400 -0.288000 -0.936000 0.160000
--0.428400 -0.652700 -0.243900 -0.584000 -0.736000 0.336000
--0.450000 -0.654300 -0.304800 -0.272000 -0.952000 0.040000
--0.400000 -0.663600 -0.243900 -0.504000 -0.840000 0.160000
--0.400000 -0.672200 -0.304800 -0.400000 -0.904000 -0.128000
--0.363900 -0.703000 -0.243900 -0.784000 -0.584000 0.176000
--0.371300 -0.703000 -0.304800 -0.816000 -0.552000 -0.144000
--0.350000 -0.730400 -0.243900 -0.544000 -0.776000 0.296000
--0.350000 -0.747900 -0.304800 -0.512000 -0.832000 -0.184000
--0.300000 -0.736500 -0.243900 0.320000 -0.832000 0.440000
--0.330700 -0.753200 -0.304800 -0.192000 -0.968000 -0.112000
--0.300000 -0.753200 -0.286100 0.088000 -0.928000 0.352000
--0.300000 -0.758500 -0.304800 0.104000 -0.976000 -0.144000
--0.281500 -0.753200 -0.304800 0.312000 -0.920000 -0.216000
--0.300000 -0.753200 -0.317300 0.136000 -0.840000 -0.512000
--0.300000 -0.758500 -0.304800 0.104000 -0.976000 -0.144000
--0.330700 -0.753200 -0.304800 -0.192000 -0.968000 -0.112000
--0.300000 -0.753200 -0.317300 0.136000 -0.840000 -0.512000
--0.350000 -0.747900 -0.304800 -0.512000 -0.832000 -0.184000
--0.300000 -0.703000 -0.365100 0.056000 -0.232000 -0.968000
--0.350000 -0.703000 -0.357000 -0.336000 -0.496000 -0.792000
--0.300000 -0.687100 -0.365800 0.104000 -0.048000 -0.992000
--0.350000 -0.679200 -0.365800 -0.072000 -0.176000 -0.976000
--0.350000 -0.703000 -0.357000 -0.336000 -0.496000 -0.792000
--0.400000 -0.653700 -0.365800 -0.176000 -0.888000 -0.416000
--0.371300 -0.703000 -0.304800 -0.816000 -0.552000 -0.144000
--0.400000 -0.672200 -0.304800 -0.400000 -0.904000 -0.128000
--0.400000 -0.672200 -0.304800 -0.400000 -0.904000 -0.128000
--0.428400 -0.652700 -0.243900 -0.584000 -0.736000 0.336000
--0.428400 -0.652700 -0.243900 -0.584000 -0.736000 0.336000
--0.400000 -0.652700 -0.184800 -0.640000 -0.536000 0.536000
--0.400000 -0.663600 -0.243900 -0.504000 -0.840000 0.160000
--0.396000 -0.652700 -0.182900 -0.176000 0.000000 0.984000
--0.363900 -0.703000 -0.243900 -0.784000 -0.584000 0.176000
--0.350700 -0.703000 -0.182900 -0.792000 -0.176000 0.576000
--0.350000 -0.730400 -0.243900 -0.544000 -0.776000 0.296000
--0.350000 -0.704300 -0.182900 -0.112000 -0.808000 0.576000
--0.300000 -0.736500 -0.243900 0.320000 -0.832000 0.440000
--0.300000 -0.708000 -0.182900 0.360000 -0.768000 0.520000
--0.300000 -0.708000 -0.182900 0.360000 -0.768000 0.520000
--0.365500 -0.050200 -0.182900 -0.728000 0.384000 -0.560000
--0.365500 -0.050200 -0.182900 -0.728000 0.384000 -0.560000
--0.350000 -0.050200 -0.209400 -0.696000 0.392000 -0.584000
--0.350000 -0.016600 -0.182900 -0.688000 0.360000 -0.616000
--0.350000 -0.016600 -0.182900 -0.688000 0.360000 -0.616000
--0.400000 -0.100400 -0.188300 -0.616000 0.576000 -0.520000
--0.400000 -0.100400 -0.188300 -0.616000 0.576000 -0.520000
--0.400000 -0.131400 -0.243900 -0.384000 0.744000 -0.536000
--0.354400 -0.100400 -0.243900 -0.584000 0.448000 -0.664000
--0.400000 -0.150600 -0.272200 -0.312000 0.624000 -0.704000
--0.350000 -0.100400 -0.248500 -0.576000 0.440000 -0.680000
--0.350000 -0.150600 -0.298700 -0.264000 0.464000 -0.840000
--0.400000 -0.150600 -0.272200 -0.312000 0.624000 -0.704000
--0.350000 -0.159400 -0.304800 -0.248000 0.528000 -0.808000
--0.400000 -0.174400 -0.304800 -0.224000 0.736000 -0.632000
--0.350000 -0.200800 -0.339000 0.200000 0.416000 -0.880000
--0.400000 -0.200800 -0.333600 -0.064000 0.568000 -0.816000
--0.350000 -0.248400 -0.365800 0.184000 0.424000 -0.880000
--0.400000 -0.239300 -0.365800 0.048000 0.512000 -0.848000
--0.350000 -0.251000 -0.367200 0.240000 0.168000 -0.952000
--0.400000 -0.251000 -0.373300 0.080000 0.400000 -0.904000
--0.350000 -0.301200 -0.377400 0.232000 0.208000 -0.944000
--0.400000 -0.301200 -0.390900 0.144000 0.296000 -0.936000
--0.350000 -0.351500 -0.416300 -0.176000 0.600000 -0.768000
--0.400000 -0.351500 -0.411400 0.000000 0.616000 -0.784000
--0.400000 -0.351500 -0.411400 0.000000 0.616000 -0.784000
--0.350000 -0.647900 -0.182900 0.008000 0.768000 0.624000
--0.350000 -0.647900 -0.182900 0.008000 0.768000 0.624000
--0.386500 -0.602500 -0.182900 0.376000 -0.032000 0.920000
--0.350000 -0.630200 -0.243900 -0.144000 0.776000 0.600000
--0.371400 -0.602500 -0.243900 0.928000 0.016000 0.352000
--0.371400 -0.602500 -0.243900 0.928000 0.016000 0.352000
--0.200000 0.172600 -0.182900 -0.488000 0.416000 -0.760000
--0.200000 0.172600 -0.182900 -0.488000 0.416000 -0.760000
--0.216700 0.150600 -0.182900 -0.560000 0.376000 -0.728000
--0.200000 0.150600 -0.197300 -0.488000 0.464000 -0.728000
--0.249100 0.100400 -0.182900 -0.576000 0.496000 -0.640000
--0.200000 0.100400 -0.242800 -0.520000 0.512000 -0.672000
--0.200000 0.100400 -0.242800 -0.520000 0.512000 -0.672000
--0.200000 0.172600 -0.182900 -0.488000 0.416000 -0.760000
--0.200000 0.172600 -0.182900 -0.488000 0.416000 -0.760000
--0.200000 0.150600 -0.197300 -0.488000 0.464000 -0.728000
--0.173800 0.200800 -0.182900 -0.480000 0.344000 -0.800000
--0.150000 0.150600 -0.235500 -0.296000 0.536000 -0.784000
--0.150000 0.200800 -0.199200 -0.328000 0.272000 -0.896000
--0.150000 0.200800 -0.199200 -0.328000 0.272000 -0.896000
-0.100000 0.004900 -0.182900 -0.288000 0.864000 0.400000
-0.100000 0.004900 -0.182900 -0.288000 0.864000 0.400000
-0.050000 0.005700 -0.182900 0.312000 0.584000 0.744000
-0.100000 0.000000 -0.203800 -0.256000 0.936000 -0.224000
-0.050000 0.042300 -0.243900 0.688000 0.376000 -0.616000
-0.078000 0.000000 -0.243900 0.336000 0.616000 -0.696000
-0.050000 0.000000 -0.258500 0.448000 0.256000 -0.848000
-0.100000 -0.005500 -0.243900 -0.184000 0.760000 -0.616000
-0.050000 -0.050200 -0.279200 0.280000 0.320000 -0.896000
-0.100000 -0.050200 -0.272200 -0.136000 0.384000 -0.904000
-0.050000 -0.100400 -0.298100 0.360000 0.248000 -0.896000
-0.100000 -0.100400 -0.298900 0.040000 0.136000 -0.984000
-0.100000 -0.100400 -0.298900 0.040000 0.136000 -0.984000
-0.078000 0.000000 -0.243900 0.336000 0.616000 -0.696000
-0.078000 0.000000 -0.243900 0.336000 0.616000 -0.696000
-0.100000 -0.005500 -0.243900 -0.184000 0.760000 -0.616000
-0.100000 0.000000 -0.203800 -0.256000 0.936000 -0.224000
-0.100000 0.000000 -0.203800 -0.256000 0.936000 -0.224000
-0.200000 -0.301200 -0.206400 -0.600000 -0.688000 0.384000
-0.200000 -0.301200 -0.206400 -0.600000 -0.688000 0.384000
-0.200000 -0.319700 -0.243900 -0.624000 -0.696000 0.328000
-0.176900 -0.301200 -0.243900 -0.504000 -0.800000 0.304000
-0.200000 -0.340400 -0.304800 -0.480000 -0.448000 -0.744000
-0.170700 -0.301200 -0.304800 -0.520000 -0.608000 -0.592000
-0.200000 -0.301200 -0.321600 -0.488000 -0.368000 -0.784000
-0.200000 -0.301200 -0.321600 -0.488000 -0.368000 -0.784000
-0.300000 -0.330300 -0.182900 -0.312000 -0.696000 0.632000
-0.300000 -0.330300 -0.182900 -0.312000 -0.696000 0.632000
-0.300000 -0.351500 -0.225700 -0.416000 -0.800000 0.416000
-0.250000 -0.319600 -0.182900 -0.280000 -0.832000 0.472000
-0.277600 -0.351500 -0.243900 -0.264000 -0.888000 0.352000
-0.250000 -0.343100 -0.243900 -0.320000 -0.920000 0.208000
-0.271900 -0.351500 -0.304800 -0.112000 -0.784000 -0.608000
-0.250000 -0.348300 -0.304800 -0.128000 -0.736000 -0.656000
-0.300000 -0.351500 -0.310200 -0.192000 -0.728000 -0.648000
-0.250000 -0.313600 -0.365800 -0.336000 -0.640000 -0.680000
-0.300000 -0.308000 -0.365800 0.080000 -0.656000 -0.744000
-0.250000 -0.301200 -0.379400 -0.536000 -0.264000 -0.792000
-0.300000 -0.301200 -0.372900 0.128000 -0.472000 -0.864000
-0.300000 -0.308000 -0.365800 0.080000 -0.656000 -0.744000
-0.333500 -0.301200 -0.365800 0.208000 -0.080000 -0.968000
-0.300000 -0.351500 -0.310200 -0.192000 -0.728000 -0.648000
-0.350000 -0.301200 -0.360500 0.376000 0.184000 -0.904000
-0.348000 -0.351500 -0.365800 -0.720000 -0.032000 -0.680000
-0.350000 -0.334300 -0.365800 -0.304000 0.096000 -0.944000
-0.350000 -0.351500 -0.368100 -0.440000 0.096000 -0.888000
-0.355700 -0.351500 -0.365800 0.360000 -0.072000 -0.928000
-0.350000 -0.354600 -0.365800 -0.264000 -0.632000 -0.720000
-0.400000 -0.351500 -0.338800 0.360000 -0.568000 -0.728000
-0.350000 -0.401700 -0.317400 -0.608000 -0.560000 -0.544000
-0.400000 -0.388800 -0.304800 0.392000 -0.800000 -0.448000
-0.376800 -0.401700 -0.304800 0.336000 -0.848000 -0.392000
-0.400000 -0.401700 -0.257800 0.112000 -0.952000 -0.280000
-0.350000 -0.410700 -0.304800 -0.592000 -0.664000 -0.440000
-0.400000 -0.404800 -0.243900 0.016000 -0.968000 0.240000
-0.350000 -0.409600 -0.243900 -0.632000 -0.696000 0.320000
-0.400000 -0.401700 -0.239700 -0.184000 -0.720000 0.656000
-0.350000 -0.401700 -0.229000 -0.616000 -0.656000 0.416000
-0.400000 -0.370500 -0.182900 -0.008000 -0.616000 0.776000
-0.350000 -0.366900 -0.182900 -0.368000 -0.552000 0.736000
-0.350000 -0.401700 -0.229000 -0.616000 -0.656000 0.416000
-0.331500 -0.351500 -0.182900 -0.432000 -0.576000 0.688000
-0.343800 -0.401700 -0.243900 -0.728000 -0.584000 0.344000
-0.300000 -0.351500 -0.225700 -0.416000 -0.800000 0.416000
-0.300000 -0.357600 -0.243900 -0.288000 -0.920000 0.248000
-0.277600 -0.351500 -0.243900 -0.264000 -0.888000 0.352000
-0.300000 -0.355300 -0.304800 -0.272000 -0.752000 -0.592000
-0.271900 -0.351500 -0.304800 -0.112000 -0.784000 -0.608000
-0.300000 -0.351500 -0.310200 -0.192000 -0.728000 -0.648000
-0.300000 -0.355300 -0.304800 -0.272000 -0.752000 -0.592000
-0.348000 -0.351500 -0.365800 -0.720000 -0.032000 -0.680000
-0.344100 -0.401700 -0.304800 -0.784000 -0.512000 -0.336000
-0.350000 -0.354600 -0.365800 -0.264000 -0.632000 -0.720000
-0.350000 -0.401700 -0.317400 -0.608000 -0.560000 -0.544000
-0.344100 -0.401700 -0.304800 -0.784000 -0.512000 -0.336000
-0.350000 -0.410700 -0.304800 -0.592000 -0.664000 -0.440000
-0.343800 -0.401700 -0.243900 -0.728000 -0.584000 0.344000
-0.350000 -0.409600 -0.243900 -0.632000 -0.696000 0.320000
-0.350000 -0.401700 -0.229000 -0.616000 -0.656000 0.416000
-0.350000 -0.401700 -0.229000 -0.616000 -0.656000 0.416000
-0.300000 -0.330300 -0.182900 -0.312000 -0.696000 0.632000
-0.300000 -0.330300 -0.182900 -0.312000 -0.696000 0.632000
-0.331500 -0.351500 -0.182900 -0.432000 -0.576000 0.688000
-0.300000 -0.351500 -0.225700 -0.416000 -0.800000 0.416000
-0.300000 -0.351500 -0.225700 -0.416000 -0.800000 0.416000
-0.427100 -0.301200 -0.182900 0.776000 0.464000 0.416000
-0.427100 -0.301200 -0.182900 0.776000 0.464000 0.416000
-0.450000 -0.338000 -0.182900 0.248000 0.592000 0.752000
-0.429200 -0.301200 -0.243900 0.816000 0.544000 -0.176000
-0.450000 -0.327300 -0.243900 -0.064000 0.864000 -0.488000
-0.401200 -0.301200 -0.304800 0.744000 0.488000 -0.440000
-0.450000 -0.351500 -0.290700 -0.176000 0.632000 -0.744000
-0.437100 -0.351500 -0.304800 0.688000 0.472000 -0.536000
-0.437100 -0.351500 -0.304800 0.688000 0.472000 -0.536000
-0.450000 -0.370700 -0.182900 -0.080000 -0.520000 0.848000
-0.450000 -0.370700 -0.182900 -0.080000 -0.520000 0.848000
-0.400000 -0.370500 -0.182900 -0.008000 -0.616000 0.776000
-0.450000 -0.401700 -0.212100 0.240000 -0.816000 0.520000
-0.400000 -0.401700 -0.239700 -0.184000 -0.720000 0.656000
-0.450000 -0.418500 -0.243900 -0.152000 -0.896000 0.400000
-0.400000 -0.404800 -0.243900 0.016000 -0.968000 0.240000
-0.450000 -0.411100 -0.304800 -0.144000 -0.808000 -0.560000
-0.400000 -0.401700 -0.257800 0.112000 -0.952000 -0.280000
-0.428900 -0.401700 -0.304800 -0.392000 -0.464000 -0.784000
-0.428900 -0.401700 -0.304800 -0.392000 -0.464000 -0.784000
-0.500000 0.355500 -0.182900 0.400000 0.616000 -0.664000
-0.500000 0.355500 -0.182900 0.400000 0.616000 -0.664000
-0.500000 0.351500 -0.187300 0.416000 0.568000 -0.696000
-0.506000 0.351500 -0.182900 0.424000 0.584000 -0.680000
-0.506000 0.351500 -0.182900 0.424000 0.584000 -0.680000
-0.550000 -0.401700 -0.218900 -0.128000 -0.904000 0.392000
-0.550000 -0.401700 -0.218900 -0.128000 -0.904000 0.392000
-0.550000 -0.409700 -0.243900 -0.144000 -0.944000 0.272000
-0.503900 -0.401700 -0.243900 -0.232000 -0.936000 0.256000
-0.550000 -0.415900 -0.304800 -0.192000 -0.848000 -0.480000
-0.502600 -0.401700 -0.304800 -0.320000 -0.840000 -0.416000
-0.550000 -0.401700 -0.333700 -0.144000 -0.688000 -0.704000
-0.550000 -0.401700 -0.333700 -0.144000 -0.688000 -0.704000
-0.600000 0.200800 -0.209200 0.248000 0.288000 -0.920000
-0.600000 0.200800 -0.209200 0.248000 0.288000 -0.920000
-0.650000 0.200800 -0.204000 0.272000 0.408000 -0.864000
-0.600000 0.150600 -0.225200 0.008000 0.128000 -0.984000
-0.650000 0.150600 -0.219600 0.200000 0.280000 -0.928000
-0.600000 0.100400 -0.237100 -0.096000 0.168000 -0.976000
-0.650000 0.100400 -0.241400 0.232000 0.064000 -0.968000
-0.600000 0.076600 -0.243900 -0.096000 0.360000 -0.920000
-0.650000 0.067400 -0.243900 0.208000 0.056000 -0.968000
-0.600000 0.050200 -0.251100 0.248000 0.344000 -0.896000
-0.650000 0.050200 -0.244900 0.216000 0.040000 -0.968000
-0.600000 0.000000 -0.284600 0.512000 0.112000 -0.840000
-0.650000 0.000000 -0.248500 0.680000 -0.160000 -0.712000
-0.650000 0.000000 -0.248500 0.680000 -0.160000 -0.712000
-0.600000 -0.392700 -0.182900 -0.184000 -0.752000 0.624000
-0.600000 -0.392700 -0.182900 -0.184000 -0.752000 0.624000
-0.628900 -0.401700 -0.182900 -0.216000 -0.760000 0.608000
-0.600000 -0.401700 -0.203000 -0.208000 -0.872000 0.432000
-0.600000 -0.401700 -0.203000 -0.208000 -0.872000 0.432000
-0.700000 -0.451900 -0.215800 -0.528000 -0.696000 0.472000
-0.700000 -0.451900 -0.215800 -0.528000 -0.696000 0.472000
-0.700000 -0.472400 -0.243900 -0.560000 -0.816000 -0.016000
-0.673600 -0.451900 -0.243900 -0.480000 -0.752000 0.448000
-0.700000 -0.481300 -0.304800 -0.240000 -0.712000 -0.656000
-0.653100 -0.451900 -0.304800 -0.336000 -0.480000 -0.800000
-0.700000 -0.451900 -0.321600 -0.136000 -0.312000 -0.936000
-0.700000 -0.451900 -0.321600 -0.136000 -0.312000 -0.936000
-0.700000 -0.435200 -0.182900 -0.448000 -0.712000 0.536000
-0.700000 -0.435200 -0.182900 -0.448000 -0.712000 0.536000
-0.719600 -0.451900 -0.182900 -0.568000 -0.640000 0.512000
-0.700000 -0.451900 -0.215800 -0.528000 -0.696000 0.472000
-0.700000 -0.451900 -0.215800 -0.528000 -0.696000 0.472000
-0.750000 -0.502100 -0.236900 -0.448000 -0.776000 0.432000
-0.750000 -0.502100 -0.236900 -0.448000 -0.776000 0.432000
-0.750000 -0.505200 -0.243900 -0.480000 -0.856000 0.152000
-0.744200 -0.502100 -0.243900 -0.480000 -0.864000 0.128000
-0.750000 -0.502100 -0.254300 -0.448000 -0.832000 -0.312000
-0.750000 -0.502100 -0.254300 -0.448000 -0.832000 -0.312000
-0.750000 0.157000 -0.182900 0.280000 0.720000 -0.624000
-0.750000 0.157000 -0.182900 0.280000 0.720000 -0.624000
-0.750000 0.150600 -0.191500 0.256000 0.656000 -0.704000
-0.769100 0.150600 -0.182900 0.248000 0.704000 -0.648000
-0.769100 0.150600 -0.182900 0.248000 0.704000 -0.648000
-0.929600 0.050200 -0.243900 0.432000 0.672000 -0.584000
-0.929600 0.050200 -0.243900 0.432000 0.672000 -0.584000
-0.950000 0.037500 -0.243900 0.432000 0.688000 -0.576000
-0.950000 0.050200 -0.224500 0.472000 0.712000 -0.504000
-0.950000 0.050200 -0.224500 0.472000 0.712000 -0.504000
-0.950000 0.069900 -0.182900 0.544000 0.736000 -0.392000
-0.950000 0.069900 -0.182900 0.544000 0.736000 -0.392000
-0.950000 0.050200 -0.224500 0.472000 0.712000 -0.504000
-0.978000 0.050200 -0.182900 0.512000 0.768000 -0.376000
-0.978000 0.050200 -0.182900 0.512000 0.768000 -0.376000
-0.950000 -0.451900 -0.206400 0.504000 0.736000 0.440000
-0.950000 -0.451900 -0.206400 0.504000 0.736000 0.440000
-0.950000 -0.433400 -0.243900 0.528000 0.832000 0.152000
-0.980700 -0.451900 -0.243900 0.752000 0.648000 0.032000
-0.950000 -0.451900 -0.300000 0.488000 0.464000 -0.728000
-0.950000 -0.433400 -0.243900 0.528000 0.832000 0.152000
-0.900000 -0.451900 -0.272400 0.368000 0.408000 -0.824000
-0.900000 -0.412700 -0.243900 0.520000 0.640000 -0.552000
-0.850000 -0.451900 -0.293100 0.448000 0.248000 -0.848000
-0.890600 -0.401700 -0.243900 0.576000 0.616000 -0.528000
-0.850000 -0.401700 -0.268600 0.504000 0.432000 -0.744000
-0.850000 -0.375700 -0.243900 0.544000 0.616000 -0.552000
-0.800000 -0.401700 -0.291400 0.440000 0.456000 -0.760000
-0.829500 -0.351500 -0.243900 0.648000 0.640000 -0.400000
-0.800000 -0.351500 -0.277300 0.568000 0.408000 -0.704000
-0.800000 -0.328800 -0.243900 0.640000 0.656000 -0.384000
-0.800000 -0.328800 -0.243900 0.640000 0.656000 -0.384000
-1.000000 -0.503200 -0.182900 0.400000 0.704000 0.576000
-1.000000 -0.503200 -0.182900 0.400000 0.704000 0.576000
-0.998000 -0.502100 -0.182900 0.528000 0.664000 0.520000
-1.000000 -0.502100 -0.189300 0.760000 0.568000 0.296000
-1.000000 -0.502100 -0.189300 0.760000 0.568000 0.296000
--0.891000 -0.451900 -0.304800 0.528000 0.824000 -0.192000
--0.891000 -0.451900 -0.304800 0.528000 0.824000 -0.192000
--0.896800 -0.451900 -0.243900 0.600000 0.776000 0.136000
--0.850000 -0.473200 -0.304800 0.272000 0.896000 -0.336000
--0.850000 -0.480800 -0.243900 0.376000 0.912000 0.152000
--0.800000 -0.473000 -0.304800 -0.736000 0.648000 -0.168000
--0.800000 -0.496000 -0.243900 0.424000 0.840000 0.320000
--0.787800 -0.451900 -0.304800 -0.984000 0.136000 -0.040000
--0.769800 -0.451900 -0.243900 -0.952000 -0.080000 0.272000
--0.769800 -0.451900 -0.243900 -0.952000 -0.080000 0.272000
--0.900000 -0.551700 -0.243900 -0.808000 -0.568000 -0.120000
--0.900000 -0.551700 -0.243900 -0.808000 -0.568000 -0.120000
--0.900000 -0.539600 -0.304800 -0.720000 -0.488000 -0.480000
--0.899500 -0.552300 -0.243900 -0.800000 -0.592000 -0.072000
--0.891900 -0.552300 -0.304800 -0.800000 -0.568000 -0.136000
--0.851300 -0.602500 -0.243900 -0.680000 -0.720000 -0.008000
--0.850000 -0.602000 -0.304800 -0.640000 -0.736000 -0.184000
--0.850000 -0.602500 -0.285600 -0.672000 -0.728000 -0.024000
--0.849200 -0.602500 -0.304800 -0.536000 -0.720000 -0.432000
--0.850000 -0.603800 -0.243900 -0.656000 -0.744000 0.064000
--0.800000 -0.636000 -0.304800 -0.536000 -0.792000 -0.272000
--0.800000 -0.632800 -0.243900 -0.432000 -0.896000 0.072000
--0.750000 -0.652200 -0.304800 -0.040000 -0.952000 -0.288000
--0.750000 -0.646000 -0.243900 -0.088000 -0.984000 0.144000
--0.750000 -0.646000 -0.243900 -0.088000 -0.984000 0.144000
--0.850000 -0.603800 -0.243900 -0.656000 -0.744000 0.064000
--0.850000 -0.603800 -0.243900 -0.656000 -0.744000 0.064000
--0.850000 -0.602500 -0.285600 -0.672000 -0.728000 -0.024000
--0.851300 -0.602500 -0.243900 -0.680000 -0.720000 -0.008000
--0.851300 -0.602500 -0.243900 -0.680000 -0.720000 -0.008000
--0.800000 0.108800 -0.243900 0.352000 0.608000 -0.704000
--0.800000 0.108800 -0.243900 0.352000 0.608000 -0.704000
--0.800000 0.100400 -0.252800 0.360000 0.584000 -0.720000
--0.785800 0.100400 -0.243900 0.360000 0.584000 -0.720000
--0.785800 0.100400 -0.243900 0.360000 0.584000 -0.720000
--0.750000 0.077000 -0.243900 0.368000 0.552000 -0.744000
--0.750000 0.077000 -0.243900 0.368000 0.552000 -0.744000
--0.750000 0.050200 -0.267100 0.368000 0.432000 -0.816000
--0.711800 0.050200 -0.243900 0.416000 0.432000 -0.792000
--0.711800 0.050200 -0.243900 0.416000 0.432000 -0.792000
--0.731900 -0.150600 -0.304800 0.424000 0.400000 -0.808000
--0.731900 -0.150600 -0.304800 0.424000 0.400000 -0.808000
--0.700000 -0.175200 -0.304800 0.352000 0.528000 -0.768000
--0.700000 -0.150600 -0.284500 0.376000 0.392000 -0.832000
--0.700000 -0.150600 -0.284500 0.376000 0.392000 -0.832000
--0.650000 -0.200800 -0.303800 0.136000 0.680000 -0.712000
--0.650000 -0.200800 -0.303800 0.136000 0.680000 -0.712000
--0.651700 -0.200800 -0.304800 0.320000 0.544000 -0.768000
--0.650000 -0.201600 -0.304800 0.104000 0.688000 -0.704000
--0.700000 -0.200800 -0.326900 0.208000 0.528000 -0.816000
--0.650000 -0.251000 -0.354800 0.152000 0.632000 -0.752000
--0.700000 -0.251000 -0.364900 0.104000 0.560000 -0.816000
--0.650000 -0.261300 -0.365800 0.088000 0.568000 -0.808000
--0.700000 -0.252100 -0.365800 0.096000 0.552000 -0.824000
--0.700000 -0.251000 -0.364900 0.104000 0.560000 -0.816000
--0.707800 -0.251000 -0.365800 0.064000 0.432000 -0.896000
--0.700000 -0.200800 -0.326900 0.208000 0.528000 -0.816000
--0.750000 -0.240500 -0.365800 0.056000 0.272000 -0.952000
--0.750000 -0.200800 -0.348300 0.272000 0.384000 -0.872000
--0.800000 -0.234100 -0.365800 -0.112000 0.264000 -0.952000
--0.800000 -0.200800 -0.355700 0.080000 0.256000 -0.960000
--0.800000 -0.200800 -0.355700 0.080000 0.256000 -0.960000
--0.650000 -0.035200 -0.243900 0.544000 0.264000 -0.792000
--0.650000 -0.035200 -0.243900 0.544000 0.264000 -0.792000
--0.650000 -0.050200 -0.249300 0.496000 0.208000 -0.840000
--0.642900 -0.050200 -0.243900 0.560000 0.208000 -0.792000
--0.642900 -0.050200 -0.243900 0.560000 0.208000 -0.792000
--0.544700 -0.200800 -0.304800 -0.080000 0.824000 -0.552000
--0.544700 -0.200800 -0.304800 -0.080000 0.824000 -0.552000
--0.550000 -0.200800 -0.303600 -0.040000 0.880000 -0.464000
--0.550000 -0.201300 -0.304800 -0.032000 0.864000 -0.488000
--0.550000 -0.201300 -0.304800 -0.032000 0.864000 -0.488000
--0.354400 -0.100400 -0.243900 -0.584000 0.448000 -0.664000
--0.354400 -0.100400 -0.243900 -0.584000 0.448000 -0.664000
--0.350000 -0.100400 -0.248500 -0.576000 0.440000 -0.680000
--0.350000 -0.093900 -0.243900 -0.600000 0.408000 -0.680000
--0.350000 -0.093900 -0.243900 -0.600000 0.408000 -0.680000
--0.363900 -0.552300 -0.243900 0.816000 -0.480000 0.304000
--0.363900 -0.552300 -0.243900 0.816000 -0.480000 0.304000
--0.350000 -0.535600 -0.243900 0.360000 -0.840000 0.384000
--0.350000 -0.552300 -0.283400 -0.096000 -0.680000 0.720000
--0.317500 -0.552300 -0.243900 -0.600000 -0.648000 0.448000
--0.317500 -0.552300 -0.243900 -0.600000 -0.648000 0.448000
--0.300000 -0.050200 -0.270300 -0.824000 0.232000 -0.512000
--0.300000 -0.050200 -0.270300 -0.824000 0.232000 -0.512000
--0.266700 -0.050200 -0.304800 -0.504000 0.288000 -0.808000
--0.300000 -0.100400 -0.298100 -0.480000 0.288000 -0.824000
--0.288100 -0.100400 -0.304800 -0.408000 0.240000 -0.872000
--0.300000 -0.118900 -0.304800 -0.376000 0.264000 -0.880000
--0.300000 -0.118900 -0.304800 -0.376000 0.264000 -0.880000
--0.256000 -0.703000 -0.243900 0.696000 -0.392000 0.584000
--0.256000 -0.703000 -0.243900 0.696000 -0.392000 0.584000
--0.250000 -0.679700 -0.243900 0.728000 -0.208000 0.640000
--0.250000 -0.703000 -0.252700 0.704000 -0.368000 0.600000
--0.250000 -0.703000 -0.252700 0.704000 -0.368000 0.600000
--0.213400 0.000000 -0.304800 -0.304000 0.448000 -0.832000
--0.213400 0.000000 -0.304800 -0.304000 0.448000 -0.832000
--0.250000 0.000000 -0.286200 -0.320000 0.712000 -0.616000
--0.250000 -0.028200 -0.304800 -0.400000 0.416000 -0.808000
--0.250000 -0.028200 -0.304800 -0.400000 0.416000 -0.808000
--0.196100 -0.200800 -0.304800 0.360000 -0.200000 -0.904000
--0.196100 -0.200800 -0.304800 0.360000 -0.200000 -0.904000
--0.150000 -0.200800 -0.284500 0.024000 -0.216000 -0.968000
--0.150000 -0.159100 -0.304800 0.152000 -0.400000 -0.896000
--0.108400 -0.200800 -0.304800 -0.496000 -0.048000 -0.856000
--0.108400 -0.200800 -0.304800 -0.496000 -0.048000 -0.856000
--0.172800 -0.552300 -0.243900 0.592000 -0.568000 0.560000
--0.172800 -0.552300 -0.243900 0.592000 -0.568000 0.560000
--0.150000 -0.530700 -0.243900 0.632000 -0.664000 0.392000
--0.150000 -0.552300 -0.270100 0.544000 -0.504000 0.656000
--0.150000 -0.552300 -0.270100 0.544000 -0.504000 0.656000
--0.126800 0.150600 -0.243900 -0.208000 0.496000 -0.832000
--0.126800 0.150600 -0.243900 -0.208000 0.496000 -0.832000
--0.100000 0.150600 -0.251000 -0.024000 0.408000 -0.904000
--0.100000 0.164100 -0.243900 -0.032000 0.432000 -0.896000
--0.077600 0.150600 -0.243900 0.320000 0.328000 -0.880000
--0.077600 0.150600 -0.243900 0.320000 0.328000 -0.880000
--0.150000 0.100400 -0.267100 -0.312000 0.440000 -0.832000
--0.150000 0.100400 -0.267100 -0.312000 0.440000 -0.832000
--0.100000 0.100400 -0.276400 0.032000 0.376000 -0.920000
--0.150000 0.050200 -0.299600 -0.080000 0.408000 -0.904000
--0.100000 0.050200 -0.292200 0.304000 0.312000 -0.896000
--0.150000 0.040500 -0.304800 -0.136000 0.416000 -0.896000
--0.100000 0.022400 -0.304800 0.184000 0.304000 -0.928000
--0.150000 0.000000 -0.322200 0.064000 0.240000 -0.968000
--0.100000 0.000000 -0.309600 0.168000 0.152000 -0.968000
--0.150000 -0.050200 -0.328000 0.128000 0.064000 -0.984000
--0.100000 -0.050200 -0.318600 0.080000 0.144000 -0.984000
--0.150000 -0.100400 -0.338700 0.056000 -0.088000 -0.992000
--0.100000 -0.100400 -0.323700 -0.040000 -0.152000 -0.984000
--0.150000 -0.150600 -0.309500 -0.032000 -0.400000 -0.912000
--0.100000 -0.150600 -0.315000 -0.456000 -0.064000 -0.880000
--0.100000 -0.150600 -0.315000 -0.456000 -0.064000 -0.880000
--0.077600 0.000000 -0.304800 0.248000 0.344000 -0.896000
--0.077600 0.000000 -0.304800 0.248000 0.344000 -0.896000
--0.050000 -0.015100 -0.304800 0.280000 0.536000 -0.784000
--0.050000 0.000000 -0.288000 0.256000 0.560000 -0.776000
--0.050000 0.000000 -0.288000 0.256000 0.560000 -0.776000
--0.013800 -0.351500 -0.243900 0.552000 -0.808000 -0.168000
--0.013800 -0.351500 -0.243900 0.552000 -0.808000 -0.168000
--0.050000 -0.380500 -0.243900 0.664000 -0.736000 -0.104000
--0.026900 -0.351500 -0.304800 0.608000 -0.688000 -0.384000
--0.050000 -0.374600 -0.304800 0.584000 -0.672000 -0.448000
--0.050000 -0.351500 -0.336900 0.024000 -0.576000 -0.808000
--0.050000 -0.351500 -0.336900 0.024000 -0.576000 -0.808000
-0.050000 -0.050200 -0.279200 0.280000 0.320000 -0.896000
-0.050000 -0.050200 -0.279200 0.280000 0.320000 -0.896000
-0.004800 -0.050200 -0.304800 0.368000 0.176000 -0.904000
-0.050000 -0.100400 -0.298100 0.360000 0.248000 -0.896000
-0.039400 -0.100400 -0.304800 0.408000 0.224000 -0.880000
-0.039400 -0.100400 -0.304800 0.408000 0.224000 -0.880000
-0.113100 0.000000 -0.243900 -0.392000 0.768000 -0.496000
-0.113100 0.000000 -0.243900 -0.392000 0.768000 -0.496000
-0.150000 0.000000 -0.257100 -0.208000 0.552000 -0.800000
-0.150000 0.015400 -0.243900 -0.208000 0.728000 -0.640000
-0.150000 0.015400 -0.243900 -0.208000 0.728000 -0.640000
-0.200000 -0.100400 -0.298900 0.088000 0.040000 -0.992000
-0.200000 -0.100400 -0.298900 0.088000 0.040000 -0.992000
-0.185500 -0.100400 -0.304800 0.296000 0.104000 -0.944000
-0.200000 -0.139100 -0.304800 0.208000 0.104000 -0.968000
-0.150000 -0.100400 -0.322200 0.000000 0.224000 -0.968000
-0.200000 -0.150600 -0.306400 0.192000 0.112000 -0.968000
-0.150000 -0.150600 -0.323600 -0.232000 0.464000 -0.848000
-0.200000 -0.200800 -0.335700 -0.120000 0.200000 -0.968000
-0.150000 -0.200800 -0.325200 0.160000 0.176000 -0.968000
-0.200000 -0.251000 -0.346500 -0.184000 0.088000 -0.976000
-0.150000 -0.251000 -0.336000 0.080000 -0.336000 -0.928000
-0.150000 -0.251000 -0.336000 0.080000 -0.336000 -0.928000
-0.211400 -0.050200 -0.304800 0.152000 0.184000 -0.968000
-0.211400 -0.050200 -0.304800 0.152000 0.184000 -0.968000
-0.200000 -0.061600 -0.304800 0.000000 -0.144000 -0.984000
-0.250000 -0.050200 -0.297000 0.000000 0.040000 -0.992000
-0.200000 -0.100400 -0.298900 0.088000 0.040000 -0.992000
-0.250000 -0.100400 -0.298400 -0.088000 0.216000 -0.968000
-0.200000 -0.139100 -0.304800 0.208000 0.104000 -0.968000
-0.250000 -0.114900 -0.304800 -0.104000 0.280000 -0.952000
-0.200000 -0.150600 -0.306400 0.192000 0.112000 -0.968000
-0.250000 -0.150600 -0.317700 0.024000 0.336000 -0.936000
-0.200000 -0.200800 -0.335700 -0.120000 0.200000 -0.968000
-0.250000 -0.200800 -0.343100 0.104000 0.232000 -0.960000
-0.200000 -0.251000 -0.346500 -0.184000 0.088000 -0.976000
-0.250000 -0.251000 -0.353900 0.064000 0.384000 -0.920000
-0.250000 -0.251000 -0.353900 0.064000 0.384000 -0.920000
-0.250000 -0.050200 -0.297000 0.000000 0.040000 -0.992000
-0.250000 -0.050200 -0.297000 0.000000 0.040000 -0.992000
-0.266500 -0.050200 -0.304800 -0.280000 0.064000 -0.952000
-0.250000 -0.100400 -0.298400 -0.088000 0.216000 -0.968000
-0.278900 -0.100400 -0.304800 -0.176000 0.256000 -0.944000
-0.250000 -0.114900 -0.304800 -0.104000 0.280000 -0.952000
-0.250000 -0.114900 -0.304800 -0.104000 0.280000 -0.952000
-0.350000 -0.127600 -0.304800 0.032000 -0.600000 -0.792000
-0.350000 -0.127600 -0.304800 0.032000 -0.600000 -0.792000
-0.313400 -0.150600 -0.304800 0.400000 -0.360000 -0.840000
-0.350000 -0.150600 -0.283600 -0.064000 -0.424000 -0.896000
-0.320800 -0.200800 -0.304800 0.496000 0.328000 -0.800000
-0.350000 -0.200800 -0.271400 0.216000 0.224000 -0.944000
-0.350000 -0.228300 -0.304800 0.616000 0.528000 -0.576000
-0.350000 -0.228300 -0.304800 0.616000 0.528000 -0.576000
-0.300000 -0.357600 -0.243900 -0.288000 -0.920000 0.248000
-0.300000 -0.357600 -0.243900 -0.288000 -0.920000 0.248000
-0.343800 -0.401700 -0.243900 -0.728000 -0.584000 0.344000
-0.300000 -0.355300 -0.304800 -0.272000 -0.752000 -0.592000
-0.344100 -0.401700 -0.304800 -0.784000 -0.512000 -0.336000
-0.344100 -0.401700 -0.304800 -0.784000 -0.512000 -0.336000
-0.350000 -0.127600 -0.304800 0.032000 -0.600000 -0.792000
-0.350000 -0.127600 -0.304800 0.032000 -0.600000 -0.792000
-0.350000 -0.150600 -0.283600 -0.064000 -0.424000 -0.896000
-0.380400 -0.150600 -0.304800 -0.424000 -0.456000 -0.776000
-0.380400 -0.150600 -0.304800 -0.424000 -0.456000 -0.776000
-0.419200 0.050200 -0.304800 -0.224000 0.736000 -0.632000
-0.419200 0.050200 -0.304800 -0.224000 0.736000 -0.632000
-0.400000 0.050200 -0.294000 -0.352000 0.672000 -0.640000
-0.400000 0.041200 -0.304800 -0.352000 0.672000 -0.648000
-0.400000 0.041200 -0.304800 -0.352000 0.672000 -0.648000
-0.400000 -0.168700 -0.304800 -0.504000 -0.464000 -0.720000
-0.400000 -0.168700 -0.304800 -0.504000 -0.464000 -0.720000
-0.400000 -0.200800 -0.276700 0.448000 -0.472000 -0.752000
-0.424400 -0.200800 -0.304800 -0.552000 -0.520000 -0.648000
-0.400000 -0.249400 -0.243900 0.760000 -0.472000 -0.424000
-0.450000 -0.217600 -0.304800 -0.352000 -0.736000 -0.560000
-0.450000 -0.248400 -0.243900 -0.224000 -0.888000 -0.384000
-0.450000 -0.248400 -0.243900 -0.224000 -0.888000 -0.384000
-0.550000 -0.150600 -0.287800 0.352000 0.528000 -0.768000
-0.550000 -0.150600 -0.287800 0.352000 0.528000 -0.768000
-0.523400 -0.150600 -0.304800 0.376000 0.592000 -0.704000
-0.550000 -0.162200 -0.304800 0.376000 0.720000 -0.576000
-0.500000 -0.150600 -0.319100 0.336000 0.504000 -0.792000
-0.550000 -0.194000 -0.365800 0.224000 0.896000 -0.368000
-0.500000 -0.200800 -0.334200 -0.376000 -0.448000 -0.800000
-0.535800 -0.200800 -0.365800 -0.736000 0.208000 -0.632000
-0.500000 -0.222600 -0.304800 -0.320000 -0.704000 -0.624000
-0.550000 -0.216200 -0.365800 -0.080000 -0.576000 -0.808000
-0.535300 -0.251000 -0.304800 -0.648000 -0.480000 -0.576000
-0.550000 -0.251000 -0.326800 -0.648000 -0.504000 -0.560000
-0.550000 -0.216200 -0.365800 -0.080000 -0.576000 -0.808000
-0.573000 -0.251000 -0.365800 -0.696000 0.544000 -0.464000
-0.559600 -0.200800 -0.365800 0.680000 0.504000 -0.520000
-0.600000 -0.231600 -0.365800 0.072000 0.640000 -0.760000
-0.594200 -0.200800 -0.304800 0.544000 0.576000 -0.600000
-0.600000 -0.206100 -0.304800 0.488000 0.616000 -0.608000
-0.600000 -0.200800 -0.298700 0.448000 0.592000 -0.656000
-0.650000 -0.208600 -0.304800 0.024000 0.680000 -0.728000
-0.650000 -0.200800 -0.297000 0.088000 0.616000 -0.776000
-0.600000 -0.200800 -0.298700 0.448000 0.592000 -0.656000
-0.650000 -0.150600 -0.274900 0.544000 0.464000 -0.688000
-0.600000 -0.150600 -0.265200 0.248000 0.032000 -0.960000
-0.600000 -0.200800 -0.298700 0.448000 0.592000 -0.656000
-0.550000 -0.150600 -0.287800 0.352000 0.528000 -0.768000
-0.594200 -0.200800 -0.304800 0.544000 0.576000 -0.600000
-0.550000 -0.162200 -0.304800 0.376000 0.720000 -0.576000
-0.559600 -0.200800 -0.365800 0.680000 0.504000 -0.520000
-0.550000 -0.194000 -0.365800 0.224000 0.896000 -0.368000
-0.550000 -0.200800 -0.388300 0.280000 0.584000 -0.752000
-0.535800 -0.200800 -0.365800 -0.736000 0.208000 -0.632000
-0.550000 -0.216200 -0.365800 -0.080000 -0.576000 -0.808000
-0.550000 -0.200800 -0.388300 0.280000 0.584000 -0.752000
-0.559600 -0.200800 -0.365800 0.680000 0.504000 -0.520000
-0.559600 -0.200800 -0.365800 0.680000 0.504000 -0.520000
-0.500000 -0.222600 -0.304800 -0.320000 -0.704000 -0.624000
-0.500000 -0.222600 -0.304800 -0.320000 -0.704000 -0.624000
-0.500000 -0.251000 -0.264200 -0.272000 -0.744000 -0.600000
-0.535300 -0.251000 -0.304800 -0.648000 -0.480000 -0.576000
-0.535300 -0.251000 -0.304800 -0.648000 -0.480000 -0.576000
-0.800000 -0.401700 -0.291400 0.440000 0.456000 -0.760000
-0.800000 -0.401700 -0.291400 0.440000 0.456000 -0.760000
-0.800000 -0.418300 -0.304800 0.408000 0.496000 -0.760000
-0.850000 -0.401700 -0.268600 0.504000 0.432000 -0.744000
-0.837100 -0.451900 -0.304800 0.528000 0.264000 -0.800000
-0.850000 -0.451900 -0.293100 0.448000 0.248000 -0.848000
-0.800000 -0.493800 -0.304800 0.032000 -0.688000 -0.720000
-0.850000 -0.490600 -0.304800 0.216000 0.112000 -0.968000
-0.800000 -0.502100 -0.293400 -0.120000 -0.840000 -0.520000
-0.832800 -0.502100 -0.304800 -0.104000 -0.544000 -0.824000
-0.832800 -0.502100 -0.304800 -0.104000 -0.544000 -0.824000
-0.858900 0.050200 -0.243900 -0.424000 0.568000 -0.696000
-0.858900 0.050200 -0.243900 -0.424000 0.568000 -0.696000
-0.900000 0.050200 -0.268900 0.208000 0.672000 -0.696000
-0.900000 0.070800 -0.243900 -0.096000 0.744000 -0.656000
-0.900000 0.070800 -0.243900 -0.096000 0.744000 -0.656000
-0.981700 -0.050200 -0.304800 0.528000 0.432000 -0.720000
-0.981700 -0.050200 -0.304800 0.528000 0.432000 -0.720000
-1.000000 -0.073100 -0.304800 0.536000 0.424000 -0.720000
-1.000000 -0.050200 -0.288900 0.520000 0.432000 -0.728000
-1.000000 -0.050200 -0.288900 0.520000 0.432000 -0.728000
--0.900000 0.104600 -0.304800 0.304000 0.568000 -0.760000
--0.900000 0.104600 -0.304800 0.304000 0.568000 -0.760000
--0.900000 0.100400 -0.308600 0.312000 0.536000 -0.776000
--0.892300 0.100400 -0.304800 0.320000 0.536000 -0.776000
--0.892300 0.100400 -0.304800 0.320000 0.536000 -0.776000
--0.850000 -0.301200 -0.321900 -0.728000 -0.616000 -0.280000
--0.850000 -0.301200 -0.321900 -0.728000 -0.616000 -0.280000
--0.850000 -0.251000 -0.359600 -0.320000 0.248000 -0.912000
--0.826000 -0.301200 -0.365800 -0.648000 -0.448000 -0.600000
--0.828000 -0.251000 -0.365800 -0.248000 0.216000 -0.936000
--0.800000 -0.301200 -0.380800 -0.264000 0.104000 -0.952000
--0.800000 -0.251000 -0.370300 -0.064000 0.200000 -0.976000
--0.750000 -0.301200 -0.392900 -0.104000 0.352000 -0.928000
--0.750000 -0.251000 -0.369800 0.056000 0.280000 -0.952000
--0.750000 -0.251000 -0.369800 0.056000 0.280000 -0.952000
--0.800000 -0.066700 -0.304800 0.296000 0.144000 -0.936000
--0.800000 -0.066700 -0.304800 0.296000 0.144000 -0.936000
--0.800000 -0.100400 -0.313000 0.368000 0.216000 -0.896000
--0.785000 -0.100400 -0.304800 0.328000 0.224000 -0.912000
--0.785000 -0.100400 -0.304800 0.328000 0.224000 -0.912000
--0.750000 -0.129200 -0.304800 0.392000 0.376000 -0.832000
--0.750000 -0.129200 -0.304800 0.392000 0.376000 -0.832000
--0.750000 -0.150600 -0.317800 0.416000 0.384000 -0.816000
--0.731900 -0.150600 -0.304800 0.424000 0.400000 -0.808000
--0.731900 -0.150600 -0.304800 0.424000 0.400000 -0.808000
--0.576800 -0.251000 -0.365800 -0.136000 0.624000 -0.760000
--0.576800 -0.251000 -0.365800 -0.136000 0.624000 -0.760000
--0.600000 -0.251000 -0.360600 -0.120000 0.624000 -0.760000
--0.600000 -0.256300 -0.365800 -0.112000 0.608000 -0.776000
--0.600000 -0.256300 -0.365800 -0.112000 0.608000 -0.776000
--0.500000 -0.637800 -0.304800 -0.208000 -0.976000 -0.032000
--0.500000 -0.637800 -0.304800 -0.208000 -0.976000 -0.032000
--0.455200 -0.652700 -0.304800 -0.280000 -0.952000 0.040000
--0.500000 -0.633000 -0.365800 -0.088000 -0.968000 -0.200000
--0.450000 -0.652700 -0.319500 -0.256000 -0.952000 -0.136000
--0.450000 -0.645700 -0.365800 -0.144000 -0.904000 -0.392000
--0.405700 -0.652700 -0.365800 -0.144000 -0.920000 -0.344000
--0.405700 -0.652700 -0.365800 -0.144000 -0.920000 -0.344000
--0.350000 -0.585900 -0.365800 0.168000 -0.792000 -0.576000
--0.350000 -0.585900 -0.365800 0.168000 -0.792000 -0.576000
--0.350000 -0.594300 -0.304800 0.520000 -0.800000 0.280000
--0.357100 -0.602500 -0.365800 0.904000 0.256000 -0.312000
--0.351600 -0.602500 -0.304800 0.944000 0.304000 0.024000
--0.350000 -0.629600 -0.365800 0.056000 0.640000 -0.760000
--0.350000 -0.605300 -0.304800 0.248000 0.960000 -0.032000
--0.328400 -0.602500 -0.365800 -0.832000 -0.248000 -0.488000
--0.344900 -0.602500 -0.304800 -0.744000 0.664000 -0.032000
--0.350000 -0.585900 -0.365800 0.168000 -0.792000 -0.576000
--0.350000 -0.594300 -0.304800 0.520000 -0.800000 0.280000
--0.350000 -0.594300 -0.304800 0.520000 -0.800000 0.280000
--0.350000 -0.747900 -0.304800 -0.512000 -0.832000 -0.184000
--0.350000 -0.747900 -0.304800 -0.512000 -0.832000 -0.184000
--0.350000 -0.703000 -0.357000 -0.336000 -0.496000 -0.792000
--0.371300 -0.703000 -0.304800 -0.816000 -0.552000 -0.144000
--0.371300 -0.703000 -0.304800 -0.816000 -0.552000 -0.144000
--0.331500 -0.150600 -0.304800 -0.256000 0.464000 -0.840000
--0.331500 -0.150600 -0.304800 -0.256000 0.464000 -0.840000
--0.300000 -0.150600 -0.319300 -0.256000 0.480000 -0.832000
--0.300000 -0.118900 -0.304800 -0.376000 0.264000 -0.880000
--0.300000 -0.118900 -0.304800 -0.376000 0.264000 -0.880000
--0.250000 -0.639500 -0.365800 0.216000 -0.224000 -0.944000
--0.250000 -0.639500 -0.365800 0.216000 -0.224000 -0.944000
--0.282800 -0.652700 -0.365800 0.080000 -0.160000 -0.976000
--0.250000 -0.652700 -0.361600 0.240000 -0.216000 -0.944000
--0.250000 -0.652700 -0.361600 0.240000 -0.216000 -0.944000
--0.250000 -0.150600 -0.327500 -0.120000 0.152000 -0.976000
--0.250000 -0.150600 -0.327500 -0.120000 0.152000 -0.976000
--0.200000 -0.150600 -0.333300 0.216000 -0.272000 -0.936000
--0.250000 -0.200800 -0.333200 0.168000 0.080000 -0.976000
--0.200000 -0.200800 -0.306700 0.368000 -0.184000 -0.904000
--0.250000 -0.251000 -0.337900 0.384000 0.112000 -0.912000
--0.200000 -0.251000 -0.307600 0.408000 0.096000 -0.904000
--0.250000 -0.301200 -0.349000 0.296000 0.272000 -0.912000
--0.200000 -0.301200 -0.313400 0.328000 0.152000 -0.928000
--0.200000 -0.301200 -0.313400 0.328000 0.152000 -0.928000
--0.200000 -0.602500 -0.345500 0.488000 -0.272000 -0.824000
--0.200000 -0.602500 -0.345500 0.488000 -0.272000 -0.824000
--0.200000 -0.558000 -0.365800 0.448000 -0.240000 -0.856000
--0.229500 -0.602500 -0.365800 0.408000 -0.240000 -0.872000
--0.200000 -0.552300 -0.367100 0.360000 -0.232000 -0.896000
--0.250000 -0.602500 -0.376000 0.360000 -0.328000 -0.872000
--0.250000 -0.552300 -0.402600 0.504000 -0.312000 -0.792000
--0.250000 -0.552300 -0.402600 0.504000 -0.312000 -0.792000
--0.150000 -0.602500 -0.307600 0.456000 -0.280000 -0.840000
--0.150000 -0.602500 -0.307600 0.456000 -0.280000 -0.840000
--0.150000 -0.552300 -0.337600 0.424000 -0.304000 -0.840000
--0.200000 -0.602500 -0.345500 0.488000 -0.272000 -0.824000
--0.196100 -0.552300 -0.365800 0.320000 -0.272000 -0.904000
--0.200000 -0.558000 -0.365800 0.448000 -0.240000 -0.856000
--0.200000 -0.552300 -0.367100 0.360000 -0.232000 -0.896000
--0.200000 -0.552300 -0.367100 0.360000 -0.232000 -0.896000
--0.147100 -0.502100 -0.365800 0.472000 -0.192000 -0.848000
--0.147100 -0.502100 -0.365800 0.472000 -0.192000 -0.848000
--0.145700 -0.451900 -0.365800 0.464000 0.040000 -0.880000
--0.100000 -0.502100 -0.325200 0.520000 -0.368000 -0.760000
--0.100000 -0.451900 -0.336100 0.496000 -0.048000 -0.856000
--0.074100 -0.502100 -0.304800 0.864000 -0.480000 0.112000
--0.061500 -0.451900 -0.304800 0.928000 -0.352000 0.088000
--0.061500 -0.451900 -0.304800 0.928000 -0.352000 0.088000
--0.100000 -0.200800 -0.311700 -0.496000 0.128000 -0.856000
--0.100000 -0.200800 -0.311700 -0.496000 0.128000 -0.856000
--0.050000 -0.200800 -0.320900 -0.056000 0.280000 -0.952000
--0.100000 -0.251000 -0.333700 -0.512000 0.248000 -0.816000
--0.050000 -0.251000 -0.364300 -0.216000 0.352000 -0.904000
--0.100000 -0.301200 -0.349000 -0.368000 0.264000 -0.888000
--0.050000 -0.266900 -0.365800 -0.288000 0.088000 -0.944000
--0.058500 -0.301200 -0.365800 -0.384000 -0.288000 -0.872000
--0.050000 -0.301200 -0.370400 -0.392000 -0.264000 -0.872000
--0.050000 -0.309800 -0.365800 -0.336000 -0.416000 -0.840000
--0.058500 -0.301200 -0.365800 -0.384000 -0.288000 -0.872000
--0.050000 -0.351500 -0.336900 0.024000 -0.576000 -0.808000
--0.100000 -0.301200 -0.349000 -0.368000 0.264000 -0.888000
--0.100000 -0.351500 -0.338800 0.024000 -0.312000 -0.944000
--0.100000 -0.351500 -0.338800 0.024000 -0.312000 -0.944000
-0.050000 -0.119800 -0.304800 0.416000 0.264000 -0.864000
-0.050000 -0.119800 -0.304800 0.416000 0.264000 -0.864000
-0.050000 -0.150600 -0.318000 0.352000 0.312000 -0.872000
-0.096000 -0.150600 -0.304800 0.176000 0.336000 -0.920000
-0.096000 -0.150600 -0.304800 0.176000 0.336000 -0.920000
-0.301400 0.000000 -0.304800 -0.584000 0.656000 -0.464000
-0.301400 0.000000 -0.304800 -0.584000 0.656000 -0.464000
-0.350000 0.000000 -0.339100 -0.264000 0.552000 -0.784000
-0.350000 0.024300 -0.304800 -0.456000 0.784000 -0.408000
-0.400000 0.000000 -0.343200 -0.216000 0.592000 -0.768000
-0.400000 0.041200 -0.304800 -0.352000 0.672000 -0.648000
-0.400000 0.041200 -0.304800 -0.352000 0.672000 -0.648000
-0.383500 -0.050200 -0.365800 0.200000 -0.288000 -0.928000
-0.383500 -0.050200 -0.365800 0.200000 -0.288000 -0.928000
-0.400000 -0.050200 -0.360800 0.184000 -0.432000 -0.872000
-0.350000 -0.037900 -0.365800 -0.440000 0.432000 -0.776000
-0.400000 0.000000 -0.343200 -0.216000 0.592000 -0.768000
-0.350000 0.000000 -0.339100 -0.264000 0.552000 -0.784000
-0.350000 0.000000 -0.339100 -0.264000 0.552000 -0.784000
-0.355700 -0.351500 -0.365800 0.360000 -0.072000 -0.928000
-0.355700 -0.351500 -0.365800 0.360000 -0.072000 -0.928000
-0.400000 -0.351500 -0.338800 0.360000 -0.568000 -0.728000
-0.350000 -0.334300 -0.365800 -0.304000 0.096000 -0.944000
-0.400000 -0.301200 -0.307300 0.704000 0.496000 -0.496000
-0.350000 -0.301200 -0.360500 0.376000 0.184000 -0.904000
-0.350000 -0.301200 -0.360500 0.376000 0.184000 -0.904000
-0.376800 -0.401700 -0.304800 0.336000 -0.848000 -0.392000
-0.376800 -0.401700 -0.304800 0.336000 -0.848000 -0.392000
-0.350000 -0.401700 -0.317400 -0.608000 -0.560000 -0.544000
-0.350000 -0.410700 -0.304800 -0.592000 -0.664000 -0.440000
-0.350000 -0.410700 -0.304800 -0.592000 -0.664000 -0.440000
-0.400000 -0.050200 -0.360800 0.184000 -0.432000 -0.872000
-0.400000 -0.050200 -0.360800 0.184000 -0.432000 -0.872000
-0.450000 -0.050200 -0.325200 -0.120000 -0.568000 -0.808000
-0.400000 -0.100400 -0.340000 -0.040000 -0.360000 -0.928000
-0.450000 -0.100400 -0.322200 0.392000 -0.360000 -0.840000
-0.400000 -0.150600 -0.318400 -0.432000 -0.416000 -0.792000
-0.450000 -0.150600 -0.321300 -0.008000 0.120000 -0.992000
-0.400000 -0.168700 -0.304800 -0.504000 -0.464000 -0.720000
-0.450000 -0.200800 -0.331300 -0.472000 -0.400000 -0.776000
-0.424400 -0.200800 -0.304800 -0.552000 -0.520000 -0.648000
-0.450000 -0.217600 -0.304800 -0.352000 -0.736000 -0.560000
-0.450000 -0.217600 -0.304800 -0.352000 -0.736000 -0.560000
-0.450000 0.055500 -0.304800 0.064000 0.864000 -0.496000
-0.450000 0.055500 -0.304800 0.064000 0.864000 -0.496000
-0.450000 0.050200 -0.314200 0.064000 0.744000 -0.656000
-0.496000 0.050200 -0.304800 0.104000 0.800000 -0.576000
-0.496000 0.050200 -0.304800 0.104000 0.800000 -0.576000
-0.500000 -0.333600 -0.304800 -0.408000 0.824000 -0.376000
-0.500000 -0.333600 -0.304800 -0.408000 0.824000 -0.376000
-0.458900 -0.351500 -0.304800 -0.472000 0.360000 -0.792000
-0.500000 -0.351500 -0.354900 -0.384000 -0.472000 -0.784000
-0.500000 -0.400200 -0.304800 -0.176000 -0.672000 -0.712000
-0.500000 -0.400200 -0.304800 -0.176000 -0.672000 -0.712000
-0.450000 -0.380500 -0.304800 -0.144000 0.256000 -0.952000
-0.450000 -0.380500 -0.304800 -0.144000 0.256000 -0.952000
-0.450000 -0.401700 -0.316200 -0.184000 -0.360000 -0.904000
-0.492100 -0.401700 -0.304800 0.152000 -0.576000 -0.792000
-0.492100 -0.401700 -0.304800 0.152000 -0.576000 -0.792000
-0.500000 -0.127100 -0.304800 0.480000 0.456000 -0.744000
-0.500000 -0.127100 -0.304800 0.480000 0.456000 -0.744000
-0.500000 -0.150600 -0.319100 0.336000 0.504000 -0.792000
-0.523400 -0.150600 -0.304800 0.376000 0.592000 -0.704000
-0.523400 -0.150600 -0.304800 0.376000 0.592000 -0.704000
-0.600000 -0.086300 -0.304800 0.440000 0.312000 -0.832000
-0.600000 -0.086300 -0.304800 0.440000 0.312000 -0.832000
-0.589400 -0.100400 -0.304800 -0.440000 -0.424000 -0.784000
-0.600000 -0.100400 -0.312700 0.376000 -0.472000 -0.792000
-0.600000 -0.105700 -0.304800 0.312000 -0.728000 -0.600000
-0.604900 -0.100400 -0.304800 0.744000 -0.360000 -0.552000
-0.600000 -0.100400 -0.312700 0.376000 -0.472000 -0.792000
-0.600000 -0.086300 -0.304800 0.440000 0.312000 -0.832000
-0.600000 -0.086300 -0.304800 0.440000 0.312000 -0.832000
-0.600000 -0.206100 -0.304800 0.488000 0.616000 -0.608000
-0.600000 -0.206100 -0.304800 0.488000 0.616000 -0.608000
-0.650000 -0.208600 -0.304800 0.024000 0.680000 -0.728000
-0.600000 -0.231600 -0.365800 0.072000 0.640000 -0.760000
-0.650000 -0.245700 -0.365800 0.168000 0.856000 -0.480000
-0.600000 -0.249700 -0.426800 -0.344000 0.872000 -0.328000
-0.650000 -0.251000 -0.378600 0.328000 0.752000 -0.560000
-0.604800 -0.251000 -0.426800 0.544000 0.248000 -0.792000
-0.650000 -0.267900 -0.365800 0.280000 -0.440000 -0.848000
-0.600000 -0.252700 -0.426800 -0.416000 -0.736000 -0.520000
-0.600000 -0.288400 -0.365800 -0.376000 -0.712000 -0.584000
-0.598300 -0.251000 -0.426800 -0.848000 0.144000 -0.496000
-0.573000 -0.251000 -0.365800 -0.696000 0.544000 -0.464000
-0.600000 -0.249700 -0.426800 -0.344000 0.872000 -0.328000
-0.600000 -0.231600 -0.365800 0.072000 0.640000 -0.760000
-0.600000 -0.231600 -0.365800 0.072000 0.640000 -0.760000
-0.700000 -0.211400 -0.304800 0.288000 0.624000 -0.720000
-0.700000 -0.211400 -0.304800 0.288000 0.624000 -0.720000
-0.700000 -0.251000 -0.357800 0.296000 0.496000 -0.808000
-0.728900 -0.251000 -0.304800 0.720000 0.440000 -0.528000
-0.700000 -0.301200 -0.354900 0.160000 -0.240000 -0.952000
-0.744500 -0.301200 -0.304800 0.640000 0.104000 -0.760000
-0.744500 -0.301200 -0.304800 0.640000 0.104000 -0.760000
-0.750000 -0.334300 -0.304800 0.512000 0.112000 -0.840000
-0.750000 -0.334300 -0.304800 0.512000 0.112000 -0.840000
-0.750000 -0.351500 -0.307800 0.512000 0.128000 -0.840000
-0.754800 -0.351500 -0.304800 0.424000 0.136000 -0.888000
-0.750000 -0.401700 -0.321600 0.336000 0.000000 -0.936000
-0.779200 -0.401700 -0.304800 0.400000 0.336000 -0.848000
-0.779200 -0.401700 -0.304800 0.400000 0.336000 -0.848000
-0.800000 -0.418300 -0.304800 0.408000 0.496000 -0.760000
-0.800000 -0.418300 -0.304800 0.408000 0.496000 -0.760000
-0.800000 -0.451900 -0.330300 0.328000 0.200000 -0.920000
-0.837100 -0.451900 -0.304800 0.528000 0.264000 -0.800000
-0.800000 -0.493800 -0.304800 0.032000 -0.688000 -0.720000
-0.800000 -0.493800 -0.304800 0.032000 -0.688000 -0.720000
-0.856800 -0.502100 -0.304800 0.288000 0.144000 -0.944000
-0.856800 -0.502100 -0.304800 0.288000 0.144000 -0.944000
-0.850000 -0.502100 -0.307100 0.032000 -0.240000 -0.968000
-0.850000 -0.504700 -0.304800 -0.096000 -0.664000 -0.736000
-0.850000 -0.504700 -0.304800 -0.096000 -0.664000 -0.736000
-0.900000 0.016700 -0.304800 -0.152000 0.720000 -0.664000
-0.900000 0.016700 -0.304800 -0.152000 0.720000 -0.664000
-0.900000 0.000000 -0.329500 -0.080000 0.648000 -0.744000
-0.927400 0.000000 -0.304800 0.400000 0.560000 -0.720000
-0.927400 0.000000 -0.304800 0.400000 0.560000 -0.720000
--0.850000 -0.496800 -0.365800 -0.176000 0.616000 -0.760000
--0.850000 -0.496800 -0.365800 -0.176000 0.616000 -0.760000
--0.864000 -0.502100 -0.365800 -0.304000 0.480000 -0.816000
--0.850000 -0.502100 -0.370900 -0.184000 0.560000 -0.800000
--0.860100 -0.552300 -0.365800 -0.680000 -0.432000 -0.584000
--0.850000 -0.552300 -0.378600 -0.568000 -0.344000 -0.736000
--0.850000 -0.564700 -0.365800 -0.608000 -0.528000 -0.584000
--0.800000 -0.552300 -0.401000 -0.552000 -0.288000 -0.776000
--0.806700 -0.602500 -0.365800 -0.520000 -0.656000 -0.536000
--0.800000 -0.602500 -0.372400 -0.488000 -0.592000 -0.624000
--0.800000 -0.607700 -0.365800 -0.488000 -0.640000 -0.584000
--0.750000 -0.602500 -0.401000 -0.336000 -0.696000 -0.624000
--0.750000 -0.628000 -0.365800 -0.232000 -0.808000 -0.528000
--0.714100 -0.602500 -0.426800 -0.368000 -0.680000 -0.624000
--0.700000 -0.639000 -0.365800 -0.040000 -0.920000 -0.376000
--0.700000 -0.609100 -0.426800 -0.336000 -0.744000 -0.568000
--0.650000 -0.641900 -0.365800 -0.024000 -0.952000 -0.280000
--0.650000 -0.621300 -0.426800 -0.080000 -0.904000 -0.400000
--0.650000 -0.621300 -0.426800 -0.080000 -0.904000 -0.400000
--0.850000 -0.496800 -0.365800 -0.176000 0.616000 -0.760000
--0.850000 -0.496800 -0.365800 -0.176000 0.616000 -0.760000
--0.800000 -0.496400 -0.365800 -0.664000 0.416000 -0.608000
--0.850000 -0.502100 -0.370900 -0.184000 0.560000 -0.800000
--0.800000 -0.502100 -0.369300 -0.768000 0.256000 -0.576000
--0.850000 -0.552300 -0.378600 -0.568000 -0.344000 -0.736000
--0.800000 -0.552300 -0.401000 -0.552000 -0.288000 -0.776000
--0.800000 -0.502100 -0.369300 -0.768000 0.256000 -0.576000
--0.750000 -0.552300 -0.422100 -0.552000 -0.096000 -0.824000
--0.750000 -0.502100 -0.424900 -0.848000 -0.112000 -0.512000
--0.744500 -0.552300 -0.426800 -0.560000 -0.080000 -0.816000
--0.748800 -0.502100 -0.426800 -0.584000 -0.048000 -0.800000
--0.750000 -0.502100 -0.424900 -0.848000 -0.112000 -0.512000
--0.750000 -0.498100 -0.426800 -0.864000 -0.184000 -0.448000
--0.800000 -0.502100 -0.369300 -0.768000 0.256000 -0.576000
--0.764100 -0.451900 -0.426800 -0.880000 -0.256000 -0.384000
--0.800000 -0.496400 -0.365800 -0.664000 0.416000 -0.608000
--0.786000 -0.451900 -0.365800 -0.872000 0.080000 -0.472000
--0.764100 -0.451900 -0.426800 -0.880000 -0.256000 -0.384000
--0.796500 -0.401700 -0.365800 -0.952000 -0.168000 -0.232000
--0.777800 -0.401700 -0.426800 -0.928000 0.040000 -0.360000
--0.777800 -0.401700 -0.426800 -0.928000 0.040000 -0.360000
--0.800000 -0.602500 -0.372400 -0.488000 -0.592000 -0.624000
--0.800000 -0.602500 -0.372400 -0.488000 -0.592000 -0.624000
--0.800000 -0.552300 -0.401000 -0.552000 -0.288000 -0.776000
--0.750000 -0.602500 -0.401000 -0.336000 -0.696000 -0.624000
--0.750000 -0.552300 -0.422100 -0.552000 -0.096000 -0.824000
--0.714100 -0.602500 -0.426800 -0.368000 -0.680000 -0.624000
--0.744500 -0.552300 -0.426800 -0.560000 -0.080000 -0.816000
--0.744500 -0.552300 -0.426800 -0.560000 -0.080000 -0.816000
--0.350000 -0.248400 -0.365800 0.184000 0.424000 -0.880000
--0.350000 -0.248400 -0.365800 0.184000 0.424000 -0.880000
--0.350000 -0.251000 -0.367200 0.240000 0.168000 -0.952000
--0.345700 -0.251000 -0.365800 0.320000 0.336000 -0.880000
--0.345700 -0.251000 -0.365800 0.320000 0.336000 -0.880000
--0.250000 -0.342900 -0.365800 0.504000 0.512000 -0.680000
--0.250000 -0.342900 -0.365800 0.504000 0.512000 -0.680000
--0.250000 -0.351500 -0.379700 0.552000 0.712000 -0.416000
--0.241400 -0.351500 -0.365800 0.488000 0.640000 -0.576000
--0.241400 -0.351500 -0.365800 0.488000 0.640000 -0.576000
--0.200000 -0.365300 -0.365800 0.504000 0.768000 -0.376000
--0.200000 -0.365300 -0.365800 0.504000 0.768000 -0.376000
--0.200000 -0.393200 -0.426800 0.696000 0.632000 -0.328000
--0.151700 -0.401700 -0.365800 0.568000 0.104000 -0.808000
--0.194300 -0.401700 -0.426800 0.792000 0.416000 -0.432000
--0.194300 -0.401700 -0.426800 0.792000 0.416000 -0.432000
--0.044700 -0.251000 -0.365800 -0.216000 0.376000 -0.896000
--0.044700 -0.251000 -0.365800 -0.216000 0.376000 -0.896000
-0.000000 -0.251000 -0.386300 -0.352000 0.496000 -0.792000
-0.000000 -0.238800 -0.365800 -0.192000 0.648000 -0.728000
-0.000000 -0.238800 -0.365800 -0.192000 0.648000 -0.728000
-0.100000 -0.224900 -0.365800 0.352000 0.456000 -0.808000
-0.100000 -0.224900 -0.365800 0.352000 0.456000 -0.808000
-0.100000 -0.251000 -0.380100 0.472000 -0.384000 -0.784000
-0.118000 -0.251000 -0.365800 0.536000 -0.224000 -0.808000
-0.100000 -0.263400 -0.365800 0.480000 -0.672000 -0.544000
-0.100000 -0.263400 -0.365800 0.480000 -0.672000 -0.544000
-0.350000 -0.354600 -0.365800 -0.264000 -0.632000 -0.720000
-0.350000 -0.354600 -0.365800 -0.264000 -0.632000 -0.720000
-0.350000 -0.351500 -0.368100 -0.440000 0.096000 -0.888000
-0.348000 -0.351500 -0.365800 -0.720000 -0.032000 -0.680000
-0.348000 -0.351500 -0.365800 -0.720000 -0.032000 -0.680000
-0.450000 0.007700 -0.365800 -0.264000 0.744000 -0.600000
-0.450000 0.007700 -0.365800 -0.264000 0.744000 -0.600000
-0.431500 0.000000 -0.365800 -0.424000 0.312000 -0.840000
-0.450000 0.000000 -0.377000 -0.360000 0.400000 -0.840000
-0.450000 -0.014200 -0.365800 -0.336000 -0.568000 -0.744000
-0.450000 -0.014200 -0.365800 -0.336000 -0.568000 -0.744000
-0.650000 -0.245700 -0.365800 0.168000 0.856000 -0.480000
-0.650000 -0.245700 -0.365800 0.168000 0.856000 -0.480000
-0.650000 -0.251000 -0.378600 0.328000 0.752000 -0.560000
-0.678000 -0.251000 -0.365800 0.264000 0.520000 -0.808000
-0.650000 -0.267900 -0.365800 0.280000 -0.440000 -0.848000
diff --git a/progs/demos/lodbias.c b/progs/demos/lodbias.c
deleted file mode 100644
index 23488b1616..0000000000
--- a/progs/demos/lodbias.c
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * GL_EXT_texture_lod_bias demo
- *
- * Thanks to Michael Vance for implementing this extension in Mesa.
- *
- * Brian Paul
- * 20 March 2000
- *
- * Copyright (C) 2000 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-#include <assert.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <GL/glut.h>
-#include <GL/glext.h>
-
-#include "readtex.h"
-
-#define TEXTURE_FILE "../images/girl.rgb"
-
-static GLfloat Xrot = 0, Yrot = -30, Zrot = 0;
-static GLboolean Anim = GL_TRUE;
-static GLint Bias = 0, BiasStepSign = +1; /* ints avoid fp precision problem */
-static GLint BiasMin = -400, BiasMax = 400;
-static int win = 0;
-static GLuint TexObj = 0;
-
-
-static void
-PrintString(const char *s)
-{
- while (*s) {
- glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s);
- s++;
- }
-}
-
-static void Idle( void )
-{
- static int lastTime = 0;
- int time = glutGet(GLUT_ELAPSED_TIME);
- int step;
-
- if (lastTime == 0)
- lastTime = time;
- else if (time - lastTime < 10)
- return;
-
- step = (time - lastTime) / 10 * BiasStepSign;
- lastTime = time;
-
- Bias += step;
- if (Bias < BiasMin) {
- Bias = BiasMin;
- BiasStepSign = +1;
- }
- else if (Bias > BiasMax) {
- Bias = BiasMax;
- BiasStepSign = -1;
- }
-
- glutPostRedisplay();
-}
-
-
-static void Display( void )
-{
- char str[100];
-
- glClear( GL_COLOR_BUFFER_BIT );
-
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glOrtho(-1, 1, -1, 1, -1, 1);
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
-
- glDisable(GL_TEXTURE_2D);
- glColor3f(1,1,1);
- glRasterPos3f(-0.9, -0.9, 0.0);
- sprintf(str, "Texture LOD Bias = %4.1f", Bias * 0.01);
- PrintString(str);
-
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 );
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
- glTranslatef( 0.0, 0.0, -8.0 );
-
- glPushMatrix();
- glRotatef(Xrot, 1, 0, 0);
- glRotatef(Yrot, 0, 1, 0);
- glRotatef(Zrot, 0, 0, 1);
-
- glEnable(GL_TEXTURE_2D);
- glTexEnvf(GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, 0.01 * Bias);
-
- glBegin(GL_POLYGON);
- glTexCoord2f(0, 0); glVertex2f(-1, -1);
- glTexCoord2f(2, 0); glVertex2f( 1, -1);
- glTexCoord2f(2, 2); glVertex2f( 1, 1);
- glTexCoord2f(0, 2); glVertex2f(-1, 1);
- glEnd();
-
- glPopMatrix();
-
- glutSwapBuffers();
-}
-
-
-static void Reshape( int width, int height )
-{
- glViewport( 0, 0, width, height );
-}
-
-
-static void Key( unsigned char key, int x, int y )
-{
- const GLfloat step = 3.0;
- (void) x;
- (void) y;
- switch (key) {
- case 'a':
- Anim = !Anim;
- if (Anim)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- break;
- case 'z':
- Zrot -= step;
- break;
- case 'Z':
- Zrot += step;
- break;
- case 'b':
- Bias -= 10;
- break;
- case 'B':
- Bias += 10;
- break;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- Bias = 100.0 * (key - '0');
- break;
- case 27:
- glutDestroyWindow(win);
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void SpecialKey( int key, int x, int y )
-{
- const GLfloat step = 3.0;
- (void) x;
- (void) y;
- switch (key) {
- case GLUT_KEY_UP:
- Xrot -= step;
- break;
- case GLUT_KEY_DOWN:
- Xrot += step;
- break;
- case GLUT_KEY_LEFT:
- Yrot -= step;
- break;
- case GLUT_KEY_RIGHT:
- Yrot += step;
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void Init( void )
-{
- GLfloat maxBias;
-
- if (!glutExtensionSupported("GL_EXT_texture_lod_bias")) {
- printf("Sorry, GL_EXT_texture_lod_bias not supported by this renderer.\n");
- exit(1);
- }
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-
- glGenTextures(1, &TexObj);
- glBindTexture(GL_TEXTURE_2D, TexObj);
-
- if (glutExtensionSupported("GL_SGIS_generate_mipmap")) {
- /* test auto mipmap generation */
- GLint width, height, i;
- GLenum format;
- GLubyte *image = LoadRGBImage(TEXTURE_FILE, &width, &height, &format);
- if (!image) {
- printf("Error: could not load texture image %s\n", TEXTURE_FILE);
- exit(1);
- }
- /* resize to 256 x 256 */
- if (width != 256 || height != 256) {
- GLubyte *newImage = malloc(256 * 256 * 4);
- gluScaleImage(format, width, height, GL_UNSIGNED_BYTE, image,
- 256, 256, GL_UNSIGNED_BYTE, newImage);
- free(image);
- image = newImage;
- }
- printf("Using GL_SGIS_generate_mipmap\n");
- glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_TRUE);
- glTexImage2D(GL_TEXTURE_2D, 0, format, 256, 256, 0,
- format, GL_UNSIGNED_BYTE, image);
- free(image);
-
- /* make sure mipmap was really generated correctly */
- width = height = 256;
- for (i = 0; i < 9; i++) {
- GLint w, h;
- glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &w);
- glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_HEIGHT, &h);
- printf("Level %d size: %d x %d\n", i, w, h);
- assert(w == width);
- assert(h == height);
- width /= 2;
- height /= 2;
- }
-
- }
- else if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) {
- printf("Error: could not load texture image %s\n", TEXTURE_FILE);
- exit(1);
- }
-
- /* mipmapping required for this extension */
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-
- glGetFloatv(GL_MAX_TEXTURE_LOD_BIAS_EXT, &maxBias);
- printf("LOD bias range: [%g, %g]\n", -maxBias, maxBias);
- BiasMin = -100 * maxBias;
- BiasMax = 100 * maxBias;
-
- /* Since we have (about) 8 mipmap levels, no need to bias beyond
- * the range [-1, +8].
- */
- if (BiasMin < -100)
- BiasMin = -100;
- if (BiasMax > 800)
- BiasMax = 800;
-}
-
-
-int main( int argc, char *argv[] )
-{
- glutInitWindowSize( 350, 350 );
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
- win = glutCreateWindow(argv[0]);
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutSpecialFunc( SpecialKey );
- glutDisplayFunc( Display );
- if (Anim)
- glutIdleFunc(Idle);
- Init();
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/morph3d.c b/progs/demos/morph3d.c
deleted file mode 100644
index 07458eb156..0000000000
--- a/progs/demos/morph3d.c
+++ /dev/null
@@ -1,890 +0,0 @@
-
-/*-
- * morph3d.c - Shows 3D morphing objects
- *
- * Converted to GLUT by brianp on 1/1/98
- *
- * This program was inspired on a WindowsNT(R)'s screen saver. It was written
- * from scratch and it was not based on any other source code.
- *
- * Porting it to xlock (the final objective of this code since the moment I
- * decided to create it) was possible by comparing the original Mesa's gear
- * demo with it's ported version, so thanks for Danny Sung for his indirect
- * help (look at gear.c in xlock source tree). NOTE: At the moment this code
- * was sent to Brian Paul for package inclusion, the XLock Version was not
- * available. In fact, I'll wait it to appear on the next Mesa release (If you
- * are reading this, it means THIS release) to send it for xlock package
- * inclusion). It will probably there be a GLUT version too.
- *
- * Thanks goes also to Brian Paul for making it possible and inexpensive
- * to use OpenGL at home.
- *
- * Since I'm not a native english speaker, my apologies for any gramatical
- * mistake.
- *
- * My e-mail addresses are
- *
- * vianna@cat.cbpf.br
- * and
- * marcelo@venus.rdc.puc-rio.br
- *
- * Marcelo F. Vianna (Feb-13-1997)
- */
-
-/*
-This document is VERY incomplete, but tries to describe the mathematics used
-in the program. At this moment it just describes how the polyhedra are
-generated. On futhurer versions, this document will be probabbly improved.
-
-Since I'm not a native english speaker, my apologies for any gramatical
-mistake.
-
-Marcelo Fernandes Vianna
-- Undergraduate in Computer Engeneering at Catholic Pontifical University
-- of Rio de Janeiro (PUC-Rio) Brasil.
-- e-mail: vianna@cat.cbpf.br or marcelo@venus.rdc.puc-rio.br
-- Feb-13-1997
-
-POLYHEDRA GENERATION
-
-For the purpose of this program it's not sufficient to know the polyhedra
-vertexes coordinates. Since the morphing algorithm applies a nonlinear
-transformation over the surfaces (faces) of the polyhedron, each face has
-to be divided into smaller ones. The morphing algorithm needs to transform
-each vertex of these smaller faces individually. It's a very time consoming
-task.
-
-In order to reduce calculation overload, and since all the macro faces of
-the polyhedron are transformed by the same way, the generation is made by
-creating only one face of the polyhedron, morphing it and then rotating it
-around the polyhedron center.
-
-What we need to know is the face radius of the polyhedron (the radius of
-the inscribed sphere) and the angle between the center of two adjacent
-faces using the center of the sphere as the angle's vertex.
-
-The face radius of the regular polyhedra are known values which I decided
-to not waste my time calculating. Following is a table of face radius for
-the regular polyhedra with edge length = 1:
-
- TETRAHEDRON : 1/(2*sqrt(2))/sqrt(3)
- CUBE : 1/2
- OCTAHEDRON : 1/sqrt(6)
- DODECAHEDRON : T^2 * sqrt((T+2)/5) / 2 -> where T=(sqrt(5)+1)/2
- ICOSAHEDRON : (3*sqrt(3)+sqrt(15))/12
-
-I've not found any reference about the mentioned angles, so I needed to
-calculate them, not a trivial task until I figured out how :)
-Curiously these angles are the same for the tetrahedron and octahedron.
-A way to obtain this value is inscribing the tetrahedron inside the cube
-by matching their vertexes. So you'll notice that the remaining unmatched
-vertexes are in the same straight line starting in the cube/tetrahedron
-center and crossing the center of each tetrahedron's face. At this point
-it's easy to obtain the bigger angle of the isosceles triangle formed by
-the center of the cube and two opposite vertexes on the same cube face.
-The edges of this triangle have the following lenghts: sqrt(2) for the base
-and sqrt(3)/2 for the other two other edges. So the angle we want is:
- +-----------------------------------------------------------+
- | 2*ARCSIN(sqrt(2)/sqrt(3)) = 109.47122063449069174 degrees |
- +-----------------------------------------------------------+
-For the cube this angle is obvious, but just for formality it can be
-easily obtained because we also know it's isosceles edge lenghts:
-sqrt(2)/2 for the base and 1/2 for the other two edges. So the angle we
-want is:
- +-----------------------------------------------------------+
- | 2*ARCSIN((sqrt(2)/2)/1) = 90.000000000000000000 degrees |
- +-----------------------------------------------------------+
-For the octahedron we use the same idea used for the tetrahedron, but now
-we inscribe the cube inside the octahedron so that all cubes's vertexes
-matches excatly the center of each octahedron's face. It's now clear that
-this angle is the same of the thetrahedron one:
- +-----------------------------------------------------------+
- | 2*ARCSIN(sqrt(2)/sqrt(3)) = 109.47122063449069174 degrees |
- +-----------------------------------------------------------+
-For the dodecahedron it's a little bit harder because it's only relationship
-with the cube is useless to us. So we need to solve the problem by another
-way. The concept of Face radius also exists on 2D polygons with the name
-Edge radius:
- Edge Radius For Pentagon (ERp)
- ERp = (1/2)/TAN(36 degrees) * VRp = 0.6881909602355867905
- (VRp is the pentagon's vertex radio).
- Face Radius For Dodecahedron
- FRd = T^2 * sqrt((T+2)/5) / 2 = 1.1135163644116068404
-Why we need ERp? Well, ERp and FRd segments forms a 90 degrees angle,
-completing this triangle, the lesser angle is a half of the angle we are
-looking for, so this angle is:
- +-----------------------------------------------------------+
- | 2*ARCTAN(ERp/FRd) = 63.434948822922009981 degrees |
- +-----------------------------------------------------------+
-For the icosahedron we can use the same method used for dodecahedron (well
-the method used for dodecahedron may be used for all regular polyhedra)
- Edge Radius For Triangle (this one is well known: 1/3 of the triangle height)
- ERt = sin(60)/3 = sqrt(3)/6 = 0.2886751345948128655
- Face Radius For Icosahedron
- FRi= (3*sqrt(3)+sqrt(15))/12 = 0.7557613140761707538
-So the angle is:
- +-----------------------------------------------------------+
- | 2*ARCTAN(ERt/FRi) = 41.810314895778596167 degrees |
- +-----------------------------------------------------------+
-
-*/
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#ifndef _WIN32
-#include <unistd.h>
-#endif
-#include <GL/glut.h>
-#include <math.h>
-
-#define Scale 0.3
-
-#define VectMul(X1,Y1,Z1,X2,Y2,Z2) (Y1)*(Z2)-(Z1)*(Y2),(Z1)*(X2)-(X1)*(Z2),(X1)*(Y2)-(Y1)*(X2)
-#define sqr(A) ((A)*(A))
-
-/* Increasing this values produces better image quality, the price is speed. */
-/* Very low values produces erroneous/incorrect plotting */
-#define tetradivisions 23
-#define cubedivisions 20
-#define octadivisions 21
-#define dodecadivisions 10
-#define icodivisions 15
-
-#define tetraangle 109.47122063449069174
-#define cubeangle 90.000000000000000000
-#define octaangle 109.47122063449069174
-#define dodecaangle 63.434948822922009981
-#define icoangle 41.810314895778596167
-
-#ifndef Pi
-#define Pi 3.1415926535897932385
-#endif
-#define SQRT2 1.4142135623730951455
-#define SQRT3 1.7320508075688771932
-#define SQRT5 2.2360679774997898051
-#define SQRT6 2.4494897427831778813
-#define SQRT15 3.8729833462074170214
-#define cossec36_2 0.8506508083520399322
-#define cos72 0.3090169943749474241
-#define sin72 0.9510565162951535721
-#define cos36 0.8090169943749474241
-#define sin36 0.5877852522924731292
-
-/*************************************************************************/
-
-static int mono=0;
-static int smooth=1;
-static int anim=1;
-static GLint WindH, WindW;
-static GLfloat step=0;
-static GLfloat seno;
-static int object;
-static int edgedivisions;
-static void (*draw_object)( void );
-static float Magnitude;
-static float *MaterialColor[20];
-
-static float front_shininess[] = {60.0};
-static float front_specular[] = { 0.7, 0.7, 0.7, 1.0 };
-static float ambient[] = { 0.0, 0.0, 0.0, 1.0 };
-static float diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
-static float position0[] = { 1.0, 1.0, 1.0, 0.0 };
-static float position1[] = {-1.0,-1.0, 1.0, 0.0 };
-static float lmodel_ambient[] = { 0.5, 0.5, 0.5, 1.0 };
-static float lmodel_twoside[] = {GL_TRUE};
-
-static float MaterialRed[] = { 0.7, 0.0, 0.0, 1.0 };
-static float MaterialGreen[] = { 0.1, 0.5, 0.2, 1.0 };
-static float MaterialBlue[] = { 0.0, 0.0, 0.7, 1.0 };
-static float MaterialCyan[] = { 0.2, 0.5, 0.7, 1.0 };
-static float MaterialYellow[] = { 0.7, 0.7, 0.0, 1.0 };
-static float MaterialMagenta[] = { 0.6, 0.2, 0.5, 1.0 };
-static float MaterialWhite[] = { 0.7, 0.7, 0.7, 1.0 };
-static float MaterialGray[] = { 0.2, 0.2, 0.2, 1.0 };
-
-#define TRIANGLE(Edge, Amp, Divisions, Z) \
-{ \
- GLfloat Xf,Yf,Xa,Yb,Xf2,Yf2; \
- GLfloat Factor,Factor1,Factor2; \
- GLfloat VertX,VertY,VertZ,NeiAX,NeiAY,NeiAZ,NeiBX,NeiBY,NeiBZ; \
- GLfloat Ax,Ay,Bx; \
- int Ri,Ti; \
- GLfloat Vr=(Edge)*SQRT3/3; \
- GLfloat AmpVr2=(Amp)/sqr(Vr); \
- GLfloat Zf=(Edge)*(Z); \
- \
- Ax=(Edge)*(+0.5/(Divisions)), Ay=(Edge)*(-SQRT3/(2*Divisions)); \
- Bx=(Edge)*(-0.5/(Divisions)); \
- \
- for (Ri=1; Ri<=(Divisions); Ri++) { \
- glBegin(GL_TRIANGLE_STRIP); \
- for (Ti=0; Ti<Ri; Ti++) { \
- Xf=(float)(Ri-Ti)*Ax + (float)Ti*Bx; \
- Yf=Vr+(float)(Ri-Ti)*Ay + (float)Ti*Ay; \
- Xa=Xf+0.001; Yb=Yf+0.001; \
- Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2); \
- Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \
- Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \
- VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \
- NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \
- NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \
- glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \
- glVertex3f(VertX, VertY, VertZ); \
- \
- Xf=(float)(Ri-Ti-1)*Ax + (float)Ti*Bx; \
- Yf=Vr+(float)(Ri-Ti-1)*Ay + (float)Ti*Ay; \
- Xa=Xf+0.001; Yb=Yf+0.001; \
- Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2); \
- Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \
- Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \
- VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \
- NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \
- NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \
- glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \
- glVertex3f(VertX, VertY, VertZ); \
- \
- } \
- Xf=(float)Ri*Bx; \
- Yf=Vr+(float)Ri*Ay; \
- Xa=Xf+0.001; Yb=Yf+0.001; \
- Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2); \
- Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \
- Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \
- VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \
- NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \
- NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \
- glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \
- glVertex3f(VertX, VertY, VertZ); \
- glEnd(); \
- } \
-}
-
-#define SQUARE(Edge, Amp, Divisions, Z) \
-{ \
- int Xi,Yi; \
- GLfloat Xf,Yf,Y,Xf2,Yf2,Y2,Xa,Yb; \
- GLfloat Factor,Factor1,Factor2; \
- GLfloat VertX,VertY,VertZ,NeiAX,NeiAY,NeiAZ,NeiBX,NeiBY,NeiBZ; \
- GLfloat Zf=(Edge)*(Z); \
- GLfloat AmpVr2=(Amp)/sqr((Edge)*SQRT2/2); \
- \
- for (Yi=0; Yi<(Divisions); Yi++) { \
- Yf=-((Edge)/2.0) + ((float)Yi)/(Divisions)*(Edge); \
- Yf2=sqr(Yf); \
- Y=Yf+1.0/(Divisions)*(Edge); \
- Y2=sqr(Y); \
- glBegin(GL_QUAD_STRIP); \
- for (Xi=0; Xi<=(Divisions); Xi++) { \
- Xf=-((Edge)/2.0) + ((float)Xi)/(Divisions)*(Edge); \
- Xf2=sqr(Xf); \
- \
- Xa=Xf+0.001; Yb=Y+0.001; \
- Factor=1-((Xf2+Y2)*AmpVr2); \
- Factor1=1-((sqr(Xa)+Y2)*AmpVr2); \
- Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \
- VertX=Factor*Xf; VertY=Factor*Y; VertZ=Factor*Zf; \
- NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Y-VertY; NeiAZ=Factor1*Zf-VertZ; \
- NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \
- glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \
- glVertex3f(VertX, VertY, VertZ); \
- \
- Xa=Xf+0.001; Yb=Yf+0.001; \
- Factor=1-((Xf2+Yf2)*AmpVr2); \
- Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \
- Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \
- VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \
- NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \
- NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \
- glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \
- glVertex3f(VertX, VertY, VertZ); \
- } \
- glEnd(); \
- } \
-}
-
-#define PENTAGON(Edge, Amp, Divisions, Z) \
-{ \
- int Ri,Ti,Fi; \
- GLfloat Xf,Yf,Xa,Yb,Xf2,Yf2; \
- GLfloat x[6],y[6]; \
- GLfloat Factor,Factor1,Factor2; \
- GLfloat VertX,VertY,VertZ,NeiAX,NeiAY,NeiAZ,NeiBX,NeiBY,NeiBZ; \
- GLfloat Zf=(Edge)*(Z); \
- GLfloat AmpVr2=(Amp)/sqr((Edge)*cossec36_2); \
- \
- for(Fi=0;Fi<6;Fi++) { \
- x[Fi]=-cos( Fi*2*Pi/5 + Pi/10 )/(Divisions)*cossec36_2*(Edge); \
- y[Fi]=sin( Fi*2*Pi/5 + Pi/10 )/(Divisions)*cossec36_2*(Edge); \
- } \
- \
- for (Ri=1; Ri<=(Divisions); Ri++) { \
- for (Fi=0; Fi<5; Fi++) { \
- glBegin(GL_TRIANGLE_STRIP); \
- for (Ti=0; Ti<Ri; Ti++) { \
- Xf=(float)(Ri-Ti)*x[Fi] + (float)Ti*x[Fi+1]; \
- Yf=(float)(Ri-Ti)*y[Fi] + (float)Ti*y[Fi+1]; \
- Xa=Xf+0.001; Yb=Yf+0.001; \
- Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2); \
- Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \
- Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \
- VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \
- NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \
- NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \
- glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \
- glVertex3f(VertX, VertY, VertZ); \
- \
- Xf=(float)(Ri-Ti-1)*x[Fi] + (float)Ti*x[Fi+1]; \
- Yf=(float)(Ri-Ti-1)*y[Fi] + (float)Ti*y[Fi+1]; \
- Xa=Xf+0.001; Yb=Yf+0.001; \
- Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2); \
- Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \
- Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \
- VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \
- NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \
- NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \
- glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \
- glVertex3f(VertX, VertY, VertZ); \
- \
- } \
- Xf=(float)Ri*x[Fi+1]; \
- Yf=(float)Ri*y[Fi+1]; \
- Xa=Xf+0.001; Yb=Yf+0.001; \
- Factor=1-(((Xf2=sqr(Xf))+(Yf2=sqr(Yf)))*AmpVr2); \
- Factor1=1-((sqr(Xa)+Yf2)*AmpVr2); \
- Factor2=1-((Xf2+sqr(Yb))*AmpVr2); \
- VertX=Factor*Xf; VertY=Factor*Yf; VertZ=Factor*Zf; \
- NeiAX=Factor1*Xa-VertX; NeiAY=Factor1*Yf-VertY; NeiAZ=Factor1*Zf-VertZ; \
- NeiBX=Factor2*Xf-VertX; NeiBY=Factor2*Yb-VertY; NeiBZ=Factor2*Zf-VertZ; \
- glNormal3f(VectMul(NeiAX, NeiAY, NeiAZ, NeiBX, NeiBY, NeiBZ)); \
- glVertex3f(VertX, VertY, VertZ); \
- glEnd(); \
- } \
- } \
-}
-
-static void draw_tetra( void )
-{
- GLuint list;
-
- list = glGenLists( 1 );
- glNewList( list, GL_COMPILE );
- TRIANGLE(2,seno,edgedivisions,0.5/SQRT6);
- glEndList();
-
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[0]);
- glCallList(list);
- glPushMatrix();
- glRotatef(180,0,0,1);
- glRotatef(-tetraangle,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[1]);
- glCallList(list);
- glPopMatrix();
- glPushMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-180+tetraangle,0.5,SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[2]);
- glCallList(list);
- glPopMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-180+tetraangle,0.5,-SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[3]);
- glCallList(list);
-
- glDeleteLists(list,1);
-}
-
-static void draw_cube( void )
-{
- GLuint list;
-
- list = glGenLists( 1 );
- glNewList( list, GL_COMPILE );
- SQUARE(2, seno, edgedivisions, 0.5)
- glEndList();
-
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[0]);
- glCallList(list);
- glRotatef(cubeangle,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[1]);
- glCallList(list);
- glRotatef(cubeangle,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[2]);
- glCallList(list);
- glRotatef(cubeangle,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[3]);
- glCallList(list);
- glRotatef(cubeangle,0,1,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[4]);
- glCallList(list);
- glRotatef(2*cubeangle,0,1,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[5]);
- glCallList(list);
-
- glDeleteLists(list,1);
-}
-
-static void draw_octa( void )
-{
- GLuint list;
-
- list = glGenLists( 1 );
- glNewList( list, GL_COMPILE );
- TRIANGLE(2,seno,edgedivisions,1/SQRT6);
- glEndList();
-
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[0]);
- glCallList(list);
- glPushMatrix();
- glRotatef(180,0,0,1);
- glRotatef(-180+octaangle,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[1]);
- glCallList(list);
- glPopMatrix();
- glPushMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-octaangle,0.5,SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[2]);
- glCallList(list);
- glPopMatrix();
- glPushMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-octaangle,0.5,-SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[3]);
- glCallList(list);
- glPopMatrix();
- glRotatef(180,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[4]);
- glCallList(list);
- glPushMatrix();
- glRotatef(180,0,0,1);
- glRotatef(-180+octaangle,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[5]);
- glCallList(list);
- glPopMatrix();
- glPushMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-octaangle,0.5,SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[6]);
- glCallList(list);
- glPopMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-octaangle,0.5,-SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[7]);
- glCallList(list);
-
- glDeleteLists(list,1);
-}
-
-static void draw_dodeca( void )
-{
- GLuint list;
-
-#define TAU ((SQRT5+1)/2)
-
- list = glGenLists( 1 );
- glNewList( list, GL_COMPILE );
- PENTAGON(1,seno,edgedivisions,sqr(TAU) * sqrt((TAU+2)/5) / 2);
- glEndList();
-
- glPushMatrix();
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[0]);
- glCallList(list);
- glRotatef(180,0,0,1);
- glPushMatrix();
- glRotatef(-dodecaangle,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[1]);
- glCallList(list);
- glPopMatrix();
- glPushMatrix();
- glRotatef(-dodecaangle,cos72,sin72,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[2]);
- glCallList(list);
- glPopMatrix();
- glPushMatrix();
- glRotatef(-dodecaangle,cos72,-sin72,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[3]);
- glCallList(list);
- glPopMatrix();
- glPushMatrix();
- glRotatef(dodecaangle,cos36,-sin36,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[4]);
- glCallList(list);
- glPopMatrix();
- glRotatef(dodecaangle,cos36,sin36,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[5]);
- glCallList(list);
- glPopMatrix();
- glRotatef(180,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[6]);
- glCallList(list);
- glRotatef(180,0,0,1);
- glPushMatrix();
- glRotatef(-dodecaangle,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[7]);
- glCallList(list);
- glPopMatrix();
- glPushMatrix();
- glRotatef(-dodecaangle,cos72,sin72,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[8]);
- glCallList(list);
- glPopMatrix();
- glPushMatrix();
- glRotatef(-dodecaangle,cos72,-sin72,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[9]);
- glCallList(list);
- glPopMatrix();
- glPushMatrix();
- glRotatef(dodecaangle,cos36,-sin36,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[10]);
- glCallList(list);
- glPopMatrix();
- glRotatef(dodecaangle,cos36,sin36,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[11]);
- glCallList(list);
-
- glDeleteLists(list,1);
-}
-
-static void draw_ico( void )
-{
- GLuint list;
-
- list = glGenLists( 1 );
- glNewList( list, GL_COMPILE );
- TRIANGLE(1.5,seno,edgedivisions,(3*SQRT3+SQRT15)/12);
- glEndList();
-
- glPushMatrix();
-
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[0]);
- glCallList(list);
- glPushMatrix();
- glRotatef(180,0,0,1);
- glRotatef(-icoangle,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[1]);
- glCallList(list);
- glPushMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-180+icoangle,0.5,SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[2]);
- glCallList(list);
- glPopMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-180+icoangle,0.5,-SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[3]);
- glCallList(list);
- glPopMatrix();
- glPushMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-180+icoangle,0.5,SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[4]);
- glCallList(list);
- glPushMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-180+icoangle,0.5,SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[5]);
- glCallList(list);
- glPopMatrix();
- glRotatef(180,0,0,1);
- glRotatef(-icoangle,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[6]);
- glCallList(list);
- glPopMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-180+icoangle,0.5,-SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[7]);
- glCallList(list);
- glPushMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-180+icoangle,0.5,-SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[8]);
- glCallList(list);
- glPopMatrix();
- glRotatef(180,0,0,1);
- glRotatef(-icoangle,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[9]);
- glCallList(list);
- glPopMatrix();
- glRotatef(180,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[10]);
- glCallList(list);
- glPushMatrix();
- glRotatef(180,0,0,1);
- glRotatef(-icoangle,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[11]);
- glCallList(list);
- glPushMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-180+icoangle,0.5,SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[12]);
- glCallList(list);
- glPopMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-180+icoangle,0.5,-SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[13]);
- glCallList(list);
- glPopMatrix();
- glPushMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-180+icoangle,0.5,SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[14]);
- glCallList(list);
- glPushMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-180+icoangle,0.5,SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[15]);
- glCallList(list);
- glPopMatrix();
- glRotatef(180,0,0,1);
- glRotatef(-icoangle,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[16]);
- glCallList(list);
- glPopMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-180+icoangle,0.5,-SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[17]);
- glCallList(list);
- glPushMatrix();
- glRotatef(180,0,1,0);
- glRotatef(-180+icoangle,0.5,-SQRT3/2,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[18]);
- glCallList(list);
- glPopMatrix();
- glRotatef(180,0,0,1);
- glRotatef(-icoangle,1,0,0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, MaterialColor[19]);
- glCallList(list);
-
- glDeleteLists(list,1);
-}
-
-static void draw ( void ) {
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
-
- glPushMatrix();
-
- glTranslatef( 0.0, 0.0, -10.0 );
- glScalef( Scale*WindH/WindW, Scale, Scale );
- glTranslatef(2.5*WindW/WindH*sin(step*1.11),2.5*cos(step*1.25*1.11),0);
- glRotatef(step*100,1,0,0);
- glRotatef(step*95,0,1,0);
- glRotatef(step*90,0,0,1);
-
- seno=(sin(step)+1.0/3.0)*(4.0/5.0)*Magnitude;
-
- draw_object();
-
- glPopMatrix();
-
- glFlush();
-
- glutSwapBuffers();
-
-}
-
-static void idle_( void )
-{
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
-
- step += dt;
-
- glutPostRedisplay();
-}
-
-static void reshape( int width, int height )
-{
- glViewport(0, 0, WindW=(GLint)width, WindH=(GLint)height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 15.0 );
- glMatrixMode(GL_MODELVIEW);
-}
-
-static void pinit(void);
-
-static void key( unsigned char k, int x, int y )
-{
- (void) x;
- (void) y;
- switch (k) {
- case '1': object=1; break;
- case '2': object=2; break;
- case '3': object=3; break;
- case '4': object=4; break;
- case '5': object=5; break;
- case ' ': mono^=1; break;
- case 's': smooth^=1; break;
- case 'a':
- anim^=1;
- if (anim)
- glutIdleFunc( idle_ );
- else
- glutIdleFunc(NULL);
- break;
- case 27:
- exit(0);
- }
- pinit();
- glutPostRedisplay();
-}
-
-static void pinit(void)
-{
- switch(object) {
- case 1:
- draw_object=draw_tetra;
- MaterialColor[0]=MaterialRed;
- MaterialColor[1]=MaterialGreen;
- MaterialColor[2]=MaterialBlue;
- MaterialColor[3]=MaterialWhite;
- edgedivisions=tetradivisions;
- Magnitude=2.5;
- break;
- case 2:
- draw_object=draw_cube;
- MaterialColor[0]=MaterialRed;
- MaterialColor[1]=MaterialGreen;
- MaterialColor[2]=MaterialCyan;
- MaterialColor[3]=MaterialMagenta;
- MaterialColor[4]=MaterialYellow;
- MaterialColor[5]=MaterialBlue;
- edgedivisions=cubedivisions;
- Magnitude=2.0;
- break;
- case 3:
- draw_object=draw_octa;
- MaterialColor[0]=MaterialRed;
- MaterialColor[1]=MaterialGreen;
- MaterialColor[2]=MaterialBlue;
- MaterialColor[3]=MaterialWhite;
- MaterialColor[4]=MaterialCyan;
- MaterialColor[5]=MaterialMagenta;
- MaterialColor[6]=MaterialGray;
- MaterialColor[7]=MaterialYellow;
- edgedivisions=octadivisions;
- Magnitude=2.5;
- break;
- case 4:
- draw_object=draw_dodeca;
- MaterialColor[ 0]=MaterialRed;
- MaterialColor[ 1]=MaterialGreen;
- MaterialColor[ 2]=MaterialCyan;
- MaterialColor[ 3]=MaterialBlue;
- MaterialColor[ 4]=MaterialMagenta;
- MaterialColor[ 5]=MaterialYellow;
- MaterialColor[ 6]=MaterialGreen;
- MaterialColor[ 7]=MaterialCyan;
- MaterialColor[ 8]=MaterialRed;
- MaterialColor[ 9]=MaterialMagenta;
- MaterialColor[10]=MaterialBlue;
- MaterialColor[11]=MaterialYellow;
- edgedivisions=dodecadivisions;
- Magnitude=2.0;
- break;
- case 5:
- draw_object=draw_ico;
- MaterialColor[ 0]=MaterialRed;
- MaterialColor[ 1]=MaterialGreen;
- MaterialColor[ 2]=MaterialBlue;
- MaterialColor[ 3]=MaterialCyan;
- MaterialColor[ 4]=MaterialYellow;
- MaterialColor[ 5]=MaterialMagenta;
- MaterialColor[ 6]=MaterialRed;
- MaterialColor[ 7]=MaterialGreen;
- MaterialColor[ 8]=MaterialBlue;
- MaterialColor[ 9]=MaterialWhite;
- MaterialColor[10]=MaterialCyan;
- MaterialColor[11]=MaterialYellow;
- MaterialColor[12]=MaterialMagenta;
- MaterialColor[13]=MaterialRed;
- MaterialColor[14]=MaterialGreen;
- MaterialColor[15]=MaterialBlue;
- MaterialColor[16]=MaterialCyan;
- MaterialColor[17]=MaterialYellow;
- MaterialColor[18]=MaterialMagenta;
- MaterialColor[19]=MaterialGray;
- edgedivisions=icodivisions;
- Magnitude=2.5;
- break;
- }
- if (mono) {
- int loop;
- for (loop=0; loop<20; loop++) MaterialColor[loop]=MaterialGray;
- }
- if (smooth) {
- glShadeModel( GL_SMOOTH );
- } else {
- glShadeModel( GL_FLAT );
- }
-
-}
-
-int main(int argc, char **argv)
-{
- printf("Morph 3D - Shows morphing platonic polyhedra\n");
- printf("Author: Marcelo Fernandes Vianna (vianna@cat.cbpf.br)\n\n");
- printf(" [1] - Tetrahedron\n");
- printf(" [2] - Hexahedron (Cube)\n");
- printf(" [3] - Octahedron\n");
- printf(" [4] - Dodecahedron\n");
- printf(" [5] - Icosahedron\n");
- printf("[SPACE] - Toggle colored faces\n");
- printf("[RETURN] - Toggle smooth/flat shading\n");
- printf(" [ESC] - Quit\n");
-
- object=1;
-
- glutInitWindowSize(640,480);
- glutInit(&argc, argv);
-
- glutInitDisplayMode( GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGB );
-
- if (glutCreateWindow("Morph 3D - Shows morphing platonic polyhedra") <= 0) {
- exit(0);
- }
-
- glClearDepth(1.0);
- glClearColor( 0.0, 0.0, 0.0, 1.0 );
- glColor3f( 1.0, 1.0, 1.0 );
-
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
- glFlush();
- glutSwapBuffers();
-
- glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
- glLightfv(GL_LIGHT0, GL_POSITION, position0);
- glLightfv(GL_LIGHT1, GL_AMBIENT, ambient);
- glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse);
- glLightfv(GL_LIGHT1, GL_POSITION, position1);
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
- glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside);
- glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT0);
- glEnable(GL_LIGHT1);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_NORMALIZE);
-
- glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular);
-
- glHint(GL_FOG_HINT, GL_FASTEST);
- glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
- glHint(GL_POLYGON_SMOOTH_HINT, GL_FASTEST);
-
- pinit();
-
- glutReshapeFunc( reshape );
- glutKeyboardFunc( key );
- glutIdleFunc( idle_ );
- glutDisplayFunc( draw );
- glutMainLoop();
-
- return 0;
-}
diff --git a/progs/demos/multiarb.c b/progs/demos/multiarb.c
deleted file mode 100644
index 82796a0c3f..0000000000
--- a/progs/demos/multiarb.c
+++ /dev/null
@@ -1,369 +0,0 @@
-/*
- * GL_ARB_multitexture demo
- *
- * Command line options:
- * -info print GL implementation information
- *
- *
- * Brian Paul November 1998 This program is in the public domain.
- * Modified on 12 Feb 2002 for > 2 texture units.
- */
-
-
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <GL/glew.h>
-#include <GL/glut.h>
-
-#include "readtex.h"
-
-#define TEXTURE_1_FILE "../images/girl.rgb"
-#define TEXTURE_2_FILE "../images/reflect.rgb"
-
-#define TEX0 1
-#define TEX7 8
-#define ANIMATE 10
-#define QUIT 100
-
-static GLint T0 = 0;
-static GLint Frames = 0;
-static GLboolean Animate = GL_TRUE;
-static GLint NumUnits = 1;
-static GLboolean TexEnabled[8];
-
-static GLfloat Drift = 0.0;
-static GLfloat Xrot = 20.0, Yrot = 30.0, Zrot = 0.0;
-
-
-static void Idle( void )
-{
- if (Animate) {
- GLint i;
-
- Drift = glutGet(GLUT_ELAPSED_TIME) * 0.001;
-
- for (i = 0; i < NumUnits; i++) {
- glActiveTextureARB(GL_TEXTURE0_ARB + i);
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- if (i == 0) {
- glTranslatef(Drift, 0.0, 0.0);
- glScalef(2, 2, 1);
- }
- else if (i == 1) {
- glTranslatef(0.0, Drift, 0.0);
- }
- else {
- float tx = 0.5, ty = 0.5;
- glTranslatef(tx, ty, 0.0);
- glRotatef(180.0 * Drift, 0, 0, 1);
- glScalef(1.0/i, 1.0/i, 1.0/i);
- glTranslatef(-tx, -ty + i * 0.1, 0.0);
- }
- }
- glMatrixMode(GL_MODELVIEW);
-
- glutPostRedisplay();
- }
-}
-
-
-static void DrawObject(void)
-{
- static const GLfloat tex_coords[] = { 0.0, 0.0, 1.0, 1.0, 0.0 };
- static const GLfloat vtx_coords[] = { -1.0, -1.0, 1.0, 1.0, -1.0 };
- GLint i, j;
-
- if (!TexEnabled[0] && !TexEnabled[1])
- glColor3f(0.1, 0.1, 0.1); /* add onto this */
- else
- glColor3f(1, 1, 1); /* modulate this */
-
- glBegin(GL_QUADS);
- for (j = 0; j < 4; j++ ) {
- for (i = 0; i < NumUnits; i++) {
- if (TexEnabled[i])
- glMultiTexCoord2fARB(GL_TEXTURE0_ARB + i,
- tex_coords[j], tex_coords[j+1]);
- }
- glVertex2f( vtx_coords[j], vtx_coords[j+1] );
- }
- glEnd();
-}
-
-
-static void Display( void )
-{
- glClear( GL_COLOR_BUFFER_BIT );
-
- glPushMatrix();
- glRotatef(Xrot, 1.0, 0.0, 0.0);
- glRotatef(Yrot, 0.0, 1.0, 0.0);
- glRotatef(Zrot, 0.0, 0.0, 1.0);
- glScalef(5.0, 5.0, 5.0);
- DrawObject();
- glPopMatrix();
-
- glutSwapBuffers();
-
- Frames++;
-
- {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- if (t - T0 >= 5000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- printf("%d frames in %6.3f seconds = %6.3f FPS\n", Frames, seconds, fps);
- fflush(stdout);
- T0 = t;
- Frames = 0;
- }
- }
-}
-
-
-static void Reshape( int width, int height )
-{
- glViewport( 0, 0, width, height );
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glFrustum( -1.0, 1.0, -1.0, 1.0, 10.0, 100.0 );
- /*glOrtho( -6.0, 6.0, -6.0, 6.0, 10.0, 100.0 );*/
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
- glTranslatef( 0.0, 0.0, -70.0 );
-}
-
-
-static void ToggleUnit(int unit)
-{
- TexEnabled[unit] = !TexEnabled[unit];
- glActiveTextureARB(GL_TEXTURE0_ARB + unit);
- if (TexEnabled[unit])
- glEnable(GL_TEXTURE_2D);
- else
- glDisable(GL_TEXTURE_2D);
- printf("Enabled: ");
- for (unit = 0; unit < NumUnits; unit++)
- printf("%d ", (int) TexEnabled[unit]);
- printf("\n");
-}
-
-
-static void ModeMenu(int entry)
-{
- if (entry >= TEX0 && entry <= TEX7) {
- /* toggle */
- GLint i = entry - TEX0;
- ToggleUnit(i);
- }
- else if (entry==ANIMATE) {
- Animate = !Animate;
- if (Animate)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- }
- else if (entry==QUIT) {
- exit(0);
- }
-
- glutPostRedisplay();
-}
-
-
-static void Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case 'a':
- Animate = !Animate;
- break;
- case '0':
- ToggleUnit(0);
- break;
- case '1':
- ToggleUnit(1);
- break;
- case '2':
- ToggleUnit(2);
- break;
- case '3':
- ToggleUnit(3);
- break;
- case '4':
- ToggleUnit(4);
- break;
- case '5':
- ToggleUnit(5);
- break;
- case '6':
- ToggleUnit(6);
- break;
- case '7':
- ToggleUnit(7);
- break;
- case 27:
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void SpecialKey( int key, int x, int y )
-{
- float step = 3.0;
- (void) x;
- (void) y;
-
- switch (key) {
- case GLUT_KEY_UP:
- Xrot += step;
- break;
- case GLUT_KEY_DOWN:
- Xrot -= step;
- break;
- case GLUT_KEY_LEFT:
- Yrot += step;
- break;
- case GLUT_KEY_RIGHT:
- Yrot -= step;
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void Init( int argc, char *argv[] )
-{
- GLuint texObj[8];
- GLint size, i;
-
- const char *exten = (const char *) glGetString(GL_EXTENSIONS);
- if (!strstr(exten, "GL_ARB_multitexture")) {
- printf("Sorry, GL_ARB_multitexture not supported by this renderer.\n");
- exit(1);
- }
-
- glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &NumUnits);
- printf("%d texture units supported\n", NumUnits);
- if (NumUnits > 8)
- NumUnits = 8;
-
- glGetIntegerv(GL_MAX_TEXTURE_SIZE, &size);
- printf("%d x %d max texture size\n", size, size);
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-
- for (i = 0; i < NumUnits; i++) {
- if (i < 2)
- TexEnabled[i] = GL_TRUE;
- else
- TexEnabled[i] = GL_FALSE;
- }
-
- /* allocate two texture objects */
- glGenTextures(NumUnits, texObj);
-
- /* setup the texture objects */
- for (i = 0; i < NumUnits; i++) {
-
- glActiveTextureARB(GL_TEXTURE0_ARB + i);
- glBindTexture(GL_TEXTURE_2D, texObj[i]);
-
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-
- if (i == 0) {
- if (!LoadRGBMipmaps(TEXTURE_1_FILE, GL_RGB)) {
- printf("Error: couldn't load texture image\n");
- exit(1);
- }
- }
- else if (i == 1) {
- if (!LoadRGBMipmaps(TEXTURE_2_FILE, GL_RGB)) {
- printf("Error: couldn't load texture image\n");
- exit(1);
- }
- }
- else {
- /* checker */
- GLubyte image[8][8][3];
- GLint i, j;
- for (i = 0; i < 8; i++) {
- for (j = 0; j < 8; j++) {
- if ((i + j) & 1) {
- image[i][j][0] = 50;
- image[i][j][1] = 50;
- image[i][j][2] = 50;
- }
- else {
- image[i][j][0] = 25;
- image[i][j][1] = 25;
- image[i][j][2] = 25;
- }
- }
- }
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 8, 8, 0,
- GL_RGB, GL_UNSIGNED_BYTE, (GLvoid *) image);
- }
-
- /* Bind texObj[i] to ith texture unit */
- if (i < 2)
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
- else
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD);
-
- if (TexEnabled[i])
- glEnable(GL_TEXTURE_2D);
- }
-
- glShadeModel(GL_FLAT);
- glClearColor(0.3, 0.3, 0.4, 1.0);
-
- if (argc > 1 && strcmp(argv[1], "-info")==0) {
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
- printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
- printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR));
- printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS));
- }
-}
-
-
-int main( int argc, char *argv[] )
-{
- GLint i;
-
- glutInitWindowSize( 300, 300 );
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
- glutCreateWindow(argv[0] );
- glewInit();
-
- Init( argc, argv );
-
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutSpecialFunc( SpecialKey );
- glutDisplayFunc( Display );
- if (Animate)
- glutIdleFunc(Idle);
-
- glutCreateMenu(ModeMenu);
-
- for (i = 0; i < NumUnits; i++) {
- char s[100];
- sprintf(s, "Toggle Texture %d", i);
- glutAddMenuEntry(s, TEX0 + i);
- }
- glutAddMenuEntry("Toggle Animation", ANIMATE);
- glutAddMenuEntry("Quit", QUIT);
- glutAttachMenu(GLUT_RIGHT_BUTTON);
-
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/paltex.c b/progs/demos/paltex.c
deleted file mode 100644
index 5d4b8662b5..0000000000
--- a/progs/demos/paltex.c
+++ /dev/null
@@ -1,268 +0,0 @@
-
-/*
- * Paletted texture demo. Written by Brian Paul.
- * This program is in the public domain.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-#ifdef _WIN32
-#include <windows.h>
-#endif
-#include <GL/glew.h>
-#include <GL/glut.h>
-
-
-static float Rot = 0.0;
-static GLboolean Anim = 1;
-
-
-static void Idle( void )
-{
- float t = glutGet(GLUT_ELAPSED_TIME) * 0.001; /* in seconds */
- Rot = t * 360 / 4; /* 1 rotation per 4 seconds */
- glutPostRedisplay();
-}
-
-
-static void Display( void )
-{
- /* draw background gradient */
- glDisable(GL_TEXTURE_2D);
- glBegin(GL_POLYGON);
- glColor3f(1.0, 0.0, 0.2); glVertex2f(-1.5, -1.0);
- glColor3f(1.0, 0.0, 0.2); glVertex2f( 1.5, -1.0);
- glColor3f(0.0, 0.0, 1.0); glVertex2f( 1.5, 1.0);
- glColor3f(0.0, 0.0, 1.0); glVertex2f(-1.5, 1.0);
- glEnd();
-
- glPushMatrix();
- glRotatef(Rot, 0, 0, 1);
-
- glEnable(GL_TEXTURE_2D);
- glBegin(GL_POLYGON);
- glTexCoord2f(0, 1); glVertex2f(-1, -0.5);
- glTexCoord2f(1, 1); glVertex2f( 1, -0.5);
- glTexCoord2f(1, 0); glVertex2f( 1, 0.5);
- glTexCoord2f(0, 0); glVertex2f(-1, 0.5);
- glEnd();
-
- glPopMatrix();
-
- glutSwapBuffers();
-}
-
-
-static void Reshape( int width, int height )
-{
- glViewport( 0, 0, width, height );
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glOrtho( -1.5, 1.5, -1.0, 1.0, -1.0, 1.0 );
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
-}
-
-
-static void Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case 27:
- exit(0);
- break;
- case 's':
- Rot += 0.5;
- break;
- case ' ':
- Anim = !Anim;
- if (Anim)
- glutIdleFunc( Idle );
- else
- glutIdleFunc( NULL );
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void Init( void )
-{
-#define HEIGHT 8
-#define WIDTH 32
- /* 257 = HEIGHT * WIDTH + 1 (for trailing '\0') */
- static char texture[257] = {"\
- \
- MMM EEEE SSS AAA \
- M M M E S S A A \
- M M M EEEE SS A A \
- M M M E SS AAAAA \
- M M E S S A A \
- M M EEEE SSS A A \
- "
- };
- GLubyte table[256][4];
-
- if (!glutExtensionSupported("GL_EXT_paletted_texture")) {
- printf("Sorry, GL_EXT_paletted_texture not supported\n");
- exit(0);
- }
-
- /* load the color table for each texel-index */
- memset(table, 0, 256*4);
- table[' '][0] = 255;
- table[' '][1] = 255;
- table[' '][2] = 255;
- table[' '][3] = 64;
- table['M'][0] = 255;
- table['M'][1] = 0;
- table['M'][2] = 0;
- table['M'][3] = 255;
- table['E'][0] = 0;
- table['E'][1] = 255;
- table['E'][2] = 0;
- table['E'][3] = 255;
- table['S'][0] = 0;
- table['S'][1] = 0;
- table['S'][2] = 255;
- table['S'][3] = 255;
- table['A'][0] = 255;
- table['A'][1] = 255;
- table['A'][2] = 0;
- table['A'][3] = 255;
-
-#ifdef GL_EXT_paletted_texture
-
-#if defined(GL_EXT_shared_texture_palette) && defined(USE_SHARED_PALETTE)
- printf("Using shared palette\n");
- glColorTableEXT(GL_SHARED_TEXTURE_PALETTE_EXT, /* target */
- GL_RGBA, /* internal format */
- 256, /* table size */
- GL_RGBA, /* table format */
- GL_UNSIGNED_BYTE, /* table type */
- table); /* the color table */
- glEnable(GL_SHARED_TEXTURE_PALETTE_EXT);
-#else
- glColorTableEXT(GL_TEXTURE_2D, /* target */
- GL_RGBA, /* internal format */
- 256, /* table size */
- GL_RGBA, /* table format */
- GL_UNSIGNED_BYTE, /* table type */
- table); /* the color table */
-#endif
-
- glTexImage2D(GL_TEXTURE_2D, /* target */
- 0, /* level */
- GL_COLOR_INDEX8_EXT, /* internal format */
- WIDTH, HEIGHT, /* width, height */
- 0, /* border */
- GL_COLOR_INDEX, /* texture format */
- GL_UNSIGNED_BYTE, /* texture type */
- texture); /* the texture */
-#endif
-
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
- glEnable(GL_TEXTURE_2D);
-
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-#undef HEIGHT
-#undef WIDTH
-}
-
-
-
-/*
- * Color ramp test
- */
-static void Init2( void )
-{
-#define HEIGHT 32
-#define WIDTH 256
- static char texture[HEIGHT][WIDTH];
- GLubyte table[256][4];
- int i, j;
-
- if (!glutExtensionSupported("GL_EXT_paletted_texture")) {
- printf("Sorry, GL_EXT_paletted_texture not supported\n");
- exit(0);
- }
-
- for (j = 0; j < HEIGHT; j++) {
- for (i = 0; i < WIDTH; i++) {
- texture[j][i] = i;
- }
- }
-
- for (i = 0; i < 255; i++) {
- table[i][0] = i;
- table[i][1] = 0;
- table[i][2] = 0;
- table[i][3] = 255;
- }
-
-#ifdef GL_EXT_paletted_texture
-
-#if defined(GL_EXT_shared_texture_palette) && defined(USE_SHARED_PALETTE)
- printf("Using shared palette\n");
- glColorTableEXT(GL_SHARED_TEXTURE_PALETTE_EXT, /* target */
- GL_RGBA, /* internal format */
- 256, /* table size */
- GL_RGBA, /* table format */
- GL_UNSIGNED_BYTE, /* table type */
- table); /* the color table */
- glEnable(GL_SHARED_TEXTURE_PALETTE_EXT);
-#else
- glColorTableEXT(GL_TEXTURE_2D, /* target */
- GL_RGBA, /* internal format */
- 256, /* table size */
- GL_RGBA, /* table format */
- GL_UNSIGNED_BYTE, /* table type */
- table); /* the color table */
-#endif
-
- glTexImage2D(GL_TEXTURE_2D, /* target */
- 0, /* level */
- GL_COLOR_INDEX8_EXT, /* internal format */
- WIDTH, HEIGHT, /* width, height */
- 0, /* border */
- GL_COLOR_INDEX, /* texture format */
- GL_UNSIGNED_BYTE, /* texture type */
- texture); /* teh texture */
-#endif
-
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
- glEnable(GL_TEXTURE_2D);
-
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-}
-
-
-int main( int argc, char *argv[] )
-{
- glutInitWindowSize( 400, 300 );
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
- glutCreateWindow(argv[0]);
- glewInit();
-
- Init();
- (void) Init2; /* silence warning */
-
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutDisplayFunc( Display );
- if (Anim)
- glutIdleFunc( Idle );
-
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/particles.cxx b/progs/demos/particles.cxx
deleted file mode 100644
index b88c318e0b..0000000000
--- a/progs/demos/particles.cxx
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * This program is under the GNU GPL.
- * Use at your own risk.
- *
- * written by David Bucciarelli (humanware@plus.it)
- * Humanware s.r.l.
- */
-
-#include <stdlib.h>
-
-#include "particles.h"
-
-#define vinit(a,i,j,k) {\
- (a)[0]=i;\
- (a)[1]=j;\
- (a)[2]=k;\
-}
-
-#define vadds(a,dt,b) {\
- (a)[0]+=(dt)*(b)[0];\
- (a)[1]+=(dt)*(b)[1];\
- (a)[2]+=(dt)*(b)[2];\
-}
-
-#define vequ(a,b) {\
- (a)[0]=(b)[0];\
- (a)[1]=(b)[1];\
- (a)[2]=(b)[2];\
-}
-
-#define vinter(a,dt,b,c) {\
- (a)[0]=(dt)*(b)[0]+(1.0-dt)*(c)[0];\
- (a)[1]=(dt)*(b)[1]+(1.0-dt)*(c)[1];\
- (a)[2]=(dt)*(b)[2]+(1.0-dt)*(c)[2];\
-}
-
-#define clamp(a) ((a) < 0.0 ? 0.0 : ((a) < 1.0 ? (a) : 1.0))
-
-#define vclamp(v) {\
- (v)[0]=clamp((v)[0]);\
- (v)[1]=clamp((v)[1]);\
- (v)[2]=clamp((v)[2]);\
-}
-
-
-float rainParticle::min[3];
-float rainParticle::max[3];
-float rainParticle::partLength=0.2f;
-
-
-static float vrnd(void)
-{
- return(((float)rand())/RAND_MAX);
-}
-
-
-particle::particle()
-{
- age=0.0f;
-
- vinit(acc,0.0f,0.0f,0.0f);
- vinit(vel,0.0f,0.0f,0.0f);
- vinit(pos,0.0f,0.0f,0.0f);
-}
-
-void particle::elapsedTime(float dt)
-{
- age+=dt;
-
- vadds(vel,dt,acc);
-
- vadds(pos,dt,vel);
-}
-
-/////////////////////////////////////////
-// Particle System
-/////////////////////////////////////////
-
-particleSystem::particleSystem()
-{
- t=0.0f;
-
- part=NULL;
-
- particleNum=0;
-}
-
-particleSystem::~particleSystem()
-{
- if(part)
- free(part);
-}
-
-void particleSystem::addParticle(particle *p)
-{
- if(!part) {
- part=(particle **)calloc(1,sizeof(particle *));
- part[0]=p;
- particleNum=1;
- } else {
- particleNum++;
- part=(particle **)realloc(part,sizeof(particle *)*particleNum);
- part[particleNum-1]=p;
- }
-}
-
-void particleSystem::reset(void)
-{
- if(part)
- free(part);
-
- t=0.0f;
-
- part=NULL;
-
- particleNum=0;
-}
-
-void particleSystem::draw(void)
-{
- if(!part)
- return;
-
- part[0]->beginDraw();
- for(unsigned int i=0;i<particleNum;i++)
- part[i]->draw();
- part[0]->endDraw();
-}
-
-void particleSystem::addTime(float dt)
-{
- if(!part)
- return;
-
- for(unsigned int i=0;i<particleNum;i++) {
- part[i]->elapsedTime(dt);
- part[i]->checkAge();
- }
-}
-
-/////////////////////////////////////////
-// Rain
-/////////////////////////////////////////
-
-void rainParticle::init(void)
-{
- age=0.0f;
-
- acc[0]=0.0f;
- acc[1]=-0.98f;
- acc[2]=0.0f;
-
- vel[0]=0.0f;
- vel[1]=0.0f;
- vel[2]=0.0f;
-
- oldpos[0]=pos[0]=min[0]+(max[0]-min[0])*vrnd();
- oldpos[1]=pos[1]=max[1]+0.2f*max[1]*vrnd();
- oldpos[2]=pos[2]=min[2]+(max[2]-min[2])*vrnd();
-
- vadds(oldpos,-partLength,vel);
-}
-
-rainParticle::rainParticle()
-{
- init();
-}
-
-void rainParticle::setRainingArea(float minx, float miny, float minz,
- float maxx, float maxy, float maxz)
-{
- vinit(min,minx,miny,minz);
- vinit(max,maxx,maxy,maxz);
-}
-
-void rainParticle::setLength(float l)
-{
- partLength=l;
-}
-
-void rainParticle::draw(void)
-{
- glColor4f(0.7f,0.95f,1.0f,0.0f);
- glVertex3fv(oldpos);
-
- glColor4f(0.3f,0.7f,1.0f,1.0f);
- glVertex3fv(pos);
-}
-
-void rainParticle::checkAge(void)
-{
- if(pos[1]<min[1])
- init();
-}
-
-void rainParticle::elapsedTime(float dt)
-{
- particle::elapsedTime(dt);
-
- if(pos[0]<min[0])
- pos[0]=max[0]-(min[0]-pos[0]);
- if(pos[2]<min[2])
- pos[2]=max[2]-(min[2]-pos[2]);
-
- if(pos[0]>max[0])
- pos[0]=min[0]+(pos[0]-max[0]);
- if(pos[2]>max[2])
- pos[2]=min[2]+(pos[2]-max[2]);
-
- vequ(oldpos,pos);
- vadds(oldpos,-partLength,vel);
-}
-
-void rainParticle::randomHeight(void)
-{
- pos[1]=(max[1]-min[1])*vrnd()+min[1];
-
- oldpos[1]=pos[1]-partLength*vel[1];
-}
diff --git a/progs/demos/particles.h b/progs/demos/particles.h
deleted file mode 100644
index a49dd691e4..0000000000
--- a/progs/demos/particles.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * This program is under the GNU GPL.
- * Use at your own risk.
- *
- * written by David Bucciarelli (humanware@plus.it)
- * Humanware s.r.l.
- */
-
-#ifndef PARTICLES_H
-#define PARTICLES_H
-
-#include <GL/gl.h>
-
-class particle {
- protected:
- float age; // in seconds
- float acc[3];
- float vel[3];
- float pos[3];
-
- public:
- particle();
- virtual ~particle() {};
-
- virtual void beginDraw(void) {};
- virtual void draw(void)=0;
- virtual void endDraw(void) {};
-
- virtual void elapsedTime(float);
- virtual void checkAge(void) {};
-};
-
-class particleSystem {
- protected:
- particle **part;
-
- float t;
-
- unsigned long particleNum;
- public:
- particleSystem();
- ~particleSystem();
-
- void addParticle(particle *);
-
- void reset(void);
-
- void draw(void);
-
- void addTime(float);
-};
-
-class rainParticle : public particle {
- protected:
- static float min[3];
- static float max[3];
- static float partLength;
-
- float oldpos[3];
-
- void init(void);
- public:
- rainParticle();
-
- static void setRainingArea(float, float, float,
- float, float, float);
- static void setLength(float);
- static float getLength(void) { return partLength; };
-
- void beginDraw(void) { glBegin(GL_LINES); };
- void draw(void);
- void endDraw(void) { glEnd(); };
-
- void elapsedTime(float);
-
- void checkAge(void);
-
- void randomHeight(void);
-};
-
-#endif
diff --git a/progs/demos/pointblast.c b/progs/demos/pointblast.c
deleted file mode 100644
index b4d0a67f99..0000000000
--- a/progs/demos/pointblast.c
+++ /dev/null
@@ -1,504 +0,0 @@
-
-/* Copyright (c) Mark J. Kilgard, 1997. */
-
-/* This program is freely distributable without licensing fees
- and is provided without guarantee or warrantee expressed or
- implied. This program is -not- in the public domain. */
-
-/* This example demonstrates how to render particle effects
- with OpenGL. A cloud of pinkish/orange particles explodes with the
- particles bouncing off the ground. When the EXT_point_parameters
- is present , the particle size is attenuated based on eye distance. */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h> /* for cos(), sin(), and sqrt() */
-#ifdef _WIN32
-#include <windows.h>
-#endif
-#include <GL/glew.h>
-#include <GL/glut.h>
-
-/* Some <math.h> files do not define M_PI... */
-#ifndef M_PI
-#define M_PI 3.14159265
-#endif
-
-#if 0 /* For debugging. */
-#undef GL_EXT_point_parameters
-#endif
-
-static GLfloat angle = -150; /* in degrees */
-static int spin = 0;
-static int moving, begin;
-static int newModel = 1;
-static float theTime;
-static int repeat = 1;
-static int blend = 1;
-int useMipmaps = 1;
-int linearFiltering = 1;
-
-static GLfloat constant[3] = { 1/5.0, 0.0, 0.0 };
-static GLfloat linear[3] = { 0.0, 1/5.0, 0.0 };
-static GLfloat theQuad[3] = { 0.25, 0.0, 1/60.0 };
-
-#define MAX_POINTS 2000
-
-static int numPoints = 200;
-
-static GLfloat pointList[MAX_POINTS][3];
-static GLfloat pointTime[MAX_POINTS];
-static GLfloat pointVelocity[MAX_POINTS][2];
-static GLfloat pointDirection[MAX_POINTS][2];
-static int colorList[MAX_POINTS];
-static int animate = 1, motion = 0;
-
-static GLfloat colorSet[][4] = {
- /* Shades of red. */
- { 0.7, 0.2, 0.4, 0.5 },
- { 0.8, 0.0, 0.7, 0.5 },
- { 1.0, 0.0, 0.0, 0.5 },
- { 0.9, 0.3, 0.6, 0.5 },
- { 1.0, 0.4, 0.0, 0.5 },
- { 1.0, 0.0, 0.5, 0.5 },
-};
-
-#define NUM_COLORS (sizeof(colorSet)/sizeof(colorSet[0]))
-
-#define DEAD (NUM_COLORS+1)
-
-
-#if 0 /* drand48 might be better on Unix machines */
-#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * drand48())
-#else
-static float float_rand(void) { return rand() / (float) RAND_MAX; }
-#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * float_rand())
-#endif
-
-#define MEAN_VELOCITY 3.0
-#define GRAVITY 2.0
-
-/* Modeling units of ground extent in each X and Z direction. */
-#define EDGE 12
-
-static void
-makePointList(void)
-{
- float angle, velocity, direction;
- int i;
-
- motion = 1;
- for (i=0; i<numPoints; i++) {
- pointList[i][0] = 0.0;
- pointList[i][1] = 0.0;
- pointList[i][2] = 0.0;
- pointTime[i] = 0.0;
- angle = (RANDOM_RANGE(60.0, 70.0)) * M_PI/180.0;
- direction = RANDOM_RANGE(0.0, 360.0) * M_PI/180.0;
- pointDirection[i][0] = cos(direction);
- pointDirection[i][1] = sin(direction);
- velocity = MEAN_VELOCITY + RANDOM_RANGE(-0.8, 1.0);
- pointVelocity[i][0] = velocity * cos(angle);
- pointVelocity[i][1] = velocity * sin(angle);
- colorList[i] = rand() % NUM_COLORS;
- }
- theTime = 0.0;
-}
-
-static void
-updatePointList(void)
-{
- float distance;
- int i;
-
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
-
- motion = 0;
- for (i=0; i<numPoints; i++) {
- distance = pointVelocity[i][0] * theTime;
-
- /* X and Z */
- pointList[i][0] = pointDirection[i][0] * distance;
- pointList[i][2] = pointDirection[i][1] * distance;
-
- /* Z */
- pointList[i][1] =
- (pointVelocity[i][1] - 0.5 * GRAVITY * pointTime[i])*pointTime[i];
-
- /* If we hit the ground, bounce the point upward again. */
- if (pointList[i][1] <= 0.0) {
- if (distance > EDGE) {
- /* Particle has hit ground past the distance duration of
- the particles. Mark particle as dead. */
- colorList[i] = NUM_COLORS; /* Not moving. */
- continue;
- }
-
- pointVelocity[i][1] *= 0.8; /* 80% of previous up velocity. */
- pointTime[i] = 0.0; /* Reset the particles sense of up time. */
- }
- motion = 1;
- pointTime[i] += dt;
- }
- theTime += dt;
- if (!motion && !spin) {
- if (repeat) {
- makePointList();
- } else {
- glutIdleFunc(NULL);
- }
- }
-}
-
-static void
-idle(void)
-{
- updatePointList();
- if (spin) {
- angle += 0.3;
- newModel = 1;
- }
- glutPostRedisplay();
-}
-
-static void
-visible(int vis)
-{
- if (vis == GLUT_VISIBLE) {
- if (animate && (motion || spin)) {
- glutIdleFunc(idle);
- }
- } else {
- glutIdleFunc(NULL);
- }
-}
-
-static void
-recalcModelView(void)
-{
- glPopMatrix();
- glPushMatrix();
- glRotatef(angle, 0.0, 1.0, 0.0);
- newModel = 0;
-}
-
-static void
-redraw(void)
-{
- int i;
-
- glDepthMask(GL_TRUE);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- if (newModel)
- recalcModelView();
-
-
- /* Draw the floor. */
-/* glEnable(GL_TEXTURE_2D);*/
- glColor3f(0.5, 1.0, 0.5);
- glBegin(GL_QUADS);
- glTexCoord2f(0.0, 0.0);
- glVertex3f(-EDGE, -0.05, -EDGE);
- glTexCoord2f(20.0, 0.0);
- glVertex3f(EDGE, -0.05, -EDGE);
- glTexCoord2f(20.0, 20.0);
- glVertex3f(EDGE, -0.05, EDGE);
- glTexCoord2f(0.0, 20.0);
- glVertex3f(-EDGE, -0.05, EDGE);
- glEnd();
-
- /* Allow particles to blend with each other. */
- glDepthMask(GL_FALSE);
-
- if (blend)
- glEnable(GL_BLEND);
-
- glDisable(GL_TEXTURE_2D);
- glBegin(GL_POINTS);
- for (i=0; i<numPoints; i++) {
- /* Draw alive particles. */
- if (colorList[i] != DEAD) {
- glColor4fv(colorSet[colorList[i]]);
- glVertex3fv(pointList[i]);
- }
- }
- glEnd();
-
- glDisable(GL_BLEND);
-
- glutSwapBuffers();
-}
-
-/* ARGSUSED2 */
-static void
-mouse(int button, int state, int x, int y)
-{
- /* Scene can be spun around Y axis using left
- mouse button movement. */
- if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
- moving = 1;
- begin = x;
- }
- if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) {
- moving = 0;
- }
-}
-
-/* ARGSUSED1 */
-static void
-mouseMotion(int x, int y)
-{
- if (moving) {
- angle = angle + (x - begin);
- begin = x;
- newModel = 1;
- glutPostRedisplay();
- }
-}
-
-static void
-menu(int option)
-{
- switch (option) {
- case 0:
- makePointList();
- break;
-#ifdef GL_ARB_point_parameters
- case 1:
- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, constant);
- break;
- case 2:
- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, linear);
- break;
- case 3:
- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
- break;
-#endif
- case 4:
- blend = 1;
- break;
- case 5:
- blend = 0;
- break;
-#ifdef GL_ARB_point_parameters
- case 6:
- glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 1.0);
- break;
- case 7:
- glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 10.0);
- break;
-#endif
- case 8:
- glEnable(GL_POINT_SMOOTH);
- break;
- case 9:
- glDisable(GL_POINT_SMOOTH);
- break;
- case 10:
- glPointSize(2.0);
- break;
- case 11:
- glPointSize(4.0);
- break;
- case 12:
- glPointSize(8.0);
- break;
- case 13:
- spin = 1 - spin;
- if (animate && (spin || motion)) {
- glutIdleFunc(idle);
- } else {
- glutIdleFunc(NULL);
- }
- break;
- case 14:
- numPoints = 200;
- break;
- case 15:
- numPoints = 500;
- break;
- case 16:
- numPoints = 1000;
- break;
- case 17:
- numPoints = 2000;
- break;
- case 666:
- exit(0);
- }
- glutPostRedisplay();
-}
-
-/* ARGSUSED1 */
-static void
-key(unsigned char c, int x, int y)
-{
- switch (c) {
- case 13:
- animate = 1 - animate; /* toggle. */
- if (animate && (motion || spin)) {
- glutIdleFunc(idle);
- } else {
- glutIdleFunc(NULL);
- }
- break;
- case ' ':
- animate = 1;
- makePointList();
- glutIdleFunc(idle);
- break;
- case 27:
- exit(0);
- }
-}
-
-/* Nice floor texture tiling pattern. */
-static char *circles[] = {
- "....xxxx........",
- "..xxxxxxxx......",
- ".xxxxxxxxxx.....",
- ".xxx....xxx.....",
- "xxx......xxx....",
- "xxx......xxx....",
- "xxx......xxx....",
- "xxx......xxx....",
- ".xxx....xxx.....",
- ".xxxxxxxxxx.....",
- "..xxxxxxxx......",
- "....xxxx........",
- "................",
- "................",
- "................",
- "................",
-};
-
-static void
-makeFloorTexture(void)
-{
- GLubyte floorTexture[16][16][3];
- GLubyte *loc;
- int s, t;
-
- /* Setup RGB image for the texture. */
- loc = (GLubyte*) floorTexture;
- for (t = 0; t < 16; t++) {
- for (s = 0; s < 16; s++) {
- if (circles[t][s] == 'x') {
- /* Nice blue. */
- loc[0] = 0x1f;
- loc[1] = 0x1f;
- loc[2] = 0x8f;
- } else {
- /* Light gray. */
- loc[0] = 0xca;
- loc[1] = 0xca;
- loc[2] = 0xca;
- }
- loc += 3;
- }
- }
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-
- if (useMipmaps) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_LINEAR);
- gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 16, 16,
- GL_RGB, GL_UNSIGNED_BYTE, floorTexture);
- } else {
- if (linearFiltering) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- } else {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- }
- glTexImage2D(GL_TEXTURE_2D, 0, 3, 16, 16, 0,
- GL_RGB, GL_UNSIGNED_BYTE, floorTexture);
- }
-}
-
-int
-main(int argc, char **argv)
-{
- int i;
-
- glutInitWindowSize(300, 300);
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE);
-
- for (i=1; i<argc; i++) {
- if(!strcmp("-noms", argv[i])) {
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
- printf("forcing no multisampling\n");
- } else if(!strcmp("-nomipmaps", argv[i])) {
- useMipmaps = 0;
- } else if(!strcmp("-nearest", argv[i])) {
- linearFiltering = 0;
- }
- }
-
- glutCreateWindow("point burst");
- glewInit();
- glutDisplayFunc(redraw);
- glutMouseFunc(mouse);
- glutMotionFunc(mouseMotion);
- glutVisibilityFunc(visible);
- glutKeyboardFunc(key);
- glutCreateMenu(menu);
- glutAddMenuEntry("Reset time", 0);
- glutAddMenuEntry("Constant", 1);
- glutAddMenuEntry("Linear", 2);
- glutAddMenuEntry("Quadratic", 3);
- glutAddMenuEntry("Blend on", 4);
- glutAddMenuEntry("Blend off", 5);
- glutAddMenuEntry("Threshold 1", 6);
- glutAddMenuEntry("Threshold 10", 7);
- glutAddMenuEntry("Point smooth on", 8);
- glutAddMenuEntry("Point smooth off", 9);
- glutAddMenuEntry("Point size 2", 10);
- glutAddMenuEntry("Point size 4", 11);
- glutAddMenuEntry("Point size 8", 12);
- glutAddMenuEntry("Toggle spin", 13);
- glutAddMenuEntry("200 points ", 14);
- glutAddMenuEntry("500 points ", 15);
- glutAddMenuEntry("1000 points ", 16);
- glutAddMenuEntry("2000 points ", 17);
- glutAddMenuEntry("Quit", 666);
- glutAttachMenu(GLUT_RIGHT_BUTTON);
-
- if (!glutExtensionSupported("GL_ARB_point_parameters")) {
- fprintf(stderr, "Sorry, GL_ARB_point_parameters is not supported.\n");
- return -1;
- }
-
- glShadeModel(GL_FLAT);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_POINT_SMOOTH);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glPointSize(8.0);
-#if GL_ARB_point_parameters
- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
-#endif
- glMatrixMode(GL_PROJECTION);
- gluPerspective( /* field of view in degree */ 40.0,
- /* aspect ratio */ 1.0,
- /* Z near */ 0.5, /* Z far */ 40.0);
- glMatrixMode(GL_MODELVIEW);
- gluLookAt(0.0, 1.0, 8.0, /* eye location */
- 0.0, 1.0, 0.0, /* center is at (0,0,0) */
- 0.0, 1.0, 0.); /* up is in postivie Y direction */
- glPushMatrix(); /* dummy push so we can pop on model
- recalc */
-
- makePointList();
- makeFloorTexture();
-
- glutMainLoop();
- return 0; /* ANSI C requires main to return int. */
-}
diff --git a/progs/demos/projtex.c b/progs/demos/projtex.c
deleted file mode 100644
index d162568b9f..0000000000
--- a/progs/demos/projtex.c
+++ /dev/null
@@ -1,1031 +0,0 @@
-
-/* projtex.c - by David Yu and David Blythe, SGI */
-
-/**
- ** Demonstrates simple projective texture mapping.
- **
- ** Button1 changes view, Button2 moves texture.
- **
- ** (See: Segal, Korobkin, van Widenfelt, Foran, and Haeberli
- ** "Fast Shadows and Lighting Effects Using Texture Mapping", SIGGRAPH '92)
- **
- ** 1994,1995 -- David G Yu
- **
- ** cc -o projtex projtex.c texture.c -lglut -lGLU -lGL -lX11 -lm
- **/
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <GL/glew.h>
-#include <GL/glut.h>
-#include "readtex.h"
-
-
-/* Some <math.h> files do not define M_PI... */
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-#define MAX_TEX 4
-int NumTextures = 1;
-
-int winWidth, winHeight;
-
-GLboolean redrawContinuously = GL_FALSE;
-
-float angle, axis[3];
-enum MoveModes {
- MoveNone, MoveView, MoveObject, MoveTexture
-};
-enum MoveModes mode = MoveNone;
-
-GLfloat objectXform[4][4];
-GLfloat textureXform[MAX_TEX][4][4];
-
-void (*drawObject) (void);
-void (*loadTexture) (void);
-GLboolean textureEnabled = GL_TRUE;
-GLboolean showProjection = GL_TRUE;
-GLboolean linearFilter = GL_TRUE;
-
-char *texFilename[MAX_TEX] = {
- "../images/girl.rgb",
- "../images/tile.rgb",
- "../images/bw.rgb",
- "../images/reflect.rgb"
-};
-
-
-GLfloat zoomFactor = 1.0;
-
-/*****************************************************************/
-
-
-static void
-ActiveTexture(int i)
-{
- glActiveTextureARB(i);
-}
-
-
-/* matrix = identity */
-static void
-matrixIdentity(GLfloat matrix[16])
-{
- matrix[0] = 1.0;
- matrix[1] = 0.0;
- matrix[2] = 0.0;
- matrix[3] = 0.0;
- matrix[4] = 0.0;
- matrix[5] = 1.0;
- matrix[6] = 0.0;
- matrix[7] = 0.0;
- matrix[8] = 0.0;
- matrix[9] = 0.0;
- matrix[10] = 1.0;
- matrix[11] = 0.0;
- matrix[12] = 0.0;
- matrix[13] = 0.0;
- matrix[14] = 0.0;
- matrix[15] = 1.0;
-}
-
-/* matrix2 = transpose(matrix1) */
-static void
-matrixTranspose(GLfloat matrix2[16], GLfloat matrix1[16])
-{
- matrix2[0] = matrix1[0];
- matrix2[1] = matrix1[4];
- matrix2[2] = matrix1[8];
- matrix2[3] = matrix1[12];
-
- matrix2[4] = matrix1[1];
- matrix2[5] = matrix1[5];
- matrix2[6] = matrix1[9];
- matrix2[7] = matrix1[13];
-
- matrix2[8] = matrix1[2];
- matrix2[9] = matrix1[6];
- matrix2[10] = matrix1[10];
- matrix2[11] = matrix1[14];
-
- matrix2[12] = matrix1[3];
- matrix2[13] = matrix1[7];
- matrix2[14] = matrix1[14];
- matrix2[15] = matrix1[15];
-}
-
-/*****************************************************************/
-
-/* load SGI .rgb image (pad with a border of the specified width and color) */
-#if 0
-static void
-imgLoad(char *filenameIn, int borderIn, GLfloat borderColorIn[4],
- int *wOut, int *hOut, GLubyte ** imgOut)
-{
- int border = borderIn;
- int width, height;
- int w, h;
- GLubyte *image, *img, *p;
- int i, j, components;
-
- image = (GLubyte *) read_texture(filenameIn, &width, &height, &components);
- w = width + 2 * border;
- h = height + 2 * border;
- img = (GLubyte *) calloc(w * h, 4 * sizeof(unsigned char));
-
- p = img;
- for (j = -border; j < height + border; ++j) {
- for (i = -border; i < width + border; ++i) {
- if (0 <= j && j <= height - 1 && 0 <= i && i <= width - 1) {
- p[0] = image[4 * (j * width + i) + 0];
- p[1] = image[4 * (j * width + i) + 1];
- p[2] = image[4 * (j * width + i) + 2];
- p[3] = 0xff;
- } else {
- p[0] = borderColorIn[0] * 0xff;
- p[1] = borderColorIn[1] * 0xff;
- p[2] = borderColorIn[2] * 0xff;
- p[3] = borderColorIn[3] * 0xff;
- }
- p += 4;
- }
- }
- free(image);
- *wOut = w;
- *hOut = h;
- *imgOut = img;
-}
-#endif
-
-
-/*****************************************************************/
-
-/* Load the image file specified on the command line as the current texture */
-static void
-loadImageTextures(void)
-{
- GLfloat borderColor[4] =
- {1.0, 1.0, 1.0, 1.0};
- int tex;
-
- for (tex = 0; tex < NumTextures; tex++) {
- GLubyte *image, *texData3, *texData4;
- GLint imgWidth, imgHeight;
- GLenum imgFormat;
- int i, j;
-
- printf("loading %s\n", texFilename[tex]);
- image = LoadRGBImage(texFilename[tex], &imgWidth, &imgHeight, &imgFormat);
- if (!image) {
- printf("can't find %s\n", texFilename[tex]);
- exit(1);
- }
- assert(imgFormat == GL_RGB);
-
- /* scale to 256x256 */
- texData3 = malloc(256 * 256 * 4);
- texData4 = malloc(256 * 256 * 4);
- assert(texData3);
- assert(texData4);
- gluScaleImage(imgFormat, imgWidth, imgHeight, GL_UNSIGNED_BYTE, image,
- 256, 256, GL_UNSIGNED_BYTE, texData3);
-
- /* convert to rgba */
- for (i = 0; i < 256 * 256; i++) {
- texData4[i*4+0] = texData3[i*3+0];
- texData4[i*4+1] = texData3[i*3+1];
- texData4[i*4+2] = texData3[i*3+2];
- texData4[i*4+3] = 128;
- }
-
- /* put transparent border around image */
- for (i = 0; i < 256; i++) {
- texData4[i*4+0] = 255;
- texData4[i*4+1] = 255;
- texData4[i*4+2] = 255;
- texData4[i*4+3] = 0;
- }
- j = 256 * 255 * 4;
- for (i = 0; i < 256; i++) {
- texData4[j + i*4+0] = 255;
- texData4[j + i*4+1] = 255;
- texData4[j + i*4+2] = 255;
- texData4[j + i*4+3] = 0;
- }
- for (i = 0; i < 256; i++) {
- j = i * 256 * 4;
- texData4[j+0] = 255;
- texData4[j+1] = 255;
- texData4[j+2] = 255;
- texData4[j+3] = 0;
- }
- for (i = 0; i < 256; i++) {
- j = i * 256 * 4 + 255 * 4;
- texData4[j+0] = 255;
- texData4[j+1] = 255;
- texData4[j+2] = 255;
- texData4[j+3] = 0;
- }
-
- ActiveTexture(GL_TEXTURE0_ARB + tex);
- glBindTexture(GL_TEXTURE_2D, tex + 1);
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, texData4);
-
- if (linearFilter) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- } else {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- }
- glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderColor);
-
- free(texData3);
- free(texData4);
- free(image);
- }
-}
-
-/* Create a simple spotlight pattern and make it the current texture */
-static void
-loadSpotlightTexture(void)
-{
- static int texWidth = 64, texHeight = 64;
- static GLubyte *texData;
- GLfloat borderColor[4] =
- {0.1, 0.1, 0.1, 1.0};
-
- if (!texData) {
- GLubyte *p;
- int i, j;
-
- texData = (GLubyte *) malloc(texWidth * texHeight * 4 * sizeof(GLubyte));
-
- p = texData;
- for (j = 0; j < texHeight; ++j) {
- float dy = (texHeight * 0.5 - j + 0.5) / (texHeight * 0.5);
-
- for (i = 0; i < texWidth; ++i) {
- float dx = (texWidth * 0.5 - i + 0.5) / (texWidth * 0.5);
- float r = cos(M_PI / 2.0 * sqrt(dx * dx + dy * dy));
- float c;
-
- r = (r < 0) ? 0 : r * r;
- c = 0xff * (r + borderColor[0]);
- p[0] = (c <= 0xff) ? c : 0xff;
- c = 0xff * (r + borderColor[1]);
- p[1] = (c <= 0xff) ? c : 0xff;
- c = 0xff * (r + borderColor[2]);
- p[2] = (c <= 0xff) ? c : 0xff;
- c = 0xff * (r + borderColor[3]);
- p[3] = (c <= 0xff) ? c : 0xff;
- p += 4;
- }
- }
- }
- if (linearFilter) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- } else {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- }
- glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderColor);
- gluBuild2DMipmaps(GL_TEXTURE_2D, 4, texWidth, texHeight,
- GL_RGBA, GL_UNSIGNED_BYTE, texData);
-}
-
-/*****************************************************************/
-
-static void
-checkErrors(void)
-{
- GLenum error;
- while ((error = glGetError()) != GL_NO_ERROR) {
- fprintf(stderr, "Error: %s\n", (char *) gluErrorString(error));
- }
-}
-
-static void
-drawCube(void)
-{
- glBegin(GL_QUADS);
-
- glNormal3f(-1.0, 0.0, 0.0);
- glColor3f(0.80, 0.50, 0.50);
- glVertex3f(-0.5, -0.5, -0.5);
- glVertex3f(-0.5, -0.5, 0.5);
- glVertex3f(-0.5, 0.5, 0.5);
- glVertex3f(-0.5, 0.5, -0.5);
-
- glNormal3f(1.0, 0.0, 0.0);
- glColor3f(0.50, 0.80, 0.50);
- glVertex3f(0.5, 0.5, 0.5);
- glVertex3f(0.5, -0.5, 0.5);
- glVertex3f(0.5, -0.5, -0.5);
- glVertex3f(0.5, 0.5, -0.5);
-
- glNormal3f(0.0, -1.0, 0.0);
- glColor3f(0.50, 0.50, 0.80);
- glVertex3f(-0.5, -0.5, -0.5);
- glVertex3f(0.5, -0.5, -0.5);
- glVertex3f(0.5, -0.5, 0.5);
- glVertex3f(-0.5, -0.5, 0.5);
-
- glNormal3f(0.0, 1.0, 0.0);
- glColor3f(0.50, 0.80, 0.80);
- glVertex3f(0.5, 0.5, 0.5);
- glVertex3f(0.5, 0.5, -0.5);
- glVertex3f(-0.5, 0.5, -0.5);
- glVertex3f(-0.5, 0.5, 0.5);
-
- glNormal3f(0.0, 0.0, -1.0);
- glColor3f(0.80, 0.50, 0.80);
- glVertex3f(-0.5, -0.5, -0.5);
- glVertex3f(-0.5, 0.5, -0.5);
- glVertex3f(0.5, 0.5, -0.5);
- glVertex3f(0.5, -0.5, -0.5);
-
- glNormal3f(0.0, 0.0, 1.0);
- glColor3f(1.00, 0.80, 0.50);
- glVertex3f(0.5, 0.5, 0.5);
- glVertex3f(-0.5, 0.5, 0.5);
- glVertex3f(-0.5, -0.5, 0.5);
- glVertex3f(0.5, -0.5, 0.5);
- glEnd();
-}
-
-static void
-drawDodecahedron(void)
-{
-#define A (0.5 * 1.61803) /* (sqrt(5) + 1) / 2 */
-#define B (0.5 * 0.61803) /* (sqrt(5) - 1) / 2 */
-#define C (0.5 * 1.0)
- GLfloat vertexes[20][3] =
- {
- {-A, 0.0, B},
- {-A, 0.0, -B},
- {A, 0.0, -B},
- {A, 0.0, B},
- {B, -A, 0.0},
- {-B, -A, 0.0},
- {-B, A, 0.0},
- {B, A, 0.0},
- {0.0, B, -A},
- {0.0, -B, -A},
- {0.0, -B, A},
- {0.0, B, A},
- {-C, -C, C},
- {-C, -C, -C},
- {C, -C, -C},
- {C, -C, C},
- {-C, C, C},
- {-C, C, -C},
- {C, C, -C},
- {C, C, C},
- };
-#undef A
-#undef B
-#undef C
- GLint polygons[12][5] =
- {
- {0, 12, 10, 11, 16},
- {1, 17, 8, 9, 13},
- {2, 14, 9, 8, 18},
- {3, 19, 11, 10, 15},
- {4, 14, 2, 3, 15},
- {5, 12, 0, 1, 13},
- {6, 17, 1, 0, 16},
- {7, 19, 3, 2, 18},
- {8, 17, 6, 7, 18},
- {9, 14, 4, 5, 13},
- {10, 12, 5, 4, 15},
- {11, 19, 7, 6, 16},
- };
- int i;
-
- glColor3f(0.75, 0.75, 0.75);
- for (i = 0; i < 12; ++i) {
- GLfloat *p0, *p1, *p2, d;
- GLfloat u[3], v[3], n[3];
-
- p0 = &vertexes[polygons[i][0]][0];
- p1 = &vertexes[polygons[i][1]][0];
- p2 = &vertexes[polygons[i][2]][0];
-
- u[0] = p2[0] - p1[0];
- u[1] = p2[1] - p1[1];
- u[2] = p2[2] - p1[2];
-
- v[0] = p0[0] - p1[0];
- v[1] = p0[1] - p1[1];
- v[2] = p0[2] - p1[2];
-
- n[0] = u[1] * v[2] - u[2] * v[1];
- n[1] = u[2] * v[0] - u[0] * v[2];
- n[2] = u[0] * v[1] - u[1] * v[0];
-
- d = 1.0 / sqrt(n[0] * n[0] + n[1] * n[1] + n[2] * n[2]);
- n[0] *= d;
- n[1] *= d;
- n[2] *= d;
-
- glBegin(GL_POLYGON);
- glNormal3fv(n);
- glVertex3fv(p0);
- glVertex3fv(p1);
- glVertex3fv(p2);
- glVertex3fv(vertexes[polygons[i][3]]);
- glVertex3fv(vertexes[polygons[i][4]]);
- glEnd();
- }
-}
-
-static void
-drawSphere(void)
-{
- int numMajor = 24;
- int numMinor = 32;
- float radius = 0.8;
- double majorStep = (M_PI / numMajor);
- double minorStep = (2.0 * M_PI / numMinor);
- int i, j;
-
- glColor3f(0.50, 0.50, 0.50);
- for (i = 0; i < numMajor; ++i) {
- double a = i * majorStep;
- double b = a + majorStep;
- double r0 = radius * sin(a);
- double r1 = radius * sin(b);
- GLfloat z0 = radius * cos(a);
- GLfloat z1 = radius * cos(b);
-
- glBegin(GL_TRIANGLE_STRIP);
- for (j = 0; j <= numMinor; ++j) {
- double c = j * minorStep;
- GLfloat x = cos(c);
- GLfloat y = sin(c);
-
- glNormal3f((x * r0) / radius, (y * r0) / radius, z0 / radius);
- glTexCoord2f(j / (GLfloat) numMinor, i / (GLfloat) numMajor);
- glVertex3f(x * r0, y * r0, z0);
-
- glNormal3f((x * r1) / radius, (y * r1) / radius, z1 / radius);
- glTexCoord2f(j / (GLfloat) numMinor, (i + 1) / (GLfloat) numMajor);
- glVertex3f(x * r1, y * r1, z1);
- }
- glEnd();
- }
-}
-
-/*****************************************************************/
-
-float xmin = -0.035, xmax = 0.035;
-float ymin = -0.035, ymax = 0.035;
-float nnear = 0.1;
-float ffar = 1.9;
-float distance = -1.0;
-
-static void
-loadTextureProjection(int texUnit, GLfloat m[16])
-{
- GLfloat mInverse[4][4];
-
- /* Should use true inverse, but since m consists only of rotations, we can
- just use the transpose. */
- matrixTranspose((GLfloat *) mInverse, m);
-
- ActiveTexture(GL_TEXTURE0_ARB + texUnit);
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glTranslatef(0.5, 0.5, 0.0);
- glScalef(0.5, 0.5, 1.0);
- glFrustum(xmin, xmax, ymin, ymax, nnear, ffar);
- glTranslatef(0.0, 0.0, distance);
- glMultMatrixf((GLfloat *) mInverse);
- glMatrixMode(GL_MODELVIEW);
-}
-
-static void
-drawTextureProjection(void)
-{
- float t = ffar / nnear;
- GLfloat n[4][3];
- GLfloat f[4][3];
-
- n[0][0] = xmin;
- n[0][1] = ymin;
- n[0][2] = -(nnear + distance);
-
- n[1][0] = xmax;
- n[1][1] = ymin;
- n[1][2] = -(nnear + distance);
-
- n[2][0] = xmax;
- n[2][1] = ymax;
- n[2][2] = -(nnear + distance);
-
- n[3][0] = xmin;
- n[3][1] = ymax;
- n[3][2] = -(nnear + distance);
-
- f[0][0] = xmin * t;
- f[0][1] = ymin * t;
- f[0][2] = -(ffar + distance);
-
- f[1][0] = xmax * t;
- f[1][1] = ymin * t;
- f[1][2] = -(ffar + distance);
-
- f[2][0] = xmax * t;
- f[2][1] = ymax * t;
- f[2][2] = -(ffar + distance);
-
- f[3][0] = xmin * t;
- f[3][1] = ymax * t;
- f[3][2] = -(ffar + distance);
-
- glColor3f(1.0, 1.0, 0.0);
- glBegin(GL_LINE_LOOP);
- glVertex3fv(n[0]);
- glVertex3fv(n[1]);
- glVertex3fv(n[2]);
- glVertex3fv(n[3]);
- glVertex3fv(f[3]);
- glVertex3fv(f[2]);
- glVertex3fv(f[1]);
- glVertex3fv(f[0]);
- glVertex3fv(n[0]);
- glVertex3fv(n[1]);
- glVertex3fv(f[1]);
- glVertex3fv(f[0]);
- glVertex3fv(f[3]);
- glVertex3fv(f[2]);
- glVertex3fv(n[2]);
- glVertex3fv(n[3]);
- glEnd();
-}
-
-/*****************************************************************/
-
-static void
-initialize(void)
-{
- GLfloat light0Pos[4] =
- {0.3, 0.3, 0.0, 1.0};
- GLfloat matAmb[4] =
- {0.01, 0.01, 0.01, 1.00};
- GLfloat matDiff[4] =
- {0.65, 0.65, 0.65, 1.00};
- GLfloat matSpec[4] =
- {0.30, 0.30, 0.30, 1.00};
- GLfloat matShine = 10.0;
- GLfloat eyePlaneS[] =
- {1.0, 0.0, 0.0, 0.0};
- GLfloat eyePlaneT[] =
- {0.0, 1.0, 0.0, 0.0};
- GLfloat eyePlaneR[] =
- {0.0, 0.0, 1.0, 0.0};
- GLfloat eyePlaneQ[] =
- {0.0, 0.0, 0.0, 1.0};
- int i;
-
- /* Setup Misc. */
- glClearColor(0.41, 0.41, 0.31, 0.0);
-
- glEnable(GL_DEPTH_TEST);
-
- /* glLineWidth(2.0);*/
-
- glCullFace(GL_FRONT);
- glEnable(GL_CULL_FACE);
-
- glMatrixMode(GL_PROJECTION);
- glFrustum(-0.5, 0.5, -0.5, 0.5, 1, 3);
- glMatrixMode(GL_MODELVIEW);
- glTranslatef(0, 0, -2);
-
- matrixIdentity((GLfloat *) objectXform);
- for (i = 0; i < NumTextures; i++) {
- matrixIdentity((GLfloat *) textureXform[i]);
- }
-
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
- glOrtho(0, 1, 0, 1, -1, 1);
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
- glLoadIdentity();
-
- glRasterPos2i(0, 0);
-
- glPopMatrix();
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
-
- /* Setup Lighting */
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, matAmb);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, matDiff);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, matSpec);
- glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, matShine);
-
- glEnable(GL_COLOR_MATERIAL);
-
- glLightfv(GL_LIGHT0, GL_POSITION, light0Pos);
- glEnable(GL_LIGHT0);
-
- glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
- glEnable(GL_LIGHTING);
-
- /* Setup Texture */
-
- (*loadTexture) ();
-
-
- for (i = 0; i < NumTextures; i++) {
- ActiveTexture(GL_TEXTURE0_ARB + i);
-
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
- glTexGenfv(GL_S, GL_EYE_PLANE, eyePlaneS);
-
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
- glTexGenfv(GL_T, GL_EYE_PLANE, eyePlaneT);
-
- glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
- glTexGenfv(GL_R, GL_EYE_PLANE, eyePlaneR);
-
- glTexGeni(GL_Q, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
- glTexGenfv(GL_Q, GL_EYE_PLANE, eyePlaneQ);
- }
-}
-
-static void
-display(void)
-{
- int i;
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- if (textureEnabled) {
- if (mode == MoveTexture || mode == MoveView) {
- /* Have OpenGL compute the new transformation (simple but slow). */
- for (i = 0; i < NumTextures; i++) {
- glPushMatrix();
- glLoadIdentity();
-#if 0
- if (i & 1)
- glRotatef(angle, axis[0], axis[1], axis[2]);
- else
-#endif
- glRotatef(angle*(i+1), axis[0], axis[1], axis[2]);
-
- glMultMatrixf((GLfloat *) textureXform[i]);
- glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *) textureXform[i]);
- glPopMatrix();
- }
- }
- for (i = 0; i < NumTextures; i++) {
- loadTextureProjection(i, (GLfloat *) textureXform[i]);
- }
-
- if (showProjection) {
- for (i = 0; i < NumTextures; i++) {
- ActiveTexture(GL_TEXTURE0_ARB + i);
- glPushMatrix();
- glMultMatrixf((GLfloat *) textureXform[i]);
- glDisable(GL_LIGHTING);
- drawTextureProjection();
- glEnable(GL_LIGHTING);
- glPopMatrix();
- }
- }
- for (i = 0; i < NumTextures; i++) {
- ActiveTexture(GL_TEXTURE0_ARB + i);
- glEnable(GL_TEXTURE_2D);
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glEnable(GL_TEXTURE_GEN_R);
- glEnable(GL_TEXTURE_GEN_Q);
- }
- }
- if (mode == MoveObject || mode == MoveView) {
- /* Have OpenGL compute the new transformation (simple but slow). */
- glPushMatrix();
- glLoadIdentity();
- glRotatef(angle, axis[0], axis[1], axis[2]);
- glMultMatrixf((GLfloat *) objectXform);
- glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat *) objectXform);
- glPopMatrix();
- }
- glPushMatrix();
- glMultMatrixf((GLfloat *) objectXform);
- (*drawObject) ();
- glPopMatrix();
-
- for (i = 0; i < NumTextures; i++) {
- ActiveTexture(GL_TEXTURE0_ARB + i);
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- glDisable(GL_TEXTURE_GEN_R);
- glDisable(GL_TEXTURE_GEN_Q);
- }
-
- if (zoomFactor > 1.0) {
- glDisable(GL_DEPTH_TEST);
- glCopyPixels(0, 0, winWidth / zoomFactor, winHeight / zoomFactor, GL_COLOR);
- glEnable(GL_DEPTH_TEST);
- }
- glFlush();
- glutSwapBuffers();
- checkErrors();
-}
-
-/*****************************************************************/
-
-/* simple trackball-like motion control */
-static float lastPos[3];
-static int lastTime;
-
-static void
-ptov(int x, int y, int width, int height, float v[3])
-{
- float d, a;
-
- /* project x,y onto a hemi-sphere centered within width, height */
- v[0] = (2.0 * x - width) / width;
- v[1] = (height - 2.0 * y) / height;
- d = sqrt(v[0] * v[0] + v[1] * v[1]);
- v[2] = cos((M_PI / 2.0) * ((d < 1.0) ? d : 1.0));
- a = 1.0 / sqrt(v[0] * v[0] + v[1] * v[1] + v[2] * v[2]);
- v[0] *= a;
- v[1] *= a;
- v[2] *= a;
-}
-
-static void
-startMotion(int x, int y, int but, int time)
-{
- if (but == GLUT_LEFT_BUTTON) {
- mode = MoveView;
- } else if (but == GLUT_MIDDLE_BUTTON) {
- mode = MoveTexture;
- } else {
- return;
- }
-
- lastTime = time;
- ptov(x, y, winWidth, winHeight, lastPos);
-}
-
-static void
-animate(void)
-{
- glutPostRedisplay();
-}
-
-static void
-vis(int visible)
-{
- if (visible == GLUT_VISIBLE) {
- if (redrawContinuously)
- glutIdleFunc(animate);
- } else {
- if (redrawContinuously)
- glutIdleFunc(NULL);
- }
-}
-
-static void
-stopMotion(int but, int time)
-{
- if ((but == GLUT_LEFT_BUTTON && mode == MoveView) ||
- (but == GLUT_MIDDLE_BUTTON && mode == MoveTexture)) {
- } else {
- return;
- }
-
- if (time == lastTime) {
- /* redrawContinuously = GL_TRUE;*/
- glutIdleFunc(animate);
- } else {
- angle = 0.0;
- redrawContinuously = GL_FALSE;
- glutIdleFunc(0);
- }
- if (!redrawContinuously) {
- mode = MoveNone;
- }
-}
-
-static void
-trackMotion(int x, int y)
-{
- float curPos[3], dx, dy, dz;
-
- ptov(x, y, winWidth, winHeight, curPos);
-
- dx = curPos[0] - lastPos[0];
- dy = curPos[1] - lastPos[1];
- dz = curPos[2] - lastPos[2];
- angle = 90.0 * sqrt(dx * dx + dy * dy + dz * dz);
-
- axis[0] = lastPos[1] * curPos[2] - lastPos[2] * curPos[1];
- axis[1] = lastPos[2] * curPos[0] - lastPos[0] * curPos[2];
- axis[2] = lastPos[0] * curPos[1] - lastPos[1] * curPos[0];
-
- lastTime = glutGet(GLUT_ELAPSED_TIME);
- lastPos[0] = curPos[0];
- lastPos[1] = curPos[1];
- lastPos[2] = curPos[2];
- glutPostRedisplay();
-}
-
-/*****************************************************************/
-
-static void
-object(void)
-{
- static int object;
-
- object++;
- object %= 3;
- switch (object) {
- case 0:
- drawObject = drawCube;
- break;
- case 1:
- drawObject = drawDodecahedron;
- break;
- case 2:
- drawObject = drawSphere;
- break;
- default:
- break;
- }
-}
-
-static void
-nop(void)
-{
-}
-
-static void
-texture(void)
-{
- static int texture = 0;
-
- texture++;
- texture %= 3;
- if (texture == 1 && texFilename == NULL) {
- /* Skip file texture if not loaded. */
- texture++;
- }
- switch (texture) {
- case 0:
- loadTexture = nop;
- textureEnabled = GL_FALSE;
- break;
- case 1:
- loadTexture = loadImageTextures;
- (*loadTexture) ();
- textureEnabled = GL_TRUE;
- break;
- case 2:
- loadTexture = loadSpotlightTexture;
- (*loadTexture) ();
- textureEnabled = GL_TRUE;
- break;
- default:
- break;
- }
-}
-
-static void
-help(void)
-{
- printf("'h' - help\n");
- printf("'l' - toggle linear/nearest filter\n");
- printf("'s' - toggle projection frustum\n");
- printf("'t' - toggle projected texture\n");
- printf("'o' - toggle object\n");
- printf("'z' - increase zoom factor\n");
- printf("'Z' - decrease zoom factor\n");
- printf("left mouse - move view\n");
- printf("middle mouse - move projection\n");
-}
-
-/* ARGSUSED1 */
-static void
-key(unsigned char key, int x, int y)
-{
- switch (key) {
- case '\033':
- exit(0);
- break;
- case 'l':
- linearFilter = !linearFilter;
- (*loadTexture) ();
- break;
- case 's':
- showProjection = !showProjection;
- break;
- case 't':
- texture();
- break;
- case 'o':
- object();
- break;
- case 'z':
- zoomFactor += 1.0;
- glPixelZoom(zoomFactor, zoomFactor);
- glViewport(0, 0, winWidth / zoomFactor, winHeight / zoomFactor);
- break;
- case 'Z':
- zoomFactor -= 1.0;
- if (zoomFactor < 1.0)
- zoomFactor = 1.0;
- glPixelZoom(zoomFactor, zoomFactor);
- glViewport(0, 0, winWidth / zoomFactor, winHeight / zoomFactor);
- break;
- case 'h':
- help();
- break;
- }
- glutPostRedisplay();
-}
-
-static void
-mouse(int button, int state, int x, int y)
-{
- if (state == GLUT_DOWN)
- startMotion(x, y, button, glutGet(GLUT_ELAPSED_TIME));
- else if (state == GLUT_UP)
- stopMotion(button, glutGet(GLUT_ELAPSED_TIME));
- glutPostRedisplay();
-}
-
-static void
-reshape(int w, int h)
-{
- winWidth = w;
- winHeight = h;
- glViewport(0, 0, w / zoomFactor, h / zoomFactor);
-}
-
-
-static void
-menu(int selection)
-{
- if (selection == 666) {
- exit(0);
- }
- key((unsigned char) selection, 0, 0);
-}
-
-int
-main(int argc, char **argv)
-{
- glutInitWindowSize(500,500);
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
- (void) glutCreateWindow("projtex");
- glewInit();
-
- if (argc > 1) {
- NumTextures = atoi(argv[1]);
- }
- assert(NumTextures <= MAX_TEX);
-
- loadTexture = loadImageTextures;
- drawObject = drawCube;
- initialize();
- glutDisplayFunc(display);
- glutKeyboardFunc(key);
- glutReshapeFunc(reshape);
- glutMouseFunc(mouse);
- glutMotionFunc(trackMotion);
- glutVisibilityFunc(vis);
- glutCreateMenu(menu);
- glutAddMenuEntry("Toggle showing projection", 's');
- glutAddMenuEntry("Switch texture", 't');
- glutAddMenuEntry("Switch object", 'o');
- glutAddMenuEntry("Toggle filtering", 'l');
- glutAddMenuEntry("Quit", 666);
- glutAttachMenu(GLUT_RIGHT_BUTTON);
- texture();
- glutMainLoop();
- return 0; /* ANSI C requires main to return int. */
-}
diff --git a/progs/demos/rain.cxx b/progs/demos/rain.cxx
deleted file mode 100644
index 60fc4146c8..0000000000
--- a/progs/demos/rain.cxx
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
- * This program is under the GNU GPL.
- * Use at your own risk.
- *
- * written by David Bucciarelli (humanware@plus.it)
- * Humanware s.r.l.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <time.h>
-#include <GL/glut.h>
-#ifndef M_PI
-#define M_PI 3.14159265
-#endif
-
-#include "particles.h"
-extern "C" {
-#include "readtex.h"
-}
-
-#ifdef _WIN32
-#include <windows.h>
-#include <mmsystem.h>
-#endif
-
-#ifdef XMESA
-#include "GL/xmesa.h"
-static int fullscreen=1;
-#endif
-
-static int WIDTH=640;
-static int HEIGHT=480;
-static int NUMPART=7500;
-
-#define FRAME 50
-
-static float fogcolor[4]={1.0,1.0,1.0,1.0};
-
-#define DIMP 40.0
-#define DIMTP 32.0
-
-static float q[4][3]={
- {-DIMP,0.0,-DIMP},
- {DIMP,0.0,-DIMP},
- {DIMP,0.0,DIMP},
- {-DIMP,0.0,DIMP}
-};
-
-static float qt[4][2]={
- {-DIMTP,-DIMTP},
- {DIMTP,-DIMTP},
- {DIMTP,DIMTP},
- {-DIMTP,DIMTP}
-};
-
-static int win=0;
-
-static int fog=1;
-static int help=1;
-
-static GLuint groundid;
-
-static float obs[3]={2.0,1.0,0.0};
-static float dir[3];
-static float v=0.0;
-static float alpha=-90.0;
-static float beta=90.0;
-
-static particleSystem *ps;
-
-static float gettime()
-{
- static clock_t told=0;
- clock_t tnew,ris;
-
- tnew=clock();
-
- ris=tnew-told;
-
- told=tnew;
-
- return(ris/(float)CLOCKS_PER_SEC);
-}
-
-static float gettimerain()
-{
- static clock_t told=0;
- clock_t tnew,ris;
-
- tnew=clock();
-
- ris=tnew-told;
-
- told=tnew;
-
- return(ris/(float)CLOCKS_PER_SEC);
-}
-
-static void calcposobs(void)
-{
- dir[0]=sin(alpha*M_PI/180.0);
- dir[2]=cos(alpha*M_PI/180.0)*sin(beta*M_PI/180.0);
- dir[1]=cos(beta*M_PI/180.0);
-
- obs[0]+=v*dir[0];
- obs[1]+=v*dir[1];
- obs[2]+=v*dir[2];
-
- rainParticle::setRainingArea(obs[0]-7.0f,-0.2f,obs[2]-7.0f,obs[0]+7.0f,8.0f,obs[2]+7.0f);
-}
-
-static void printstring(void *font, const char *string)
-{
- int len,i;
-
- len=(int)strlen(string);
- for(i=0;i<len;i++)
- glutBitmapCharacter(font,string[i]);
-}
-
-static void reshape(int width, int height)
-{
- WIDTH=width;
- HEIGHT=height;
- glViewport(0,0,(GLint)width,(GLint)height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(70.0,width/(float)height,0.1,30.0);
-
- glMatrixMode(GL_MODELVIEW);
-}
-
-static void printhelp(void)
-{
- glEnable(GL_BLEND);
- glColor4f(0.0,0.0,0.0,0.5);
- glRecti(40,40,600,440);
- glDisable(GL_BLEND);
-
- glColor3f(1.0,0.0,0.0);
- glRasterPos2i(300,420);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"Help");
-
- glRasterPos2i(60,390);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"h - Toggle Help");
-
- glRasterPos2i(60,360);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"f - Toggle Fog");
- glRasterPos2i(60,330);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"Arrow Keys - Rotate");
- glRasterPos2i(60,300);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"a - Increase velocity");
- glRasterPos2i(60,270);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"z - Decrease velocity");
- glRasterPos2i(60,240);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"l - Increase rain length");
- glRasterPos2i(60,210);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"k - Decrease rain length");
-}
-
-static void drawrain(void)
-{
- static int count=0;
- static char frbuf[80];
- float fr;
-
- glEnable(GL_DEPTH_TEST);
-
- if(fog)
- glEnable(GL_FOG);
- else
- glDisable(GL_FOG);
-
- glDepthMask(GL_TRUE);
- glClearColor(1.0,1.0,1.0,1.0);
- glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
-
- glPushMatrix();
- calcposobs();
- gluLookAt(obs[0],obs[1],obs[2],
- obs[0]+dir[0],obs[1]+dir[1],obs[2]+dir[2],
- 0.0,1.0,0.0);
-
- glColor4f(1.0,1.0,1.0,1.0);
-
- glEnable(GL_TEXTURE_2D);
-
- glBindTexture(GL_TEXTURE_2D,groundid);
- glBegin(GL_QUADS);
- glTexCoord2fv(qt[0]);
- glVertex3fv(q[0]);
- glTexCoord2fv(qt[1]);
- glVertex3fv(q[1]);
- glTexCoord2fv(qt[2]);
- glVertex3fv(q[2]);
- glTexCoord2fv(qt[3]);
- glVertex3fv(q[3]);
- glEnd();
-
- // Particle System
-
- glDisable(GL_TEXTURE_2D);
- glShadeModel(GL_SMOOTH);
- glEnable(GL_BLEND);
-
- ps->draw();
- ps->addTime(gettimerain());
-
- glShadeModel(GL_FLAT);
-
-
- if((count % FRAME)==0) {
- fr=gettime();
- sprintf(frbuf,"Frame rate: %f",FRAME/fr);
- }
-
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_FOG);
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-0.5,639.5,-0.5,479.5,-1.0,1.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- glColor3f(1.0,0.0,0.0);
- glRasterPos2i(10,10);
- printstring(GLUT_BITMAP_HELVETICA_18,frbuf);
- glRasterPos2i(350,470);
- printstring(GLUT_BITMAP_HELVETICA_10,"Rain V1.0 Written by David Bucciarelli (humanware@plus.it)");
-
- if(help)
- printhelp();
-
- reshape(WIDTH,HEIGHT);
- glPopMatrix();
-
- glutSwapBuffers();
-
- count++;
-}
-
-
-static void special(int key, int x, int y)
-{
- switch (key) {
- case GLUT_KEY_LEFT:
- alpha+=2.0;
- break;
- case GLUT_KEY_RIGHT:
- alpha-=2.0;
- break;
- case GLUT_KEY_DOWN:
- beta-=2.0;
- break;
- case GLUT_KEY_UP:
- beta+=2.0;
- break;
- }
-}
-
-static void key(unsigned char key, int x, int y)
-{
- switch (key) {
- case 27:
- exit(0);
- break;
-
- case 'a':
- v+=0.01;
- break;
- case 'z':
- v-=0.01;
- break;
-
- case 'l':
- rainParticle::setLength(rainParticle::getLength()+0.025f);
- break;
- case 'k':
- rainParticle::setLength(rainParticle::getLength()-0.025f);
- break;
-
- case 'h':
- help=(!help);
- break;
- case 'f':
- fog=(!fog);
- break;
-#ifdef XMESA
- case ' ':
- XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW);
- fullscreen=(!fullscreen);
- break;
-#endif
- }
-}
-
-static void inittextures(void)
-{
- GLubyte *img;
- GLint width,height;
- GLenum format;
- GLenum gluerr;
-
- glGenTextures(1,&groundid);
- glBindTexture(GL_TEXTURE_2D,groundid);
-
- if(!(img=LoadRGBImage("../images/s128.rgb",&width,&height,&format))){
- fprintf(stderr,"Error reading a texture.\n");
- exit(-1);
- }
- glPixelStorei(GL_UNPACK_ALIGNMENT,4);
- if((gluerr=(GLenum)gluBuild2DMipmaps(GL_TEXTURE_2D, 3, width, height,GL_RGB,
- GL_UNSIGNED_BYTE, (GLvoid *)(img)))) {
- fprintf(stderr,"GLULib%s\n",gluErrorString(gluerr));
- exit(-1);
- }
-
- glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);
- glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
-
- glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);
-}
-
-static void initparticle(void)
-{
- ps=new particleSystem;
-
- rainParticle::setRainingArea(-7.0f,-0.2f,-7.0f,7.0f,8.0f,7.0f);
-
- for(int i=0;i<NUMPART;i++) {
- rainParticle *p=new rainParticle;
- p->randomHeight();
-
- ps->addParticle((particle *)p);
- }
-}
-
-int main(int ac,char **av)
-{
- fprintf(stderr,"Rain V1.0\nWritten by David Bucciarelli (humanware@plus.it)\n");
-
- /* Default settings */
-
- WIDTH=640;
- HEIGHT=480;
-
- glutInitWindowPosition(0,0);
- glutInitWindowSize(WIDTH,HEIGHT);
- glutInit(&ac,av);
-
- glutInitDisplayMode(GLUT_RGB|GLUT_DEPTH|GLUT_DOUBLE);
-
- if(!(win=glutCreateWindow("Rain"))) {
- fprintf(stderr,"Error opening a window.\n");
- exit(-1);
- }
-
- reshape(WIDTH,HEIGHT);
-
- inittextures();
-
- glShadeModel(GL_FLAT);
- glEnable(GL_DEPTH_TEST);
-
- glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
-
- glEnable(GL_FOG);
- glFogi(GL_FOG_MODE,GL_EXP);
- glFogfv(GL_FOG_COLOR,fogcolor);
- glFogf(GL_FOG_DENSITY,0.1);
-#ifdef FX
- glHint(GL_FOG_HINT,GL_NICEST);
-#endif
-
- initparticle();
-
- glutKeyboardFunc(key);
- glutSpecialFunc(special);
- glutDisplayFunc(drawrain);
- glutIdleFunc(drawrain);
- glutReshapeFunc(reshape);
- glutMainLoop();
-
- return(0);
-}
diff --git a/progs/demos/ray.c b/progs/demos/ray.c
deleted file mode 100644
index 9cc464d239..0000000000
--- a/progs/demos/ray.c
+++ /dev/null
@@ -1,905 +0,0 @@
-/*
- * This program is under the GNU GPL.
- * Use at your own risk.
- *
- * written by David Bucciarelli (tech.hmw@plus.it)
- * Humanware s.r.l.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-
-#ifdef WIN32
-#include <windows.h>
-#endif
-
-#include <GL/glut.h>
-
-#ifdef XMESA
-#include "GL/xmesa.h"
-static int fullscreen = 1;
-#endif
-
-static int WIDTH = 640;
-static int HEIGHT = 480;
-
-static GLint T0 = 0;
-static GLint Frames = 0;
-
-#define BASESIZE 7.5f
-#define SPHERE_RADIUS 0.75f
-
-#define TEX_CHECK_WIDTH 256
-#define TEX_CHECK_HEIGHT 256
-#define TEX_CHECK_SLOT_SIZE (TEX_CHECK_HEIGHT/16)
-#define TEX_CHECK_NUMSLOT (TEX_CHECK_HEIGHT/TEX_CHECK_SLOT_SIZE)
-
-#define TEX_REFLECT_WIDTH 256
-#define TEX_REFLECT_HEIGHT 256
-#define TEX_REFLECT_SLOT_SIZE (TEX_REFLECT_HEIGHT/16)
-#define TEX_REFLECT_NUMSLOT (TEX_REFLECT_HEIGHT/TEX_REFLECT_SLOT_SIZE)
-
-#ifndef M_PI
-#define M_PI 3.1415926535
-#endif
-
-#define EPSILON 0.0001
-
-#define clamp255(a) ( (a)<(0.0f) ? (0.0f) : ((a)>(255.0f) ? (255.0f) : (a)) )
-
-#ifndef fabs
-#define fabs(x) ((x)<0.0f?-(x):(x))
-#endif
-
-#define vequ(a,b) { (a)[0]=(b)[0]; (a)[1]=(b)[1]; (a)[2]=(b)[2]; }
-#define vsub(a,b,c) { (a)[0]=(b)[0]-(c)[0]; (a)[1]=(b)[1]-(c)[1]; (a)[2]=(b)[2]-(c)[2]; }
-#define dprod(a,b) ((a)[0]*(b)[0]+(a)[1]*(b)[1]+(a)[2]*(b)[2])
-#define vnormalize(a,b) { \
- register float m_norm; \
- m_norm=sqrt((double)dprod((a),(a))); \
- (a)[0] /=m_norm; \
- (a)[1] /=m_norm; \
- (a)[2] /=m_norm; }
-
-static GLubyte checkmap[TEX_CHECK_HEIGHT][TEX_CHECK_WIDTH][3];
-static GLuint checkid;
-static int checkmap_currentslot = 0;
-
-static GLubyte reflectmap[TEX_REFLECT_HEIGHT][TEX_REFLECT_WIDTH][3];
-static GLuint reflectid;
-static int reflectmap_currentslot = 0;
-
-static GLuint lightdlist;
-static GLuint objdlist;
-
-static float lightpos[3] = { 2.1, 2.1, 2.8 };
-static float objpos[3] = { 0.0, 0.0, 1.0 };
-
-static float sphere_pos[TEX_CHECK_HEIGHT][TEX_REFLECT_WIDTH][3];
-
-static int win = 0;
-
-static float fogcolor[4] = { 0.05, 0.05, 0.05, 1.0 };
-
-static float obs[3] = { 7.0, 0.0, 2.0 };
-static float dir[3];
-static float v = 0.0;
-static float alpha = -90.0;
-static float beta = 90.0;
-
-static int fog = 1;
-static int bfcull = 1;
-static int poutline = 0;
-static int help = 1;
-static int showcheckmap = 1;
-static int showreflectmap = 1;
-static int joyavailable = 0;
-static int joyactive = 0;
-
-static void
-calcposobs(void)
-{
- dir[0] = sin(alpha * M_PI / 180.0);
- dir[1] = cos(alpha * M_PI / 180.0) * sin(beta * M_PI / 180.0);
- dir[2] = cos(beta * M_PI / 180.0);
-
- if (dir[0] < 1.0e-5 && dir[0] > -1.0e-5)
- dir[0] = 0;
- if (dir[1] < 1.0e-5 && dir[1] > -1.0e-5)
- dir[1] = 0;
- if (dir[2] < 1.0e-5 && dir[2] > -1.0e-5)
- dir[2] = 0;
-
- obs[0] += v * dir[0];
- obs[1] += v * dir[1];
- obs[2] += v * dir[2];
-}
-
-static void
-special(int k, int x, int y)
-{
- switch (k) {
- case GLUT_KEY_LEFT:
- alpha -= 2.0;
- break;
- case GLUT_KEY_RIGHT:
- alpha += 2.0;
- break;
- case GLUT_KEY_DOWN:
- beta -= 2.0;
- break;
- case GLUT_KEY_UP:
- beta += 2.0;
- break;
- }
-}
-
-static void
-key(unsigned char k, int x, int y)
-{
- switch (k) {
- case 27:
- exit(0);
- break;
-
- case 's':
- lightpos[1] -= 0.1;
- break;
- case 'd':
- lightpos[1] += 0.1;
- break;
- case 'e':
- lightpos[0] -= 0.1;
- break;
- case 'x':
- lightpos[0] += 0.1;
- break;
- case 'w':
- lightpos[2] -= 0.1;
- break;
- case 'r':
- lightpos[2] += 0.1;
- break;
-
- case 'j':
- objpos[1] -= 0.1;
- break;
- case 'k':
- objpos[1] += 0.1;
- break;
- case 'i':
- objpos[0] -= 0.1;
- break;
- case 'm':
- objpos[0] += 0.1;
- break;
- case 'u':
- objpos[2] -= 0.1;
- break;
- case 'o':
- objpos[2] += 0.1;
- break;
-
- case 'a':
- v += 0.005;
- break;
- case 'z':
- v -= 0.005;
- break;
-
- case 'g':
- joyactive = (!joyactive);
- break;
- case 'h':
- help = (!help);
- break;
- case 'f':
- fog = (!fog);
- break;
-
- case '1':
- showcheckmap = (!showcheckmap);
- break;
- case '2':
- showreflectmap = (!showreflectmap);
- break;
-
- case 'b':
- if (bfcull) {
- glDisable(GL_CULL_FACE);
- bfcull = 0;
- }
- else {
- glEnable(GL_CULL_FACE);
- bfcull = 1;
- }
- break;
- case 'p':
- if (poutline) {
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- poutline = 0;
- }
- else {
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- poutline = 1;
- }
- break;
-#ifdef XMESA
- case ' ':
- XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW);
- fullscreen = (!fullscreen);
- break;
-#endif
- }
-}
-
-static void
-reshape(int w, int h)
-{
- WIDTH = w;
- HEIGHT = h;
- glViewport(0, 0, w, h);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(45.0, w / (float) h, 0.8, 40.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-}
-
-static void
-printstring(void *font, char *string)
-{
- int len, i;
-
- len = (int) strlen(string);
- for (i = 0; i < len; i++)
- glutBitmapCharacter(font, string[i]);
-}
-
-static void
-printhelp(void)
-{
- glEnable(GL_BLEND);
- glColor4f(0.5, 0.5, 0.5, 0.5);
- glRecti(40, 40, 600, 440);
- glDisable(GL_BLEND);
-
- glColor3f(0.0, 0.0, 1.0);
- glRasterPos2i(300, 420);
- printstring(GLUT_BITMAP_HELVETICA_18, "Help");
-
- glRasterPos2i(60, 390);
- printstring(GLUT_BITMAP_HELVETICA_12, "h - Toggle Help");
- glRasterPos2i(60, 370);
- printstring(GLUT_BITMAP_HELVETICA_12, "f - Toggle Fog");
- glRasterPos2i(60, 350);
- printstring(GLUT_BITMAP_HELVETICA_12, "b - Toggle Back face culling");
- glRasterPos2i(60, 330);
- printstring(GLUT_BITMAP_HELVETICA_12, "p - Toggle Wire frame");
- glRasterPos2i(60, 310);
- printstring(GLUT_BITMAP_HELVETICA_12, "Arrow Keys - Rotate");
- glRasterPos2i(60, 290);
- printstring(GLUT_BITMAP_HELVETICA_12, "a - Increase velocity");
- glRasterPos2i(60, 270);
- printstring(GLUT_BITMAP_HELVETICA_12, "z - Decrease velocity");
-
- glRasterPos2i(60, 250);
- if (joyavailable)
- printstring(GLUT_BITMAP_HELVETICA_12,
- "j - Toggle jostick control (Joystick control available)");
- else
- printstring(GLUT_BITMAP_HELVETICA_12,
- "(No Joystick control available)");
-
- glRasterPos2i(60, 230);
- printstring(GLUT_BITMAP_HELVETICA_12,
- "To move the light source: s - left, d - right, e - far, x - near, w - down r - up");
- glRasterPos2i(60, 210);
- printstring(GLUT_BITMAP_HELVETICA_12,
- "To move the mirror sphere: j - left, k - right, i - far, m - near, u - down o - up");
-
- glRasterPos2i(60, 190);
- printstring(GLUT_BITMAP_HELVETICA_12,
- "1 - Toggle the plane texture map window");
-
- glRasterPos2i(60, 170);
- printstring(GLUT_BITMAP_HELVETICA_12,
- "2 - Toggle the sphere texture map window");
-}
-
-static GLboolean
-seelight(float p[3], float dir[3])
-{
- float c[3], b, a, d, t, dist[3];
-
- vsub(c, p, objpos);
- b = -dprod(c, dir);
- a = dprod(c, c) - SPHERE_RADIUS * SPHERE_RADIUS;
-
- if ((d = b * b - a) < 0.0 || (b < 0.0 && a > 0.0))
- return GL_FALSE;
-
- d = sqrt(d);
-
- t = b - d;
-
- if (t < EPSILON) {
- t = b + d;
- if (t < EPSILON)
- return GL_FALSE;
- }
-
- vsub(dist, lightpos, p);
- if (dprod(dist, dist) < t * t)
- return GL_FALSE;
-
- return GL_TRUE;
-}
-
-static int
-colorcheckmap(float ppos[3], float c[3])
-{
- static float norm[3] = { 0.0f, 0.0f, 1.0f };
- float ldir[3], vdir[3], h[3], dfact, kfact, r, g, b;
- int x, y;
-
- x = (int) ((ppos[0] + BASESIZE / 2) * (10.0f / BASESIZE));
- if ((x < 0) || (x > 10))
- return GL_FALSE;
-
- y = (int) ((ppos[1] + BASESIZE / 2) * (10.0f / BASESIZE));
- if ((y < 0) || (y > 10))
- return GL_FALSE;
-
- r = 255.0f;
- if (y & 1) {
- if (x & 1)
- g = 255.0f;
- else
- g = 0.0f;
- }
- else {
- if (x & 1)
- g = 0.0f;
- else
- g = 255.0f;
- }
- b = 0.0f;
-
- vsub(ldir, lightpos, ppos);
- vnormalize(ldir, ldir);
-
- if (seelight(ppos, ldir)) {
- c[0] = r * 0.05f;
- c[1] = g * 0.05f;
- c[2] = b * 0.05f;
-
- return GL_TRUE;
- }
-
- dfact = dprod(ldir, norm);
- if (dfact < 0.0f)
- dfact = 0.0f;
-
- vsub(vdir, obs, ppos);
- vnormalize(vdir, vdir);
- h[0] = 0.5f * (vdir[0] + ldir[0]);
- h[1] = 0.5f * (vdir[1] + ldir[1]);
- h[2] = 0.5f * (vdir[2] + ldir[2]);
- kfact = dprod(h, norm);
- kfact = pow(kfact, 6.0) * 7.0 * 255.0;
-
- r = r * dfact + kfact;
- g = g * dfact + kfact;
- b = b * dfact + kfact;
-
- c[0] = clamp255(r);
- c[1] = clamp255(g);
- c[2] = clamp255(b);
-
- return GL_TRUE;
-}
-
-static void
-updatecheckmap(int slot)
-{
- float c[3], ppos[3];
- int x, y;
-
- glBindTexture(GL_TEXTURE_2D, checkid);
-
- ppos[2] = 0.0f;
- for (y = slot * TEX_CHECK_SLOT_SIZE; y < (slot + 1) * TEX_CHECK_SLOT_SIZE;
- y++) {
- ppos[1] = (y / (float) TEX_CHECK_HEIGHT) * BASESIZE - BASESIZE / 2;
-
- for (x = 0; x < TEX_CHECK_WIDTH; x++) {
- ppos[0] = (x / (float) TEX_CHECK_WIDTH) * BASESIZE - BASESIZE / 2;
-
- colorcheckmap(ppos, c);
- checkmap[y][x][0] = (GLubyte) c[0];
- checkmap[y][x][1] = (GLubyte) c[1];
- checkmap[y][x][2] = (GLubyte) c[2];
- }
- }
-
- glTexSubImage2D(GL_TEXTURE_2D, 0, 0, slot * TEX_CHECK_SLOT_SIZE,
- TEX_CHECK_WIDTH, TEX_CHECK_SLOT_SIZE, GL_RGB,
- GL_UNSIGNED_BYTE,
- &checkmap[slot * TEX_CHECK_SLOT_SIZE][0][0]);
-
-}
-
-static void
-updatereflectmap(int slot)
-{
- float rf, r, g, b, t, dfact, kfact, rdir[3];
- float rcol[3], ppos[3], norm[3], ldir[3], h[3], vdir[3], planepos[3];
- int x, y;
-
- glBindTexture(GL_TEXTURE_2D, reflectid);
-
- for (y = slot * TEX_REFLECT_SLOT_SIZE;
- y < (slot + 1) * TEX_REFLECT_SLOT_SIZE; y++)
- for (x = 0; x < TEX_REFLECT_WIDTH; x++) {
- ppos[0] = sphere_pos[y][x][0] + objpos[0];
- ppos[1] = sphere_pos[y][x][1] + objpos[1];
- ppos[2] = sphere_pos[y][x][2] + objpos[2];
-
- vsub(norm, ppos, objpos);
- vnormalize(norm, norm);
-
- vsub(ldir, lightpos, ppos);
- vnormalize(ldir, ldir);
- vsub(vdir, obs, ppos);
- vnormalize(vdir, vdir);
-
- rf = 2.0f * dprod(norm, vdir);
- if (rf > EPSILON) {
- rdir[0] = rf * norm[0] - vdir[0];
- rdir[1] = rf * norm[1] - vdir[1];
- rdir[2] = rf * norm[2] - vdir[2];
-
- t = -objpos[2] / rdir[2];
-
- if (t > EPSILON) {
- planepos[0] = objpos[0] + t * rdir[0];
- planepos[1] = objpos[1] + t * rdir[1];
- planepos[2] = 0.0f;
-
- if (!colorcheckmap(planepos, rcol))
- rcol[0] = rcol[1] = rcol[2] = 0.0f;
- }
- else
- rcol[0] = rcol[1] = rcol[2] = 0.0f;
- }
- else
- rcol[0] = rcol[1] = rcol[2] = 0.0f;
-
- dfact = 0.1f * dprod(ldir, norm);
-
- if (dfact < 0.0f) {
- dfact = 0.0f;
- kfact = 0.0f;
- }
- else {
- h[0] = 0.5f * (vdir[0] + ldir[0]);
- h[1] = 0.5f * (vdir[1] + ldir[1]);
- h[2] = 0.5f * (vdir[2] + ldir[2]);
- kfact = dprod(h, norm);
- kfact = pow(kfact, 4.0);
- if (kfact < 1.0e-10)
- kfact = 0.0;
- }
-
- r = dfact + kfact;
- g = dfact + kfact;
- b = dfact + kfact;
-
- r *= 255.0f;
- g *= 255.0f;
- b *= 255.0f;
-
- r += rcol[0];
- g += rcol[1];
- b += rcol[2];
-
- r = clamp255(r);
- g = clamp255(g);
- b = clamp255(b);
-
- reflectmap[y][x][0] = (GLubyte) r;
- reflectmap[y][x][1] = (GLubyte) g;
- reflectmap[y][x][2] = (GLubyte) b;
- }
-
- glTexSubImage2D(GL_TEXTURE_2D, 0, 0, slot * TEX_REFLECT_SLOT_SIZE,
- TEX_REFLECT_WIDTH, TEX_REFLECT_SLOT_SIZE, GL_RGB,
- GL_UNSIGNED_BYTE,
- &reflectmap[slot * TEX_REFLECT_SLOT_SIZE][0][0]);
-}
-
-static void
-drawbase(void)
-{
- glColor3f(0.0, 0.0, 0.0);
- glBindTexture(GL_TEXTURE_2D, checkid);
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
- glBegin(GL_QUADS);
- glTexCoord2f(0.0f, 0.0f);
- glVertex3f(-BASESIZE / 2.0f, -BASESIZE / 2.0f, 0.0f);
-
- glTexCoord2f(1.0f, 0.0f);
- glVertex3f(BASESIZE / 2.0f, -BASESIZE / 2.0f, 0.0f);
-
- glTexCoord2f(1.0f, 1.0f);
- glVertex3f(BASESIZE / 2.0f, BASESIZE / 2.0f, 0.0f);
-
- glTexCoord2f(0.0f, 1.0f);
- glVertex3f(-BASESIZE / 2.0f, BASESIZE / 2.0f, 0.0f);
-
- glEnd();
-}
-
-static void
-drawobj(void)
-{
- glColor3f(0.0, 0.0, 0.0);
- glBindTexture(GL_TEXTURE_2D, reflectid);
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
- glPushMatrix();
- glTranslatef(objpos[0], objpos[1], objpos[2]);
- glCallList(objdlist);
- glPopMatrix();
-}
-
-static void
-dojoy(void)
-{
-#ifdef WIN32
- static UINT max[2] = { 0, 0 };
- static UINT min[2] = { 0xffffffff, 0xffffffff }, center[2];
- MMRESULT res;
- JOYINFO joy;
-
- res = joyGetPos(JOYSTICKID1, &joy);
-
- if (res == JOYERR_NOERROR) {
- joyavailable = 1;
-
- if (max[0] < joy.wXpos)
- max[0] = joy.wXpos;
- if (min[0] > joy.wXpos)
- min[0] = joy.wXpos;
- center[0] = (max[0] + min[0]) / 2;
-
- if (max[1] < joy.wYpos)
- max[1] = joy.wYpos;
- if (min[1] > joy.wYpos)
- min[1] = joy.wYpos;
- center[1] = (max[1] + min[1]) / 2;
-
- if (joyactive) {
- if (fabs(center[0] - (float) joy.wXpos) > 0.1 * (max[0] - min[0]))
- alpha -=
- 2.5 * (center[0] - (float) joy.wXpos) / (max[0] - min[0]);
- if (fabs(center[1] - (float) joy.wYpos) > 0.1 * (max[1] - min[1]))
- beta += 2.5 * (center[1] - (float) joy.wYpos) / (max[1] - min[1]);
-
- if (joy.wButtons & JOY_BUTTON1)
- v += 0.005;
- if (joy.wButtons & JOY_BUTTON2)
- v -= 0.005;
- }
- }
- else
- joyavailable = 0;
-#endif
-}
-
-static void
-updatemaps(void)
-{
- updatecheckmap(checkmap_currentslot);
- checkmap_currentslot = (checkmap_currentslot + 1) % TEX_CHECK_NUMSLOT;
-
- updatereflectmap(reflectmap_currentslot);
- reflectmap_currentslot =
- (reflectmap_currentslot + 1) % TEX_REFLECT_NUMSLOT;
-}
-
-static void
-draw(void)
-{
- static char frbuf[80] = "";
-
- dojoy();
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glEnable(GL_TEXTURE_2D);
- glEnable(GL_DEPTH_TEST);
- if (fog)
- glEnable(GL_FOG);
- else
- glDisable(GL_FOG);
-
- glPushMatrix();
- calcposobs();
-
- gluLookAt(obs[0], obs[1], obs[2],
- obs[0] + dir[0], obs[1] + dir[1], obs[2] + dir[2],
- 0.0, 0.0, 1.0);
-
- drawbase();
- drawobj();
-
- glColor3f(1.0, 1.0, 1.0);
- glDisable(GL_TEXTURE_2D);
-
- glPushMatrix();
- glTranslatef(lightpos[0], lightpos[1], lightpos[2]);
- glCallList(lightdlist);
- glPopMatrix();
-
- glPopMatrix();
-
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_FOG);
-
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
- glOrtho(-0.5, 639.5, -0.5, 479.5, -1.0, 1.0);
- glMatrixMode(GL_MODELVIEW);
-
- glColor3f(0.0f, 0.3f, 1.0f);
-
- if (showcheckmap) {
- glEnable(GL_TEXTURE_2D);
- glBindTexture(GL_TEXTURE_2D, checkid);
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
- glBegin(GL_QUADS);
- glTexCoord2f(1.0f, 0.0f);
- glVertex2i(10, 30);
- glTexCoord2f(1.0f, 1.0f);
- glVertex2i(10 + 90, 30);
- glTexCoord2f(0.0f, 1.0f);
- glVertex2i(10 + 90, 30 + 90);
- glTexCoord2f(0.0f, 0.0f);
- glVertex2i(10, 30 + 90);
- glEnd();
-
- glDisable(GL_TEXTURE_2D);
- glBegin(GL_LINE_LOOP);
- glVertex2i(10, 30);
- glVertex2i(10 + 90, 30);
- glVertex2i(10 + 90, 30 + 90);
- glVertex2i(10, 30 + 90);
- glEnd();
- glRasterPos2i(105, 65);
- printstring(GLUT_BITMAP_HELVETICA_18, "Plane Texture Map");
- }
-
- if (showreflectmap) {
- glEnable(GL_TEXTURE_2D);
- glBindTexture(GL_TEXTURE_2D, reflectid);
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
- glBegin(GL_QUADS);
- glTexCoord2f(1.0f, 0.0f);
- glVertex2i(540, 30);
- glTexCoord2f(1.0f, 1.0f);
- glVertex2i(540 + 90, 30);
- glTexCoord2f(0.0f, 1.0f);
- glVertex2i(540 + 90, 30 + 90);
- glTexCoord2f(0.0f, 0.0f);
- glVertex2i(540, 30 + 90);
- glEnd();
-
- glDisable(GL_TEXTURE_2D);
- glBegin(GL_LINE_LOOP);
- glVertex2i(540, 30);
- glVertex2i(540 + 90, 30);
- glVertex2i(540 + 90, 30 + 90);
- glVertex2i(540, 30 + 90);
- glEnd();
- glRasterPos2i(360, 65);
- printstring(GLUT_BITMAP_HELVETICA_18, "Sphere Texture Map");
- }
-
- glDisable(GL_TEXTURE_2D);
-
- glRasterPos2i(10, 10);
- printstring(GLUT_BITMAP_HELVETICA_18, frbuf);
- glRasterPos2i(360, 470);
- printstring(GLUT_BITMAP_HELVETICA_10,
- "Ray V1.0 Written by David Bucciarelli (tech.hmw@plus.it)");
-
- if (help)
- printhelp();
-
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
-
- updatemaps();
-
- glutSwapBuffers();
-
- Frames++;
- {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- if (t - T0 >= 2000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- sprintf(frbuf, "Frame rate: %f", fps);
- T0 = t;
- Frames = 0;
- }
- }
-}
-
-static void
-inittextures(void)
-{
- int y;
-
- glGenTextures(1, &checkid);
- glBindTexture(GL_TEXTURE_2D, checkid);
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- glTexImage2D(GL_TEXTURE_2D, 0, 3, TEX_CHECK_WIDTH, TEX_CHECK_HEIGHT,
- 0, GL_RGB, GL_UNSIGNED_BYTE, checkmap);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- for (y = 0; y < TEX_CHECK_NUMSLOT; y++)
- updatecheckmap(y);
-
-
-
- glGenTextures(1, &reflectid);
- glBindTexture(GL_TEXTURE_2D, reflectid);
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- glTexImage2D(GL_TEXTURE_2D, 0, 3, TEX_REFLECT_WIDTH, TEX_REFLECT_HEIGHT,
- 0, GL_RGB, GL_UNSIGNED_BYTE, reflectmap);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- for (y = 0; y < TEX_REFLECT_NUMSLOT; y++)
- updatereflectmap(y);
-
-
-}
-
-static void
-initspherepos(void)
-{
- float alpha, beta, sa, ca, sb, cb;
- int x, y;
-
- for (y = 0; y < TEX_REFLECT_HEIGHT; y++) {
- beta = M_PI - y * (M_PI / TEX_REFLECT_HEIGHT);
-
- for (x = 0; x < TEX_REFLECT_WIDTH; x++) {
- alpha = -x * (2.0f * M_PI / TEX_REFLECT_WIDTH);
-
- sa = sin(alpha);
- ca = cos(alpha);
-
- sb = sin(beta);
- cb = cos(beta);
-
- sphere_pos[y][x][0] = SPHERE_RADIUS * sa * sb;
- sphere_pos[y][x][1] = SPHERE_RADIUS * ca * sb;
- sphere_pos[y][x][2] = SPHERE_RADIUS * cb;
- }
- }
-}
-
-static void
-initdlists(void)
-{
- GLUquadricObj *obj;
-
- obj = gluNewQuadric();
-
- lightdlist = glGenLists(1);
- glNewList(lightdlist, GL_COMPILE);
- gluQuadricDrawStyle(obj, GLU_FILL);
- gluQuadricNormals(obj, GLU_NONE);
- gluQuadricTexture(obj, GL_TRUE);
- gluSphere(obj, 0.25f, 6, 6);
- glEndList();
-
- objdlist = glGenLists(1);
- glNewList(objdlist, GL_COMPILE);
- gluQuadricDrawStyle(obj, GLU_FILL);
- gluQuadricNormals(obj, GLU_NONE);
- gluQuadricTexture(obj, GL_TRUE);
- gluSphere(obj, SPHERE_RADIUS, 16, 16);
- glEndList();
-
- gluDeleteQuadric(obj);
-}
-
-int
-main(int ac, char **av)
-{
- fprintf(stderr,
- "Ray V1.0\nWritten by David Bucciarelli (tech.hmw@plus.it)\n");
-
- /*
- if(!SetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS)) {
- fprintf(stderr,"Error setting the process class.\n");
- return 0;
- }
-
- if(!SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL)) {
- fprintf(stderr,"Error setting the process priority.\n");
- return 0;
- }
- */
-
- glutInitWindowSize(WIDTH, HEIGHT);
- glutInit(&ac, av);
-
- glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
-
- if (!(win = glutCreateWindow("Ray"))) {
- fprintf(stderr, "Error, couldn't open window\n");
- return -1;
- }
-
- reshape(WIDTH, HEIGHT);
-
- glShadeModel(GL_FLAT);
- glEnable(GL_DEPTH_TEST);
- glDepthFunc(GL_LEQUAL);
- glEnable(GL_CULL_FACE);
- glEnable(GL_TEXTURE_2D);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- glEnable(GL_FOG);
- glFogi(GL_FOG_MODE, GL_EXP2);
- glFogfv(GL_FOG_COLOR, fogcolor);
-
- glFogf(GL_FOG_DENSITY, 0.01);
-#ifdef FX
- glHint(GL_FOG_HINT, GL_NICEST);
-#endif
-
- calcposobs();
-
- initspherepos();
-
- inittextures();
- initdlists();
-
- glClearColor(fogcolor[0], fogcolor[1], fogcolor[2], fogcolor[3]);
-
- glutReshapeFunc(reshape);
- glutDisplayFunc(draw);
- glutKeyboardFunc(key);
- glutSpecialFunc(special);
- glutIdleFunc(draw);
-
- glutMainLoop();
-
- return 0;
-}
diff --git a/progs/demos/readpix.c b/progs/demos/readpix.c
deleted file mode 100644
index cc4e490269..0000000000
--- a/progs/demos/readpix.c
+++ /dev/null
@@ -1,402 +0,0 @@
-
-/*
- * glReadPixels and glCopyPixels test
- *
- * Brian Paul March 1, 2000 This file is in the public domain.
- */
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-#include <GL/glut.h>
-
-#include "readtex.h"
-
-#define IMAGE_FILE "../images/girl.rgb"
-
-static int ImgWidth, ImgHeight;
-static int WinWidth, WinHeight;
-static GLenum ImgFormat;
-static GLubyte *Image = NULL;
-
-static int APosX, APosY; /* simple drawpixels */
-static int BPosX, BPosY; /* read/draw pixels */
-static int CPosX, CPosY; /* copypixels */
-
-static GLboolean DrawFront = GL_FALSE;
-static GLboolean ScaleAndBias = GL_FALSE;
-static GLboolean Benchmark = GL_FALSE;
-static GLboolean Triangle = GL_FALSE;
-static GLubyte *TempImage = NULL;
-
-#define COMBO 1
-#if COMBO == 0
-#define ReadFormat ImgFormat
-#define ReadType GL_UNSIGNED_BYTE
-#elif COMBO == 1
-static GLenum ReadFormat = GL_RGBA;
-static GLenum ReadType = GL_UNSIGNED_BYTE;
-#elif COMBO == 2
-static GLenum ReadFormat = GL_RGB;
-static GLenum ReadType = GL_UNSIGNED_BYTE;
-#elif COMBO == 3
-static GLenum ReadFormat = GL_RGB;
-static GLenum ReadType = GL_UNSIGNED_SHORT_5_6_5;
-#elif COMBO == 4
-static GLenum ReadFormat = GL_RGBA;
-static GLenum ReadType = GL_UNSIGNED_SHORT_1_5_5_5_REV;
-#elif COMBO == 5
-static GLenum ReadFormat = GL_BGRA;
-static GLenum ReadType = GL_UNSIGNED_SHORT_5_5_5_1;
-#elif COMBO == 6
-static GLenum ReadFormat = GL_BGRA;
-static GLenum ReadType = GL_UNSIGNED_SHORT_4_4_4_4_REV;
-#elif COMBO == 7
-static GLenum ReadFormat = GL_RGBA;
-static GLenum ReadType = GL_HALF_FLOAT_ARB;
-#undef GL_OES_read_format
-#endif
-
-
-static void
-Reset( void )
-{
- APosX = 5; APosY = 20;
- BPosX = APosX + ImgWidth + 5; BPosY = 20;
- CPosX = BPosX + ImgWidth + 5; CPosY = 20;
-}
-
-
-static void
-PrintString(const char *s)
-{
- while (*s) {
- glutBitmapCharacter(GLUT_BITMAP_8_BY_13, (int) *s);
- s++;
- }
-}
-
-
-static void
-SetupPixelTransfer(GLboolean invert)
-{
- if (invert) {
- glPixelTransferf(GL_RED_SCALE, -1.0);
- glPixelTransferf(GL_RED_BIAS, 1.0);
- glPixelTransferf(GL_GREEN_SCALE, -1.0);
- glPixelTransferf(GL_GREEN_BIAS, 1.0);
- glPixelTransferf(GL_BLUE_SCALE, -1.0);
- glPixelTransferf(GL_BLUE_BIAS, 1.0);
- }
- else {
- glPixelTransferf(GL_RED_SCALE, 1.0);
- glPixelTransferf(GL_RED_BIAS, 0.0);
- glPixelTransferf(GL_GREEN_SCALE, 1.0);
- glPixelTransferf(GL_GREEN_BIAS, 0.0);
- glPixelTransferf(GL_BLUE_SCALE, 1.0);
- glPixelTransferf(GL_BLUE_BIAS, 0.0);
- }
-}
-
-
-/**
- * Exercise Pixel Pack parameters by reading the image in four pieces.
- */
-static void
-ComplexReadPixels(GLint x, GLint y, GLsizei width, GLsizei height,
- GLenum format, GLenum type, GLvoid *pixels)
-{
- const GLsizei width0 = width / 2;
- const GLsizei width1 = width - width0;
- const GLsizei height0 = height / 2;
- const GLsizei height1 = height - height0;
-
- glPixelStorei(GL_PACK_ROW_LENGTH, width);
-
- /* lower-left quadrant */
- glReadPixels(x, y, width0, height0, format, type, pixels);
-
- /* lower-right quadrant */
- glPixelStorei(GL_PACK_SKIP_PIXELS, width0);
- glReadPixels(x + width0, y, width1, height0, format, type, pixels);
-
- /* upper-left quadrant */
- glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
- glPixelStorei(GL_PACK_SKIP_ROWS, height0);
- glReadPixels(x, y + height0, width0, height1, format, type, pixels);
-
- /* upper-right quadrant */
- glPixelStorei(GL_PACK_SKIP_PIXELS, width0);
- glPixelStorei(GL_PACK_SKIP_ROWS, height0);
- glReadPixels(x + width0, y + height0, width1, height1, format, type, pixels);
-
- /* restore defaults */
- glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
- glPixelStorei(GL_PACK_SKIP_ROWS, 0);
- glPixelStorei(GL_PACK_ROW_LENGTH, ImgWidth);
-}
-
-
-
-static void
-Display( void )
-{
- glClearColor(.3, .3, .3, 1);
- glClear( GL_COLOR_BUFFER_BIT );
-
- glRasterPos2i(5, ImgHeight+25);
- PrintString("f = toggle front/back s = toggle scale/bias b = benchmark");
-
- /* draw original image */
- glRasterPos2i(APosX, 5);
- PrintString("Original");
- if (!Triangle) {
- glRasterPos2i(APosX, APosY);
- glEnable(GL_DITHER);
- SetupPixelTransfer(GL_FALSE);
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- glDrawPixels(ImgWidth, ImgHeight, ImgFormat, GL_UNSIGNED_BYTE, Image);
- }
- else {
- float z = 0;
-
- glViewport(APosX, APosY, ImgWidth, ImgHeight);
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
- glDisable(GL_CULL_FACE);
-
- /* Red should never be seen
- */
- glBegin(GL_POLYGON);
- glColor3f(1,0,0);
- glVertex3f(-2, -2, z);
- glVertex3f(-2, 2, z);
- glVertex3f(2, 2, z);
- glVertex3f(2, -2, z);
- glEnd();
-
- /* Blue background
- */
- glBegin(GL_POLYGON);
- glColor3f(.5,.5,1);
- glVertex3f(-1, -1, z);
- glVertex3f(-1, 1, z);
- glVertex3f(1, 1, z);
- glVertex3f(1, -1, z);
- glEnd();
-
- /* Triangle
- */
- glBegin(GL_TRIANGLES);
- glColor3f(.8,0,0);
- glVertex3f(-0.9, -0.9, z);
- glColor3f(0,.9,0);
- glVertex3f( 0.9, -0.9, z);
- glColor3f(0,0,.7);
- glVertex3f( 0.0, 0.9, z);
- glEnd();
-
- glColor3f(1,1,1);
-
- glViewport( 0, 0, WinWidth, WinHeight );
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glOrtho( 0.0, WinWidth, 0.0, WinHeight, -1.0, 1.0 );
- }
-
- /* might try alignment=4 here for testing */
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- glPixelStorei(GL_PACK_ALIGNMENT, 1);
-
- /* do readpixels, drawpixels */
- glRasterPos2i(BPosX, 5);
- PrintString("Read/DrawPixels");
- SetupPixelTransfer(ScaleAndBias);
- if (Benchmark) {
- GLint reads = 0;
- GLint endTime;
- GLint startTime = glutGet(GLUT_ELAPSED_TIME);
- GLdouble seconds, mpixels, mpixelsPerSecond;
- printf("Benchmarking...\n");
- do {
- glReadPixels(APosX, APosY, ImgWidth, ImgHeight,
- ReadFormat, ReadType, TempImage);
- reads++;
- endTime = glutGet(GLUT_ELAPSED_TIME);
- } while (endTime - startTime < 4000); /* 4 seconds */
- seconds = (double) (endTime - startTime) / 1000.0;
- mpixels = reads * (ImgWidth * ImgHeight / (1000.0 * 1000.0));
- mpixelsPerSecond = mpixels / seconds;
- printf("Result: %d reads in %f seconds = %f Mpixels/sec\n",
- reads, seconds, mpixelsPerSecond);
- Benchmark = GL_FALSE;
- }
- else {
- /* clear the temporary image to white (helpful for debugging */
- memset(TempImage, 255, ImgWidth * ImgHeight * 4);
-#if 1
- glReadPixels(APosX, APosY, ImgWidth, ImgHeight,
- ReadFormat, ReadType, TempImage);
- (void) ComplexReadPixels;
-#else
- /* you might use this when debugging */
- ComplexReadPixels(APosX, APosY, ImgWidth, ImgHeight,
- ReadFormat, ReadType, TempImage);
-#endif
- }
- glRasterPos2i(BPosX, BPosY);
- glDisable(GL_DITHER);
- SetupPixelTransfer(GL_FALSE);
- glDrawPixels(ImgWidth, ImgHeight, ReadFormat, ReadType, TempImage);
-
- /* do copypixels */
- glRasterPos2i(CPosX, 5);
- PrintString("CopyPixels");
- glRasterPos2i(CPosX, CPosY);
- glDisable(GL_DITHER);
- SetupPixelTransfer(ScaleAndBias);
- glCopyPixels(APosX, APosY, ImgWidth, ImgHeight, GL_COLOR);
-
- if (!DrawFront)
- glutSwapBuffers();
- else
- glFinish();
-}
-
-
-static void
-Reshape( int width, int height )
-{
- WinWidth = width;
- WinHeight = height;
-
- glViewport( 0, 0, width, height );
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glOrtho( 0.0, width, 0.0, height, -1.0, 1.0 );
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
-}
-
-
-static void
-Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case 'b':
- Benchmark = GL_TRUE;
- break;
- case 't':
- Triangle = !Triangle;
- break;
- case 's':
- ScaleAndBias = !ScaleAndBias;
- break;
- case 'f':
- DrawFront = !DrawFront;
- if (DrawFront) {
- glDrawBuffer(GL_FRONT);
- glReadBuffer(GL_FRONT);
- }
- else {
- glDrawBuffer(GL_BACK);
- glReadBuffer(GL_BACK);
- }
- printf("glDrawBuffer(%s)\n", DrawFront ? "GL_FRONT" : "GL_BACK");
- break;
- case 27:
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void
-Init( GLboolean ciMode )
-{
- GLboolean have_read_format = GL_FALSE;
-
- printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
-
- Image = LoadRGBImage( IMAGE_FILE, &ImgWidth, &ImgHeight, &ImgFormat );
- if (!Image) {
- printf("Couldn't read %s\n", IMAGE_FILE);
- exit(0);
- }
-
- if (ciMode) {
- /* Convert RGB image to grayscale */
- GLubyte *indexImage = (GLubyte *) malloc( ImgWidth * ImgHeight );
- GLint i;
- for (i=0; i<ImgWidth*ImgHeight; i++) {
- int gray = Image[i*3] + Image[i*3+1] + Image[i*3+2];
- indexImage[i] = gray / 3;
- }
- free(Image);
- Image = indexImage;
- ImgFormat = GL_COLOR_INDEX;
-
- for (i=0;i<255;i++) {
- float g = i / 255.0;
- glutSetColor(i, g, g, g);
- }
- }
-
-#ifdef GL_OES_read_format
- if ( glutExtensionSupported( "GL_OES_read_format" ) ) {
- glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_TYPE_OES, (GLint *) &ReadType);
- glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES, (GLint *) &ReadFormat);
-
- have_read_format = GL_TRUE;
- }
-#endif
-
- printf( "GL_OES_read_format %ssupported. "
- "Using type / format = 0x%04x / 0x%04x\n",
- (have_read_format) ? "" : "not ",
- ReadType, ReadFormat );
-
- printf("Loaded %d by %d image\n", ImgWidth, ImgHeight );
-
- glPixelStorei(GL_UNPACK_ROW_LENGTH, ImgWidth);
- glPixelStorei(GL_PACK_ROW_LENGTH, ImgWidth);
-
- Reset();
-
- /* allocate large TempImage to store and image data type, plus an
- * extra 1KB in case we're tinkering with pack alignment.
- */
- TempImage = (GLubyte *) malloc(ImgWidth * ImgHeight * 4 * 4
- + 1000);
- assert(TempImage);
-}
-
-
-int
-main( int argc, char *argv[] )
-{
- GLboolean ciMode = GL_FALSE;
- glutInitWindowSize( 750, 250 );
- glutInit( &argc, argv );
- if (argc > 1 && strcmp(argv[1], "-ci")==0) {
- ciMode = GL_TRUE;
- }
- if (ciMode)
- glutInitDisplayMode( GLUT_INDEX | GLUT_DOUBLE );
- else
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
- glutCreateWindow(argv[0]);
- Init(ciMode);
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutDisplayFunc( Display );
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/reflect.c b/progs/demos/reflect.c
deleted file mode 100644
index b72af12885..0000000000
--- a/progs/demos/reflect.c
+++ /dev/null
@@ -1,591 +0,0 @@
-/*
- * Demo of a reflective, texture-mapped surface with OpenGL.
- * Brian Paul August 14, 1995 This file is in the public domain.
- *
- * Hardware texture mapping is highly recommended!
- *
- * The basic steps are:
- * 1. Render the reflective object (a polygon) from the normal viewpoint,
- * setting the stencil planes = 1.
- * 2. Render the scene from a special viewpoint: the viewpoint which
- * is on the opposite side of the reflective plane. Only draw where
- * stencil = 1. This draws the objects in the reflective surface.
- * 3. Render the scene from the original viewpoint. This draws the
- * objects in the normal fashion. Use blending when drawing
- * the reflective, textured surface.
- *
- * This is a very crude demo. It could be much better.
- */
-
-/*
- * Authors:
- * Brian Paul
- * Dirk Reiners (reiners@igd.fhg.de) made some modifications to this code.
- * Mark Kilgard (April 1997)
- * Brian Paul (April 2000 - added keyboard d/s options)
- * Brian Paul (August 2005 - added multi window feature)
- */
-
-
-#include <assert.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include "GL/glut.h"
-#include "showbuffer.h"
-#include "readtex.h"
-
-
-#define DEG2RAD (3.14159/180.0)
-#define TABLE_TEXTURE "../images/tile.rgb"
-#define MAX_OBJECTS 2
-#define INIT_WIDTH 400
-#define INIT_HEIGHT 300
-
-#ifdef _WIN32
-#undef CreateWindowA
-#endif
-
-struct window {
- int id; /* returned by glutCreateWindow() */
- int width, height;
- GLboolean anim;
- GLfloat xrot, yrot;
- GLfloat spin;
- GLenum showBuffer;
- GLenum drawBuffer;
- GLuint table_list;
- GLuint objects_list[MAX_OBJECTS];
- double t0;
- struct window *next;
-};
-
-
-static struct window *FirstWindow = NULL;
-
-
-static void
-CreateWindow(void);
-
-
-static struct window *
-CurrentWindow(void)
-{
- int id = glutGetWindow();
- struct window *w;
- for (w = FirstWindow; w; w = w->next) {
- if (w->id == id)
- return w;
- }
- return NULL;
-}
-
-
-static GLboolean
-AnyAnimating(void)
-{
- struct window *w;
- for (w = FirstWindow; w; w = w->next) {
- if (w->anim)
- return 1;
- }
- return 0;
-}
-
-
-static void
-KillWindow(struct window *w)
-{
- struct window *win, *prev = NULL;
- for (win = FirstWindow; win; win = win->next) {
- if (win == w) {
- if (prev) {
- prev->next = win->next;
- }
- else {
- FirstWindow = win->next;
- }
- glutDestroyWindow(win->id);
- win->next = NULL;
- free(win);
- return;
- }
- prev = win;
- }
-}
-
-
-static void
-KillAllWindows(void)
-{
- while (FirstWindow)
- KillWindow(FirstWindow);
-}
-
-
-static GLuint
-MakeTable(void)
-{
- static GLfloat table_mat[] = { 1.0, 1.0, 1.0, 0.6 };
- static GLfloat gray[] = { 0.4, 0.4, 0.4, 1.0 };
- GLuint table_list;
-
- table_list = glGenLists(1);
- glNewList( table_list, GL_COMPILE );
-
- /* load table's texture */
- glMaterialfv( GL_FRONT, GL_AMBIENT_AND_DIFFUSE, table_mat );
- /*glMaterialfv( GL_FRONT, GL_EMISSION, gray );*/
- glMaterialfv( GL_FRONT, GL_DIFFUSE, table_mat );
- glMaterialfv( GL_FRONT, GL_AMBIENT, gray );
-
- /* draw textured square for the table */
- glPushMatrix();
- glScalef( 4.0, 4.0, 4.0 );
- glBegin( GL_POLYGON );
- glNormal3f( 0.0, 1.0, 0.0 );
- glTexCoord2f( 0.0, 0.0 ); glVertex3f( -1.0, 0.0, 1.0 );
- glTexCoord2f( 1.0, 0.0 ); glVertex3f( 1.0, 0.0, 1.0 );
- glTexCoord2f( 1.0, 1.0 ); glVertex3f( 1.0, 0.0, -1.0 );
- glTexCoord2f( 0.0, 1.0 ); glVertex3f( -1.0, 0.0, -1.0 );
- glEnd();
- glPopMatrix();
-
- glDisable( GL_TEXTURE_2D );
-
- glEndList();
- return table_list;
-}
-
-
-static void
-MakeObjects(GLuint *objects_list)
-{
- GLUquadricObj *q;
-
- static GLfloat cyan[] = { 0.0, 1.0, 1.0, 1.0 };
- static GLfloat green[] = { 0.2, 1.0, 0.2, 1.0 };
- static GLfloat black[] = { 0.0, 0.0, 0.0, 0.0 };
-
- q = gluNewQuadric();
- gluQuadricDrawStyle( q, GLU_FILL );
- gluQuadricNormals( q, GLU_SMOOTH );
-
- objects_list[0] = glGenLists(1);
- glNewList( objects_list[0], GL_COMPILE );
- glMaterialfv( GL_FRONT, GL_AMBIENT_AND_DIFFUSE, cyan );
- glMaterialfv( GL_FRONT, GL_EMISSION, black );
- gluCylinder( q, 0.5, 0.5, 1.0, 15, 1 );
- glEndList();
-
- objects_list[1] = glGenLists(1);
- glNewList( objects_list[1], GL_COMPILE );
- glMaterialfv( GL_FRONT, GL_AMBIENT_AND_DIFFUSE, green );
- glMaterialfv( GL_FRONT, GL_EMISSION, black );
- gluCylinder( q, 1.5, 0.0, 2.5, 15, 1 );
- glEndList();
-
- gluDeleteQuadric(q);
-}
-
-
-static void
-InitWindow(struct window *w)
-{
- GLint imgWidth, imgHeight;
- GLenum imgFormat;
- GLubyte *image = NULL;
-
- w->table_list = MakeTable();
- MakeObjects(w->objects_list);
-
- image = LoadRGBImage( TABLE_TEXTURE, &imgWidth, &imgHeight, &imgFormat );
- if (!image) {
- printf("Couldn't read %s\n", TABLE_TEXTURE);
- exit(0);
- }
-
- gluBuild2DMipmaps(GL_TEXTURE_2D, 3, imgWidth, imgHeight,
- imgFormat, GL_UNSIGNED_BYTE, image);
- free(image);
-
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
-
- glShadeModel( GL_FLAT );
-
- glEnable( GL_LIGHT0 );
- glEnable( GL_LIGHTING );
-
- glClearColor( 0.5, 0.5, 0.9, 0.0 );
-
- glEnable( GL_NORMALIZE );
-}
-
-
-static void
-Reshape(int width, int height)
-{
- struct window *w = CurrentWindow();
- GLfloat yAspect = 2.5;
- GLfloat xAspect = yAspect * (float) width / (float) height;
- w->width = width;
- w->height = height;
- glViewport(0, 0, width, height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum( -xAspect, xAspect, -yAspect, yAspect, 10.0, 30.0 );
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-}
-
-
-static void
-DrawObjects(struct window *w, GLfloat eyex, GLfloat eyey, GLfloat eyez)
-{
- (void) eyex;
- (void) eyey;
- (void) eyez;
-#ifndef USE_ZBUFFER
- if (eyex<0.5) {
-#endif
- glPushMatrix();
- glTranslatef( 1.0, 1.5, 0.0 );
- glRotatef( w->spin, 1.0, 0.5, 0.0 );
- glRotatef( 0.5*w->spin, 0.0, 0.5, 1.0 );
- glCallList( w->objects_list[0] );
- glPopMatrix();
-
- glPushMatrix();
- glTranslatef( -1.0, 0.85+3.0*fabs( cos(0.01*w->spin) ), 0.0 );
- glRotatef( 0.5*w->spin, 0.0, 0.5, 1.0 );
- glRotatef( w->spin, 1.0, 0.5, 0.0 );
- glScalef( 0.5, 0.5, 0.5 );
- glCallList( w->objects_list[1] );
- glPopMatrix();
-#ifndef USE_ZBUFFER
- }
- else {
- glPushMatrix();
- glTranslatef( -1.0, 0.85+3.0*fabs( cos(0.01*w->spin) ), 0.0 );
- glRotatef( 0.5*w->spin, 0.0, 0.5, 1.0 );
- glRotatef( w->spin, 1.0, 0.5, 0.0 );
- glScalef( 0.5, 0.5, 0.5 );
- glCallList( w->objects_list[1] );
- glPopMatrix();
-
- glPushMatrix();
- glTranslatef( 1.0, 1.5, 0.0 );
- glRotatef( w->spin, 1.0, 0.5, 0.0 );
- glRotatef( 0.5*w->spin, 0.0, 0.5, 1.0 );
- glCallList( w->objects_list[0] );
- glPopMatrix();
- }
-#endif
-}
-
-
-static void
-DrawTable(struct window *w)
-{
- glCallList(w->table_list);
-}
-
-
-static void
-DrawWindow(void)
-{
- struct window *w = CurrentWindow();
- static GLfloat light_pos[] = { 0.0, 20.0, 0.0, 1.0 };
- GLfloat dist = 20.0;
- GLfloat eyex, eyey, eyez;
-
- if (w->drawBuffer == GL_NONE) {
- glDrawBuffer(GL_BACK);
- glReadBuffer(GL_BACK);
- }
- else {
- glDrawBuffer(w->drawBuffer);
- glReadBuffer(w->drawBuffer);
- }
-
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
-
- if (w->drawBuffer == GL_NONE) {
- glDrawBuffer(GL_NONE);
- }
-
- eyex = dist * cos(w->yrot * DEG2RAD) * cos(w->xrot * DEG2RAD);
- eyez = dist * sin(w->yrot * DEG2RAD) * cos(w->xrot * DEG2RAD);
- eyey = dist * sin(w->xrot * DEG2RAD);
-
- /* view from top */
- glPushMatrix();
- gluLookAt( eyex, eyey, eyez, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 );
-
- glLightfv( GL_LIGHT0, GL_POSITION, light_pos );
-
- /* draw table into stencil planes */
- glDisable( GL_DEPTH_TEST );
- glEnable( GL_STENCIL_TEST );
- glStencilFunc( GL_ALWAYS, 1, 0xffffffff );
- glStencilOp( GL_REPLACE, GL_REPLACE, GL_REPLACE );
- glColorMask( GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE );
- DrawTable(w);
- glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE );
-
- glEnable( GL_DEPTH_TEST );
-
- /* render view from below (reflected viewport) */
- /* only draw where stencil==1 */
- if (eyey>0.0) {
- glPushMatrix();
-
- glStencilFunc( GL_EQUAL, 1, 0xffffffff ); /* draw if ==1 */
- glStencilOp( GL_KEEP, GL_KEEP, GL_KEEP );
- glScalef( 1.0, -1.0, 1.0 );
-
- /* Reposition light in reflected space. */
- glLightfv(GL_LIGHT0, GL_POSITION, light_pos);
-
- DrawObjects(w, eyex, eyey, eyez);
- glPopMatrix();
-
- /* Restore light's original unreflected position. */
- glLightfv(GL_LIGHT0, GL_POSITION, light_pos);
- }
-
- glDisable( GL_STENCIL_TEST );
-
- glEnable( GL_BLEND );
- glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
-
- glEnable( GL_TEXTURE_2D );
- DrawTable(w);
- glDisable( GL_TEXTURE_2D );
- glDisable( GL_BLEND );
-
- /* view from top */
- glPushMatrix();
-
- DrawObjects(w, eyex, eyey, eyez);
-
- glPopMatrix();
-
- glPopMatrix();
-
- if (w->showBuffer == GL_DEPTH) {
- ShowDepthBuffer(w->width, w->height, 1.0, 0.0);
- }
- else if (w->showBuffer == GL_STENCIL) {
- ShowStencilBuffer(w->width, w->height, 255.0, 0.0);
- }
- else if (w->showBuffer == GL_ALPHA) {
- ShowAlphaBuffer(w->width, w->height);
- }
-
- if (w->drawBuffer == GL_FRONT)
- glFinish();
- else
- glutSwapBuffers();
-
- /* calc/show frame rate */
- {
- static GLint t0 = 0;
- static GLint frames = 0;
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- frames++;
- if (t - t0 >= 5000) {
- GLfloat seconds = (t - t0) / 1000.0;
- GLfloat fps = frames / seconds;
- printf("%d frames in %g seconds = %g FPS\n", frames, seconds, fps);
- fflush(stdout);
- t0 = t;
- frames = 0;
- }
- }
-}
-
-
-static void
-Idle(void)
-{
- double t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- struct window *w;
- for (w = FirstWindow; w; w = w->next) {
- if (w->anim) {
- double dt;
- if (w->t0 < 0.0)
- w->t0 = t;
- dt = t - w->t0;
- w->t0 = t;
- w->spin += 60.0 * dt;
- w->yrot += 90.0 * dt;
- assert(w->id);
- glutSetWindow(w->id);
- glutPostRedisplay();
- }
- }
-}
-
-
-static void
-UpdateIdleFunc(void)
-{
- if (AnyAnimating())
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
-}
-
-static void
-Key(unsigned char key, int x, int y)
-{
- struct window *w = CurrentWindow();
- (void) x;
- (void) y;
-
- switch (key) {
- case 'd':
- w->showBuffer = GL_DEPTH;
- glutPostRedisplay();
- break;
- case 's':
- w->showBuffer = GL_STENCIL;
- glutPostRedisplay();
- break;
- case 'a':
- w->showBuffer = GL_ALPHA;
- glutPostRedisplay();
- break;
- case 'c':
- w->showBuffer = GL_NONE;
- glutPostRedisplay();
- break;
- case 'f':
- if (w->drawBuffer == GL_FRONT)
- w->drawBuffer = GL_BACK;
- else
- w->drawBuffer = GL_FRONT;
- glutPostRedisplay();
- break;
- case '0':
- w->drawBuffer = GL_NONE;
- glutPostRedisplay();
- break;
- case ' ':
- w->anim = !w->anim;
- w->t0 = -1;
- UpdateIdleFunc();
- glutPostRedisplay();
- break;
- case 'n':
- CreateWindow();
- UpdateIdleFunc();
- break;
- case 'k':
- KillWindow(w);
- if (FirstWindow == NULL)
- exit(0);
- break;
- case 27:
- KillAllWindows();
- exit(0);
- break;
- default:
- ;
- }
-}
-
-
-static void
-SpecialKey(int key, int x, int y)
-{
- struct window *w = CurrentWindow();
- (void) x;
- (void) y;
- switch (key) {
- case GLUT_KEY_UP:
- w->xrot += 3.0;
- if (w->xrot > 85)
- w->xrot = 85;
- break;
- case GLUT_KEY_DOWN:
- w->xrot -= 3.0;
- if (w->xrot < 5)
- w->xrot = 5;
- break;
- case GLUT_KEY_LEFT:
- w->yrot += 3.0;
- break;
- case GLUT_KEY_RIGHT:
- w->yrot -= 3.0;
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void
-CreateWindow(void)
-{
- char title[1000];
- struct window *w = (struct window *) calloc(1, sizeof(struct window));
-
- glutInitWindowSize(INIT_WIDTH, INIT_HEIGHT);
- w->id = glutCreateWindow("foo");
- sprintf(title, "reflect window %d", w->id);
- glutSetWindowTitle(title);
- assert(w->id);
- w->width = INIT_WIDTH;
- w->height = INIT_HEIGHT;
- w->anim = GL_TRUE;
- w->xrot = 30.0;
- w->yrot = 50.0;
- w->spin = 0.0;
- w->showBuffer = GL_NONE;
- w->drawBuffer = GL_BACK;
-
- InitWindow(w);
-
- glutReshapeFunc(Reshape);
- glutDisplayFunc(DrawWindow);
- glutKeyboardFunc(Key);
- glutSpecialFunc(SpecialKey);
-
- /* insert at head of list */
- w->next = FirstWindow;
- FirstWindow = w;
-}
-
-
-static void
-Usage(void)
-{
- printf("Keys:\n");
- printf(" a - show alpha buffer\n");
- printf(" d - show depth buffer\n");
- printf(" s - show stencil buffer\n");
- printf(" c - show color buffer\n");
- printf(" f - toggle rendering to front/back color buffer\n");
- printf(" n - create new window\n");
- printf(" k - kill window\n");
- printf(" SPACE - toggle animation\n");
- printf(" ARROWS - rotate scene\n");
-}
-
-
-int
-main(int argc, char *argv[])
-{
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH |
- GLUT_STENCIL | GLUT_ALPHA);
- CreateWindow();
- glutIdleFunc(Idle);
- Usage();
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/renormal.c b/progs/demos/renormal.c
deleted file mode 100644
index 61dd860ddb..0000000000
--- a/progs/demos/renormal.c
+++ /dev/null
@@ -1,136 +0,0 @@
-
-/*
- * Test GL_EXT_rescale_normal extension
- * Brian Paul January 1998 This program is in the public domain.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <GL/glut.h>
-
-
-static GLfloat Phi = 0.0;
-
-
-static void Idle( void )
-{
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
- Phi += 3.0 * dt;
- glutPostRedisplay();
-}
-
-
-static void Display( void )
-{
- GLfloat scale = 0.6 + 0.5 * sin(Phi);
- glClear( GL_COLOR_BUFFER_BIT );
- glPushMatrix();
- glScalef(scale, scale, scale);
- glutSolidSphere(2.0, 20, 20);
- glPopMatrix();
- glutSwapBuffers();
-}
-
-
-static void Reshape( int width, int height )
-{
- glViewport( 0, 0, width, height );
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 );
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
- glTranslatef( 0.0, 0.0, -15.0 );
-}
-
-
-
-static void Init( void )
-{
- static GLfloat mat[4] = { 0.8, 0.8, 0.0, 1.0 };
- static GLfloat pos[4] = { -1.0, 1.0, 1.0, 0.0 };
-
- /* setup lighting, etc */
- glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT0);
- glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, mat);
- glLightfv(GL_LIGHT0, GL_POSITION, pos);
-
- glEnable(GL_CULL_FACE);
-
- glDisable(GL_RESCALE_NORMAL_EXT);
- glDisable(GL_NORMALIZE);
-}
-
-
-#define UNSCALED 1
-#define NORMALIZE 2
-#define RESCALE 3
-#define QUIT 4
-
-
-static void ModeMenu(int entry)
-{
- if (entry==UNSCALED) {
- glDisable(GL_RESCALE_NORMAL_EXT);
- glDisable(GL_NORMALIZE);
- }
- else if (entry==NORMALIZE) {
- glEnable(GL_NORMALIZE);
- glDisable(GL_RESCALE_NORMAL_EXT);
- }
- else if (entry==RESCALE) {
- glDisable(GL_NORMALIZE);
- glEnable(GL_RESCALE_NORMAL_EXT);
- }
- else if (entry==QUIT) {
- exit(0);
- }
- glutPostRedisplay();
-}
-
-static void
-key(unsigned char k, int x, int y)
-{
- (void) x;
- (void) y;
- switch (k) {
- case 27: /* Escape */
- exit(0);
- break;
- default:
- return;
- }
- glutPostRedisplay();
-}
-
-int main( int argc, char *argv[] )
-{
- glutInitWindowSize( 400, 400 );
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
- glutCreateWindow(argv[0]);
-
- Init();
-
- glutIdleFunc( Idle );
- glutReshapeFunc( Reshape );
- glutDisplayFunc( Display );
- glutKeyboardFunc(key);
-
- glutCreateMenu(ModeMenu);
- glutAddMenuEntry("Unscaled", UNSCALED);
- glutAddMenuEntry("Normalize", NORMALIZE);
- glutAddMenuEntry("Rescale EXT", RESCALE);
- glutAddMenuEntry("Quit", QUIT);
- glutAttachMenu(GLUT_RIGHT_BUTTON);
-
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/shadowtex.c b/progs/demos/shadowtex.c
deleted file mode 100644
index 677a42104f..0000000000
--- a/progs/demos/shadowtex.c
+++ /dev/null
@@ -1,1039 +0,0 @@
-/*
- * Shadow demo using the GL_ARB_depth_texture, GL_ARB_shadow and
- * GL_ARB_shadow_ambient extensions.
- *
- * Brian Paul
- * 19 Feb 2001
- *
- * Added GL_EXT_shadow_funcs support on 23 March 2002
- * Added GL_EXT_packed_depth_stencil support on 15 March 2006.
- * Added GL_EXT_framebuffer_object support on 27 March 2006.
- * Removed old SGIX extension support on 5 April 2006.
- * Added vertex / fragment program support on 7 June 2007 (Ian Romanick).
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-#include <GL/glew.h>
-#include <GL/glut.h>
-
-#define DEG_TO_RAD (3.14159 / 180.0)
-
-static GLint WindowWidth = 450, WindowHeight = 300;
-static GLfloat Xrot = 15, Yrot = 0, Zrot = 0;
-
-static GLfloat Red[4] = {1, 0, 0, 1};
-static GLfloat Green[4] = {0, 1, 0, 1};
-static GLfloat Blue[4] = {0, 0, 1, 1};
-static GLfloat Yellow[4] = {1, 1, 0, 1};
-
-static GLfloat LightDist = 10;
-static GLfloat LightLatitude = 45.0;
-static GLfloat LightLongitude = 45.0;
-static GLfloat LightPos[4];
-static GLfloat SpotDir[3];
-static GLfloat SpotAngle = 40.0 * DEG_TO_RAD;
-static GLfloat ShadowNear = 4.0, ShadowFar = 24.0;
-static GLint ShadowTexWidth = 256, ShadowTexHeight = 256;
-
-static GLboolean LinearFilter = GL_FALSE;
-
-static GLfloat Bias = -0.06;
-
-static GLboolean Anim = GL_TRUE;
-
-static GLboolean NeedNewShadowMap = GL_FALSE;
-static GLuint ShadowTexture, GrayTexture;
-static GLuint ShadowFBO;
-
-static GLfloat lightModelview[16];
-static GLfloat lightProjection[16];
-
-static GLuint vert_prog;
-static GLuint frag_progs[3];
-static GLuint curr_frag = 0;
-static GLuint max_frag = 1;
-
-#define NUM_FRAG_MODES 3
-static const char *FragProgNames[] = {
- "fixed-function",
- "program without \"OPTION ARB_fragment_program_shadow\"",
- "program with \"OPTION ARB_fragment_program_shadow\"",
-};
-
-static GLboolean HaveShadow = GL_FALSE;
-static GLboolean HaveFBO = GL_FALSE;
-static GLboolean UseFBO = GL_FALSE;
-static GLboolean HaveVP = GL_FALSE;
-static GLboolean HaveFP = GL_FALSE;
-static GLboolean HaveFP_Shadow = GL_FALSE;
-static GLboolean UseVP = GL_FALSE;
-static GLboolean HavePackedDepthStencil = GL_FALSE;
-static GLboolean UsePackedDepthStencil = GL_FALSE;
-static GLboolean HaveEXTshadowFuncs = GL_FALSE;
-static GLboolean HaveShadowAmbient = GL_FALSE;
-
-static GLint Operator = 0;
-static const GLenum OperatorFunc[8] = {
- GL_LEQUAL, GL_LESS, GL_GEQUAL, GL_GREATER,
- GL_EQUAL, GL_NOTEQUAL, GL_ALWAYS, GL_NEVER };
-static const char *OperatorName[8] = {
- "GL_LEQUAL", "GL_LESS", "GL_GEQUAL", "GL_GREATER",
- "GL_EQUAL", "GL_NOTEQUAL", "GL_ALWAYS", "GL_NEVER" };
-
-
-static GLuint DisplayMode;
-#define SHOW_SHADOWS 0
-#define SHOW_DEPTH_IMAGE 1
-#define SHOW_DEPTH_MAPPING 2
-#define SHOW_DISTANCE 3
-
-
-
-#define MAT4_MUL(dest_vec, src_mat, src_vec) \
- "DP4 " dest_vec ".x, " src_mat "[0], " src_vec ";\n" \
- "DP4 " dest_vec ".y, " src_mat "[1], " src_vec ";\n" \
- "DP4 " dest_vec ".z, " src_mat "[2], " src_vec ";\n" \
- "DP4 " dest_vec ".w, " src_mat "[3], " src_vec ";\n"
-
-#define MAT3_MUL(dest_vec, src_mat, src_vec) \
- "DP3 " dest_vec ".x, " src_mat "[0], " src_vec ";\n" \
- "DP3 " dest_vec ".y, " src_mat "[1], " src_vec ";\n" \
- "DP3 " dest_vec ".z, " src_mat "[2], " src_vec ";\n"
-
-#define NORMALIZE(dest, src) \
- "DP3 " dest ".w, " src ", " src ";\n" \
- "RSQ " dest ".w, " dest ".w;\n" \
- "MUL " dest ", " src ", " dest ".w;\n"
-
-/**
- * Vertex program for shadow mapping.
- */
-static const char vert_code[] =
- "!!ARBvp1.0\n"
- "ATTRIB iPos = vertex.position;\n"
- "ATTRIB iNorm = vertex.normal;\n"
-
- "PARAM mvinv[4] = { state.matrix.modelview.invtrans };\n"
- "PARAM mvp[4] = { state.matrix.mvp };\n"
- "PARAM mv[4] = { state.matrix.modelview };\n"
- "PARAM texmat[4] = { state.matrix.texture[0] };\n"
- "PARAM lightPos = state.light[0].position;\n"
- "PARAM ambientCol = state.lightprod[0].ambient;\n"
- "PARAM diffuseCol = state.lightprod[0].diffuse;\n"
-
- "TEMP n, lightVec;\n"
- "ALIAS V = lightVec;\n"
- "ALIAS NdotL = n;\n"
-
- "OUTPUT oPos = result.position;\n"
- "OUTPUT oColor = result.color;\n"
- "OUTPUT oTex = result.texcoord[0];\n"
-
- /* Transform the vertex to clip coordinates. */
- MAT4_MUL("oPos", "mvp", "iPos")
-
- /* Transform the vertex to eye coordinates. */
- MAT4_MUL("V", "mv", "iPos")
-
- /* Transform the vertex to projected light coordinates. */
- MAT4_MUL("oTex", "texmat", "iPos")
-
- /* Transform the normal to eye coordinates. */
- MAT3_MUL("n", "mvinv", "iNorm")
-
- /* Calculate the vector from the vertex to the light in eye
- * coordinates.
- */
- "SUB lightVec, lightPos, V;\n"
- NORMALIZE("lightVec", "lightVec")
-
- /* Compute diffuse lighting coefficient.
- */
- "DP3 NdotL.x, n, lightVec;\n"
- "MAX NdotL.x, NdotL.x, {0.0};\n"
- "MIN NdotL.x, NdotL.x, {1.0};\n"
-
- /* Accumulate color contributions.
- */
- "MOV oColor, diffuseCol;\n"
- "MAD oColor.xyz, NdotL.x, diffuseCol, ambientCol;\n"
- "END\n"
- ;
-
-static const char frag_code[] =
- "!!ARBfp1.0\n"
-
- "TEMP shadow, temp;\n"
-
- "TXP shadow, fragment.texcoord[0], texture[0], 2D;\n"
- "RCP temp.x, fragment.texcoord[0].w;\n"
- "MUL temp.x, temp.x, fragment.texcoord[0].z;\n"
- "SGE shadow, shadow.x, temp.x;\n"
- "MUL result.color.rgb, fragment.color, shadow.x;\n"
- "MOV result.color.a, fragment.color;\n"
- "END\n"
- ;
-
-static const char frag_shadow_code[] =
- "!!ARBfp1.0\n"
- "OPTION ARB_fragment_program_shadow;\n"
-
- "TEMP shadow;\n"
-
- "TXP shadow, fragment.texcoord[0], texture[0], SHADOW2D;\n"
- "MUL result.color.rgb, fragment.color, shadow.x;\n"
- "MOV result.color.a, fragment.color.a;\n"
- "END\n"
- ;
-
-static void
-DrawScene(void)
-{
- GLfloat k = 6;
-
- /* sphere */
- glPushMatrix();
- glTranslatef(1.6, 2.2, 2.7);
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, Green);
- glColor4fv(Green);
- glutSolidSphere(1.5, 15, 15);
- glPopMatrix();
- /* dodecahedron */
- glPushMatrix();
- glTranslatef(-2.0, 1.2, 2.1);
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, Red);
- glColor4fv(Red);
- glutSolidDodecahedron();
- glPopMatrix();
- /* icosahedron */
- glPushMatrix();
- glTranslatef(-0.6, 1.3, -0.5);
- glScalef(1.5, 1.5, 1.5);
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, Yellow);
- glColor4fv(Red);
- glutSolidIcosahedron();
- glPopMatrix();
- /* a plane */
- glPushMatrix();
- glTranslatef(0, -1.1, 0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, Blue);
- glColor4fv(Blue);
- glNormal3f(0, 1, 0);
- glBegin(GL_POLYGON);
- glVertex3f(-k, 0, -k);
- glVertex3f( k, 0, -k);
- glVertex3f( k, 0, k);
- glVertex3f(-k, 0, k);
- glEnd();
- glPopMatrix();
-}
-
-
-/**
- * Calculate modelview and project matrices for the light
- *
- * Stores the results in \c lightProjection (projection matrix) and
- * \c lightModelview (modelview matrix).
- */
-static void
-MakeShadowMatrix(const GLfloat lightPos[4], const GLfloat spotDir[3],
- GLfloat spotAngle, GLfloat shadowNear, GLfloat shadowFar)
-{
- /* compute frustum to enclose spot light cone */
- const GLfloat d = shadowNear * tan(spotAngle);
-
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
- glFrustum(-d, d, -d, d, shadowNear, shadowFar);
- glGetFloatv(GL_PROJECTION_MATRIX, lightProjection);
- glPopMatrix();
-
- glMatrixMode(GL_MODELVIEW);
- glPushMatrix();
- glLoadIdentity();
- gluLookAt(lightPos[0], lightPos[1], lightPos[2],
- lightPos[0] + spotDir[0],
- lightPos[1] + spotDir[1],
- lightPos[2] + spotDir[2],
- 0.0, 1.0, 0.0);
- glGetFloatv(GL_MODELVIEW_MATRIX, lightModelview);
- glPopMatrix();
-}
-
-
-/**
- * Load \c GL_TEXTURE matrix with light's MVP matrix.
- */
-static void SetShadowTextureMatrix(void)
-{
- static const GLfloat biasMatrix[16] = {
- 0.5, 0.0, 0.0, 0.0,
- 0.0, 0.5, 0.0, 0.0,
- 0.0, 0.0, 0.5, 0.0,
- 0.5, 0.5, 0.5, 1.0,
- };
-
- glMatrixMode(GL_TEXTURE);
- glLoadMatrixf(biasMatrix);
- glTranslatef(0.0, 0.0, Bias);
- glMultMatrixf(lightProjection);
- glMultMatrixf(lightModelview);
- glMatrixMode(GL_MODELVIEW);
-}
-
-
-static void
-EnableIdentityTexgen(void)
-{
- /* texgen so that texcoord = vertex coord */
- static GLfloat sPlane[4] = { 1, 0, 0, 0 };
- static GLfloat tPlane[4] = { 0, 1, 0, 0 };
- static GLfloat rPlane[4] = { 0, 0, 1, 0 };
- static GLfloat qPlane[4] = { 0, 0, 0, 1 };
-
- glTexGenfv(GL_S, GL_EYE_PLANE, sPlane);
- glTexGenfv(GL_T, GL_EYE_PLANE, tPlane);
- glTexGenfv(GL_R, GL_EYE_PLANE, rPlane);
- glTexGenfv(GL_Q, GL_EYE_PLANE, qPlane);
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
- glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
- glTexGeni(GL_Q, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
-
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glEnable(GL_TEXTURE_GEN_R);
- glEnable(GL_TEXTURE_GEN_Q);
-}
-
-
-/*
- * Setup 1-D texgen so that the distance from the light source, between
- * the near and far planes maps to s=0 and s=1. When we draw the scene,
- * the grayness will indicate the fragment's distance from the light
- * source.
- */
-static void
-EnableDistanceTexgen(const GLfloat lightPos[4], const GLfloat lightDir[3],
- GLfloat lightNear, GLfloat lightFar)
-{
- GLfloat m, d;
- GLfloat sPlane[4];
- GLfloat nearPoint[3];
-
- m = sqrt(lightDir[0] * lightDir[0] +
- lightDir[1] * lightDir[1] +
- lightDir[2] * lightDir[2]);
-
- d = lightFar - lightNear;
-
- /* nearPoint = point on light direction vector which intersects the
- * near plane of the light frustum.
- */
- nearPoint[0] = lightPos[0] + lightDir[0] / m * lightNear;
- nearPoint[1] = lightPos[1] + lightDir[1] / m * lightNear;
- nearPoint[2] = lightPos[2] + lightDir[2] / m * lightNear;
-
- sPlane[0] = lightDir[0] / d / m;
- sPlane[1] = lightDir[1] / d / m;
- sPlane[2] = lightDir[2] / d / m;
- sPlane[3] = -(sPlane[0] * nearPoint[0]
- + sPlane[1] * nearPoint[1]
- + sPlane[2] * nearPoint[2]);
-
- glTexGenfv(GL_S, GL_EYE_PLANE, sPlane);
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_EYE_LINEAR);
- glEnable(GL_TEXTURE_GEN_S);
-}
-
-
-static void
-DisableTexgen(void)
-{
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- glDisable(GL_TEXTURE_GEN_R);
- glDisable(GL_TEXTURE_GEN_Q);
-}
-
-
-static void
-ComputeLightPos(GLfloat dist, GLfloat latitude, GLfloat longitude,
- GLfloat pos[4], GLfloat dir[3])
-{
-
- pos[0] = dist * sin(longitude * DEG_TO_RAD);
- pos[1] = dist * sin(latitude * DEG_TO_RAD);
- pos[2] = dist * cos(latitude * DEG_TO_RAD) * cos(longitude * DEG_TO_RAD);
- pos[3] = 1;
- dir[0] = -pos[0];
- dir[1] = -pos[1];
- dir[2] = -pos[2];
-}
-
-
-/**
- * Render the shadow map / depth texture.
- * The result will be in the texture object named ShadowTexture.
- */
-static void
-RenderShadowMap(void)
-{
- GLenum depthFormat; /* GL_DEPTH_COMPONENT or GL_DEPTH_STENCIL_EXT */
- GLenum depthType; /* GL_UNSIGNED_INT_24_8_EXT or GL_UNSIGNED_INT */
-
- if (WindowWidth >= 1024 && WindowHeight >= 1024) {
- ShadowTexWidth = ShadowTexHeight = 1024;
- }
- else if (WindowWidth >= 512 && WindowHeight >= 512) {
- ShadowTexWidth = ShadowTexHeight = 512;
- }
- else if (WindowWidth >= 256 && WindowHeight >= 256) {
- ShadowTexWidth = ShadowTexHeight = 256;
- }
- else {
- ShadowTexWidth = ShadowTexHeight = 128;
- }
- printf("Rendering %d x %d depth texture\n", ShadowTexWidth, ShadowTexHeight);
-
- if (UsePackedDepthStencil) {
- depthFormat = GL_DEPTH_STENCIL_EXT;
- depthType = GL_UNSIGNED_INT_24_8_EXT;
- }
- else {
- depthFormat = GL_DEPTH_COMPONENT;
- depthType = GL_UNSIGNED_INT;
- }
-
- glMatrixMode(GL_PROJECTION);
- glLoadMatrixf(lightProjection);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadMatrixf(lightModelview);
-
- if (UseFBO) {
- GLenum fbo_status;
-
- glTexImage2D(GL_TEXTURE_2D, 0, depthFormat,
- ShadowTexWidth, ShadowTexHeight, 0,
- depthFormat, depthType, NULL);
-
- /* Set the filter mode so that the texture is texture-complete.
- * Otherwise it will cause the framebuffer to fail the framebuffer
- * completeness test.
- */
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, ShadowFBO);
- glDrawBuffer(GL_NONE);
- glReadBuffer(GL_NONE);
-
- fbo_status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
- if (fbo_status != GL_FRAMEBUFFER_COMPLETE_EXT) {
- fprintf(stderr, "FBO not complete! status = 0x%04x\n", fbo_status);
- assert(fbo_status == GL_FRAMEBUFFER_COMPLETE_EXT);
- }
- }
-
- assert(!glIsEnabled(GL_TEXTURE_1D));
- assert(!glIsEnabled(GL_TEXTURE_2D));
-
- glViewport(0, 0, ShadowTexWidth, ShadowTexHeight);
- glClear(GL_DEPTH_BUFFER_BIT);
- glEnable(GL_DEPTH_TEST);
- DrawScene();
-
- if (UseFBO) {
- /* all done! */
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
- }
- else {
- /*
- * copy depth buffer into the texture map
- */
- if (DisplayMode == SHOW_DEPTH_MAPPING) {
- /* load depth image as gray-scale luminance texture */
- GLuint *depth = (GLuint *)
- malloc(ShadowTexWidth * ShadowTexHeight * sizeof(GLuint));
- assert(depth);
- glReadPixels(0, 0, ShadowTexWidth, ShadowTexHeight,
- depthFormat, depthType, depth);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE,
- ShadowTexWidth, ShadowTexHeight, 0,
- GL_LUMINANCE, GL_UNSIGNED_INT, depth);
- free(depth);
- }
- else {
- /* The normal shadow case - a real depth texture */
- glCopyTexImage2D(GL_TEXTURE_2D, 0, depthFormat,
- 0, 0, ShadowTexWidth, ShadowTexHeight, 0);
- if (UsePackedDepthStencil) {
- /* debug check */
- GLint intFormat;
- glGetTexLevelParameteriv(GL_TEXTURE_2D, 0,
- GL_TEXTURE_INTERNAL_FORMAT, &intFormat);
- assert(intFormat == GL_DEPTH_STENCIL_EXT);
- }
- }
- }
-}
-
-
-/**
- * Show the shadow map as a grayscale image.
- */
-static void
-ShowShadowMap(void)
-{
- glClear(GL_COLOR_BUFFER_BIT);
-
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(0, WindowWidth, 0, WindowHeight, -1, 1);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_LIGHTING);
-
- glEnable(GL_TEXTURE_2D);
-
- DisableTexgen();
-
- /* interpret texture's depth values as luminance values */
- if (HaveShadow) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_NONE);
- }
-
- glTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE_ARB, GL_LUMINANCE);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-
- glBegin(GL_POLYGON);
- glTexCoord2f(0, 0); glVertex2f(0, 0);
- glTexCoord2f(1, 0); glVertex2f(ShadowTexWidth, 0);
- glTexCoord2f(1, 1); glVertex2f(ShadowTexWidth, ShadowTexHeight);
- glTexCoord2f(0, 1); glVertex2f(0, ShadowTexHeight);
- glEnd();
-
- glDisable(GL_TEXTURE_2D);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_LIGHTING);
-}
-
-
-/**
- * Redraw window image
- */
-static void
-Display(void)
-{
- GLenum error;
-
- ComputeLightPos(LightDist, LightLatitude, LightLongitude,
- LightPos, SpotDir);
-
- if (NeedNewShadowMap) {
- MakeShadowMatrix(LightPos, SpotDir, SpotAngle, ShadowNear, ShadowFar);
- RenderShadowMap();
- NeedNewShadowMap = GL_FALSE;
- }
-
- glViewport(0, 0, WindowWidth, WindowHeight);
- if (DisplayMode == SHOW_DEPTH_IMAGE) {
- ShowShadowMap();
- }
- else {
- /* prepare to draw scene from camera's view */
- const GLfloat ar = (GLfloat) WindowWidth / (GLfloat) WindowHeight;
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-ar, ar, -1.0, 1.0, 4.0, 50.0);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.0, 0.0, -22.0);
- glRotatef(Xrot, 1, 0, 0);
- glRotatef(Yrot, 0, 1, 0);
- glRotatef(Zrot, 0, 0, 1);
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glLightfv(GL_LIGHT0, GL_POSITION, LightPos);
-
- if (LinearFilter) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- }
- else {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- }
-
- if (DisplayMode == SHOW_DEPTH_MAPPING) {
- if (HaveShadow) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB, GL_NONE);
- }
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
- glEnable(GL_TEXTURE_2D);
-
- SetShadowTextureMatrix();
- EnableIdentityTexgen();
- }
- else if (DisplayMode == SHOW_DISTANCE) {
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
- EnableDistanceTexgen(LightPos, SpotDir, ShadowNear+Bias, ShadowFar);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
- glEnable(GL_TEXTURE_1D);
- assert(!glIsEnabled(GL_TEXTURE_2D));
- }
- else {
- assert(DisplayMode == SHOW_SHADOWS);
- if (HaveShadow) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB,
- GL_COMPARE_R_TO_TEXTURE_ARB);
- }
-
- if (curr_frag > 0) {
- glEnable(GL_FRAGMENT_PROGRAM_ARB);
- }
- else {
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
- }
- glEnable(GL_TEXTURE_2D);
-
- SetShadowTextureMatrix();
-
- if (UseVP) {
- glEnable(GL_VERTEX_PROGRAM_ARB);
- }
- else {
- glEnable(GL_LIGHTING);
- EnableIdentityTexgen();
- }
- }
-
- DrawScene();
-
- if (UseVP) {
- glDisable(GL_VERTEX_PROGRAM_ARB);
- }
- else {
- DisableTexgen();
- glDisable(GL_LIGHTING);
- }
-
- if (curr_frag > 0) {
- glDisable(GL_FRAGMENT_PROGRAM_ARB);
- }
-
- glDisable(GL_TEXTURE_1D);
- glDisable(GL_TEXTURE_2D);
- }
-
- glutSwapBuffers();
-
- error = glGetError();
- if (error) {
- printf("GL Error: %s\n", (char *) gluErrorString(error));
- }
-}
-
-
-static void
-Reshape(int width, int height)
-{
- WindowWidth = width;
- WindowHeight = height;
- NeedNewShadowMap = GL_TRUE;
-}
-
-
-static void
-Idle(void)
-{
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
- Yrot += 75.0 * dt;
- /*LightLongitude -= 5.0;*/
- glutPostRedisplay();
-}
-
-
-static void
-Key(unsigned char key, int x, int y)
-{
- const GLfloat step = 3.0;
- (void) x;
- (void) y;
- switch (key) {
- case 'a':
- Anim = !Anim;
- if (Anim)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- break;
- case 'b':
- Bias -= 0.01;
- printf("Bias %g\n", Bias);
- break;
- case 'B':
- Bias += 0.01;
- printf("Bias %g\n", Bias);
- break;
- case 'd':
- DisplayMode = SHOW_DISTANCE;
- break;
- case 'f':
- LinearFilter = !LinearFilter;
- printf("%s filtering\n", LinearFilter ? "Bilinear" : "Nearest");
- break;
- case 'i':
- DisplayMode = SHOW_DEPTH_IMAGE;
- break;
- case 'm':
- DisplayMode = SHOW_DEPTH_MAPPING;
- break;
- case 'M':
- curr_frag = (1 + curr_frag) % max_frag;
- if (!HaveShadow && (curr_frag == 0)) {
- curr_frag = 1;
- }
-
- printf("Using fragment %s\n", FragProgNames[curr_frag]);
-
- if (HaveFP) {
- glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, frag_progs[curr_frag]);
- }
- break;
- case 'n':
- case 's':
- case ' ':
- DisplayMode = SHOW_SHADOWS;
- break;
- case 'o':
- if (HaveEXTshadowFuncs) {
- Operator++;
- if (Operator >= 8)
- Operator = 0;
- printf("Operator: %s\n", OperatorName[Operator]);
- if (HaveShadow) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB,
- OperatorFunc[Operator]);
- }
- }
- break;
- case 'p':
- UsePackedDepthStencil = !UsePackedDepthStencil;
- if (UsePackedDepthStencil && !HavePackedDepthStencil) {
- printf("Sorry, GL_EXT_packed_depth_stencil not supported\n");
- UsePackedDepthStencil = GL_FALSE;
- }
- else {
- printf("Use GL_DEPTH_STENCIL_EXT: %d\n", UsePackedDepthStencil);
- /* Don't really need to regenerate shadow map texture, but do so
- * to exercise more code more often.
- */
- NeedNewShadowMap = GL_TRUE;
- }
- break;
- case 'v':
- UseVP = !UseVP && HaveVP;
- printf("Using vertex %s mode.\n",
- UseVP ? "program" : "fixed-function");
- break;
- case 'z':
- Zrot -= step;
- break;
- case 'Z':
- Zrot += step;
- break;
- case 27:
- exit(0);
- break;
- }
- fflush(stdout);
- glutPostRedisplay();
-}
-
-
-static void
-SpecialKey(int key, int x, int y)
-{
- const GLfloat step = 3.0;
- const int mod = glutGetModifiers();
- (void) x;
- (void) y;
- switch (key) {
- case GLUT_KEY_UP:
- if (mod)
- LightLatitude += step;
- else
- Xrot += step;
- break;
- case GLUT_KEY_DOWN:
- if (mod)
- LightLatitude -= step;
- else
- Xrot -= step;
- break;
- case GLUT_KEY_LEFT:
- if (mod)
- LightLongitude += step;
- else
- Yrot += step;
- break;
- case GLUT_KEY_RIGHT:
- if (mod)
- LightLongitude -= step;
- else
- Yrot -= step;
- break;
- }
- if (mod)
- NeedNewShadowMap = GL_TRUE;
-
- glutPostRedisplay();
-}
-
-
-/* A helper for finding errors in program strings */
-static int FindLine( const char *program, int position )
-{
- int i, line = 1;
- for (i = 0; i < position; i++) {
- if (program[i] == '\n')
- line++;
- }
- return line;
-}
-
-
-static GLuint
-compile_program(GLenum target, const char *code)
-{
- GLuint p;
- GLint errorPos;
-
-
- glGenProgramsARB(1, & p);
-
- glBindProgramARB(target, p);
- glProgramStringARB(target, GL_PROGRAM_FORMAT_ASCII_ARB,
- strlen(code), code);
- glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &errorPos);
- if (glGetError() != GL_NO_ERROR || errorPos != -1) {
- int l = FindLine(code, errorPos);
- printf("Fragment Program Error (pos=%d line=%d): %s\n", errorPos, l,
- (char *) glGetString(GL_PROGRAM_ERROR_STRING_ARB));
- exit(0);
- }
-
- glBindProgramARB(target, 0);
- return p;
-}
-
-static void
-Init(void)
-{
- static const GLfloat borderColor[4] = {1.0, 0.0, 0.0, 0.0};
-
- if (!glutExtensionSupported("GL_ARB_depth_texture")) {
- printf("Sorry, this demo requires the GL_ARB_depth_texture extension\n");
- exit(1);
- }
-
- HaveShadow = glutExtensionSupported("GL_ARB_shadow");
- HaveVP = glutExtensionSupported("GL_ARB_vertex_program");
- HaveFP = glutExtensionSupported("GL_ARB_fragment_program");
- HaveFP_Shadow = glutExtensionSupported("GL_ARB_fragment_program_shadow");
-
- if (!HaveShadow && !HaveFP) {
- printf("Sorry, this demo requires either the GL_ARB_shadow extension "
- "or the GL_ARB_fragment_program extension\n");
- exit(1);
- }
-
- printf("Using GL_ARB_depth_texture\n");
- if (HaveShadow) {
- printf("and GL_ARB_shadow\n");
- }
-
- if (HaveFP) {
- printf("and GL_ARB_fragment_program\n");
- }
-
- HaveShadowAmbient = glutExtensionSupported("GL_ARB_shadow_ambient");
- if (HaveShadowAmbient) {
- printf("and GL_ARB_shadow_ambient\n");
- }
-
- HaveEXTshadowFuncs = glutExtensionSupported("GL_EXT_shadow_funcs");
-
- HavePackedDepthStencil = glutExtensionSupported("GL_EXT_packed_depth_stencil");
- UsePackedDepthStencil = HavePackedDepthStencil;
-
-#if defined(GL_EXT_framebuffer_object)
- HaveFBO = glutExtensionSupported("GL_EXT_framebuffer_object");
- UseFBO = HaveFBO;
- if (UseFBO) {
- printf("Using GL_EXT_framebuffer_object\n");
- }
-#endif
-
- /*
- * Set up the 2D shadow map texture
- */
- glGenTextures(1, &ShadowTexture);
- glBindTexture(GL_TEXTURE_2D, ShadowTexture);
- glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, borderColor);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
-
- if (HaveShadow) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE_ARB,
- GL_COMPARE_R_TO_TEXTURE_ARB);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC_ARB, GL_LEQUAL);
- }
-
- if (HaveShadowAmbient) {
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FAIL_VALUE_ARB, 0.3);
- }
-
-#if defined(GL_EXT_framebuffer_object)
- if (UseFBO) {
- glGenFramebuffersEXT(1, &ShadowFBO);
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, ShadowFBO);
- glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,
- GL_COLOR_ATTACHMENT0_EXT,
- GL_RENDERBUFFER_EXT, 0);
- glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
- GL_TEXTURE_2D, ShadowTexture, 0);
-
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
- }
-#endif
-
- /*
- * Setup 1-D grayscale texture image for SHOW_DISTANCE mode
- */
- glGenTextures(1, &GrayTexture);
- glBindTexture(GL_TEXTURE_1D, GrayTexture);
- glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_CLAMP);
- glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- {
- GLuint i;
- GLubyte image[256];
- for (i = 0; i < 256; i++)
- image[i] = i;
- glTexImage1D(GL_TEXTURE_1D, 0, GL_LUMINANCE,
- 256, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, image);
- }
-
- if (HaveVP) {
- vert_prog = compile_program(GL_VERTEX_PROGRAM_ARB, vert_code);
- glBindProgramARB(GL_VERTEX_PROGRAM_ARB, vert_prog);
- }
-
- max_frag = 1;
- frag_progs[0] = 0;
-
- if (HaveFP) {
- frag_progs[1] = compile_program(GL_FRAGMENT_PROGRAM_ARB, frag_code);
- max_frag = 2;
- }
-
- if (HaveFP && HaveFP_Shadow) {
- frag_progs[2] = compile_program(GL_FRAGMENT_PROGRAM_ARB,
- frag_shadow_code);
- max_frag = 3;
- }
-
- if (!HaveShadow) {
- curr_frag = 1;
- glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, frag_progs[curr_frag]);
- }
-
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT0);
-}
-
-
-static void
-PrintHelp(void)
-{
- printf("Keys:\n");
- printf(" a = toggle animation\n");
- printf(" i = show depth texture image\n");
- printf(" m = show depth texture mapping\n");
- printf(" d = show fragment distance from light source\n");
- printf(" n = show normal, shadowed image\n");
- printf(" f = toggle nearest/bilinear texture filtering\n");
- printf(" b/B = decrease/increase shadow map Z bias\n");
- printf(" p = toggle use of packed depth/stencil\n");
- printf(" M = cycle through fragment program modes\n");
- printf(" v = toggle vertex program modes\n");
- printf(" cursor keys = rotate scene\n");
- printf(" <shift> + cursor keys = rotate light source\n");
- if (HaveEXTshadowFuncs)
- printf(" o = cycle through comparison modes\n");
- fflush(stdout);
-}
-
-
-int
-main(int argc, char *argv[])
-{
- glutInitWindowSize(WindowWidth, WindowHeight);
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_STENCIL);
- glutCreateWindow(argv[0]);
- glewInit();
- glutReshapeFunc(Reshape);
- glutKeyboardFunc(Key);
- glutSpecialFunc(SpecialKey);
- glutDisplayFunc(Display);
- if (Anim)
- glutIdleFunc(Idle);
- Init();
- PrintHelp();
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/singlebuffer.c b/progs/demos/singlebuffer.c
deleted file mode 100644
index 9899c245b2..0000000000
--- a/progs/demos/singlebuffer.c
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * Demo of (nearly) flicker-free drawing with a single color buffer.
- *
- * Basically, draw the scene into the Z buffer first, then draw the
- * scene into the color buffer. Finally, "clear" the background by
- * setting the fragments we didn't hit earlier.
- *
- * This won't work if you need blending. The technique works best
- * when the scene is relatively simple and can be rendered quickly
- * (i.e. with hardware), and when the objects don't move too much from
- * one frame to the next.
- *
- * Brian Paul
- * 25 August 2005
- *
- * See Mesa license for terms.
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <GL/glut.h>
-
-
-#define FLICKER 0
-#define NO_FLICKER 1
-
-static GLint Mode = NO_FLICKER;
-static GLfloat Xrot = 0, Yrot = 0, Zrot = 0;
-static GLboolean Anim = GL_TRUE;
-static GLfloat ClearColor[4] = {0.2, 0.2, 0.9, 0.0};
-static GLfloat NearClip = 5.0, FarClip = 25.0, ViewDist = 7.0;
-static double PrevTime = -1;
-
-struct box {
- float tx, ty, tz;
- float rx, ry, rz, ra;
- float sx, sy, sz;
- float color[4];
-};
-
-#define NUM_BOXES 25
-
-struct box Boxes[NUM_BOXES];
-
-
-/* Return random float in [0,1] */
-static float
-Random(void)
-{
- int i = rand();
- return (float) (i % 1000) / 1000.0;
-}
-
-
-static void
-MakeBoxes(void)
-{
- int i;
- for (i = 0; i < NUM_BOXES; i++) {
- Boxes[i].tx = -1.0 + 2.0 * Random();
- Boxes[i].ty = -1.0 + 2.0 * Random();
- Boxes[i].tz = -1.0 + 2.0 * Random();
- Boxes[i].sx = 0.1 + Random() * 0.4;
- Boxes[i].sy = 0.1 + Random() * 0.4;
- Boxes[i].sz = 0.1 + Random() * 0.4;
- Boxes[i].rx = Random();
- Boxes[i].ry = Random();
- Boxes[i].rz = Random();
- Boxes[i].ra = Random() * 360.0;
- Boxes[i].color[0] = Random();
- Boxes[i].color[1] = Random();
- Boxes[i].color[2] = Random();
- Boxes[i].color[3] = 1.0;
- }
-}
-
-
-static void
-DrawBoxes(void)
-{
- int i;
- for (i = 0; i < NUM_BOXES; i++) {
- glPushMatrix();
- glTranslatef(Boxes[i].tx, Boxes[i].ty, Boxes[i].tz);
- glRotatef(Boxes[i].ra, Boxes[i].rx, Boxes[i].ry, Boxes[i].rz);
- glScalef(Boxes[i].sx, Boxes[i].sy, Boxes[i].sz);
- glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, Boxes[i].color);
- glutSolidCube(1.0);
- glPopMatrix();
- }
-}
-
-
-static void
-Idle(void)
-{
- double dt, t = glutGet(GLUT_ELAPSED_TIME) * 0.001;
- if (PrevTime < 0.0)
- PrevTime = t;
- dt = t - PrevTime;
- PrevTime = t;
- Xrot += 16.0 * dt;
- Yrot += 12.0 * dt;
- Zrot += 8.0 * dt;
- glutPostRedisplay();
-}
-
-
-static void
-Draw(void)
-{
- if (Mode == FLICKER) {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- }
- else {
- /* don't clear color buffer */
- glClear(GL_DEPTH_BUFFER_BIT);
- /* update Z buffer only */
- glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
- }
-
- glPushMatrix();
- glRotatef(Xrot, 1, 0, 0);
- glRotatef(Yrot, 0, 1, 0);
- glRotatef(Zrot, 0, 0, 1);
-
- DrawBoxes();
-
- if (Mode == NO_FLICKER) {
- /* update color buffer now */
- glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
- glDepthFunc(GL_EQUAL);
- DrawBoxes();
- glDepthFunc(GL_LESS);
- }
-
- glPopMatrix();
-
- if (Mode == NO_FLICKER) {
- /* "clear" the untouched pixels now.
- * Note: if you comment-out this code you'll see something interesting.
- */
- GLfloat x = FarClip / NearClip;
- GLfloat z = -(FarClip - ViewDist - 1.0);
- glDisable(GL_LIGHTING);
- glColor4fv(ClearColor);
- glBegin(GL_POLYGON);
- glVertex3f(-x, -x, z);
- glVertex3f( x, -x, z);
- glVertex3f( x, x, z);
- glVertex3f(-x, x, z);
- glEnd();
- glEnable(GL_LIGHTING);
- }
-
- /* This is where you'd normally do SwapBuffers */
- glFinish();
-}
-
-
-static void
-Reshape(int width, int height)
-{
- glViewport(0, 0, width, height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-1.0, 1.0, -1.0, 1.0, NearClip, FarClip);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.0, 0.0, -ViewDist);
-}
-
-
-static void
-Key(unsigned char key, int x, int y)
-{
- (void) x;
- (void) y;
- switch (key) {
- case 'a':
- Anim = !Anim;
- if (Anim)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- PrevTime = -1;
- break;
- case 'm':
- Mode = !Mode;
- break;
- case 'b':
- MakeBoxes();
- break;
- case 27:
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void
-SpecialKey(int key, int x, int y)
-{
- const GLfloat step = 3.0;
- (void) x;
- (void) y;
- switch (key) {
- case GLUT_KEY_UP:
- Xrot -= step;
- break;
- case GLUT_KEY_DOWN:
- Xrot += step;
- break;
- case GLUT_KEY_LEFT:
- Yrot -= step;
- break;
- case GLUT_KEY_RIGHT:
- Yrot += step;
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void
-Init(void)
-{
- glClearColor(ClearColor[0], ClearColor[1], ClearColor[2], ClearColor[3]);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT0);
- glEnable(GL_CULL_FACE);
- glEnable(GL_NORMALIZE);
- MakeBoxes();
-}
-
-
-static void
-Usage(void)
-{
- printf("Keys:\n");
- printf(" m - toggle drawing mode (flicker vs. no flicker)\n");
- printf(" a - toggle animation\n");
- printf(" b - generate new boxes\n");
- printf(" ARROWS - rotate scene\n");
- printf(" ESC - exit\n");
-}
-
-
-int
-main(int argc, char *argv[])
-{
- glutInit(&argc, argv);
- glutInitWindowSize(800, 800);
- glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH);
- glutCreateWindow(argv[0]);
- glutReshapeFunc(Reshape);
- glutKeyboardFunc(Key);
- glutSpecialFunc(SpecialKey);
- glutDisplayFunc(Draw);
- if (Anim)
- glutIdleFunc(Idle);
- Init();
- Usage();
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/spectex.c b/progs/demos/spectex.c
deleted file mode 100644
index c1dada9d63..0000000000
--- a/progs/demos/spectex.c
+++ /dev/null
@@ -1,268 +0,0 @@
-
-/*
- * GLUT demonstration of texturing with specular highlights.
- *
- * When drawing a lit, textured surface one usually wants the specular
- * highlight to override the texture colors. However, OpenGL applies
- * texturing after lighting so the specular highlight is modulated by
- * the texture.
- *
- * The solution here shown here is a two-pass algorithm:
- * 1. Draw the textured surface without specular lighting.
- * 2. Enable blending to add the next pass:
- * 3. Redraw the surface with a matte white material and only the
- * specular components of light sources enabled.
- *
- * Brian Paul February 1997
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <GL/glut.h>
-
-
-static GLUquadricObj *Quadric;
-static GLuint Sphere;
-static GLfloat LightPos[4] = {10.0, 10.0, 10.0, 1.0};
-static GLfloat Delta = 20.0;
-static GLint Mode = 4;
-
-/*static GLfloat Blue[4] = {0.0, 0.0, 1.0, 1.0};*/
-/*static GLfloat Gray[4] = {0.5, 0.5, 0.5, 1.0};*/
-static GLfloat Black[4] = {0.0, 0.0, 0.0, 1.0};
-static GLfloat White[4] = {1.0, 1.0, 1.0, 1.0};
-
-static GLboolean smooth = 1;
-
-static void
-Idle(void)
-{
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
- LightPos[0] += Delta * dt;
- if (LightPos[0]>15.0 || LightPos[0]<-15.0)
- Delta = -Delta;
-
- glutPostRedisplay();
-}
-
-
-static void Display( void )
-{
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
-
- glLightfv(GL_LIGHT0, GL_POSITION, LightPos);
-
- glPushMatrix();
- glRotatef(90.0, 1.0, 0.0, 0.0);
-
- if (Mode==0) {
- /* Typical method: diffuse + specular + texture */
- glEnable(GL_TEXTURE_2D);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, White); /* enable diffuse */
- glLightfv(GL_LIGHT0, GL_SPECULAR, White); /* enable specular */
-#ifdef GL_VERSION_1_2
- glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SINGLE_COLOR);
-#endif
- glCallList(Sphere);
- }
- else if (Mode==1) {
- /* just specular highlight */
- glDisable(GL_TEXTURE_2D);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, Black); /* disable diffuse */
- glLightfv(GL_LIGHT0, GL_SPECULAR, White); /* enable specular */
-#ifdef GL_VERSION_1_2
- glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SINGLE_COLOR);
-#endif
- glCallList(Sphere);
- }
- else if (Mode==2) {
- /* diffuse textured */
- glEnable(GL_TEXTURE_2D);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, White); /* enable diffuse */
- glLightfv(GL_LIGHT0, GL_SPECULAR, Black); /* disable specular */
-#ifdef GL_VERSION_1_2
- glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SINGLE_COLOR);
-#endif
- glCallList(Sphere);
- }
- else if (Mode==3) {
- /* 2-pass: diffuse textured then add specular highlight*/
- glEnable(GL_TEXTURE_2D);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, White); /* enable diffuse */
- glLightfv(GL_LIGHT0, GL_SPECULAR, Black); /* disable specular */
-#ifdef GL_VERSION_1_2
- glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SINGLE_COLOR);
-#endif
- glCallList(Sphere);
- /* specular highlight */
- glDepthFunc(GL_EQUAL); /* redraw same pixels */
- glDisable(GL_TEXTURE_2D);
- glEnable(GL_BLEND); /* add */
- glLightfv(GL_LIGHT0, GL_DIFFUSE, Black); /* disable diffuse */
- glLightfv(GL_LIGHT0, GL_SPECULAR, White); /* enable specular */
- glCallList(Sphere);
- glDepthFunc(GL_LESS);
- glDisable(GL_BLEND);
- }
- else if (Mode==4) {
- /* OpenGL 1.2's separate diffuse and specular color */
- glEnable(GL_TEXTURE_2D);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, White); /* enable diffuse */
- glLightfv(GL_LIGHT0, GL_SPECULAR, White); /* enable specular */
-#ifdef GL_VERSION_1_2
- glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, GL_SEPARATE_SPECULAR_COLOR);
-#endif
- glCallList(Sphere);
- }
-
- glPopMatrix();
-
- glutSwapBuffers();
-}
-
-
-static void Reshape( int width, int height )
-{
- glViewport( 0, 0, width, height );
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glFrustum( -1.0, 1.0, -1.0, 1.0, 5.0, 25.0 );
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
- glTranslatef( 0.0, 0.0, -12.0 );
-}
-
-
-static void Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case 27:
- exit(0);
- break;
- case 's':
- smooth = !smooth;
- if (smooth)
- glShadeModel(GL_SMOOTH);
- else
- glShadeModel(GL_FLAT);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void SpecialKey( int key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case GLUT_KEY_UP:
- break;
- case GLUT_KEY_DOWN:
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void Init( void )
-{
- int i, j;
- GLubyte texImage[64][64][3];
-
- glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT0);
- glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0);
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT, Black);
-
- glShadeModel(GL_SMOOTH);
-
- glMaterialfv(GL_FRONT, GL_DIFFUSE, White);
- glMaterialfv(GL_FRONT, GL_SPECULAR, White);
- glMaterialf(GL_FRONT, GL_SHININESS, 20.0);
-
- /* Actually, these are set again later */
- glLightfv(GL_LIGHT0, GL_DIFFUSE, White);
- glLightfv(GL_LIGHT0, GL_SPECULAR, White);
-
- Quadric = gluNewQuadric();
- gluQuadricTexture( Quadric, GL_TRUE );
-
- Sphere= glGenLists(1);
- glNewList( Sphere, GL_COMPILE );
- gluSphere( Quadric, 1.0, 24, 24 );
- glEndList();
-
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_CULL_FACE);
-
- for (i=0;i<64;i++) {
- for (j=0;j<64;j++) {
- int k = ((i>>3)&1) ^ ((j>>3)&1);
- texImage[i][j][0] = 255*k;
- texImage[i][j][1] = 255*(1-k);
- texImage[i][j][2] = 0;
- }
- }
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- glTexImage2D( GL_TEXTURE_2D,
- 0,
- 3,
- 64, 64,
- 0,
- GL_RGB, GL_UNSIGNED_BYTE,
- texImage );
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glEnable(GL_TEXTURE_2D);
-
- glBlendFunc(GL_ONE, GL_ONE);
-}
-
-
-static void ModeMenu(int entry)
-{
- if (entry==99)
- exit(0);
- Mode = entry;
-}
-
-
-int main( int argc, char *argv[] )
-{
- glutInitWindowSize( 300, 300 );
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
- glutCreateWindow( "spectex" );
-
- Init();
-
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutSpecialFunc( SpecialKey );
- glutDisplayFunc( Display );
- glutIdleFunc( Idle );
-
- glutCreateMenu( ModeMenu );
- glutAddMenuEntry("1-pass lighting + texturing", 0);
- glutAddMenuEntry("specular lighting", 1);
- glutAddMenuEntry("diffuse lighting + texturing", 2);
- glutAddMenuEntry("2-pass lighting + texturing", 3);
-#ifdef GL_VERSION_1_2
- glutAddMenuEntry("OpenGL 1.2 separate specular", 4);
-#endif
- glutAddMenuEntry("Quit", 99);
- glutAttachMenu(GLUT_RIGHT_BUTTON);
-
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/spriteblast.c b/progs/demos/spriteblast.c
deleted file mode 100644
index 36e226e1d0..0000000000
--- a/progs/demos/spriteblast.c
+++ /dev/null
@@ -1,555 +0,0 @@
-
-/* Copyright (c) Mark J. Kilgard, 1997. */
-
-/* This program is freely distributable without licensing fees
- and is provided without guarantee or warrantee expressed or
- implied. This program is -not- in the public domain. */
-
-/* This example demonstrates how to render particle effects
- with OpenGL. A cloud of pinkish/orange particles explodes with the
- particles bouncing off the ground. When the EXT_point_parameters
- is present , the particle size is attenuated based on eye distance. */
-
-
-/* Modified by Brian Paul to test GL_ARB_point_sprite */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <math.h> /* for cos(), sin(), and sqrt() */
-#ifdef _WIN32
-#include <windows.h>
-#endif
-#include <GL/glew.h>
-#include <GL/glut.h>
-
-/* Some <math.h> files do not define M_PI... */
-#ifndef M_PI
-#define M_PI 3.14159265
-#endif
-
-#if 0 /* For debugging. */
-#undef GL_EXT_point_parameters
-#endif
-
-static GLfloat angle = -150; /* in degrees */
-static int spin = 0;
-static int moving, begin;
-static float theTime;
-static int repeat = 1;
-static int blend = 1;
-int useMipmaps = 1;
-int linearFiltering = 1;
-
-static GLfloat constant[3] = { .2, 0.0, 0.0 };
-static GLfloat linear[3] = { .0, .1, 0.0 };
-static GLfloat theQuad[3] = { .005, 0.1, 1/600.0 };
-
-#define MAX_POINTS 2000
-
-static int numPoints = 200;
-
-static GLfloat pointList[MAX_POINTS][3];
-static GLfloat pointTime[MAX_POINTS];
-static GLfloat pointVelocity[MAX_POINTS][2];
-static GLfloat pointDirection[MAX_POINTS][2];
-static int colorList[MAX_POINTS];
-static int animate = 1, motion = 0, org = 0, sprite = 1, smooth = 1;
-
-static GLfloat colorSet[][4] = {
- /* Shades of red. */
- { 0.7, 0.2, 0.4, 0.5 },
- { 0.8, 0.0, 0.7, 0.5 },
- { 1.0, 0.0, 0.0, 0.5 },
- { 0.9, 0.3, 0.6, 0.5 },
- { 1.0, 0.4, 0.0, 0.5 },
- { 1.0, 0.0, 0.5, 0.5 },
-};
-
-#define NUM_COLORS (sizeof(colorSet)/sizeof(colorSet[0]))
-
-#define DEAD (NUM_COLORS+1)
-
-
-/* GL */
-static GLint spritePattern[16][16] = {
- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
- { 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
- { 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0 },
- { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
- { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
- { 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0 },
- { 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0 },
- { 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0 },
- { 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0 },
- { 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0 },
- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
-};
-
-
-
-
-#if 0 /* drand48 might be better on Unix machines */
-#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * drand48())
-#else
-static float float_rand(void) { return rand() / (float) RAND_MAX; }
-#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * float_rand())
-#endif
-
-#define MEAN_VELOCITY 3.0
-#define GRAVITY 2.0
-
-/* Modeling units of ground extent in each X and Z direction. */
-#define EDGE 12
-
-static void
-makePointList(void)
-{
- float angle, velocity, direction;
- int i;
-
- motion = 1;
- for (i=0; i<numPoints; i++) {
- pointList[i][0] = 0.0;
- pointList[i][1] = 0.0;
- pointList[i][2] = 0.0;
- pointTime[i] = 0.0;
- angle = (RANDOM_RANGE(60.0, 70.0)) * M_PI/180.0;
- direction = RANDOM_RANGE(0.0, 360.0) * M_PI/180.0;
- pointDirection[i][0] = cos(direction);
- pointDirection[i][1] = sin(direction);
- velocity = MEAN_VELOCITY + RANDOM_RANGE(-0.8, 1.0);
- pointVelocity[i][0] = velocity * cos(angle);
- pointVelocity[i][1] = velocity * sin(angle);
- colorList[i] = rand() % NUM_COLORS;
- }
- theTime = 0.0;
-}
-
-static void
-updatePointList(void)
-{
- float distance;
- int i;
-
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
-
- motion = 0;
- for (i=0; i<numPoints; i++) {
- distance = pointVelocity[i][0] * theTime;
-
- /* X and Z */
- pointList[i][0] = pointDirection[i][0] * distance;
- pointList[i][2] = pointDirection[i][1] * distance;
-
- /* Z */
- pointList[i][1] =
- (pointVelocity[i][1] - 0.5 * GRAVITY * pointTime[i])*pointTime[i];
-
- /* If we hit the ground, bounce the point upward again. */
- if (pointList[i][1] <= 0.0) {
- if (distance > EDGE) {
- /* Particle has hit ground past the distance duration of
- the particles. Mark particle as dead. */
- colorList[i] = NUM_COLORS; /* Not moving. */
- continue;
- }
-
- pointVelocity[i][1] *= 0.8; /* 80% of previous up velocity. */
- pointTime[i] = 0.0; /* Reset the particles sense of up time. */
- }
- motion = 1;
- pointTime[i] += dt;
- }
- theTime += dt;
- if (!motion && !spin) {
- if (repeat) {
- makePointList();
- } else {
- glutIdleFunc(NULL);
- }
- }
-}
-
-static void
-idle(void)
-{
- updatePointList();
- if (spin) {
- angle += 0.3;
- }
- glutPostRedisplay();
-}
-
-static void
-visible(int vis)
-{
- if (vis == GLUT_VISIBLE) {
- if (animate && (motion || spin)) {
- glutIdleFunc(idle);
- }
- } else {
- glutIdleFunc(NULL);
- }
-}
-
-static void
-redraw(void)
-{
- int i;
-
- glDepthMask(GL_TRUE);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glPushMatrix();
- glRotatef(15.0, 1.0, 0.0, 0.0);
- glRotatef(angle, 0.0, 1.0, 0.0);
-
-
- /* Draw the floor. */
-/* glEnable(GL_TEXTURE_2D);*/
- glColor3f(0.1, 0.5, 1.0);
- glBegin(GL_QUADS);
- glTexCoord2f(0.0, 0.0);
- glVertex3f(-EDGE, -0.05, -EDGE);
- glTexCoord2f(20.0, 0.0);
- glVertex3f(EDGE, -0.05, -EDGE);
- glTexCoord2f(20.0, 20.0);
- glVertex3f(EDGE, -0.05, EDGE);
- glTexCoord2f(0.0, 20.0);
- glVertex3f(-EDGE, -0.05, EDGE);
- glEnd();
-
- /* Allow particles to blend with each other. */
- glDepthMask(GL_FALSE);
-
- if (blend)
- glEnable(GL_BLEND);
-
- if (sprite) {
- glEnable(GL_TEXTURE_2D);
-#ifdef GL_ARB_point_sprite
- glEnable(GL_POINT_SPRITE_ARB);
-#endif
- }
-
- glColor3f(1,1,1);
- glBegin(GL_POINTS);
- for (i=0; i<numPoints; i++) {
- /* Draw alive particles. */
- if (colorList[i] != DEAD) {
- if (!sprite) glColor4fv(colorSet[colorList[i]]);
- glVertex3fv(pointList[i]);
- }
- }
- glEnd();
-
- glDisable(GL_TEXTURE_2D);
-#ifdef GL_ARB_point_sprite
- glDisable(GL_POINT_SPRITE_ARB);
-#endif
- glDisable(GL_BLEND);
-
- glPopMatrix();
-
- glutSwapBuffers();
-}
-
-/* ARGSUSED2 */
-static void
-mouse(int button, int state, int x, int y)
-{
- /* Scene can be spun around Y axis using left
- mouse button movement. */
- if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
- moving = 1;
- begin = x;
- }
- if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) {
- moving = 0;
- }
-}
-
-/* ARGSUSED1 */
-static void
-mouseMotion(int x, int y)
-{
- if (moving) {
- angle = angle + (x - begin);
- begin = x;
- glutPostRedisplay();
- }
-}
-
-static void
-menu(int option)
-{
- switch (option) {
- case 0:
- makePointList();
- break;
-#ifdef GL_ARB_point_parameters
- case 1:
- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, constant);
- break;
- case 2:
- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, linear);
- break;
- case 3:
- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
- break;
-#endif
- case 4:
- blend = 1;
- break;
- case 5:
- blend = 0;
- break;
-#ifdef GL_ARB_point_parameters
- case 6:
- glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 1.0);
- break;
- case 7:
- glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 10.0);
- break;
-#endif
- case 8:
- glEnable(GL_POINT_SMOOTH);
- smooth = 1;
- break;
- case 9:
- glDisable(GL_POINT_SMOOTH);
- smooth = 0;
- break;
- case 10:
- glPointSize(16.0);
- break;
- case 11:
- glPointSize(32.0);
- break;
- case 12:
- glPointSize(64.0);
- break;
- case 13:
- spin = 1 - spin;
- if (animate && (spin || motion)) {
- glutIdleFunc(idle);
- } else {
- glutIdleFunc(NULL);
- }
- break;
- case 14:
- numPoints = 200;
- break;
- case 15:
- numPoints = 500;
- break;
- case 16:
- numPoints = 1000;
- break;
- case 17:
- numPoints = 2000;
- break;
- case 666:
- exit(0);
- }
- glutPostRedisplay();
-}
-
-/* ARGSUSED1 */
-static void
-key(unsigned char c, int x, int y)
-{
- switch (c) {
- case 13:
- animate = 1 - animate; /* toggle. */
- if (animate && (motion || spin)) {
- glutIdleFunc(idle);
- } else {
- glutIdleFunc(NULL);
- }
- break;
- case ' ':
- animate = 1;
- makePointList();
- glutIdleFunc(idle);
- break;
- case 'o':
- case 'O':
- org ^= 1;
-#ifdef GL_VERSION_2_0
-#ifdef GL_ARB_point_parameters
- glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN,
- org ? GL_LOWER_LEFT : GL_UPPER_LEFT);
-#endif
-#endif
- glutPostRedisplay();
- break;
- case 't':
- case 'T':
- sprite ^= 1;
- glutPostRedisplay();
- break;
- case 's':
- case 'S':
- (smooth ^= 1) ? glEnable(GL_POINT_SMOOTH) : glDisable(GL_POINT_SMOOTH);
- glutPostRedisplay();
- break;
- case '0':
- glPointSize(1.0);
- glutPostRedisplay();
- break;
- case '1':
- glPointSize(16.0);
- glutPostRedisplay();
- break;
- case '2':
- glPointSize(32.0);
- glutPostRedisplay();
- break;
- case '3':
- glPointSize(64.0);
- glutPostRedisplay();
- break;
- case '4':
- glPointSize(128.0);
- glutPostRedisplay();
- break;
- case 27:
- exit(0);
- }
-}
-
-
-
-static void
-makeSprite(void)
-{
- GLubyte texture[16][16][4];
- int i, j;
-
- if (!glutExtensionSupported("GL_ARB_point_sprite")) {
- printf("Sorry, this demo requires GL_ARB_point_sprite.\n");
- exit(0);
- }
- if (!glutExtensionSupported("GL_ARB_point_parameters")) {
- printf("Sorry, this demo requires GL_ARB_point_parameters.\n");
- exit(0);
- }
-
- for (i = 0; i < 16; i++) {
- for (j = 0; j < 16; j++) {
- if (spritePattern[i][j]) {
- texture[i][j][0] = 255;
- texture[i][j][1] = 255;
- texture[i][j][2] = 255;
- texture[i][j][3] = 255;
- }
- else {
- texture[i][j][0] = 255;
- texture[i][j][1] = 0;
- texture[i][j][2] = 0;
- texture[i][j][3] = 0;
- }
- }
- }
-
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE,
- texture);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-#ifdef GL_ARB_point_sprite
- glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE);
-#endif
-}
-
-
-static void
-reshape(int width, int height)
-{
- GLfloat h = (GLfloat) height / (GLfloat) width;
-
- glViewport(0, 0, (GLint) width, (GLint) height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-1.0, 1.0, -h, h, 2.0, 30.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.0, 0.0, -10.0);
-}
-
-int
-main(int argc, char **argv)
-{
- int i;
-
- glutInitWindowSize(600,300);
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE);
-
- for (i=1; i<argc; i++) {
- if(!strcmp("-noms", argv[i])) {
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
- printf("forcing no multisampling\n");
- } else if(!strcmp("-nomipmaps", argv[i])) {
- useMipmaps = 0;
- } else if(!strcmp("-nearest", argv[i])) {
- linearFiltering = 0;
- }
- }
- glutCreateWindow("sprite blast");
- glewInit();
- glutReshapeFunc(reshape);
- glutDisplayFunc(redraw);
- glutMouseFunc(mouse);
- glutMotionFunc(mouseMotion);
- glutVisibilityFunc(visible);
- glutKeyboardFunc(key);
- glutCreateMenu(menu);
- glutAddMenuEntry("Reset time", 0);
- glutAddMenuEntry("Constant", 1);
- glutAddMenuEntry("Linear", 2);
- glutAddMenuEntry("Quadratic", 3);
- glutAddMenuEntry("Blend on", 4);
- glutAddMenuEntry("Blend off", 5);
- glutAddMenuEntry("Threshold 1", 6);
- glutAddMenuEntry("Threshold 10", 7);
- glutAddMenuEntry("Point smooth on", 8);
- glutAddMenuEntry("Point smooth off", 9);
- glutAddMenuEntry("Point size 16", 10);
- glutAddMenuEntry("Point size 32", 11);
- glutAddMenuEntry("Point size 64", 12);
- glutAddMenuEntry("Toggle spin", 13);
- glutAddMenuEntry("200 points ", 14);
- glutAddMenuEntry("500 points ", 15);
- glutAddMenuEntry("1000 points ", 16);
- glutAddMenuEntry("2000 points ", 17);
- glutAddMenuEntry("Quit", 666);
- glutAttachMenu(GLUT_RIGHT_BUTTON);
-
- makePointList();
- makeSprite();
-
- glShadeModel(GL_FLAT);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_POINT_SMOOTH);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glPointSize(32.0);
-#ifdef GL_ARB_point_parameters
- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
-#endif
-
- glutMainLoop();
- return 0; /* ANSI C requires main to return int. */
-}
diff --git a/progs/demos/stex3d.c b/progs/demos/stex3d.c
deleted file mode 100644
index de18480c25..0000000000
--- a/progs/demos/stex3d.c
+++ /dev/null
@@ -1,687 +0,0 @@
-/*-----------------------------
- * stex3d.c GL example of the mesa 3d-texture extention to simulate procedural
- * texturing, it uses a perlin noise and turbulence functions.
- *
- * Author: Daniel Barrero
- * barrero@irit.fr
- * dbarrero@pegasus.uniandes.edu.co
- *
- * Converted to GLUT by brianp on 1/1/98
- * Massive clean-up on 2002/10/23 by brianp
- *
- *
- * cc stex3d.c -o stex3d -lglut -lMesaGLU -lMesaGL -lX11 -lXext -lm
- *
- *---------------------------- */
-
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <GL/glew.h>
-#include <GL/glut.h>
-
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-#define NOISE_TEXTURE 1
-#define GRADIENT_TEXTURE 2
-
-#define TORUS 1
-#define SPHERE 2
-
-static int tex_width=64, tex_height=64, tex_depth=64;
-static float angx=0, angy=0, angz=0;
-static int texgen = 2, animate = 1, smooth = 1, wireframe = 0;
-static int CurTexture = NOISE_TEXTURE, CurObject = TORUS;
-static GLenum Filter = GL_LINEAR;
-
-
-static void
-BuildTorus(void)
-{
- GLint i, j;
- float theta1, phi1, theta2, phi2, rings, sides;
- float v0[03], v1[3], v2[3], v3[3];
- float t0[03], t1[3], t2[3], t3[3];
- float n0[3], n1[3], n2[3], n3[3];
- float innerRadius = 0.25;
- float outerRadius = 0.5;
- float scalFac;
-
- rings = 16;
- sides = 12;
- scalFac = 1 / (outerRadius * 2);
-
- glNewList(TORUS, GL_COMPILE);
- for (i = 0; i < rings; i++) {
- theta1 = (float) i *2.0 * M_PI / rings;
- theta2 = (float) (i + 1) * 2.0 * M_PI / rings;
- for (j = 0; j < sides; j++) {
- phi1 = (float) j *2.0 * M_PI / sides;
- phi2 = (float) (j + 1) * 2.0 * M_PI / sides;
-
- v0[0] = cos(theta1) * (outerRadius + innerRadius * cos(phi1));
- v0[1] = -sin(theta1) * (outerRadius + innerRadius * cos(phi1));
- v0[2] = innerRadius * sin(phi1);
-
- v1[0] = cos(theta2) * (outerRadius + innerRadius * cos(phi1));
- v1[1] = -sin(theta2) * (outerRadius + innerRadius * cos(phi1));
- v1[2] = innerRadius * sin(phi1);
- v2[0] = cos(theta2) * (outerRadius + innerRadius * cos(phi2));
- v2[1] = -sin(theta2) * (outerRadius + innerRadius * cos(phi2));
- v2[2] = innerRadius * sin(phi2);
-
- v3[0] = cos(theta1) * (outerRadius + innerRadius * cos(phi2));
- v3[1] = -sin(theta1) * (outerRadius + innerRadius * cos(phi2));
- v3[2] = innerRadius * sin(phi2);
-
- n0[0] = cos(theta1) * (cos(phi1));
- n0[1] = -sin(theta1) * (cos(phi1));
- n0[2] = sin(phi1);
-
- n1[0] = cos(theta2) * (cos(phi1));
- n1[1] = -sin(theta2) * (cos(phi1));
- n1[2] = sin(phi1);
-
- n2[0] = cos(theta2) * (cos(phi2));
- n2[1] = -sin(theta2) * (cos(phi2));
- n2[2] = sin(phi2);
-
- n3[0] = cos(theta1) * (cos(phi2));
- n3[1] = -sin(theta1) * (cos(phi2));
- n3[2] = sin(phi2);
-
- t0[0] = v0[0] * scalFac + 0.5;
- t0[1] = v0[1] * scalFac + 0.5;
- t0[2] = v0[2] * scalFac + 0.5;
-
- t1[0] = v1[0] * scalFac + 0.5;
- t1[1] = v1[1] * scalFac + 0.5;
- t1[2] = v1[2] * scalFac + 0.5;
-
- t2[0] = v2[0] * scalFac + 0.5;
- t2[1] = v2[1] * scalFac + 0.5;
- t2[2] = v2[2] * scalFac + 0.5;
-
- t3[0] = v3[0] * scalFac + 0.5;
- t3[1] = v3[1] * scalFac + 0.5;
- t3[2] = v3[2] * scalFac + 0.5;
-
- glBegin(GL_POLYGON);
- glNormal3fv(n3);
- glTexCoord3fv(t3);
- glVertex3fv(v3);
- glNormal3fv(n2);
- glTexCoord3fv(t2);
- glVertex3fv(v2);
- glNormal3fv(n1);
- glTexCoord3fv(t1);
- glVertex3fv(v1);
- glNormal3fv(n0);
- glTexCoord3fv(t0);
- glVertex3fv(v0);
- glEnd();
- }
- }
- glEndList();
-}
-
-
-/*--------------------------------------------------------------------
- noise function over R3 - implemented by a pseudorandom tricubic spline
- EXCERPTED FROM SIGGRAPH 92, COURSE 23
- PROCEDURAL MODELING
- Ken Perlin
- New York University
-----------------------------------------------------------------------*/
-
-
-#define DOT(a,b) (a[0] * b[0] + a[1] * b[1] + a[2] * b[2])
-#define B 128
-static int p[B + B + 2];
-static float g[B + B + 2][3];
-#define setup(i,b0,b1,r0,r1) \
- t = vec[i] + 10000.; \
- b0 = ((int)t) & (B-1); \
- b1 = (b0+1) & (B-1); \
- r0 = t - (int)t; \
- r1 = r0 - 1.;
-
-static float
-noise3(float vec[3])
-{
- int bx0, bx1, by0, by1, bz0, bz1, b00, b10, b01, b11;
- float rx0, rx1, ry0, ry1, rz0, rz1, *q, sx, sy, sz, a, b, c, d, t, u, v;
- register int i, j;
-
- setup(0, bx0, bx1, rx0, rx1);
- setup(1, by0, by1, ry0, ry1);
- setup(2, bz0, bz1, rz0, rz1);
-
- i = p[bx0];
- j = p[bx1];
-
- b00 = p[i + by0];
- b10 = p[j + by0];
- b01 = p[i + by1];
- b11 = p[j + by1];
-
-#define at(rx,ry,rz) ( rx * q[0] + ry * q[1] + rz * q[2] )
-#define surve(t) ( t * t * (3. - 2. * t) )
-#define lerp(t, a, b) ( a + t * (b - a) )
-
- sx = surve(rx0);
- sy = surve(ry0);
- sz = surve(rz0);
-
- q = g[b00 + bz0];
- u = at(rx0, ry0, rz0);
- q = g[b10 + bz0];
- v = at(rx1, ry0, rz0);
- a = lerp(sx, u, v);
-
- q = g[b01 + bz0];
- u = at(rx0, ry1, rz0);
- q = g[b11 + bz0];
- v = at(rx1, ry1, rz0);
- b = lerp(sx, u, v);
-
- c = lerp(sy, a, b); /* interpolate in y at lo x */
-
- q = g[b00 + bz1];
- u = at(rx0, ry0, rz1);
- q = g[b10 + bz1];
- v = at(rx1, ry0, rz1);
- a = lerp(sx, u, v);
-
- q = g[b01 + bz1];
- u = at(rx0, ry1, rz1);
- q = g[b11 + bz1];
- v = at(rx1, ry1, rz1);
- b = lerp(sx, u, v);
-
- d = lerp(sy, a, b); /* interpolate in y at hi x */
-
- return 1.5 * lerp(sz, c, d); /* interpolate in z */
-}
-
-static void
-initNoise(void)
-{
- /*long random(); */
- int i, j, k;
- float v[3], s;
-
- /* Create an array of random gradient vectors uniformly on the unit sphere */
- /*srandom(1); */
- srand(1);
- for (i = 0; i < B; i++) {
- do { /* Choose uniformly in a cube */
- for (j = 0; j < 3; j++)
- v[j] = (float) ((rand() % (B + B)) - B) / B;
- s = DOT(v, v);
- } while (s > 1.0); /* If not in sphere try again */
- s = sqrt(s);
- for (j = 0; j < 3; j++) /* Else normalize */
- g[i][j] = v[j] / s;
- }
-
- /* Create a pseudorandom permutation of [1..B] */
- for (i = 0; i < B; i++)
- p[i] = i;
- for (i = B; i > 0; i -= 2) {
- k = p[i];
- p[i] = p[j = rand() % B];
- p[j] = k;
- }
-
- /* Extend g and p arrays to allow for faster indexing */
- for (i = 0; i < B + 2; i++) {
- p[B + i] = p[i];
- for (j = 0; j < 3; j++)
- g[B + i][j] = g[i][j];
- }
-}
-
-
-static float
-turbulence(float point[3], float lofreq, float hifreq)
-{
- float freq, t, p[3];
-
- p[0] = point[0] + 123.456;
- p[1] = point[1];
- p[2] = point[2];
-
- t = 0;
- for (freq = lofreq; freq < hifreq; freq *= 2.) {
- t += fabs(noise3(p)) / freq;
- p[0] *= 2.;
- p[1] *= 2.;
- p[2] *= 2.;
- }
- return t - 0.3; /* readjust to make mean value = 0.0 */
-}
-
-
-static void
-create3Dtexture(void)
-{
- unsigned char *voxels = NULL;
- int i, j, k;
- unsigned char *vp;
- float vec[3];
- int tmp;
-
- printf("creating 3d textures...\n");
- voxels =
- (unsigned char *)
- malloc((size_t) (4 * tex_width * tex_height * tex_depth));
- vp = voxels;
- for (i = 0; i < tex_width; i++) {
- vec[0] = i;
- for (j = 0; j < tex_height; j++) {
- vec[1] = j;
- for (k = 0; k < tex_depth; k++) {
- vec[2] = k;
- tmp = (sin(k * i * j + turbulence(vec, 0.01, 1)) + 1) * 127.5;
- *vp++ = 0;
- *vp++ = 0;
- *vp++ = tmp;
- *vp++ = tmp + 128;
- }
- }
- }
-
- printf("setting up 3d texture...\n");
-
- glBindTexture(GL_TEXTURE_3D, NOISE_TEXTURE);
- glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_REPEAT);
- glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_REPEAT);
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA,
- tex_width, tex_height, tex_depth,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, voxels);
-
- free(voxels);
-
- printf("finished setting up 3d texture image.\n");
-}
-
-
-static void
-printHelp(void)
-{
- printf("\nUsage: stex3d <cmd line options>\n");
- printf(" cmd line options:\n");
- printf(" -wxxx Width of the texture (Default=64)\n");
- printf(" -hxxx Height of the texture (Default=64)\n");
- printf(" -dxxx Depth of the texture (Default=64)\n");
- printf(" Keyboard Options:\n");
- printf(" up/down rotate around X\n");
- printf(" left/right rotate around Y\n");
- printf(" z/Z rotate around Z\n");
- printf(" a toggle animation\n");
- printf(" s toggle smooth shading\n");
- printf(" t toggle texgen mode\n");
- printf(" o toggle object: torus/sphere\n");
- printf(" i toggle texture image: noise/gradient\n");
-}
-
-
-static GLenum
-parseCmdLine(int argc, char **argv)
-{
- GLint i;
-
- for (i = 1; i < argc; i++) {
- if (strcmp(argv[i], "-help") == 0) {
- printHelp();
- return GL_FALSE;
- }
- else if (strstr(argv[i], "-w") != NULL) {
- tex_width = atoi((argv[i]) + 2);
- }
- else if (strstr(argv[i], "-h") != NULL) {
- tex_height = atoi((argv[i]) + 2);
- }
- else if (strstr(argv[i], "-d") != NULL) {
- tex_depth = atoi((argv[i]) + 2);
- }
- else {
- printf("%s (Bad option).\n", argv[i]);
- printHelp();
- return GL_FALSE;
- }
- }
- if (tex_width == 0 || tex_height == 0 || tex_depth == 0) {
- printf("%s (Bad option).\n", "size parameters can't be 0");
- printHelp();
- return GL_FALSE;
- }
- return GL_TRUE;
-}
-
-
-static void
-drawScene(void)
-{
- static const GLfloat sPlane[4] = { 0.5, 0, 0, -.5 };
- static const GLfloat tPlane[4] = { 0, 0.5, 0, -.5 };
- static const GLfloat rPlane[4] = { 0, 0, 0.5, -.5 };
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glPushMatrix();
- if (texgen == 2) {
- glTexGenfv(GL_S, GL_EYE_PLANE, sPlane);
- glTexGenfv(GL_T, GL_EYE_PLANE, tPlane);
- glTexGenfv(GL_R, GL_EYE_PLANE, rPlane);
- }
-
- glRotatef(angx, 1.0, 0.0, 0.0);
- glRotatef(angy, 0.0, 1.0, 0.0);
- glRotatef(angz, 0.0, 0.0, 1.0);
-
- if (texgen == 1) {
- glTexGenfv(GL_S, GL_EYE_PLANE, sPlane);
- glTexGenfv(GL_T, GL_EYE_PLANE, tPlane);
- glTexGenfv(GL_R, GL_EYE_PLANE, rPlane);
- }
-
- if (texgen) {
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- glEnable(GL_TEXTURE_GEN_R);
- }
- else {
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- glDisable(GL_TEXTURE_GEN_R);
- }
-
- glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, Filter);
- glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, Filter);
-
- glCallList(CurObject);
- glPopMatrix();
-
- glutSwapBuffers();
-}
-
-
-static void
-resize(int w, int h)
-{
- float ar = (float) w / (float) h;
- float ax = 0.6 * ar;
- float ay = 0.6;
- glViewport(0, 0, (GLint) w, (GLint) h);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-ax, ax, -ay, ay, 2, 20);
- /*glOrtho(-2, 2, -2, 2, -10, 10);*/
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0, 0, -4);
-}
-
-
-static void
-Idle(void)
-{
- float t = glutGet(GLUT_ELAPSED_TIME);
- angx = 0.01 * t;
- angy = 0.03 * t;
- angz += 0;
- glutPostRedisplay();
-}
-
-
-static void
-SpecialKey(int k, int x, int y)
-{
- switch (k) {
- case GLUT_KEY_UP:
- angx += 5.0;
- break;
- case GLUT_KEY_DOWN:
- angx -= 5.0;
- break;
- case GLUT_KEY_LEFT:
- angy += 5.0;
- break;
- case GLUT_KEY_RIGHT:
- angy -= 5.0;
- break;
- default:
- return;
- }
- glutPostRedisplay();
-}
-
-
-static void
-KeyHandler(unsigned char key, int x, int y)
-{
- static const char *mode[] = {
- "glTexCoord3f (no texgen)",
- "texgen fixed to object coords",
- "texgen fixed to eye coords"
- };
- (void) x;
- (void) y;
- switch (key) {
- case 27:
- case 'q':
- case 'Q': /* quit game. */
- exit(0);
- break;
- case 'z':
- angz += 10;
- break;
- case 'Z':
- angz -= 10;
- break;
- case 's':
- smooth = !smooth;
- if (smooth)
- glShadeModel(GL_SMOOTH);
- else
- glShadeModel(GL_FLAT);
- break;
- case 't':
- texgen++;
- if (texgen > 2)
- texgen = 0;
- printf("Texgen: %s\n", mode[texgen]);
- break;
- case 'o':
- if (CurObject == TORUS)
- CurObject = SPHERE;
- else
- CurObject = TORUS;
- break;
- case 'f':
- if (Filter == GL_LINEAR)
- Filter = GL_NEAREST;
- else
- Filter = GL_LINEAR;
- break;
- case 'i':
- if (CurTexture == NOISE_TEXTURE)
- CurTexture = GRADIENT_TEXTURE;
- else
- CurTexture = NOISE_TEXTURE;
- glBindTexture(GL_TEXTURE_3D, CurTexture);
- break;
- case 'a':
- case ' ':
- animate = !animate;
- if (animate)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- break;
- case 'w':
- wireframe = !wireframe;
- if (wireframe)
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- else
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- break;
- default:
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void
-create3Dgradient(void)
-{
- unsigned char *v;
- int i, j, k;
- unsigned char *voxels = NULL;
-
- voxels = (unsigned char *) malloc(4 * tex_width * tex_height * tex_depth);
- v = voxels;
-
- for (i = 0; i < tex_depth; i++) {
- for (j = 0; j < tex_height; j++) {
- for (k = 0; k < tex_width; k++) {
- GLint r = (255 * i) / (tex_depth - 1);
- GLint g = (255 * j) / (tex_height - 1);
- GLint b = (255 * k) / (tex_width - 1);
- *v++ = r;
- *v++ = g;
- *v++ = b;
- *v++ = 255;
- }
- }
- }
-
-
- glBindTexture(GL_TEXTURE_3D, GRADIENT_TEXTURE);
- glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_REPEAT);
- glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_REPEAT);
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- glTexImage3D(GL_TEXTURE_3D, 0, GL_RGBA,
- tex_width, tex_height, tex_depth,
- 0, GL_RGBA, GL_UNSIGNED_BYTE, voxels);
-
- free(voxels);
-}
-
-
-
-static void
-init(void)
-{
- static const GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
- static const GLfloat mat_shininess[] = { 25.0 };
- static const GLfloat gray[] = { 0.6, 0.6, 0.6, 0.0 };
- static const GLfloat white[] = { 1.0, 1.0, 1.0, 0.0 };
- static const GLfloat light_position[] = { 0.0, 1.0, 1.0, 0.0 };
-
- int max;
-
- /* see if we have OpenGL 1.2 or later, for 3D texturing */
- {
- const char *version = (const char *) glGetString(GL_VERSION);
- if (strncmp(version, "1.0", 3) == 0 || strncmp(version, "1.1", 3) == 0) {
- printf("Sorry, OpenGL 1.2 or later is required\n");
- exit(1);
- }
- }
- printf("GL_RENDERER: %s\n", (char *) glGetString(GL_RENDERER));
- glGetIntegerv(GL_MAX_3D_TEXTURE_SIZE, &max);
- printf("GL_MAX_3D_TEXTURE_SIZE: %d\n", max);
- printf("Current 3D texture size: %d x %d x %d\n",
- tex_width, tex_height, tex_depth);
-
- /* init light */
- glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
- glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess);
- glLightfv(GL_LIGHT1, GL_POSITION, light_position);
- glLightfv(GL_LIGHT1, GL_AMBIENT, gray);
- glLightfv(GL_LIGHT1, GL_DIFFUSE, white);
- glLightfv(GL_LIGHT1, GL_SPECULAR, white);
- glColorMaterial(GL_FRONT, GL_DIFFUSE);
- glEnable(GL_COLOR_MATERIAL);
- glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT1);
-
- glClearColor(.5, .5, .5, 0);
-
- {
- GLUquadricObj *q;
- q = gluNewQuadric();
- gluQuadricTexture( q, GL_TRUE );
- glNewList(SPHERE, GL_COMPILE);
- gluSphere( q, 0.95, 30, 15 );
- glEndList();
- gluDeleteQuadric(q);
- }
-
- BuildTorus();
-
-
- create3Dgradient();
-
- initNoise();
- create3Dtexture();
-
- glEnable(GL_TEXTURE_3D);
-
- /*
- glBlendFunc(GL_SRC_COLOR, GL_SRC_ALPHA);
- glEnable(GL_BLEND);
- */
- glEnable(GL_DEPTH_TEST);
-
- glColor3f(0.6, 0.7, 0.8);
-}
-
-
-int
-main(int argc, char **argv)
-{
- glutInit(&argc, argv);
-
- if (parseCmdLine(argc, argv) == GL_FALSE) {
- exit(0);
- }
-
- glutInitWindowPosition(0, 0);
- glutInitWindowSize(400, 400);
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
-
- if (glutCreateWindow("stex3d") <= 0) {
- exit(0);
- }
-
- glewInit();
-
- init();
-
- printHelp();
-
- glutReshapeFunc(resize);
- glutKeyboardFunc(KeyHandler);
- glutSpecialFunc(SpecialKey);
- glutDisplayFunc(drawScene);
- if (animate)
- glutIdleFunc(Idle);
- glutMainLoop();
- return 0;
-}
-
diff --git a/progs/demos/teapot.c b/progs/demos/teapot.c
deleted file mode 100644
index 04a675f36e..0000000000
--- a/progs/demos/teapot.c
+++ /dev/null
@@ -1,685 +0,0 @@
-/*
- * This program is under the GNU GPL.
- * Use at your own risk.
- *
- * written by David Bucciarelli (tech.hmw@plus.it)
- * Humanware s.r.l.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <time.h>
-#include <string.h>
-
-#ifdef WIN32
-#include <windows.h>
-#endif
-
-#include <GL/glut.h>
-#include "readtex.h"
-
-#ifdef XMESA
-#include "GL/xmesa.h"
-static int fullscreen=1;
-#endif
-
-static int WIDTH=640;
-static int HEIGHT=480;
-
-static GLint T0 = 0;
-static GLint Frames = 0;
-
-#define BASESIZE 10.0
-
-#define BASERES 12
-#define TEAPOTRES 3
-
-#ifndef M_PI
-#define M_PI 3.1415926535
-#endif
-
-extern void shadowmatrix(GLfloat [4][4], GLfloat [4], GLfloat [4]);
-extern void findplane(GLfloat [4], GLfloat [3], GLfloat [3], GLfloat [3]);
-
-
-static int win=0;
-
-static float obs[3]={5.0,0.0,1.0};
-static float dir[3];
-static float v=0.0;
-static float alpha=-90.0;
-static float beta=90.0;
-
-static GLfloat baseshadow[4][4];
-static GLfloat lightpos[4]={2.3,0.0,3.0,1.0};
-static GLfloat lightdir[3]={-2.3,0.0,-3.0};
-static GLfloat lightalpha=0.0;
-
-static int fog=1;
-static int bfcull=1;
-static int usetex=1;
-static int help=1;
-static int joyavailable=0;
-static int joyactive=0;
-
-static GLuint t1id,t2id;
-static GLuint teapotdlist,basedlist,lightdlist;
-
-
-
-/******************** begin shadow code ********************/
-
-/* Taken from the projshadow.c - by Tom McReynolds, SGI */
-
-/* Modified by David Bucciarelli */
-
-enum {
- X, Y, Z, W
-};
-enum {
- A, B, C, D
-};
-
-/* create a matrix that will project the desired shadow */
-void
-shadowmatrix(GLfloat shadowMat[4][4],
- GLfloat groundplane[4],
- GLfloat lightpos[4])
-{
- GLfloat dot;
-
- /* find dot product between light position vector and ground plane normal */
- dot = groundplane[X] * lightpos[X] +
- groundplane[Y] * lightpos[Y] +
- groundplane[Z] * lightpos[Z] +
- groundplane[W] * lightpos[W];
-
- shadowMat[0][0] = dot - lightpos[X] * groundplane[X];
- shadowMat[1][0] = 0.f - lightpos[X] * groundplane[Y];
- shadowMat[2][0] = 0.f - lightpos[X] * groundplane[Z];
- shadowMat[3][0] = 0.f - lightpos[X] * groundplane[W];
-
- shadowMat[X][1] = 0.f - lightpos[Y] * groundplane[X];
- shadowMat[1][1] = dot - lightpos[Y] * groundplane[Y];
- shadowMat[2][1] = 0.f - lightpos[Y] * groundplane[Z];
- shadowMat[3][1] = 0.f - lightpos[Y] * groundplane[W];
-
- shadowMat[X][2] = 0.f - lightpos[Z] * groundplane[X];
- shadowMat[1][2] = 0.f - lightpos[Z] * groundplane[Y];
- shadowMat[2][2] = dot - lightpos[Z] * groundplane[Z];
- shadowMat[3][2] = 0.f - lightpos[Z] * groundplane[W];
-
- shadowMat[X][3] = 0.f - lightpos[W] * groundplane[X];
- shadowMat[1][3] = 0.f - lightpos[W] * groundplane[Y];
- shadowMat[2][3] = 0.f - lightpos[W] * groundplane[Z];
- shadowMat[3][3] = dot - lightpos[W] * groundplane[W];
-
-}
-
-/* find the plane equation given 3 points */
-void
-findplane(GLfloat plane[4],
- GLfloat v0[3], GLfloat v1[3], GLfloat v2[3])
-{
- GLfloat vec0[3], vec1[3];
-
- /* need 2 vectors to find cross product */
- vec0[X] = v1[X] - v0[X];
- vec0[Y] = v1[Y] - v0[Y];
- vec0[Z] = v1[Z] - v0[Z];
-
- vec1[X] = v2[X] - v0[X];
- vec1[Y] = v2[Y] - v0[Y];
- vec1[Z] = v2[Z] - v0[Z];
-
- /* find cross product to get A, B, and C of plane equation */
- plane[A] = vec0[Y] * vec1[Z] - vec0[Z] * vec1[Y];
- plane[B] = -(vec0[X] * vec1[Z] - vec0[Z] * vec1[X]);
- plane[C] = vec0[X] * vec1[Y] - vec0[Y] * vec1[X];
-
- plane[D] = -(plane[A] * v0[X] + plane[B] * v0[Y] + plane[C] * v0[Z]);
-}
-
-/******************** end shadow code ********************/
-
-
-static void calcposobs(void)
-{
- dir[0]=sin(alpha*M_PI/180.0);
- dir[1]=cos(alpha*M_PI/180.0)*sin(beta*M_PI/180.0);
- dir[2]=cos(beta*M_PI/180.0);
-
- obs[0]+=v*dir[0];
- obs[1]+=v*dir[1];
- obs[2]+=v*dir[2];
-}
-
-static void special(int k, int x, int y)
-{
- switch(k) {
- case GLUT_KEY_LEFT:
- alpha-=2.0;
- break;
- case GLUT_KEY_RIGHT:
- alpha+=2.0;
- break;
- case GLUT_KEY_DOWN:
- beta-=2.0;
- break;
- case GLUT_KEY_UP:
- beta+=2.0;
- break;
- }
-}
-
-static void cleanup(void)
-{
- glDeleteTextures(1, &t1id);
- glDeleteTextures(1, &t2id);
- glDeleteLists(teapotdlist, 1);
- glDeleteLists(basedlist, 1);
- glDeleteLists(lightdlist, 1);
-}
-
-static void key(unsigned char k, int x, int y)
-{
- switch(k) {
- case 27:
- cleanup();
- exit(0);
- break;
-
- case 'a':
- v+=0.005;
- break;
- case 'z':
- v-=0.005;
- break;
-
- case 'j':
- joyactive=(!joyactive);
- break;
- case 'h':
- help=(!help);
- break;
- case 'f':
- fog=(!fog);
- break;
- case 't':
- usetex=(!usetex);
- break;
- case 'b':
- if(bfcull) {
- glDisable(GL_CULL_FACE);
- bfcull=0;
- } else {
- glEnable(GL_CULL_FACE);
- bfcull=1;
- }
- break;
-#ifdef XMESA
- case ' ':
- XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW);
- fullscreen=(!fullscreen);
- break;
-#endif
- }
-}
-
-static void reshape(int w, int h)
-{
- WIDTH=w;
- HEIGHT=h;
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(45.0,w/(float)h,0.2,40.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glViewport(0,0,w,h);
-}
-
-static void printstring(void *font, char *string)
-{
- int len,i;
-
- len=(int)strlen(string);
- for(i=0;i<len;i++)
- glutBitmapCharacter(font,string[i]);
-}
-
-static void printhelp(void)
-{
- glEnable(GL_BLEND);
- glColor4f(0.5,0.5,0.5,0.5);
- glRecti(40,40,600,440);
- glDisable(GL_BLEND);
-
- glColor3f(1.0,0.0,0.0);
- glRasterPos2i(300,420);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"Help");
-
- glRasterPos2i(60,390);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"h - Toggle Help");
- glRasterPos2i(60,360);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"t - Toggle Textures");
- glRasterPos2i(60,330);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"f - Toggle Fog");
- glRasterPos2i(60,300);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"b - Toggle Back face culling");
- glRasterPos2i(60,270);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"Arrow Keys - Rotate");
- glRasterPos2i(60,240);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"a - Increase velocity");
- glRasterPos2i(60,210);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"z - Decrease velocity");
-
- glRasterPos2i(60,180);
- if(joyavailable)
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"j - Toggle jostick control (Joystick control available)");
- else
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"(No Joystick control available)");
-}
-
-static void drawbase(void)
-{
- static const GLfloat amb[4] = { 1, .5, 0.2, 1 };
- static const GLfloat diff[4] = { 1, .4, 0.2, 1 };
- int i,j;
- float x,y,dx,dy;
-
- glBindTexture(GL_TEXTURE_2D,t1id);
-
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, amb);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diff);
- dx=BASESIZE/BASERES;
- dy=-BASESIZE/BASERES;
- for(y=BASESIZE/2.0,j=0;j<BASERES;y+=dy,j++) {
- glBegin(GL_QUAD_STRIP);
- glColor3f(1.0,1.0,1.0);
- glNormal3f(0.0,0.0,1.0);
- for(x=-BASESIZE/2.0,i=0;i<BASERES;x+=dx,i++) {
- glTexCoord2f(x,y);
- glVertex3f(x,y,0.0);
-
- glTexCoord2f(x,y+dy);
- glVertex3f(x,y+dy,0.0);
- }
- glEnd();
- }
-}
-
-static void drawteapot(void)
-{
- static const GLfloat amb[4] = { 0.2, 0.2, 0.2, 1 };
- static const GLfloat diff[4] = { 0.8, 0.3, 0.5, 1 };
- static float xrot=0.0;
- static float zrot=0.0;
-
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, amb);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, diff);
-
- glPushMatrix();
- glRotatef(lightalpha,0.0,0.0,1.0);
- glMultMatrixf((GLfloat *)baseshadow);
- glRotatef(-lightalpha,0.0,0.0,1.0);
-
- glTranslatef(0.0,0.0,1.0);
- glRotatef(xrot,1.0,0.0,0.0);
- glRotatef(zrot,0.0,0.0,1.0);
-
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_LIGHTING);
-
- glColor3f(0.0,0.0,0.0);
- glCallList(teapotdlist);
-
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_LIGHTING);
- if(usetex)
- glEnable(GL_TEXTURE_2D);
-
- glPopMatrix();
-
- glPushMatrix();
- glTranslatef(0.0,0.0,1.0);
- glRotatef(xrot,1.0,0.0,0.0);
- glRotatef(zrot,0.0,0.0,1.0);
-
- glCallList(teapotdlist);
- glPopMatrix();
-
- xrot+=2.0;
- zrot+=1.0;
-}
-
-static void drawlight1(void)
-{
- glPushMatrix();
- glRotatef(lightalpha,0.0,0.0,1.0);
- glLightfv(GL_LIGHT0,GL_POSITION,lightpos);
- glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,lightdir);
-
- glPopMatrix();
-}
-
-static void drawlight2(void)
-{
- glPushMatrix();
- glRotatef(lightalpha,0.0,0.0,1.0);
- glTranslatef(lightpos[0],lightpos[1],lightpos[2]);
-
- glDisable(GL_TEXTURE_2D);
- glCallList(lightdlist);
- if(usetex)
- glEnable(GL_TEXTURE_2D);
-
- glPopMatrix();
-
- lightalpha+=1.0;
-}
-
-static void dojoy(void)
-{
-#ifdef WIN32
- static UINT max[2]={0,0};
- static UINT min[2]={0xffffffff,0xffffffff},center[2];
- MMRESULT res;
- JOYINFO joy;
-
- res=joyGetPos(JOYSTICKID1,&joy);
-
- if(res==JOYERR_NOERROR) {
- joyavailable=1;
-
- if(max[0]<joy.wXpos)
- max[0]=joy.wXpos;
- if(min[0]>joy.wXpos)
- min[0]=joy.wXpos;
- center[0]=(max[0]+min[0])/2;
-
- if(max[1]<joy.wYpos)
- max[1]=joy.wYpos;
- if(min[1]>joy.wYpos)
- min[1]=joy.wYpos;
- center[1]=(max[1]+min[1])/2;
-
- if(joyactive) {
- if(fabs(center[0]-(float)joy.wXpos)>0.1*(max[0]-min[0]))
- alpha-=2.5*(center[0]-(float)joy.wXpos)/(max[0]-min[0]);
- if(fabs(center[1]-(float)joy.wYpos)>0.1*(max[1]-min[1]))
- beta+=2.5*(center[1]-(float)joy.wYpos)/(max[1]-min[1]);
-
- if(joy.wButtons & JOY_BUTTON1)
- v+=0.005;
- if(joy.wButtons & JOY_BUTTON2)
- v-=0.005;
- }
- } else
- joyavailable=0;
-#endif
-}
-
-static void draw(void)
-{
- static char frbuf[80] = "";
-
- dojoy();
-
- glEnable(GL_DEPTH_TEST);
- glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
-
- if(usetex)
- glEnable(GL_TEXTURE_2D);
- else
- glDisable(GL_TEXTURE_2D);
-
- if(fog)
- glEnable(GL_FOG);
- else
- glDisable(GL_FOG);
-
- glEnable(GL_LIGHTING);
-
- glShadeModel(GL_SMOOTH);
-
- glPushMatrix();
- calcposobs();
-
- gluLookAt(obs[0],obs[1],obs[2],
- obs[0]+dir[0],obs[1]+dir[1],obs[2]+dir[2],
- 0.0,0.0,1.0);
-
- drawlight1();
- glCallList(basedlist);
- drawteapot();
- drawlight2();
- glPopMatrix();
-
- glDisable(GL_LIGHTING);
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_FOG);
- glShadeModel(GL_FLAT);
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-0.5,639.5,-0.5,479.5,-1.0,1.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- glColor3f(1.0,0.0,0.0);
- glRasterPos2i(10,10);
- printstring(GLUT_BITMAP_HELVETICA_18,frbuf);
- glRasterPos2i(350,470);
- printstring(GLUT_BITMAP_HELVETICA_10,"Teapot V1.2 Written by David Bucciarelli (tech.hmw@plus.it)");
-
- if(help)
- printhelp();
-
- reshape(WIDTH,HEIGHT);
-
- glutSwapBuffers();
-
- Frames++;
-
- {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- if (t - T0 >= 2000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- sprintf(frbuf, "Frame rate: %f", fps);
- T0 = t;
- Frames = 0;
- }
- }
-}
-
-static void inittextures(void)
-{
- glGenTextures(1,&t1id);
- glBindTexture(GL_TEXTURE_2D,t1id);
-
- glPixelStorei(GL_UNPACK_ALIGNMENT,4);
- if (!LoadRGBMipmaps("../images/tile.rgb", GL_RGB)) {
- fprintf(stderr,"Error reading a texture.\n");
- exit(-1);
- }
-
- glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);
- glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
-
- glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
-
- glGenTextures(1,&t2id);
- glBindTexture(GL_TEXTURE_2D,t2id);
-
- glPixelTransferf(GL_RED_SCALE, 0.75);
- glPixelTransferf(GL_RED_BIAS, 0.25);
- glPixelTransferf(GL_GREEN_SCALE, 0.75);
- glPixelTransferf(GL_GREEN_BIAS, 0.25);
- glPixelTransferf(GL_BLUE_SCALE, 0.75);
- glPixelTransferf(GL_BLUE_BIAS, 0.25);
-
- if (!LoadRGBMipmaps("../images/bw.rgb", GL_RGB)) {
- fprintf(stderr,"Error reading a texture.\n");
- exit(-1);
- }
-
- glPixelTransferf(GL_RED_SCALE, 1.0);
- glPixelTransferf(GL_RED_BIAS, 0.0);
- glPixelTransferf(GL_GREEN_SCALE, 1.0);
- glPixelTransferf(GL_GREEN_BIAS, 0.0);
- glPixelTransferf(GL_BLUE_SCALE, 1.0);
- glPixelTransferf(GL_BLUE_BIAS, 0.0);
-
-
- glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);
- glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
-
- glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
-}
-
-static void initlight(void)
-{
- float matamb[4] ={0.5, 0.5, 0.5, 1.0};
- float matdiff[4]={0.9, 0.2, 0.2, 1.0};
- float matspec[4]={1.0,1.0,1.0,1.0};
-
- float lamb[4] ={1.5, 1.5, 1.5, 1.0};
- float ldiff[4]={1.0, 1.0, 1.0, 1.0};
- float lspec[4]={1.0, 1.0, 1.0, 1.0};
-
- glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,70.0);
- glLightf(GL_LIGHT0,GL_SPOT_EXPONENT,20.0);
- glLightfv(GL_LIGHT0,GL_AMBIENT,lamb);
- glLightfv(GL_LIGHT0,GL_DIFFUSE,ldiff);
- glLightfv(GL_LIGHT0,GL_SPECULAR,lspec);
-
- glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, 15.0);
- glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, matdiff);
- glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, matspec);
- glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, matamb);
-
- glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lamb);
- glEnable(GL_LIGHT0);
-}
-
-static void initdlists(void)
-{
- GLUquadricObj *lcone,*lbase;
- GLfloat plane[4];
- GLfloat v0[3]={0.0,0.0,0.0};
- GLfloat v1[3]={1.0,0.0,0.0};
- GLfloat v2[3]={0.0,1.0,0.0};
-
- findplane(plane,v0,v1,v2);
- shadowmatrix(baseshadow,plane,lightpos);
-
- teapotdlist=glGenLists(1);
- glNewList(teapotdlist,GL_COMPILE);
- glRotatef(90.0,1.0,0.0,0.0);
- glCullFace(GL_FRONT);
- glBindTexture(GL_TEXTURE_2D,t2id);
- glutSolidTeapot(0.75);
- glCullFace(GL_BACK);
- glEndList();
-
- basedlist=glGenLists(1);
- glNewList(basedlist,GL_COMPILE);
- drawbase();
- glEndList();
-
- lightdlist=glGenLists(1);
- glNewList(lightdlist,GL_COMPILE);
- glDisable(GL_LIGHTING);
-
- lcone=gluNewQuadric();
- lbase=gluNewQuadric();
- glRotatef(45.0,0.0,1.0,0.0);
-
- glColor3f(1.0,1.0,1.0);
- glCullFace(GL_FRONT);
- gluDisk(lbase,0.0,0.2,12.0,1.0);
- glCullFace(GL_BACK);
-
- glColor3f(0.5,0.0,0.0);
- gluCylinder(lcone,0.2,0.0,0.5,12,1);
-
- gluDeleteQuadric(lcone);
- gluDeleteQuadric(lbase);
-
- glEnable(GL_LIGHTING);
- glEndList();
-}
-
-int main(int ac, char **av)
-{
- float fogcolor[4]={0.025,0.025,0.025,1.0};
-
- fprintf(stderr,"Teapot V1.2\nWritten by David Bucciarelli (tech.hmw@plus.it)\n");
-
- /*
- if(!SetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS)) {
- fprintf(stderr,"Error setting the process class.\n");
- return 0;
- }
-
- if(!SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL)) {
- fprintf(stderr,"Error setting the process priority.\n");
- return 0;
- }
- */
-
- glutInitWindowSize(WIDTH,HEIGHT);
- glutInit(&ac,av);
-
- glutInitDisplayMode(GLUT_RGB|GLUT_DEPTH|GLUT_DOUBLE);
-
- if(!(win=glutCreateWindow("Teapot"))) {
- fprintf(stderr,"Error, couldn't open window\n");
- return -1;
- }
-
- reshape(WIDTH,HEIGHT);
-
- glShadeModel(GL_SMOOTH);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_CULL_FACE);
- glEnable(GL_TEXTURE_2D);
-
- glEnable(GL_FOG);
- glFogi(GL_FOG_MODE,GL_EXP2);
- glFogfv(GL_FOG_COLOR,fogcolor);
-
- glFogf(GL_FOG_DENSITY,0.04);
- glHint(GL_FOG_HINT,GL_NICEST);
- glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
-
- calcposobs();
-
- inittextures();
- initlight();
-
- initdlists();
-
- glClearColor(fogcolor[0],fogcolor[1],fogcolor[2],fogcolor[3]);
-
- glutReshapeFunc(reshape);
- glutDisplayFunc(draw);
- glutKeyboardFunc(key);
- glutSpecialFunc(special);
- glutIdleFunc(draw);
-
- glutMainLoop();
- cleanup();
-
- return 0;
-}
diff --git a/progs/demos/terrain.c b/progs/demos/terrain.c
deleted file mode 100644
index a72c8d3cae..0000000000
--- a/progs/demos/terrain.c
+++ /dev/null
@@ -1,658 +0,0 @@
-/*
- * This program is under the GNU GPL.
- * Use at your own risk.
- *
- * written by David Bucciarelli (tech.hmw@plus.it)
- * Humanware s.r.l.
- *
- * based on a Mikael SkiZoWalker's (MoDEL) / France (Skizo@Hol.Fr) demo
- */
-
-#include <assert.h>
-#include <stdio.h>
-#include <math.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-#ifdef WIN32
-#include <windows.h>
-#endif
-
-#include <GL/glut.h>
-
-#ifdef XMESA
-#include "GL/xmesa.h"
-static int fullscreen = 1;
-#endif
-
-#ifndef M_PI
-#define M_PI 3.14159265
-#endif
-
-#define heightMnt 450
-#define lenghtXmnt 62
-#define lenghtYmnt 62
-
-#define stepXmnt 96.0
-#define stepYmnt 96.0
-
-#define WIDTH 640
-#define HEIGHT 480
-
-static GLint T0 = 0;
-static GLint Frames = 0;
-
-#define TSCALE 4
-
-#define FOV 85
-
-static GLfloat terrain[256 * 256];
-static GLfloat terraincolor[256 * 256][3];
-
-static int win = 0;
-
-static int fog = 1;
-static int bfcull = 1;
-static int usetex = 1;
-static int poutline = 0;
-static int help = 1;
-static int joyavailable = 0;
-static int joyactive = 0;
-static float ModZMnt;
-static long GlobalMnt = 0;
-
-static int scrwidth = WIDTH;
-static int scrheight = HEIGHT;
-
-#define OBSSTARTX 992.0
-#define OBSSTARTY 103.0
-
-static float obs[3] = { OBSSTARTX, heightMnt * 1.3, OBSSTARTY };
-static float dir[3], v1[2], v2[2];
-static float v = 900.0;
-static float alpha = 75.0;
-static float beta = 90.0;
-
-static void
-calcposobs(void)
-{
- float alpha1, alpha2;
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
-
- dir[0] = sin(alpha * M_PI / 180.0);
- dir[2] = cos(alpha * M_PI / 180.0) * sin(beta * M_PI / 180.0);
- dir[1] = cos(beta * M_PI / 180.0);
-
- if (dir[0] < 1.0e-5 && dir[0] > -1.0e-5)
- dir[0] = 0;
- if (dir[1] < 1.0e-5 && dir[1] > -1.0e-5)
- dir[1] = 0;
- if (dir[2] < 1.0e-5 && dir[2] > -1.0e-5)
- dir[2] = 0;
-
- alpha1 = alpha + FOV / 2.0;
- v1[0] = sin(alpha1 * M_PI / 180.0);
- v1[1] = cos(alpha1 * M_PI / 180.0);
-
- alpha2 = alpha - FOV / 2.0;
- v2[0] = sin(alpha2 * M_PI / 180.0);
- v2[1] = cos(alpha2 * M_PI / 180.0);
-
- obs[0] += v * dir[0] * dt;
- obs[1] += v * dir[1] * dt;
- obs[2] += v * dir[2] * dt;
-
- if (obs[1] < 0.0)
- obs[1] = 0.0;
-}
-
-static void
-reshape(int width, int height)
-{
- scrwidth = width;
- scrheight = height;
- glViewport(0, 0, (GLint) width, (GLint) height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(50.0, ((GLfloat) width / (GLfloat) height),
- lenghtXmnt * stepYmnt * 0.01, lenghtXmnt * stepYmnt * 0.7);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-}
-
-static int
-clipstrip(float y, float *start, float *end)
-{
- float x1, x2, t1, t2, tmp;
-
- if (v1[1] == 0.0) {
- t1 = 0.0;
- x1 = -HUGE_VAL;
- }
- else {
- t1 = y / v1[1];
- x1 = t1 * v1[0];
- }
-
- if (v2[1] == 0.0) {
- t2 = 0.0;
- x2 = HUGE_VAL;
- }
- else {
- t2 = y / v2[1];
- x2 = t2 * v2[0];
- }
-
- if (((x1 < -(lenghtXmnt * stepXmnt) / 2) && (t2 <= 0.0)) ||
- ((t1 <= 0.0) && (x2 > (lenghtXmnt * stepXmnt) / 2)) ||
- ((t1 < 0.0) && (t2 < 0.0)))
- return 0;
-
- if ((t1 == 0.0) && (t2 == 0.0)) {
- if ((v1[0] < 0.0) && (v1[1] > 0.0) && (v2[0] < 0.0) && (v2[1] < 0.0)) {
- *start = -(lenghtXmnt * stepXmnt) / 2;
- *end = stepXmnt;
- return 1;
- }
- else {
- if ((v1[0] > 0.0) && (v1[1] < 0.0) && (v2[0] > 0.0) && (v2[1] > 0.0)) {
- *start = -stepXmnt;
- *end = (lenghtXmnt * stepXmnt) / 2;
- return 1;
- }
- else
- return 0;
- }
- }
- else {
- if (t2 < 0.0) {
- if (x1 < 0.0)
- x2 = -(lenghtXmnt * stepXmnt) / 2;
- else
- x2 = (lenghtXmnt * stepXmnt) / 2;
- }
-
- if (t1 < 0.0) {
- if (x2 < 0.0)
- x1 = -(lenghtXmnt * stepXmnt) / 2;
- else
- x1 = (lenghtXmnt * stepXmnt) / 2;
- }
- }
-
- if (x1 > x2) {
- tmp = x1;
- x1 = x2;
- x2 = tmp;
- }
-
- x1 -= stepXmnt;
- if (x1 < -(lenghtXmnt * stepXmnt) / 2)
- x1 = -(lenghtXmnt * stepXmnt) / 2;
-
- x2 += stepXmnt;
- if (x2 > (lenghtXmnt * stepXmnt) / 2)
- x2 = (lenghtXmnt * stepXmnt) / 2;
-
- *start = ((int) (x1 / stepXmnt)) * stepXmnt;
- *end = ((int) (x2 / stepXmnt)) * stepXmnt;
-
- return 1;
-}
-
-static void
-printstring(void *font, char *string)
-{
- int len, i;
-
- len = (int) strlen(string);
- for (i = 0; i < len; i++)
- glutBitmapCharacter(font, string[i]);
-}
-
-static void
-printhelp(void)
-{
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glColor4f(0.0, 0.0, 0.0, 0.5);
- glRecti(40, 40, 600, 440);
- glDisable(GL_BLEND);
-
- glColor3f(1.0, 0.0, 0.0);
- glRasterPos2i(300, 420);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Help");
-
- glRasterPos2i(60, 390);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "h - Toggle Help");
- glRasterPos2i(60, 360);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "t - Toggle Textures");
- glRasterPos2i(60, 330);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "f - Toggle Fog");
- glRasterPos2i(60, 300);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "p - Wire frame");
- glRasterPos2i(60, 270);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "b - Toggle Back face culling");
- glRasterPos2i(60, 240);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Arrow Keys - Rotate");
- glRasterPos2i(60, 210);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "a - Increase velocity");
- glRasterPos2i(60, 180);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "z - Decrease velocity");
-
- glRasterPos2i(60, 150);
- if (joyavailable)
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,
- "j - Toggle jostick control (Joystick control available)");
- else
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,
- "(No Joystick control available)");
-}
-
-static void
-drawterrain(void)
-{
- int h, i, idx, ox, oy;
- float j, k, start, end;
-
- ox = (int) (obs[0] / stepXmnt);
- oy = (int) (obs[2] / stepYmnt);
- GlobalMnt = ((ox * TSCALE) & 255) + ((oy * TSCALE) & 255) * 256;
-
- glPushMatrix();
- glTranslatef((float) ox * stepXmnt, 0, (float) oy * stepYmnt);
-
- for (h = 0, k = -(lenghtYmnt * stepYmnt) / 2; h < lenghtYmnt;
- k += stepYmnt, h++) {
- if (!clipstrip(k, &start, &end))
- continue;
-
- glBegin(GL_TRIANGLE_STRIP); /* I hope that the optimizer will be able to improve this code */
- for (i = (int) (lenghtXmnt / 2 + start / stepXmnt), j = start; j <= end;
- j += stepXmnt, i++) {
- idx = (i * TSCALE + h * 256 * TSCALE + GlobalMnt) & 65535;
- glColor3fv(terraincolor[idx]);
- glTexCoord2f((ox + i) / 8.0, (oy + h) / 8.0);
- glVertex3f(j, terrain[idx], k);
-
- idx =
- (i * TSCALE + h * 256 * TSCALE + 256 * TSCALE +
- GlobalMnt) & 65535;
- glColor3fv(terraincolor[idx]);
- glTexCoord2f((ox + i) / 8.0, (oy + h + 1) / 8.0);
- glVertex3f(j, terrain[idx], k + stepYmnt);
- }
- glEnd();
- }
-
- glDisable(GL_CULL_FACE);
- glDisable(GL_TEXTURE_2D);
- glEnable(GL_BLEND);
- glBegin(GL_QUADS);
- glColor4f(0.1, 0.7, 1.0, 0.4);
- glVertex3f(-(lenghtXmnt * stepXmnt) / 2.0, heightMnt * 0.6,
- -(lenghtYmnt * stepYmnt) / 2.0);
- glVertex3f(-(lenghtXmnt * stepXmnt) / 2.0, heightMnt * 0.6,
- (lenghtYmnt * stepYmnt) / 2.0);
- glVertex3f((lenghtXmnt * stepXmnt) / 2.0, heightMnt * 0.6,
- (lenghtYmnt * stepYmnt) / 2.0);
- glVertex3f((lenghtXmnt * stepXmnt) / 2.0, heightMnt * 0.6,
- -(lenghtYmnt * stepYmnt) / 2.0);
- glEnd();
- glDisable(GL_BLEND);
- if (bfcull)
- glEnable(GL_CULL_FACE);
- glEnable(GL_TEXTURE_2D);
-
- glPopMatrix();
-
-}
-
-static void
-dojoy(void)
-{
-#ifdef WIN32
- static UINT max[2] = { 0, 0 };
- static UINT min[2] = { 0xffffffff, 0xffffffff }, center[2];
- MMRESULT res;
- JOYINFO joy;
-
- res = joyGetPos(JOYSTICKID1, &joy);
-
- if (res == JOYERR_NOERROR) {
- joyavailable = 1;
-
- if (max[0] < joy.wXpos)
- max[0] = joy.wXpos;
- if (min[0] > joy.wXpos)
- min[0] = joy.wXpos;
- center[0] = (max[0] + min[0]) / 2;
-
- if (max[1] < joy.wYpos)
- max[1] = joy.wYpos;
- if (min[1] > joy.wYpos)
- min[1] = joy.wYpos;
- center[1] = (max[1] + min[1]) / 2;
-
- if (joyactive) {
- if (fabs(center[0] - (float) joy.wXpos) > 0.1 * (max[0] - min[0]))
- alpha +=
- 2.5 * (center[0] - (float) joy.wXpos) / (max[0] - min[0]);
- if (fabs(center[1] - (float) joy.wYpos) > 0.1 * (max[1] - min[1]))
- beta += 2.5 * (center[1] - (float) joy.wYpos) / (max[1] - min[1]);
-
- if (joy.wButtons & JOY_BUTTON1)
- v += 0.5;
- if (joy.wButtons & JOY_BUTTON2)
- v -= 0.5;
- }
- }
- else
- joyavailable = 0;
-#endif
-}
-
-static void
-drawscene(void)
-{
- static char frbuf[80] = "";
-
- dojoy();
-
- glShadeModel(GL_SMOOTH);
- glEnable(GL_DEPTH_TEST);
-
- if (usetex)
- glEnable(GL_TEXTURE_2D);
- else
- glDisable(GL_TEXTURE_2D);
-
- if (fog)
- glEnable(GL_FOG);
- else
- glDisable(GL_FOG);
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glPushMatrix();
-
- calcposobs();
- gluLookAt(obs[0], obs[1], obs[2],
- obs[0] + dir[0], obs[1] + dir[1], obs[2] + dir[2],
- 0.0, 1.0, 0.0);
-
- drawterrain();
- glPopMatrix();
-
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_DEPTH_TEST);
- glDisable(GL_FOG);
- glShadeModel(GL_FLAT);
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glOrtho(-0.5, 639.5, -0.5, 479.5, -1.0, 1.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- glColor3f(1.0, 0.0, 0.0);
- glRasterPos2i(10, 10);
- printstring(GLUT_BITMAP_HELVETICA_18, frbuf);
- glRasterPos2i(350, 470);
- printstring(GLUT_BITMAP_HELVETICA_10,
- "Terrain V1.2 Written by David Bucciarelli (tech.hmw@plus.it)");
- glRasterPos2i(434, 457);
- printstring(GLUT_BITMAP_HELVETICA_10,
- "Based on a Mickael's demo (Skizo@Hol.Fr)");
-
- if (help)
- printhelp();
-
- reshape(scrwidth, scrheight);
-
- glutSwapBuffers();
-
- Frames++;
- {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- if (t - T0 >= 2000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- sprintf(frbuf, "Frame rate: %f", fps);
- T0 = t;
- Frames = 0;
- }
- }
-}
-
-static void
-key(unsigned char k, int x, int y)
-{
- switch (k) {
- case 27:
- exit(0);
- break;
- case 'a':
- v += 50.;
- break;
- case 'z':
- v -= 50.;
- break;
- case 'p':
- if (poutline) {
- glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
- poutline = 0;
- }
- else {
- glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
- poutline = 1;
- }
- break;
- case 'j':
- joyactive = (!joyactive);
- break;
- case 'h':
- help = (!help);
- break;
- case 'f':
- fog = (!fog);
- break;
- case 't':
- usetex = (!usetex);
- break;
- case 'b':
- if (bfcull) {
- glDisable(GL_CULL_FACE);
- bfcull = 0;
- }
- else {
- glEnable(GL_CULL_FACE);
- bfcull = 1;
- }
- break;
-#ifdef XMESA
- case ' ':
- XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW);
- fullscreen = (!fullscreen);
- break;
-#endif
- }
-}
-
-static void
-special(int k, int x, int y)
-{
- switch (k) {
- case GLUT_KEY_LEFT:
- alpha += 2.0;
- break;
- case GLUT_KEY_RIGHT:
- alpha -= 2.0;
- break;
- case GLUT_KEY_DOWN:
- beta -= 2.0;
- break;
- case GLUT_KEY_UP:
- beta += 2.0;
- break;
- }
-}
-
-static void
-calccolor(GLfloat height, GLfloat c[3])
-{
- GLfloat color[4][3] = {
- {1.0, 1.0, 1.0},
- {0.0, 0.8, 0.0},
- {1.0, 1.0, 0.3},
- {0.0, 0.0, 0.8}
- };
- GLfloat fact;
-
- height = height * (1.0 / 255.0);
-
- if (height >= 0.9) {
- c[0] = color[0][0];
- c[1] = color[0][1];
- c[2] = color[0][2];
- return;
- }
-
- if ((height < 0.9) && (height >= 0.7)) {
- fact = (height - 0.7) * 5.0;
- c[0] = fact * color[0][0] + (1.0 - fact) * color[1][0];
- c[1] = fact * color[0][1] + (1.0 - fact) * color[1][1];
- c[2] = fact * color[0][2] + (1.0 - fact) * color[1][2];
- return;
- }
-
- if ((height < 0.7) && (height >= 0.6)) {
- fact = (height - 0.6) * 10.0;
- c[0] = fact * color[1][0] + (1.0 - fact) * color[2][0];
- c[1] = fact * color[1][1] + (1.0 - fact) * color[2][1];
- c[2] = fact * color[1][2] + (1.0 - fact) * color[2][2];
- return;
- }
-
- if ((height < 0.6) && (height >= 0.5)) {
- fact = (height - 0.5) * 10.0;
- c[0] = fact * color[2][0] + (1.0 - fact) * color[3][0];
- c[1] = fact * color[2][1] + (1.0 - fact) * color[3][1];
- c[2] = fact * color[2][2] + (1.0 - fact) * color[3][2];
- return;
- }
-
- c[0] = color[3][0];
- c[1] = color[3][1];
- c[2] = color[3][2];
-}
-
-static void
-loadpic(void)
-{
- GLubyte bufferter[256 * 256], terrainpic[256 * 256];
- FILE *FilePic;
- int i, tmp;
- GLenum gluerr;
- size_t result;
-
- if ((FilePic = fopen("terrain.dat", "r")) == NULL) {
- fprintf(stderr, "Error loading terrain.dat\n");
- exit(-1);
- }
- result = fread(bufferter, 256 * 256, 1, FilePic);
- assert(result == 1);
- fclose(FilePic);
-
- for (i = 0; i < (256 * 256); i++) {
- terrain[i] = (bufferter[i] * (heightMnt / 255.0f));
- calccolor((GLfloat) bufferter[i], terraincolor[i]);
- tmp = (((int) bufferter[i]) + 96);
- terrainpic[i] = (tmp > 255) ? 255 : tmp;
- }
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- if ((gluerr = gluBuild2DMipmaps(GL_TEXTURE_2D, 1, 256, 256, GL_LUMINANCE,
- GL_UNSIGNED_BYTE,
- (GLvoid *) (&terrainpic[0])))) {
- fprintf(stderr, "GLULib%s\n", (char *) gluErrorString(gluerr));
- exit(-1);
- }
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
- glEnable(GL_TEXTURE_2D);
-}
-
-static void
-init(void)
-{
- float fogcolor[4] = { 0.6, 0.7, 0.7, 1.0 };
-
- glClearColor(fogcolor[0], fogcolor[1], fogcolor[2], fogcolor[3]);
- glClearDepth(1.0);
- glDepthFunc(GL_LEQUAL);
- glShadeModel(GL_SMOOTH);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_CULL_FACE);
-
- glDisable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
- glEnable(GL_FOG);
- glFogi(GL_FOG_MODE, GL_EXP2);
- glFogfv(GL_FOG_COLOR, fogcolor);
- glFogf(GL_FOG_DENSITY, 0.0007);
-#ifdef FX
- glHint(GL_FOG_HINT, GL_NICEST);
-#endif
-
- reshape(scrwidth, scrheight);
-}
-
-
-int
-main(int ac, char **av)
-{
- glutInitWindowSize(WIDTH, HEIGHT);
- glutInit(&ac, av);
-
- glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
-
- if (!(win = glutCreateWindow("Terrain"))) {
- fprintf(stderr, "Error, couldn't open window\n");
- return -1;
- }
-
- ModZMnt = 0.0f;
- loadpic();
-
- init();
-
-#ifndef FX
- glDisable(GL_TEXTURE_2D);
- usetex = 0;
-#endif
-
- glutReshapeFunc(reshape);
- glutDisplayFunc(drawscene);
- glutKeyboardFunc(key);
- glutSpecialFunc(special);
- glutIdleFunc(drawscene);
-
- glutMainLoop();
-
- return 0;
-}
diff --git a/progs/demos/terrain.dat b/progs/demos/terrain.dat
deleted file mode 100644
index 2af385e9c2..0000000000
--- a/progs/demos/terrain.dat
+++ /dev/null
@@ -1 +0,0 @@
-ÿ¾¾¿Ŀÿ¾¾¾¿Ŀ¾½¿¾ÿ¾žüǿ¼ĽžſþĿ½¾¾ÿĿ¿žÿ½½½üžþ0 \ No newline at end of file
diff --git a/progs/demos/tessdemo.c b/progs/demos/tessdemo.c
deleted file mode 100644
index 8b988e36c1..0000000000
--- a/progs/demos/tessdemo.c
+++ /dev/null
@@ -1,523 +0,0 @@
-
-/*
- * A demo of the GLU polygon tesselation functions written by Bogdan Sikorski.
- * Updated for GLU 1.3 tessellation by Gareth Hughes <gareth@valinux.com>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <GL/glut.h>
-
-#define MAX_POINTS 256
-#define MAX_CONTOURS 32
-#define MAX_TRIANGLES 256
-
-#ifndef GLCALLBACK
-#ifdef CALLBACK
-#define GLCALLBACK CALLBACK
-#else
-#define GLCALLBACK
-#endif
-#endif
-
-#ifdef GLU_VERSION_1_2
-
-typedef enum{ QUIT, TESSELATE, CLEAR } menu_entries;
-typedef enum{ DEFINE, TESSELATED } mode_type;
-
-static GLsizei width, height;
-static GLuint contour_cnt;
-static GLuint triangle_cnt;
-
-static mode_type mode;
-static int menu;
-
-static GLuint list_start;
-
-static GLfloat edge_color[3];
-
-static struct {
- GLfloat p[MAX_POINTS][2];
- GLuint point_cnt;
-} contours[MAX_CONTOURS];
-
-static struct {
- GLsizei no;
- GLfloat p[3][2];
- GLclampf color[3][3];
-} triangles[MAX_TRIANGLES];
-
-
-
-static void GLCALLBACK error_callback( GLenum err )
-{
- int len, i;
- char const *str;
-
- glColor3f( 0.9, 0.9, 0.9 );
- glRasterPos2i( 5, 5 );
-
- str = (const char *) gluErrorString( err );
- len = strlen( str );
-
- for ( i = 0 ; i < len ; i++ ) {
- glutBitmapCharacter( GLUT_BITMAP_9_BY_15, str[i] );
- }
-}
-
-static void GLCALLBACK begin_callback( GLenum mode )
-{
- /* Allow multiple triangles to be output inside the begin/end pair. */
- triangle_cnt = 0;
- triangles[triangle_cnt].no = 0;
-}
-
-static void GLCALLBACK edge_callback( GLenum flag )
-{
- /* Persist the edge flag across triangles. */
- if ( flag == GL_TRUE ) {
- edge_color[0] = 1.0;
- edge_color[1] = 1.0;
- edge_color[2] = 0.5;
- } else {
- edge_color[0] = 1.0;
- edge_color[1] = 0.0;
- edge_color[2] = 0.0;
- }
-}
-
-static void GLCALLBACK end_callback()
-{
- GLuint i;
-
- glBegin( GL_LINES );
-
- /* Output the three edges of each triangle as lines colored
- according to their edge flag. */
- for ( i = 0 ; i < triangle_cnt ; i++ ) {
- glColor3f( triangles[i].color[0][0],
- triangles[i].color[0][1],
- triangles[i].color[0][2] );
-
- glVertex2f( triangles[i].p[0][0], triangles[i].p[0][1] );
- glVertex2f( triangles[i].p[1][0], triangles[i].p[1][1] );
-
- glColor3f( triangles[i].color[1][0],
- triangles[i].color[1][1],
- triangles[i].color[1][2] );
-
- glVertex2f( triangles[i].p[1][0], triangles[i].p[1][1] );
- glVertex2f( triangles[i].p[2][0], triangles[i].p[2][1] );
-
- glColor3f( triangles[i].color[2][0],
- triangles[i].color[2][1],
- triangles[i].color[2][2] );
-
- glVertex2f( triangles[i].p[2][0], triangles[i].p[2][1] );
- glVertex2f( triangles[i].p[0][0], triangles[i].p[0][1] );
- }
-
- glEnd();
-}
-
-static void GLCALLBACK vertex_callback( void *data )
-{
- GLsizei no;
- GLfloat *p;
-
- p = (GLfloat *) data;
- no = triangles[triangle_cnt].no;
-
- triangles[triangle_cnt].p[no][0] = p[0];
- triangles[triangle_cnt].p[no][1] = p[1];
-
- triangles[triangle_cnt].color[no][0] = edge_color[0];
- triangles[triangle_cnt].color[no][1] = edge_color[1];
- triangles[triangle_cnt].color[no][2] = edge_color[2];
-
- /* After every three vertices, initialize the next triangle. */
- if ( ++(triangles[triangle_cnt].no) == 3 ) {
- triangle_cnt++;
- triangles[triangle_cnt].no = 0;
- }
-}
-
-static void GLCALLBACK combine_callback( GLdouble coords[3],
- GLdouble *vertex_data[4],
- GLfloat weight[4], void **data )
-{
- GLfloat *vertex;
-
- vertex = (GLfloat *) malloc( 2 * sizeof(GLfloat) );
-
- vertex[0] = (GLfloat) coords[0];
- vertex[1] = (GLfloat) coords[1];
-
- *data = vertex;
-}
-
-
-static void set_screen_wh( GLsizei w, GLsizei h )
-{
- width = w;
- height = h;
-}
-
-typedef void (GLAPIENTRY *callback_t)();
-
-static void tesse( void )
-{
- GLUtesselator *tobj;
- GLdouble data[3];
- GLuint i, j, point_cnt;
-
- list_start = glGenLists( 2 );
-
- tobj = gluNewTess();
-
- if ( tobj != NULL ) {
- gluTessNormal( tobj, 0.0, 0.0, 1.0 );
- gluTessCallback( tobj, GLU_TESS_BEGIN, (callback_t) glBegin );
- gluTessCallback( tobj, GLU_TESS_VERTEX, (callback_t) glVertex2fv );
- gluTessCallback( tobj, GLU_TESS_END, (callback_t) glEnd );
- gluTessCallback( tobj, GLU_TESS_ERROR, (callback_t) error_callback );
- gluTessCallback( tobj, GLU_TESS_COMBINE, (callback_t) combine_callback );
-
- glNewList( list_start, GL_COMPILE );
- gluBeginPolygon( tobj );
-
- for ( j = 0 ; j <= contour_cnt ; j++ ) {
- point_cnt = contours[j].point_cnt;
- gluNextContour( tobj, GLU_UNKNOWN );
-
- for ( i = 0 ; i < point_cnt ; i++ ) {
- data[0] = (GLdouble)( contours[j].p[i][0] );
- data[1] = (GLdouble)( contours[j].p[i][1] );
- data[2] = 0.0;
- gluTessVertex( tobj, data, contours[j].p[i] );
- }
- }
-
- gluEndPolygon( tobj );
- glEndList();
-
- gluTessCallback( tobj, GLU_TESS_BEGIN, (callback_t) begin_callback );
- gluTessCallback( tobj, GLU_TESS_VERTEX, (callback_t) vertex_callback );
- gluTessCallback( tobj, GLU_TESS_END, (callback_t) end_callback );
- gluTessCallback( tobj, GLU_TESS_EDGE_FLAG, (callback_t) edge_callback );
-
- glNewList( list_start + 1, GL_COMPILE );
- gluBeginPolygon( tobj );
-
- for ( j = 0 ; j <= contour_cnt ; j++ ) {
- point_cnt = contours[j].point_cnt;
- gluNextContour( tobj, GLU_UNKNOWN );
-
- for ( i = 0 ; i < point_cnt ; i++ ) {
- data[0] = (GLdouble)( contours[j].p[i][0] );
- data[1] = (GLdouble)( contours[j].p[i][1] );
- data[2] = 0.0;
- gluTessVertex( tobj, data, contours[j].p[i] );
- }
- }
-
- gluEndPolygon( tobj );
- glEndList();
-
- gluDeleteTess( tobj );
-
- glutMouseFunc( NULL );
- mode = TESSELATED;
- }
-}
-
-static void left_down( int x1, int y1 )
-{
- GLfloat P[2];
- GLuint point_cnt;
-
- /* translate GLUT into GL coordinates */
-
- P[0] = x1;
- P[1] = height - y1;
-
- point_cnt = contours[contour_cnt].point_cnt;
-
- contours[contour_cnt].p[point_cnt][0] = P[0];
- contours[contour_cnt].p[point_cnt][1] = P[1];
-
- glBegin( GL_LINES );
-
- if ( point_cnt ) {
- glVertex2fv( contours[contour_cnt].p[point_cnt-1] );
- glVertex2fv( P );
- } else {
- glVertex2fv( P );
- glVertex2fv( P );
- }
-
- glEnd();
- glFinish();
-
- contours[contour_cnt].point_cnt++;
-}
-
-static void middle_down( int x1, int y1 )
-{
- GLuint point_cnt;
- (void) x1;
- (void) y1;
-
- point_cnt = contours[contour_cnt].point_cnt;
-
- if ( point_cnt > 2 ) {
- glBegin( GL_LINES );
-
- glVertex2fv( contours[contour_cnt].p[0] );
- glVertex2fv( contours[contour_cnt].p[point_cnt-1] );
-
- contours[contour_cnt].p[point_cnt][0] = -1;
-
- glEnd();
- glFinish();
-
- contour_cnt++;
- contours[contour_cnt].point_cnt = 0;
- }
-}
-
-static void mouse_clicked( int button, int state, int x, int y )
-{
- x -= x%10;
- y -= y%10;
-
- switch ( button ) {
- case GLUT_LEFT_BUTTON:
- if ( state == GLUT_DOWN ) {
- left_down( x, y );
- }
- break;
- case GLUT_MIDDLE_BUTTON:
- if ( state == GLUT_DOWN ) {
- middle_down( x, y );
- }
- break;
- }
-}
-
-static void display( void )
-{
- GLuint i,j;
- GLsizei ii, jj;
- GLuint point_cnt;
-
- glClear( GL_COLOR_BUFFER_BIT );
-
- switch ( mode ) {
- case DEFINE:
- /* draw grid */
- glColor3f( 0.6, 0.5, 0.5 );
-
- glBegin( GL_LINES );
-
- for ( ii = 0 ; ii < width ; ii += 10 ) {
- for ( jj = 0 ; jj < height ; jj += 10 ) {
- glVertex2i( 0, jj );
- glVertex2i( width, jj );
- glVertex2i( ii, height );
- glVertex2i( ii, 0 );
- }
- }
-
- glEnd();
-
- glColor3f( 1.0, 1.0, 0.0 );
-
- for ( i = 0 ; i <= contour_cnt ; i++ ) {
- point_cnt = contours[i].point_cnt;
-
- glBegin( GL_LINES );
-
- switch ( point_cnt ) {
- case 0:
- break;
- case 1:
- glVertex2fv( contours[i].p[0] );
- glVertex2fv( contours[i].p[0] );
- break;
- case 2:
- glVertex2fv( contours[i].p[0] );
- glVertex2fv( contours[i].p[1] );
- break;
- default:
- --point_cnt;
- for ( j = 0 ; j < point_cnt ; j++ ) {
- glVertex2fv( contours[i].p[j] );
- glVertex2fv( contours[i].p[j+1] );
- }
- if ( contours[i].p[j+1][0] == -1 ) {
- glVertex2fv( contours[i].p[0] );
- glVertex2fv( contours[i].p[j] );
- }
- break;
- }
-
- glEnd();
- }
-
- glFinish();
- break;
-
- case TESSELATED:
- /* draw triangles */
- glColor3f( 0.7, 0.7, 0.0 );
- glCallList( list_start );
-
- glLineWidth( 2.0 );
- glCallList( list_start + 1 );
- glLineWidth( 1.0 );
-
- glFlush();
- break;
- }
-
- glColor3f( 1.0, 1.0, 0.0 );
-}
-
-static void clear( void )
-{
- contour_cnt = 0;
- contours[0].point_cnt = 0;
- triangle_cnt = 0;
-
- glutMouseFunc( mouse_clicked );
-
- mode = DEFINE;
-
- glDeleteLists( list_start, 2 );
- list_start = 0;
-}
-
-static void quit( void )
-{
- exit( 0 );
-}
-
-static void menu_selected( int entry )
-{
- switch ( entry ) {
- case CLEAR:
- clear();
- break;
- case TESSELATE:
- tesse();
- break;
- case QUIT:
- quit();
- break;
- }
-
- glutPostRedisplay();
-}
-
-static void key_pressed( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
-
- switch ( key ) {
- case 'c':
- case 'C':
- clear();
- break;
- case 't':
- case 'T':
- tesse();
- break;
- case 27:
- case 'q':
- case 'Q':
- quit();
- break;
- }
-
- glutPostRedisplay();
-}
-
-static void myinit( void )
-{
- /* clear background to gray */
- glClearColor( 0.4, 0.4, 0.4, 0.0 );
- glShadeModel( GL_FLAT );
- glPolygonMode( GL_FRONT, GL_FILL );
-
- menu = glutCreateMenu( menu_selected );
-
- glutAddMenuEntry( "clear", CLEAR );
- glutAddMenuEntry( "tesselate", TESSELATE );
- glutAddMenuEntry( "quit", QUIT );
-
- glutAttachMenu( GLUT_RIGHT_BUTTON );
-
- glutMouseFunc( mouse_clicked );
- glutKeyboardFunc( key_pressed );
-
- contour_cnt = 0;
- mode = DEFINE;
-}
-
-static void reshape( GLsizei w, GLsizei h )
-{
- glViewport( 0, 0, w, h );
-
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glOrtho( 0.0, (GLdouble)w, 0.0, (GLdouble)h, -1.0, 1.0 );
-
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
-
- set_screen_wh( w, h );
-}
-
-#endif
-
-
-static void usage( void )
-{
- printf( "Use left mouse button to place vertices.\n" );
- printf( "Press middle mouse button when done.\n" );
- printf( "Select tesselate from the pop-up menu.\n" );
-}
-
-
-int main( int argc, char **argv )
-{
- const char *version = (const char *) gluGetString( GLU_VERSION );
- printf( "GLU version string: %s\n", version );
- if ( strstr( version, "1.0" ) || strstr( version, "1.1" ) ) {
- fprintf( stderr, "Sorry, this demo reqiures GLU 1.2 or later.\n" );
- exit( 1 );
- }
-
- usage();
-
- glutInitWindowSize( 400, 400 );
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );
- glutCreateWindow( argv[0] );
-
- /* GH: Bit of a hack...
- */
-#ifdef GLU_VERSION_1_2
- myinit();
-
- glutDisplayFunc( display );
- glutReshapeFunc( reshape );
-
- glutMainLoop();
-#endif
-
- return 0;
-}
diff --git a/progs/demos/texcyl.c b/progs/demos/texcyl.c
deleted file mode 100644
index 4df97ec4f5..0000000000
--- a/progs/demos/texcyl.c
+++ /dev/null
@@ -1,290 +0,0 @@
-
-/*
- * Textured cylinder demo: lighting, texturing, reflection mapping.
- *
- * Command line options:
- * -info print GL implementation information
- *
- *
- * Brian Paul May 1997 This program is in the public domain.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-#include <GL/glut.h>
-
-#include "readtex.h"
-
-#define TEXTURE_FILE "../images/reflect.rgb"
-
-#define LIT 1
-#define TEXTURED 2
-#define REFLECT 3
-#define ANIMATE 10
-#define POINT_FILTER 20
-#define LINEAR_FILTER 21
-#define QUIT 100
-
-static GLint Win = -1;
-
-static GLuint CylinderObj = 0;
-static GLboolean Animate = GL_TRUE;
-
-static GLfloat Xrot = 0.0, Yrot = 0.0, Zrot = 0.0;
-static GLfloat DXrot = 50.0, DYrot = 125.0;
-
-/* performance info */
-static GLint T0 = 0;
-static GLint Frames = 0;
-
-
-static void Idle( void )
-{
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
-
- if (Animate) {
- Xrot += DXrot * dt;
- Yrot += DYrot * dt;
- glutPostRedisplay();
- }
-}
-
-
-static void Display( void )
-{
- glClear( GL_COLOR_BUFFER_BIT );
-
- glPushMatrix();
- glRotatef(Xrot, 1.0, 0.0, 0.0);
- glRotatef(Yrot, 0.0, 1.0, 0.0);
- glRotatef(Zrot, 0.0, 0.0, 1.0);
- glScalef(5.0, 5.0, 5.0);
- glCallList(CylinderObj);
-
- glPopMatrix();
-
- glutSwapBuffers();
-
- if (Animate) {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- Frames++;
- if (t - T0 >= 5000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- printf("%d frames in %g seconds = %g FPS\n", Frames, seconds, fps);
- fflush(stdout);
- T0 = t;
- Frames = 0;
- }
- }
-}
-
-
-static void Reshape( int width, int height )
-{
- glViewport( 0, 0, width, height );
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glFrustum( -1.0, 1.0, -1.0, 1.0, 10.0, 100.0 );
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
- glTranslatef( 0.0, 0.0, -70.0 );
-}
-
-
-static void SetMode(GLuint m)
-{
- /* disable everything */
- glDisable(GL_LIGHTING);
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
-
- /* enable what's needed */
- if (m==LIT) {
- glEnable(GL_LIGHTING);
- }
- else if (m==TEXTURED) {
- glEnable(GL_TEXTURE_2D);
- }
- else if (m==REFLECT) {
- glEnable(GL_TEXTURE_2D);
- glEnable(GL_TEXTURE_GEN_S);
- glEnable(GL_TEXTURE_GEN_T);
- }
-}
-
-
-static void ModeMenu(int entry)
-{
- if (entry==ANIMATE) {
- Animate = !Animate;
- if (Animate)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- }
- else if (entry==POINT_FILTER) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- }
- else if (entry==LINEAR_FILTER) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- }
- else if (entry==QUIT) {
- exit(0);
- }
- else {
- SetMode(entry);
- }
- glutPostRedisplay();
-}
-
-
-static void Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case ' ':
- Animate = !Animate;
- if (Animate)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- break;
- case 27:
- glutDestroyWindow(Win);
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void SpecialKey( int key, int x, int y )
-{
- float step = 3.0;
- (void) x;
- (void) y;
-
- switch (key) {
- case GLUT_KEY_UP:
- Xrot += step;
- break;
- case GLUT_KEY_DOWN:
- Xrot -= step;
- break;
- case GLUT_KEY_LEFT:
- Yrot += step;
- break;
- case GLUT_KEY_RIGHT:
- Yrot -= step;
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void Init( int argc, char *argv[] )
-{
- GLUquadricObj *q = gluNewQuadric();
- CylinderObj = glGenLists(1);
- glNewList(CylinderObj, GL_COMPILE);
-
- glTranslatef(0.0, 0.0, -1.0);
-
- /* cylinder */
- gluQuadricNormals(q, GL_SMOOTH);
- gluQuadricTexture(q, GL_TRUE);
- gluCylinder(q, 0.6, 0.6, 2.0, 24, 1);
-
- /* end cap */
- glTranslatef(0.0, 0.0, 2.0);
- gluDisk(q, 0.0, 0.6, 24, 1);
-
- /* other end cap */
- glTranslatef(0.0, 0.0, -2.0);
- gluQuadricOrientation(q, GLU_INSIDE);
- gluDisk(q, 0.0, 0.6, 24, 1);
-
- glEndList();
- gluDeleteQuadric(q);
-
- /* lighting */
- glEnable(GL_LIGHTING);
- {
- GLfloat gray[4] = {0.2, 0.2, 0.2, 1.0};
- GLfloat white[4] = {1.0, 1.0, 1.0, 1.0};
- GLfloat teal[4] = { 0.0, 1.0, 0.8, 1.0 };
- glMaterialfv(GL_FRONT, GL_DIFFUSE, teal);
- glLightfv(GL_LIGHT0, GL_AMBIENT, gray);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, white);
- glEnable(GL_LIGHT0);
- }
-
- /* fitering = nearest, initially */
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
- glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
-
- glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
- glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
-
- if (!LoadRGBMipmaps(TEXTURE_FILE, GL_RGB)) {
- printf("Error: couldn't load texture image\n");
- exit(1);
- }
-
- glEnable(GL_CULL_FACE); /* don't need Z testing for convex objects */
-
- SetMode(LIT);
-
- if (argc > 1 && strcmp(argv[1], "-info")==0) {
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
- printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
- printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR));
- printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS));
- }
-}
-
-
-int main( int argc, char *argv[] )
-{
- glutInitWindowSize( 400, 400 );
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
-
- Win = glutCreateWindow(argv[0] );
-
- Init(argc, argv);
-
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutSpecialFunc( SpecialKey );
- glutDisplayFunc( Display );
- glutIdleFunc( Idle );
-
- glutCreateMenu(ModeMenu);
- glutAddMenuEntry("Lit", LIT);
- glutAddMenuEntry("Textured", TEXTURED);
- glutAddMenuEntry("Reflect", REFLECT);
- glutAddMenuEntry("Point Filtered", POINT_FILTER);
- glutAddMenuEntry("Linear Filtered", LINEAR_FILTER);
- glutAddMenuEntry("Toggle Animation", ANIMATE);
- glutAddMenuEntry("Quit", QUIT);
- glutAttachMenu(GLUT_RIGHT_BUTTON);
-
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/texenv.c b/progs/demos/texenv.c
deleted file mode 100644
index 260ca8718f..0000000000
--- a/progs/demos/texenv.c
+++ /dev/null
@@ -1,817 +0,0 @@
-
-/* Copyright (c) Mark J. Kilgard, 1994. */
-
-/**
- * (c) Copyright 1993, Silicon Graphics, Inc.
- * ALL RIGHTS RESERVED
- * Permission to use, copy, modify, and distribute this software for
- * any purpose and without fee is hereby granted, provided that the above
- * copyright notice appear in all copies and that both the copyright notice
- * and this permission notice appear in supporting documentation, and that
- * the name of Silicon Graphics, Inc. not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission.
- *
- * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
- * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
- * FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
- * GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
- * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
- * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
- * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
- * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC. HAS BEEN
- * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
- * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * US Government Users Restricted Rights
- * Use, duplication, or disclosure by the Government is subject to
- * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
- * (c)(1)(ii) of the Rights in Technical Data and Computer Software
- * clause at DFARS 252.227-7013 and/or in similar or successor
- * clauses in the FAR or the DOD or NASA FAR Supplement.
- * Unpublished-- rights reserved under the copyright laws of the
- * United States. Contractor/manufacturer is Silicon Graphics,
- * Inc., 2011 N. Shoreline Blvd., Mountain View, CA 94039-7311.
- *
- * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
- */
-
-/*
- * Demonstrates texture environment modes and internal image formats.
- */
-
-/*
- * Hacked on, updated by Gareth Hughes <gareth@valinux.com>
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <GL/glut.h>
-
-#undef max
-#undef min
-#define max( a, b ) ((a) >= (b) ? (a) : (b))
-#define min( a, b ) ((a) <= (b) ? (a) : (b))
-
-GLfloat lightCheck[4] = { 0.7, 0.7, 0.7, 1.0 };
-GLfloat darkCheck[4] = { 0.3, 0.3, 0.3, 1.0 };
-
-GLfloat labelColor0[4] = { 1.0, 1.0, 1.0, 1.0 };
-GLfloat labelColor1[4] = { 1.0, 1.0, 0.4, 1.0 };
-GLfloat *labelInfoColor = labelColor0;
-GLfloat labelLevelColor0[4] = { 0.8, 0.8, 0.1, 1.0 };
-GLfloat labelLevelColor1[4] = { 0.0, 0.0, 0.0, 1.0 };
-
-GLboolean doubleBuffered = GL_TRUE;
-GLboolean drawBackground = GL_FALSE;
-GLboolean drawBlended = GL_TRUE;
-GLboolean drawSmooth = GL_FALSE;
-GLboolean drawTextured = GL_TRUE;
-GLboolean displayLevelInfo = GL_FALSE;
-
-int textureWidth = 64;
-int textureHeight = 64;
-
-int winWidth = 580, winHeight = 720;
-static int Win;
-
-
-struct formatInfo {
- GLenum baseFormat;
- GLenum internalFormat;
- char *name;
-};
-
-#define NUM_LUMINANCE_FORMATS (sizeof(luminanceFormats) / sizeof(luminanceFormats[0]))
-struct formatInfo luminanceFormats[] =
-{
- { GL_LUMINANCE, GL_LUMINANCE, "LUMINANCE" },
- { GL_LUMINANCE, GL_LUMINANCE4, "LUMINANCE4" },
- { GL_LUMINANCE, GL_LUMINANCE8, "LUMINANCE8" },
- { GL_LUMINANCE, GL_LUMINANCE12, "LUMINANCE12" },
- { GL_LUMINANCE, GL_LUMINANCE16, "LUMINANCE16" },
-};
-
-#define NUM_ALPHA_FORMATS (sizeof(alphaFormats) / sizeof(alphaFormats[0]))
-struct formatInfo alphaFormats[] =
-{
- { GL_ALPHA, GL_ALPHA, "ALPHA" },
- { GL_ALPHA, GL_ALPHA4, "ALPHA4" },
- { GL_ALPHA, GL_ALPHA8, "ALPHA8" },
- { GL_ALPHA, GL_ALPHA12, "ALPHA12" },
- { GL_ALPHA, GL_ALPHA16, "ALPHA16" },
-};
-
-#define NUM_INTENSITY_FORMATS (sizeof(intensityFormats) / sizeof(intensityFormats[0]))
-struct formatInfo intensityFormats[] =
-{
- { GL_INTENSITY, GL_INTENSITY, "INTENSITY" },
- { GL_INTENSITY, GL_INTENSITY4, "INTENSITY4" },
- { GL_INTENSITY, GL_INTENSITY8, "INTENSITY8" },
- { GL_INTENSITY, GL_INTENSITY12, "INTENSITY12" },
- { GL_INTENSITY, GL_INTENSITY16, "INTENSITY16" },
-};
-
-#define NUM_LUMINANCE_ALPHA_FORMATS (sizeof(luminanceAlphaFormats) / sizeof(luminanceAlphaFormats[0]))
-struct formatInfo luminanceAlphaFormats[] =
-{
- { GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, "LUMINANCE_ALPHA" },
- { GL_LUMINANCE_ALPHA, GL_LUMINANCE4_ALPHA4, "LUMINANCE4_ALPHA4" },
- { GL_LUMINANCE_ALPHA, GL_LUMINANCE6_ALPHA2, "LUMINANCE6_ALPHA2" },
- { GL_LUMINANCE_ALPHA, GL_LUMINANCE8_ALPHA8, "LUMINANCE8_ALPHA8" },
- { GL_LUMINANCE_ALPHA, GL_LUMINANCE12_ALPHA4, "LUMINANCE12_ALPHA4" },
- { GL_LUMINANCE_ALPHA, GL_LUMINANCE12_ALPHA12, "LUMINANCE12_ALPHA12" },
- { GL_LUMINANCE_ALPHA, GL_LUMINANCE16_ALPHA16, "LUMINANCE16_ALPHA16" },
-};
-
-#define NUM_RGB_FORMATS (sizeof(rgbFormats) / sizeof(rgbFormats[0]))
-struct formatInfo rgbFormats[] =
-{
- { GL_RGB, GL_RGB, "RGB" },
- { GL_RGB, GL_R3_G3_B2, "R3_G3_B2" },
- { GL_RGB, GL_RGB4, "RGB4" },
- { GL_RGB, GL_RGB5, "RGB5" },
- { GL_RGB, GL_RGB8, "RGB8" },
- { GL_RGB, GL_RGB10, "RGB10" },
- { GL_RGB, GL_RGB12, "RGB12" },
- { GL_RGB, GL_RGB16, "RGB16" },
-};
-
-#define NUM_RGBA_FORMATS (sizeof(rgbaFormats) / sizeof(rgbaFormats[0]))
-struct formatInfo rgbaFormats[] =
-{
- { GL_RGBA, GL_RGBA, "RGBA" },
- { GL_RGBA, GL_RGBA2, "RGBA2" },
- { GL_RGBA, GL_RGBA4, "RGBA4" },
- { GL_RGBA, GL_RGB5_A1, "RGB5_A1" },
- { GL_RGBA, GL_RGBA8, "RGBA8" },
- { GL_RGBA, GL_RGB10_A2, "RGB10_A2" },
- { GL_RGBA, GL_RGBA12, "RGBA12" },
- { GL_RGBA, GL_RGBA16, "RGBA16" },
-};
-
-struct baseFormatInfo {
- struct formatInfo *format;
- int current, number;
-};
-
-#define NUM_BASE_FORMATS (sizeof(baseFormats) / sizeof(baseFormats[0]))
-int baseFormat;
-struct baseFormatInfo baseFormats[] =
-{
- { luminanceFormats, 0, NUM_LUMINANCE_FORMATS },
- { alphaFormats, 0, NUM_ALPHA_FORMATS },
- { intensityFormats, 0, NUM_INTENSITY_FORMATS },
- { luminanceAlphaFormats, 0, NUM_LUMINANCE_ALPHA_FORMATS },
- { rgbFormats, 0, NUM_RGB_FORMATS },
- { rgbaFormats, 0, NUM_RGBA_FORMATS },
-};
-
-#define NUM_ENV_COLORS (sizeof(envColors) / sizeof(envColors[0]))
-int envColor = 0;
-GLfloat envColors[][4] =
-{
- { 0.0, 0.0, 0.0, 1.0 },
- { 1.0, 0.0, 0.0, 1.0 },
- { 0.0, 1.0, 0.0, 1.0 },
- { 0.0, 0.0, 1.0, 1.0 },
- { 1.0, 1.0, 1.0, 1.0 },
-};
-
-struct envModeInfo {
- GLenum mode;
- char *name;
-};
-
-/* allow for run-time check for GL_EXT_texture_env_add */
-int NUM_ENV_MODES = 5;
-struct envModeInfo envModes[] =
-{
- { GL_REPLACE, "REPLACE" },
- { GL_MODULATE, "MODULATE" },
- { GL_BLEND, "BLEND" },
- { GL_DECAL, "DECAL" },
-#if GL_EXT_texture_env_add
- { GL_ADD, "ADD" },
-#endif
-};
-
-static void checkErrors( void )
-{
- GLenum error;
-
- while ( (error = glGetError()) != GL_NO_ERROR ) {
- fprintf( stderr, "Error: %s\n", (char *) gluErrorString( error ) );
- }
-}
-
-static void drawString( const char *string, GLfloat x, GLfloat y,
- const GLfloat color[4] )
-{
- glColor4fv( color );
- glRasterPos2f( x, y );
-
- while ( *string ) {
- glutBitmapCharacter( GLUT_BITMAP_TIMES_ROMAN_10, *string );
- string++;
- }
-}
-
-static void drawStringOutline( const char *string, GLfloat x, GLfloat y,
- const GLfloat color[4],
- const GLfloat outline[4] )
-{
- drawString( string, x - 1, y, outline );
- drawString( string, x + 1, y, outline );
- drawString( string, x, y - 1, outline );
- drawString( string, x, y + 1, outline );
- drawString( string, x, y, color );
-}
-
-static void begin2D( int width, int height )
-{
- glMatrixMode( GL_PROJECTION );
-
- glPushMatrix();
- glLoadIdentity();
-
- glOrtho( 0, width, 0, height, -1, 1 );
- glMatrixMode( GL_MODELVIEW );
-
- glPushMatrix();
- glLoadIdentity();
-}
-
-static void end2D( void )
-{
- glMatrixMode( GL_PROJECTION );
- glPopMatrix();
- glMatrixMode( GL_MODELVIEW );
- glPopMatrix();
-}
-
-static void initialize( void )
-{
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
-
- glOrtho( -1.5, 1.5, -1.5, 1.5, -1.5, 1.5 );
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- glShadeModel( GL_FLAT );
-}
-
-/* ARGSUSED1 */
-static void keyboard( unsigned char c, int x, int y )
-{
- switch ( c ) {
- case 'c':
- envColor++;
- envColor = envColor % (int) NUM_ENV_COLORS;
- break;
- case 'g':
- drawBackground = !drawBackground;
- break;
- case 'b':
- drawBlended = !drawBlended;
- break;
- case 's':
- drawSmooth = !drawSmooth;
- break;
- case 't':
- drawTextured = !drawTextured;
- break;
- case 'i':
- displayLevelInfo = !displayLevelInfo;
- break;
- case 27: /* Escape key should force exit. */
- glutDestroyWindow(Win);
- exit(0);
- break;
- default:
- break;
- }
- glutPostRedisplay();
-}
-
-/* ARGSUSED1 */
-static void special( int key, int x, int y )
-{
- switch ( key ) {
- case GLUT_KEY_DOWN:
- if ( ++baseFormat > NUM_BASE_FORMATS - 1 ) {
- baseFormat = 0;
- }
- break;
- case GLUT_KEY_UP:
- if ( --baseFormat < 0 ) {
- baseFormat = NUM_BASE_FORMATS - 1;
- }
- break;
- case GLUT_KEY_LEFT:
- --baseFormats[baseFormat].current;
- if ( baseFormats[baseFormat].current < 0 ) {
- baseFormats[baseFormat].current = baseFormats[baseFormat].number - 1;
- }
- break;
- case GLUT_KEY_RIGHT:
- ++baseFormats[baseFormat].current;
- if ( baseFormats[baseFormat].current > baseFormats[baseFormat].number - 1 ) {
- baseFormats[baseFormat].current = 0;
- }
- break;
- default:
- break;
- }
- glutPostRedisplay();
-}
-
-static void
-reshape( int w, int h )
-{
- winWidth = w;
- winHeight = h;
- /* No need to call glViewPort here since "draw" calls it! */
-}
-
-static void loadTexture( int width, int height,
- const struct formatInfo *format )
-{
- int luminanceSize = 0;
- int alphaSize = 0;
- int rgbSize = 0;
- GLenum textureFormat;
- GLubyte *texImage, *p;
- int elementsPerGroup, elementSize, groupSize, rowSize;
- int i, j;
-
- switch ( format->baseFormat ) {
- case GL_LUMINANCE:
- luminanceSize = 1;
- textureFormat = GL_LUMINANCE;
- break;
- case GL_INTENSITY:
- luminanceSize = 1;
- /* Note: format=GL_INTENSITY for glTexImage is not legal */
- textureFormat = GL_LUMINANCE;
- break;
- case GL_ALPHA:
- alphaSize = 1;
- textureFormat = GL_ALPHA;
- break;
- case GL_LUMINANCE_ALPHA:
- luminanceSize = 1;
- alphaSize = 1;
- textureFormat = GL_LUMINANCE_ALPHA;
- break;
- case GL_RGB:
- rgbSize = 3;
- textureFormat = GL_RGB;
- break;
- case GL_RGBA:
- rgbSize = 3;
- alphaSize = 1;
- textureFormat = GL_RGBA;
- break;
- default:
- fprintf(stderr, "bad internal format info\n");
- return;
- }
-
- elementsPerGroup = luminanceSize + alphaSize + rgbSize;
- elementSize = sizeof(GLubyte);
- groupSize = elementsPerGroup * elementSize;
- rowSize = width * groupSize;
-
- if ( (texImage = (GLubyte *) malloc( height * rowSize ) ) == NULL ) {
- fprintf( stderr, "texture malloc failed\n" );
- return;
- }
-
- for ( i = 0 ; i < height ; i++ )
- {
- p = texImage + i * rowSize;
-
- for ( j = 0 ; j < width ; j++ )
- {
- if ( luminanceSize > 0 )
- {
- /**
- ** +-----+-----+
- ** | | |
- ** | W | LG |
- ** | | |
- ** +-----+-----+
- ** | | |
- ** | DG | B |
- ** | | |
- ** +-----+-----+
- **/
- if ( i > height / 2 ) {
- if ( j < width / 2 ) {
- p[0] = 0xff;
- } else {
- p[0] = 0xaa;
- }
- } else {
- if ( j < width / 2 ) {
- p[0] = 0x55;
- } else {
- p[0] = 0x00;
- }
- }
- p += elementSize;
- }
-
- if ( rgbSize > 0 )
- {
- /**
- ** +-----+-----+
- ** | | |
- ** | R | G |
- ** | | |
- ** +-----+-----+
- ** | | |
- ** | Y | B |
- ** | | |
- ** +-----+-----+
- **/
- if ( i > height / 2 ) {
- if ( j < width / 2 ) {
- p[0] = 0xff;
- p[1] = 0x00;
- p[2] = 0x00;
- } else {
- p[0] = 0x00;
- p[1] = 0xff;
- p[2] = 0x00;
- }
- } else {
- if ( j < width / 2 ) {
- p[0] = 0xff;
- p[1] = 0xff;
- p[2] = 0x00;
- } else {
- p[0] = 0x00;
- p[1] = 0x00;
- p[2] = 0xff;
- }
- }
- p += 3 * elementSize;
- }
-
- if ( alphaSize > 0 )
- {
- /**
- ** +-----------+
- ** | W |
- ** | +-----+ |
- ** | | | |
- ** | | B | |
- ** | | | |
- ** | +-----+ |
- ** | |
- ** +-----------+
- **/
- int i2 = i - height / 2;
- int j2 = j - width / 2;
- int h8 = height / 8;
- int w8 = width / 8;
- if ( -h8 <= i2 && i2 <= h8 && -w8 <= j2 && j2 <= w8 ) {
- p[0] = 0x00;
- } else if ( -2 * h8 <= i2 && i2 <= 2 * h8 && -2 * w8 <= j2 && j2 <= 2 * w8 ) {
- p[0] = 0x55;
- } else if ( -3 * h8 <= i2 && i2 <= 3 * h8 && -3 * w8 <= j2 && j2 <= 3 * w8 ) {
- p[0] = 0xaa;
- } else {
- p[0] = 0xff;
- }
- p += elementSize;
- }
- }
- }
-
- glTexImage2D( GL_TEXTURE_2D, 0,
- format->internalFormat, width, height, 0,
- textureFormat, GL_UNSIGNED_BYTE, texImage );
-
- free( texImage );
-}
-
-static void drawCheck( int w, int h, const GLfloat lightCheck[4],
- const GLfloat darkCheck[4] )
-{
- float dw = 2.0 / w;
- float dh = 2.0 / h;
- int i, j;
-
- for ( i = 0 ; i < w ; i++ ) {
- GLfloat x0 = -1.0 + i * dw;
- GLfloat x1 = x0 + dw;
-
- glBegin( GL_QUAD_STRIP );
-
- for ( j = 0 ; j <= h ; j++ ) {
- GLfloat y = -1.0 + j * dh;
-
- if ( (i ^ j) & 1 ) {
- glColor4fv( lightCheck );
- } else {
- glColor4fv( darkCheck );
- }
-
- glVertex2f( x0, y );
- glVertex2f( x1, y );
- }
-
- glEnd();
- }
-}
-
-static const char *lookupFormat( GLint format )
-{
- switch ( format ) {
- case GL_RGBA:
- return "GL_RGBA";
- case GL_RGB:
- return "GL_RGB";
- case GL_ALPHA:
- return "GL_ALPHA";
- case GL_LUMINANCE:
- return "GL_LUMINANCE";
- case GL_LUMINANCE_ALPHA:
- return "GL_LUMINANCE_ALPHA";
- case GL_INTENSITY:
- return "GL_INTENSITY";
- case GL_COLOR_INDEX:
- return "GL_COLOR_INDEX";
- case GL_BGRA:
- return "GL_BGRA";
- case GL_BGR:
- return "GL_BGR";
- default:
- return "unknown format";
- }
-}
-
-static void drawSample( int x, int y, int w, int h,
- const struct formatInfo *format,
- const struct envModeInfo *envMode )
-{
- glViewport( x, y, w, h );
- glScissor( x, y, w, h );
-
- glClearColor( 0.1, 0.1, 0.1, 1.0 );
- glClear( GL_COLOR_BUFFER_BIT );
-
- begin2D( w, h );
- drawString( format->name, 10, h - 15, labelInfoColor );
- drawString( envMode->name, 10, 5, labelInfoColor );
- end2D();
-
- glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, envMode->mode );
- glTexEnvfv( GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, envColors[envColor] );
-
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
-
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );
- glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP );
-
- loadTexture( textureWidth, textureHeight, format );
-
- if ( drawBackground ) {
- drawCheck( 15, 15, lightCheck, darkCheck );
- }
- if ( drawBlended ) {
- glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
- glEnable( GL_BLEND );
- }
- if ( drawSmooth ) {
- glShadeModel( GL_SMOOTH );
- }
- else {
- glShadeModel( GL_FLAT );
- glColor4f(1, 1, 1, 1);
- }
- if ( drawTextured ) {
- glEnable( GL_TEXTURE_2D );
- }
-
- /*
- * if (drawSmooth) then draw quad which goes from purple at the
- * bottom (100% alpha) to green at the top (50% alpha).
- */
- glBegin( GL_QUADS );
- if ( drawSmooth ) glColor4f( 1.0, 0.0, 1.0, 1.0 );
- glTexCoord2f( 0.0, 0.0 );
- glVertex2f( -0.8, -0.8 );
-
- if ( drawSmooth ) glColor4f( 1.0, 0.0, 1.0, 1.0 );
- glTexCoord2f( 1.0, 0.0 );
- glVertex2f( 0.8, -0.8 );
-
- if ( drawSmooth ) glColor4f( 0.0, 1.0, 0.0, 0.5 );
- glTexCoord2f( 1.0, 1.0 );
- glVertex2f( 0.8, 0.8 );
-
- if ( drawSmooth ) glColor4f( 0.0, 1.0, 0.0, 0.5 );
- glTexCoord2f( 0.0, 1.0 );
- glVertex2f( -0.8, 0.8 );
- glEnd();
-
- glDisable( GL_BLEND );
- glShadeModel( GL_FLAT );
- glDisable( GL_TEXTURE_2D );
-
- if ( envMode->mode == GL_DECAL &&
- (format->baseFormat == GL_ALPHA ||
- format->baseFormat == GL_LUMINANCE ||
- format->baseFormat == GL_LUMINANCE_ALPHA ||
- format->baseFormat == GL_INTENSITY)) {
- /* undefined format/mode combination */
- begin2D( w, h );
- drawStringOutline( "UNDEFINED MODE", 15, h / 2,
- labelLevelColor0, labelLevelColor1 );
- end2D();
- }
- else if ( displayLevelInfo ) {
- GLint width, height, border, format;
- GLint redSize, greenSize, blueSize, alphaSize;
- GLint luminanceSize, intensitySize;
- char buf[255];
-
- glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width );
- glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &height );
- glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_BORDER, &border );
- glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, &format );
- glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_RED_SIZE, &redSize );
- glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_GREEN_SIZE, &greenSize );
- glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_BLUE_SIZE, &blueSize );
- glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_ALPHA_SIZE, &alphaSize );
- glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_LUMINANCE_SIZE, &luminanceSize );
- glGetTexLevelParameteriv( GL_TEXTURE_2D, 0, GL_TEXTURE_INTENSITY_SIZE, &intensitySize );
-
- begin2D( w, h );
- sprintf( buf, "dimensions: %d x %d", width, height );
- drawStringOutline( buf, 15, h / 2 + 20, labelLevelColor0, labelLevelColor1 );
-
- sprintf( buf, "border: %d", border );
- drawStringOutline( buf, 15, h / 2 + 10, labelLevelColor0, labelLevelColor1 );
-
- sprintf( buf, "internal format:" );
- drawStringOutline( buf, 15, h / 2, labelLevelColor0, labelLevelColor1 );
-
- sprintf( buf, " %s", lookupFormat( format ) );
- drawStringOutline( buf, 15, h / 2 - 10, labelLevelColor0, labelLevelColor1 );
-
- sprintf( buf, "sizes:" );
- drawStringOutline( buf, 15, h / 2 - 20, labelLevelColor0, labelLevelColor1 );
-
- sprintf( buf, " %d / %d / %d / %d / %d / %d",
- redSize, greenSize, blueSize, alphaSize,
- luminanceSize, intensitySize );
- drawStringOutline( buf, 15, h / 2 - 30, labelLevelColor0, labelLevelColor1 );
-
- end2D();
- }
-}
-
-static void display( void )
-{
- int numX = NUM_ENV_MODES, numY = NUM_BASE_FORMATS;
- float xBase = (float) winWidth * 0.01;
- float xOffset = (winWidth - xBase) / numX;
- float xSize = max( xOffset - xBase, 1 );
- float yBase = (float) winHeight * 0.01;
- float yOffset = (winHeight - yBase) / numY;
- float ySize = max( yOffset - yBase, 1 );
- float x, y;
- int i, j;
-
- glViewport( 0, 0, winWidth, winHeight );
- glDisable( GL_SCISSOR_TEST );
- glClearColor( 0.0, 0.0, 0.0, 0.0 );
- glClear( GL_COLOR_BUFFER_BIT );
- glEnable( GL_SCISSOR_TEST );
-
- x = xBase;
- y = (winHeight - 1) - yOffset;
-
- for ( i = 0 ; i < NUM_BASE_FORMATS ; i++ )
- {
- struct formatInfo *format;
-
- if ( i == baseFormat ) {
- labelInfoColor = labelColor1;
- } else {
- labelInfoColor = labelColor0;
- }
-
- format = &baseFormats[i].format[baseFormats[i].current];
-
- for ( j = 0 ; j < NUM_ENV_MODES ; j++ ) {
- struct envModeInfo *envMode;
-
- envMode = &envModes[j];
- drawSample( x, y, xSize, ySize, format, envMode );
- x += xOffset;
- }
-
- x = xBase;
- y -= yOffset;
- }
-
- if ( doubleBuffered ) {
- glutSwapBuffers();
- } else {
- glFlush();
- }
-
- checkErrors();
-}
-
-static void usage( char *name )
-{
- fprintf( stderr, "usage: %s [ options ]\n", name );
- fprintf( stderr, "\n" );
- fprintf( stderr, "options:\n" );
- fprintf( stderr, " -sb single buffered\n" );
- fprintf( stderr, " -db double buffered\n" );
- fprintf( stderr, " -info print OpenGL driver info\n" );
-}
-
-static void instructions( void )
-{
- fprintf( stderr, "texenv - texture environment and internal format test\n" );
- fprintf( stderr, "\n" );
- fprintf( stderr, " [c] - cycle through background colors\n" );
- fprintf( stderr, " [g] - toggle background\n" );
- fprintf( stderr, " [b] - toggle blend\n" );
- fprintf( stderr, " [s] - toggle smooth shading\n" );
- fprintf( stderr, " [t] - toggle texturing\n" );
- fprintf( stderr, " [i] - toggle information display\n" );
- fprintf( stderr, " up/down - select row\n" );
- fprintf( stderr, " left/right - change row's internal format\n" );
-}
-
-int main( int argc, char *argv[] )
-{
- GLboolean info = GL_FALSE;
- int i;
-
- glutInitWindowSize( winWidth, winHeight );
- glutInit( &argc, argv );
-
- for ( i = 1 ; i < argc ; i++ ) {
- if ( !strcmp( "-sb", argv[i] ) ) {
- doubleBuffered = GL_FALSE;
- } else if ( !strcmp( "-db", argv[i] ) ) {
- doubleBuffered = GL_TRUE;
- } else if ( !strcmp( "-info", argv[i] ) ) {
- info = GL_TRUE;
- } else {
- usage( argv[0] );
- exit( 1 );
- }
- }
-
- if ( doubleBuffered ) {
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
- } else {
- glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE );
- }
-
- Win = glutCreateWindow( "Texture Environment Test" );
-
- initialize();
- instructions();
-
- if ( info ) {
- printf( "\n" );
- printf( "GL_RENDERER = %s\n", (char *) glGetString( GL_RENDERER ) );
- printf( "GL_VERSION = %s\n", (char *) glGetString( GL_VERSION ) );
- printf( "GL_VENDOR = %s\n", (char *) glGetString( GL_VENDOR ) ) ;
- printf( "GL_EXTENSIONS = %s\n", (char *) glGetString( GL_EXTENSIONS ) );
- }
-
-#if GL_EXT_texture_env_add
- if ( !glutExtensionSupported( "GL_EXT_texture_env_add" ) ) {
- fprintf( stderr, "missing extension: GL_EXT_texture_env_add\n" );
- NUM_ENV_MODES--;
- }
-#endif
-
- glutDisplayFunc( display );
- glutReshapeFunc( reshape );
- glutKeyboardFunc( keyboard );
- glutSpecialFunc( special );
- glutMainLoop();
-
- return 0;
-}
diff --git a/progs/demos/textures.c b/progs/demos/textures.c
deleted file mode 100644
index b668995aac..0000000000
--- a/progs/demos/textures.c
+++ /dev/null
@@ -1,439 +0,0 @@
-/*
- * Simple test of multiple textures
- */
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <GL/glew.h>
-#include <GL/glut.h>
-#include "readtex.h"
-
-#define TEST_CLAMP 0
-#define TEST_MIPMAPS 0
-#define TEST_GEN_COMPRESSED_MIPMAPS 0
-
-#define MAX_TEXTURES 8
-
-
-static int Win;
-static GLfloat Xrot = 0, Yrot = 0, Zrot = 0;
-static GLboolean Anim = GL_TRUE;
-static GLboolean Blend = GL_FALSE;
-static GLuint Filter = 0;
-static GLboolean Clamp = GL_FALSE;
-
-static GLuint NumTextures;
-static GLuint Textures[MAX_TEXTURES];
-static float TexRot[MAX_TEXTURES][3];
-static float TexPos[MAX_TEXTURES][3];
-static float TexAspect[MAX_TEXTURES];
-
-static const char *DefaultFiles[] = {
- "../images/arch.rgb",
- "../images/reflect.rgb",
- "../images/tree2.rgba",
- "../images/tile.rgb"
-};
-
-
-#define NUM_FILTERS 5
-static
-struct filter {
- GLenum min, mag;
- const char *name;
-} FilterModes[NUM_FILTERS] = {
- { GL_NEAREST, GL_NEAREST, "Nearest,Nearest" },
- { GL_LINEAR, GL_LINEAR, "Linear,Linear" },
- { GL_NEAREST_MIPMAP_NEAREST, GL_NEAREST, "NearestMipmapNearest,Nearest" },
- { GL_LINEAR_MIPMAP_NEAREST, GL_LINEAR, "LinearMipmapNearest,Linear" },
- { GL_LINEAR_MIPMAP_LINEAR, GL_LINEAR, "LinearMipmapLinear,Linear" }
-};
-
-
-
-
-static void
-Idle(void)
-{
- Xrot = glutGet(GLUT_ELAPSED_TIME) * 0.02;
- Yrot = glutGet(GLUT_ELAPSED_TIME) * 0.04;
- /* Zrot += 2.0; */
- glutPostRedisplay();
-}
-
-
-static void
-DrawTextures(void)
-{
- GLuint i;
-
- for (i = 0; i < NumTextures; i++) {
- GLfloat ar = TexAspect[i];
-
- glPushMatrix();
- glTranslatef(TexPos[i][0], TexPos[i][1], TexPos[i][2]);
- glRotatef(TexRot[i][0], 1, 0, 0);
- glRotatef(TexRot[i][1], 0, 1, 0);
- glRotatef(TexRot[i][2], 0, 0, 1);
-
- glBindTexture(GL_TEXTURE_2D, Textures[i]);
- glBegin(GL_POLYGON);
-#if TEST_CLAMP
- glTexCoord2f( -0.5, -0.5 ); glVertex2f( -ar, -1.0 );
- glTexCoord2f( 1.5, -0.5 ); glVertex2f( ar, -1.0 );
- glTexCoord2f( 1.5, 1.5 ); glVertex2f( ar, 1.0 );
- glTexCoord2f( -0.5, 1.5 ); glVertex2f( -ar, 1.0 );
-#else
- glTexCoord2f( 0.0, 0.0 ); glVertex2f( -ar, -1.0 );
- glTexCoord2f( 1.0, 0.0 ); glVertex2f( ar, -1.0 );
- glTexCoord2f( 1.0, 1.0 ); glVertex2f( ar, 1.0 );
- glTexCoord2f( 0.0, 1.0 ); glVertex2f( -ar, 1.0 );
-#endif
- glEnd();
-
- glPopMatrix();
- }
-}
-
-static void
-Draw(void)
-{
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- if (Blend) {
- glEnable(GL_BLEND);
- glDisable(GL_DEPTH_TEST);
- }
- else {
- glDisable(GL_BLEND);
- glEnable(GL_DEPTH_TEST);
- }
-
- glPushMatrix();
- glRotatef(Xrot, 1, 0, 0);
- glRotatef(Yrot, 0, 1, 0);
- glRotatef(Zrot, 0, 0, 1);
-
- DrawTextures();
-
- glPopMatrix();
-
- glutSwapBuffers();
-}
-
-
-static void
-Reshape(int width, int height)
-{
- glViewport(0, 0, width, height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 50.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glTranslatef(0.0, 0.0, -10.0);
-}
-
-
-static GLfloat
-RandFloat(float min, float max)
-{
- float x = (float) (rand() % 1000) * 0.001;
- x = x * (max - min) + min;
- return x;
-}
-
-
-static void
-Randomize(void)
-{
- GLfloat k = 1.0;
- GLuint i;
-
- srand(glutGet(GLUT_ELAPSED_TIME));
-
- for (i = 0; i < NumTextures; i++) {
- TexRot[i][0] = RandFloat(0.0, 360);
- TexRot[i][1] = RandFloat(0.0, 360);
- TexRot[i][2] = RandFloat(0.0, 360);
- TexPos[i][0] = RandFloat(-k, k);
- TexPos[i][1] = RandFloat(-k, k);
- TexPos[i][2] = RandFloat(-k, k);
- }
-}
-
-
-static void
-SetTexParams(void)
-{
- GLuint i;
- for (i = 0; i < NumTextures; i++) {
- glBindTexture(GL_TEXTURE_2D, Textures[i]);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- FilterModes[Filter].min);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,
- FilterModes[Filter].mag);
-
- if (Clamp) {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- }
- else {
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
- }
- }
-}
-
-
-static void
-Key(unsigned char key, int x, int y)
-{
- const GLfloat step = 3.0;
- (void) x;
- (void) y;
- switch (key) {
- case 'a':
- case ' ':
- Anim = !Anim;
- if (Anim)
- glutIdleFunc(Idle);
- else
- glutIdleFunc(NULL);
- break;
- case 'b':
- Blend = !Blend;
- break;
- case 'f':
- Filter = (Filter + 1) % NUM_FILTERS;
- SetTexParams();
- break;
- case 'r':
- Randomize();
- break;
-#if TEST_CLAMP
- case 'c':
- Clamp = !Clamp;
- SetTexParams();
- break;
-#endif
- case 'z':
- Zrot -= step;
- break;
- case 'Z':
- Zrot += step;
- break;
- case 27:
- glutDestroyWindow(Win);
- exit(0);
- break;
- }
-
- printf("Blend=%s Filter=%s\n",
- Blend ? "Y" : "n",
- FilterModes[Filter].name);
-
- glutPostRedisplay();
-}
-
-
-static void
-SpecialKey(int key, int x, int y)
-{
- const GLfloat step = 3.0;
- (void) x;
- (void) y;
- switch (key) {
- case GLUT_KEY_UP:
- Xrot -= step;
- break;
- case GLUT_KEY_DOWN:
- Xrot += step;
- break;
- case GLUT_KEY_LEFT:
- Yrot -= step;
- break;
- case GLUT_KEY_RIGHT:
- Yrot += step;
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void
-LoadTextures(GLuint n, const char *files[])
-{
- GLuint i;
-
- NumTextures = n < MAX_TEXTURES ? n : MAX_TEXTURES;
-
- glGenTextures(n, Textures);
-
- SetTexParams();
-
- for (i = 0; i < n; i++) {
- GLint w, h;
- glBindTexture(GL_TEXTURE_2D, Textures[i]);
-#if TEST_MIPMAPS
- {
- static const GLubyte color[9][4] = {
- {255, 0, 0},
- {0, 255, 0},
- {0, 0, 255},
- {0, 255, 255},
- {255, 0, 255},
- {255, 255, 0},
- {255, 128, 255},
- {128, 128, 128},
- {64, 64, 64}
- };
-
- GLubyte image[256*256*4];
- int i, level;
- w = h = 256;
- for (level = 0; level <= 8; level++) {
- for (i = 0; i < w * h; i++) {
- image[i*4+0] = color[level][0];
- image[i*4+1] = color[level][1];
- image[i*4+2] = color[level][2];
- image[i*4+3] = color[level][3];
- }
- printf("Load level %d: %d x %d\n", level, w>>level, h>>level);
- glTexImage2D(GL_TEXTURE_2D, level, GL_RGBA, w>>level, h>>level, 0,
- GL_RGBA, GL_UNSIGNED_BYTE, image);
- }
- }
-#elif TEST_GEN_COMPRESSED_MIPMAPS
- {
- GLenum intFormat = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
- int f;
- GLenum format;
- GLubyte *img = LoadRGBImage(files[i], &w, &h, &format);
- GLboolean write_compressed = GL_FALSE;
- GLboolean read_compressed = GL_FALSE;
-
- glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
- glTexImage2D(GL_TEXTURE_2D, 0, intFormat, w, h, 0,
- format, GL_UNSIGNED_BYTE, img);
- glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_FALSE);
- free(img);
-
- glGetTexLevelParameteriv(GL_TEXTURE_2D, i,
- GL_TEXTURE_INTERNAL_FORMAT, &f);
- printf("actual internal format 0x%x\n", f);
-
- if (write_compressed) {
- GLint i, sz, w, h;
- int num_levels = 8;
- for (i = 0; i < num_levels; i++) {
- char name[20], *buf;
- FILE *f;
- glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &w);
- glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_HEIGHT, &h);
- glGetTexLevelParameteriv(GL_TEXTURE_2D, i,
- GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &sz);
- printf("Writing level %d: %d x %d bytes: %d\n", i, w, h, sz);
- buf = malloc(sz);
- glGetCompressedTexImageARB(GL_TEXTURE_2D, i, buf);
- sprintf(name, "comp%d", i);
- f = fopen(name, "w");
- fwrite(buf, 1, sz, f);
- fclose(f);
- free(buf);
- }
- }
-
- if (read_compressed) {
- GLint i, sz, w, h;
- int num_levels = 8;
- for (i = 01; i < num_levels; i++) {
- char name[20], *buf;
- FILE *f;
- glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &w);
- glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_HEIGHT, &h);
- glGetTexLevelParameteriv(GL_TEXTURE_2D, i,
- GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &sz);
- buf = malloc(sz);
- sprintf(name, "comp%d", i);
- printf("Reading level %d: %d x %d bytes: %d from %s\n",
- i, w, h, sz, name);
- f = fopen(name, "r");
- fread(buf, 1, sz, f);
- fclose(f);
- glCompressedTexImage2DARB(GL_TEXTURE_2D, i, intFormat,
- w, h, 0, sz, buf);
- free(buf);
- }
- }
- }
-#else
- if (!LoadRGBMipmaps2(files[i], GL_TEXTURE_2D, GL_RGB, &w, &h)) {
- printf("Error: couldn't load %s\n", files[i]);
- exit(1);
- }
-#endif
- TexAspect[i] = (float) w / (float) h;
- printf("Loaded %s\n", files[i]);
- }
-}
-
-
-static void
-Init(int argc, const char *argv[])
-{
- if (argc == 1)
- LoadTextures(4, DefaultFiles);
- else
- LoadTextures(argc - 1, argv + 1);
-
- Randomize();
-
- glEnable(GL_TEXTURE_2D);
-
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glColor4f(1, 1, 1, 0.5);
-
-#if 0
- /* setup lighting, etc */
- glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT0);
-#endif
-}
-
-
-static void
-Usage(void)
-{
- printf("Usage:\n");
- printf(" textures [file.rgb] ...\n");
- printf("Keys:\n");
- printf(" a - toggle animation\n");
- printf(" b - toggle blending\n");
- printf(" f - change texture filter mode\n");
- printf(" r - randomize\n");
- printf(" ESC - exit\n");
-}
-
-
-int
-main(int argc, char *argv[])
-{
- glutInitWindowSize(700, 700);
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
- Win = glutCreateWindow(argv[0]);
- glewInit();
- glutReshapeFunc(Reshape);
- glutKeyboardFunc(Key);
- glutSpecialFunc(SpecialKey);
- glutDisplayFunc(Draw);
- if (Anim)
- glutIdleFunc(Idle);
- Init(argc, (const char **) argv);
- Usage();
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/trispd.c b/progs/demos/trispd.c
deleted file mode 100644
index c07c340947..0000000000
--- a/progs/demos/trispd.c
+++ /dev/null
@@ -1,250 +0,0 @@
-
-/*
- * Simple GLUT program to measure triangle strip rendering speed.
- * Brian Paul February 15, 1997 This file is in the public domain.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-#include <GL/glut.h>
-
-
-static float MinPeriod = 2.0; /* 2 seconds */
-static float Width = 400.0;
-static float Height = 400.0;
-static int Loops = 1;
-static int Size = 50;
-static int Texture = 0;
-
-
-
-static void Idle( void )
-{
- glutPostRedisplay();
-}
-
-
-static void Display( void )
-{
- float x, y;
- float xStep;
- float yStep;
- double t0, t1;
- double triRate;
- double pixelRate;
- int triCount;
- int i;
- float red[3] = { 1.0, 0.0, 0.0 };
- float blue[3] = { 0.0, 0.0, 1.0 };
-
- xStep = yStep = sqrt( 2.0 * Size );
-
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
-
- triCount = 0;
- t0 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
- if (Texture) {
- float uStep = xStep / Width;
- float vStep = yStep / Height;
- float u, v;
- for (i=0; i<Loops; i++) {
- for (y=1.0, v=0.0f; y<Height-yStep; y+=yStep, v+=vStep) {
- glBegin(GL_TRIANGLE_STRIP);
- for (x=1.0, u=0.0f; x<Width; x+=xStep, u+=uStep) {
- glColor3fv(red);
- glTexCoord2f(u, v);
- glVertex2f(x, y);
- glColor3fv(blue);
- glTexCoord2f(u, v+vStep);
- glVertex2f(x, y+yStep);
- triCount += 2;
- }
- glEnd();
- triCount -= 2;
- }
- }
- }
- else {
- for (i=0; i<Loops; i++) {
- for (y=1.0; y<Height-yStep; y+=yStep) {
- glBegin(GL_TRIANGLE_STRIP);
- for (x=1.0; x<Width; x+=xStep) {
- glColor3fv(red);
- glVertex2f(x, y);
- glColor3fv(blue);
- glVertex2f(x, y+yStep);
- triCount += 2;
- }
- glEnd();
- triCount -= 2;
- }
- }
- }
- glFinish();
- t1 = glutGet(GLUT_ELAPSED_TIME) * 0.001;
-
- if (t1-t0 < MinPeriod) {
- /* Next time draw more triangles to get longer elapsed time */
- Loops *= 2;
- return;
- }
-
- triRate = triCount / (t1-t0);
- pixelRate = triRate * Size;
- printf("Rate: %d tri in %gs = %g tri/s %d pixels/s\n",
- triCount, t1-t0, triRate, (int)pixelRate);
-
- glutSwapBuffers();
-}
-
-
-static void Reshape( int width, int height )
-{
- Width = width;
- Height = height;
- glViewport( 0, 0, width, height );
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glOrtho(0.0, width, 0.0, height, -1.0, 1.0);
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
-}
-
-
-static void Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case 27:
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void LoadTex(int comp, int filter)
-{
- GLubyte *pixels;
- int x, y;
- pixels = (GLubyte *) malloc(4*256*256);
- for (y = 0; y < 256; ++y)
- for (x = 0; x < 256; ++x) {
- pixels[(y*256+x)*4+0] = (int)(128.5 + 127.0 * cos(0.024544 * x));
- pixels[(y*256+x)*4+1] = 255;
- pixels[(y*256+x)*4+2] = (int)(128.5 + 127.0 * cos(0.024544 * y));
- pixels[(y*256+x)*4+3] = 255;
- }
- glEnable(GL_TEXTURE_2D);
- glTexImage2D(GL_TEXTURE_2D, 0, comp, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
- printf("Texture: GL_MODULATE, %d comps, %s\n", comp, filter == GL_NEAREST ? "GL_NEAREST" : "GL_LINEAR");
-}
-
-
-static void Init( int argc, char *argv[] )
-{
- GLint shade;
- GLint rBits, gBits, bBits;
- int filter = GL_NEAREST, comp = 3;
-
- int i;
- for (i=1; i<argc; i++) {
- if (strcmp(argv[i],"-dither")==0)
- glDisable(GL_DITHER);
- else if (strcmp(argv[i],"+dither")==0)
- glEnable(GL_DITHER);
- else if (strcmp(argv[i],"+smooth")==0)
- glShadeModel(GL_SMOOTH);
- else if (strcmp(argv[i],"+flat")==0)
- glShadeModel(GL_FLAT);
- else if (strcmp(argv[i],"+depth")==0)
- glEnable(GL_DEPTH_TEST);
- else if (strcmp(argv[i],"-depth")==0)
- glDisable(GL_DEPTH_TEST);
- else if (strcmp(argv[i],"-size")==0) {
- Size = atoi(argv[i+1]);
- i++;
- }
- else if (strcmp(argv[i],"-texture")==0)
- Texture = 0;
- else if (strcmp(argv[i],"+texture")==0)
- Texture = 1;
- else if (strcmp(argv[i],"-linear")==0)
- filter = GL_NEAREST;
- else if (strcmp(argv[i],"+linear")==0)
- filter = GL_LINEAR;
- else if (strcmp(argv[i],"-persp")==0)
- glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
- else if (strcmp(argv[i],"+persp")==0)
- glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
- else if (strcmp(argv[i],"-comp")==0) {
- comp = atoi(argv[i+1]);
- i++;
- }
- else
- printf("Unknown option: %s\n", argv[i]);
- }
-
- glGetIntegerv(GL_SHADE_MODEL, &shade);
-
- printf("Dither: %s\n", glIsEnabled(GL_DITHER) ? "on" : "off");
- printf("ShadeModel: %s\n", (shade==GL_FLAT) ? "flat" : "smooth");
- printf("DepthTest: %s\n", glIsEnabled(GL_DEPTH_TEST) ? "on" : "off");
- printf("Size: %d pixels\n", Size);
-
- if (Texture)
- LoadTex(comp, filter);
-
- glGetIntegerv(GL_RED_BITS, &rBits);
- glGetIntegerv(GL_GREEN_BITS, &gBits);
- glGetIntegerv(GL_BLUE_BITS, &bBits);
- printf("RedBits: %d GreenBits: %d BlueBits: %d\n", rBits, gBits, bBits);
-}
-
-
-static void Help( const char *program )
-{
- printf("%s options:\n", program);
- printf(" +/-dither enable/disable dithering\n");
- printf(" +/-depth enable/disable depth test\n");
- printf(" +flat flat shading\n");
- printf(" +smooth smooth shading\n");
- printf(" -size pixels specify pixels/triangle\n");
- printf(" +/-texture enable/disable texture\n");
- printf(" -comp n texture format\n");
- printf(" +/-linear bilinear texture filter\n");
- printf(" +/-persp perspective correction hint\n");
-}
-
-
-int main( int argc, char *argv[] )
-{
- glutInitWindowSize( (int) Width, (int) Height );
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
- glutCreateWindow( argv[0] );
-
- printf("For options: %s -help\n", argv[0]);
- if (argc==2 && strcmp(argv[1],"-help")==0) {
- Help(argv[0]);
- return 0;
- }
-
- Init( argc, argv );
-
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutDisplayFunc( Display );
- glutIdleFunc( Idle );
-
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/tunnel.c b/progs/demos/tunnel.c
deleted file mode 100644
index efc007c79a..0000000000
--- a/progs/demos/tunnel.c
+++ /dev/null
@@ -1,543 +0,0 @@
-/*
- * This program is under the GNU GPL.
- * Use at your own risk.
- *
- * written by David Bucciarelli (tech.hmw@plus.it)
- * Humanware s.r.l.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-
-#ifdef WIN32
-#include <windows.h>
-#endif
-
-#include <GL/glut.h>
-#include "readtex.h"
-#include "tunneldat.h"
-
-#ifdef XMESA
-#include "GL/xmesa.h"
-static int fullscreen = 1;
-#endif
-
-static int WIDTH = 640;
-static int HEIGHT = 480;
-
-static GLint T0 = 0;
-static GLint Frames = 0;
-static GLint NiceFog = 1;
-
-#define NUMBLOC 5
-
-#ifndef M_PI
-#define M_PI 3.1415926535
-#endif
-
-/*
-extern int striplength_skin_13[];
-extern float stripdata_skin_13[];
-
-extern int striplength_skin_12[];
-extern float stripdata_skin_12[];
-
-extern int striplength_skin_11[];
-extern float stripdata_skin_11[];
-
-extern int striplength_skin_9[];
-extern float stripdata_skin_9[];
-*/
-
-static int win = 0;
-
-static float obs[3] = { 1000.0, 0.0, 2.0 };
-static float dir[3];
-static float v = 30.;
-static float alpha = 90.0;
-static float beta = 90.0;
-
-static int fog = 1;
-static int bfcull = 1;
-static int usetex = 1;
-static int cstrip = 0;
-static int help = 1;
-static int joyavailable = 0;
-static int joyactive = 0;
-
-static GLuint t1id, t2id;
-
-static void
-inittextures(void)
-{
- glGenTextures(1, &t1id);
- glBindTexture(GL_TEXTURE_2D, t1id);
-
- if (!LoadRGBMipmaps("../images/tile.rgb", GL_RGB)) {
- fprintf(stderr, "Error reading a texture.\n");
- exit(-1);
- }
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_NEAREST);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- glGenTextures(1, &t2id);
- glBindTexture(GL_TEXTURE_2D, t2id);
-
- if (!LoadRGBMipmaps("../images/bw.rgb", GL_RGB)) {
- fprintf(stderr, "Error reading a texture.\n");
- exit(-1);
- }
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-}
-
-static void
-drawobjs(const int *l, const float *f)
-{
- int mend, j;
-
- if (cstrip) {
- float r = 0.33, g = 0.33, b = 0.33;
-
- for (; (*l) != 0;) {
- mend = *l++;
-
- r += 0.33;
- if (r > 1.0) {
- r = 0.33;
- g += 0.33;
- if (g > 1.0) {
- g = 0.33;
- b += 0.33;
- if (b > 1.0)
- b = 0.33;
- }
- }
-
- glColor3f(r, g, b);
- glBegin(GL_TRIANGLE_STRIP);
- for (j = 0; j < mend; j++) {
- f += 4;
- glTexCoord2fv(f);
- f += 2;
- glVertex3fv(f);
- f += 3;
- }
- glEnd();
- }
- }
- else
- for (; (*l) != 0;) {
- mend = *l++;
-
- glBegin(GL_TRIANGLE_STRIP);
- for (j = 0; j < mend; j++) {
- glColor4fv(f);
- f += 4;
- glTexCoord2fv(f);
- f += 2;
- glVertex3fv(f);
- f += 3;
- }
- glEnd();
- }
-}
-
-static void
-calcposobs(void)
-{
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
-
- dir[0] = sin(alpha * M_PI / 180.0);
- dir[1] = cos(alpha * M_PI / 180.0) * sin(beta * M_PI / 180.0);
- dir[2] = cos(beta * M_PI / 180.0);
-
- if (dir[0] < 1.0e-5 && dir[0] > -1.0e-5)
- dir[0] = 0;
- if (dir[1] < 1.0e-5 && dir[1] > -1.0e-5)
- dir[1] = 0;
- if (dir[2] < 1.0e-5 && dir[2] > -1.0e-5)
- dir[2] = 0;
-
- obs[0] += v * dir[0] * dt;
- obs[1] += v * dir[1] * dt;
- obs[2] += v * dir[2] * dt;
-}
-
-static void
-special(int k, int x, int y)
-{
- switch (k) {
- case GLUT_KEY_LEFT:
- alpha -= 2.0;
- break;
- case GLUT_KEY_RIGHT:
- alpha += 2.0;
- break;
- case GLUT_KEY_DOWN:
- beta -= 2.0;
- break;
- case GLUT_KEY_UP:
- beta += 2.0;
- break;
- }
-}
-
-static void
-cleanup(void)
-{
- glDeleteTextures(1, &t1id);
- glDeleteTextures(1, &t2id);
-}
-
-static void
-key(unsigned char k, int x, int y)
-{
- switch (k) {
- case 27:
- cleanup();
- exit(0);
- break;
-
- case 'a':
- v += 5.;
- break;
- case 'z':
- v -= 5.;
- break;
-
-#ifdef XMESA
- case ' ':
- fullscreen = (!fullscreen);
- XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW);
- break;
-#endif
- case 'j':
- joyactive = (!joyactive);
- break;
- case 'h':
- help = (!help);
- break;
- case 'f':
- fog = (!fog);
- break;
- case 't':
- usetex = (!usetex);
- break;
- case 'b':
- if (bfcull) {
- glDisable(GL_CULL_FACE);
- bfcull = 0;
- }
- else {
- glEnable(GL_CULL_FACE);
- bfcull = 1;
- }
- break;
- case 'm':
- cstrip = (!cstrip);
- break;
-
- case 'd':
- fprintf(stderr, "Deleting textures...\n");
- glDeleteTextures(1, &t1id);
- glDeleteTextures(1, &t2id);
- fprintf(stderr, "Loading textures...\n");
- inittextures();
- fprintf(stderr, "Done.\n");
- break;
- case 'n':
- NiceFog = !NiceFog;
- printf("NiceFog %d\n", NiceFog);
- break;
- }
- glutPostRedisplay();
-}
-
-static void
-reshape(int w, int h)
-{
- WIDTH = w;
- HEIGHT = h;
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(80.0, w / (float) h, 1.0, 50.0);
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glViewport(0, 0, w, h);
-}
-
-static void
-printstring(void *font, char *string)
-{
- int len, i;
-
- len = (int) strlen(string);
- for (i = 0; i < len; i++)
- glutBitmapCharacter(font, string[i]);
-}
-
-static void
-printhelp(void)
-{
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glColor4f(0.0, 0.0, 0.0, 0.5);
- glRecti(40, 40, 600, 440);
-
- glColor3f(1.0, 0.0, 0.0);
- glRasterPos2i(300, 420);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Help");
-
- glRasterPos2i(60, 390);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "h - Toggle Help");
- glRasterPos2i(60, 360);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "t - Toggle Textures");
- glRasterPos2i(60, 330);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "f - Toggle Fog");
- glRasterPos2i(60, 300);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "m - Toggle strips");
- glRasterPos2i(60, 270);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "b - Toggle Back face culling");
- glRasterPos2i(60, 240);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Arrow Keys - Rotate");
- glRasterPos2i(60, 210);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "a - Increase velocity");
- glRasterPos2i(60, 180);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "z - Decrease velocity");
-
- glRasterPos2i(60, 150);
- if (joyavailable)
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,
- "j - Toggle jostick control (Joystick control available)");
- else
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,
- "(No Joystick control available)");
-}
-
-static void
-dojoy(void)
-{
-#ifdef WIN32
- static UINT max[2] = { 0, 0 };
- static UINT min[2] = { 0xffffffff, 0xffffffff }, center[2];
- MMRESULT res;
- JOYINFO joy;
-
- res = joyGetPos(JOYSTICKID1, &joy);
-
- if (res == JOYERR_NOERROR) {
- joyavailable = 1;
-
- if (max[0] < joy.wXpos)
- max[0] = joy.wXpos;
- if (min[0] > joy.wXpos)
- min[0] = joy.wXpos;
- center[0] = (max[0] + min[0]) / 2;
-
- if (max[1] < joy.wYpos)
- max[1] = joy.wYpos;
- if (min[1] > joy.wYpos)
- min[1] = joy.wYpos;
- center[1] = (max[1] + min[1]) / 2;
-
- if (joyactive) {
- if (fabs(center[0] - (float) joy.wXpos) > 0.1 * (max[0] - min[0]))
- alpha -=
- 2.0 * (center[0] - (float) joy.wXpos) / (max[0] - min[0]);
- if (fabs(center[1] - (float) joy.wYpos) > 0.1 * (max[1] - min[1]))
- beta += 2.0 * (center[1] - (float) joy.wYpos) / (max[1] - min[1]);
-
- if (joy.wButtons & JOY_BUTTON1)
- v += 0.01;
- if (joy.wButtons & JOY_BUTTON2)
- v -= 0.01;
- }
- }
- else
- joyavailable = 0;
-#endif
-}
-
-static void
-draw(void)
-{
- static char frbuf[80] = "";
- int i;
- float base, offset;
-
- if (NiceFog)
- glHint(GL_FOG_HINT, GL_NICEST);
- else
- glHint(GL_FOG_HINT, GL_DONT_CARE);
-
- dojoy();
-
- glClear(GL_COLOR_BUFFER_BIT);
-
- if (usetex)
- glEnable(GL_TEXTURE_2D);
- else
- glDisable(GL_TEXTURE_2D);
-
- if (fog)
- glEnable(GL_FOG);
- else
- glDisable(GL_FOG);
-
- glShadeModel(GL_SMOOTH);
-
- glPushMatrix();
- calcposobs();
- gluLookAt(obs[0], obs[1], obs[2],
- obs[0] + dir[0], obs[1] + dir[1], obs[2] + dir[2],
- 0.0, 0.0, 1.0);
-
- if (dir[0] > 0) {
- offset = 8.0;
- base = obs[0] - fmod(obs[0], 8.0);
- }
- else {
- offset = -8.0;
- base = obs[0] + (8.0 - fmod(obs[0], 8.0));
- }
-
- glPushMatrix();
- glTranslatef(base - offset / 2.0, 0.0, 0.0);
- for (i = 0; i < NUMBLOC; i++) {
- glTranslatef(offset, 0.0, 0.0);
- glBindTexture(GL_TEXTURE_2D, t1id);
- drawobjs(striplength_skin_11, stripdata_skin_11);
- glBindTexture(GL_TEXTURE_2D, t2id);
- drawobjs(striplength_skin_12, stripdata_skin_12);
- drawobjs(striplength_skin_9, stripdata_skin_9);
- drawobjs(striplength_skin_13, stripdata_skin_13);
- }
- glPopMatrix();
- glPopMatrix();
-
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_FOG);
- glShadeModel(GL_FLAT);
-
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
- glOrtho(-0.5, 639.5, -0.5, 479.5, -1.0, 1.0);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- glColor3f(1.0, 0.0, 0.0);
- glRasterPos2i(10, 10);
- printstring(GLUT_BITMAP_HELVETICA_18, frbuf);
- glRasterPos2i(350, 470);
- printstring(GLUT_BITMAP_HELVETICA_10,
- "Tunnel V1.5 Written by David Bucciarelli (tech.hmw@plus.it)");
-
- if (help)
- printhelp();
-
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
-
- glutSwapBuffers();
-
- Frames++;
- {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- if (t - T0 >= 2000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- sprintf(frbuf, "Frame rate: %f", fps);
- T0 = t;
- Frames = 0;
- }
- }
-}
-
-static void
-idle(void)
-{
- glutPostRedisplay();
-}
-
-
-
-int
-main(int ac, char **av)
-{
- float fogcolor[4] = { 0.7, 0.7, 0.7, 1.0 };
-
- fprintf(stderr,
- "Tunnel V1.5\nWritten by David Bucciarelli (tech.hmw@plus.it)\n");
-
- glutInitWindowSize(WIDTH, HEIGHT);
- glutInit(&ac, av);
-
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
-
- if (!(win = glutCreateWindow("Tunnel"))) {
- fprintf(stderr, "Error, couldn't open window\n");
- return -1;
- }
-
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(80.0, WIDTH / (float) HEIGHT, 1.0, 50.0);
-
- glMatrixMode(GL_MODELVIEW);
-
- glShadeModel(GL_SMOOTH);
- glDisable(GL_DEPTH_TEST);
- glEnable(GL_CULL_FACE);
- glEnable(GL_TEXTURE_2D);
-
- glEnable(GL_FOG);
- glFogi(GL_FOG_MODE, GL_EXP2);
- glFogfv(GL_FOG_COLOR, fogcolor);
-
- glFogf(GL_FOG_DENSITY, 0.06);
- glHint(GL_FOG_HINT, GL_NICEST);
-
- inittextures();
-
- glClearColor(fogcolor[0], fogcolor[1], fogcolor[2], fogcolor[3]);
- glClear(GL_COLOR_BUFFER_BIT);
-
- calcposobs();
-
- glutReshapeFunc(reshape);
- glutDisplayFunc(draw);
- glutKeyboardFunc(key);
- glutSpecialFunc(special);
- glutIdleFunc(idle);
-
- glEnable(GL_BLEND);
- /*glBlendFunc(GL_SRC_ALPHA_SATURATE,GL_ONE); */
- /*glEnable(GL_POLYGON_SMOOTH); */
-
- glutMainLoop();
-
- cleanup();
- return 0;
-}
diff --git a/progs/demos/tunnel2.c b/progs/demos/tunnel2.c
deleted file mode 100644
index f15da95b18..0000000000
--- a/progs/demos/tunnel2.c
+++ /dev/null
@@ -1,615 +0,0 @@
-/*
- * This program is under the GNU GPL.
- * Use at your own risk.
- *
- * You need TWO Voodoo Graphics boards in order to run
- * this demo !
- *
- * written by David Bucciarelli (tech.hmw@plus.it)
- * Humanware s.r.l.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <string.h>
-
-#ifdef WIN32
-#include <windows.h>
-#endif
-
-#include <GL/glut.h>
-#include "readtex.h"
-#include "tunneldat.h"
-
-#ifdef FX
-#endif
-
-#ifdef XMESA
-#include "GL/xmesa.h"
-static int fullscreen = 1;
-#endif
-
-#ifdef FX
-GLint fxMesaSelectCurrentBoard(int);
-#endif
-
-static int WIDTHC0 = 640;
-static int HEIGHTC0 = 480;
-
-static int WIDTHC1 = 640;
-static int HEIGHTC1 = 480;
-
-static GLint T0 = 0;
-static GLint Frames = 0;
-
-#define NUMBLOC 5
-
-#ifndef M_PI
-#define M_PI 3.1415926535
-#endif
-
-static float obs[3] = { 1000.0, 0.0, 2.0 };
-static float dir[3];
-static float v = 30.;
-static float alpha = 90.0;
-static float beta = 90.0;
-
-static int fog = 1;
-static int bfcull = 1;
-static int usetex = 1;
-static int cstrip = 0;
-static int help = 1;
-static int joyavailable = 0;
-static int joyactive = 0;
-
-static int channel[2];
-
-static GLuint t1id, t2id;
-
-static void
-inittextures(void)
-{
- glGenTextures(1, &t1id);
- glBindTexture(GL_TEXTURE_2D, t1id);
-
- if (!LoadRGBMipmaps("../images/tile.rgb", GL_RGB)) {
- fprintf(stderr, "Error reading a texture.\n");
- exit(-1);
- }
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_NEAREST);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- glGenTextures(1, &t2id);
- glBindTexture(GL_TEXTURE_2D, t2id);
-
- if (!LoadRGBMipmaps("../images/bw.rgb", GL_RGB)) {
- fprintf(stderr, "Error reading a texture.\n");
- exit(-1);
- }
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
-
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
- GL_LINEAR_MIPMAP_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-}
-
-static void
-drawobjs(const int *l, const float *f)
-{
- int mend, j;
-
- if (cstrip) {
- float r = 0.33, g = 0.33, b = 0.33;
-
- for (; (*l) != 0;) {
- mend = *l++;
-
- r += 0.33;
- if (r > 1.0) {
- r = 0.33;
- g += 0.33;
- if (g > 1.0) {
- g = 0.33;
- b += 0.33;
- if (b > 1.0)
- b = 0.33;
- }
- }
-
- glColor3f(r, g, b);
- glBegin(GL_TRIANGLE_STRIP);
- for (j = 0; j < mend; j++) {
- f += 4;
- glTexCoord2fv(f);
- f += 2;
- glVertex3fv(f);
- f += 3;
- }
- glEnd();
- }
- }
- else
- for (; (*l) != 0;) {
- mend = *l++;
-
- glBegin(GL_TRIANGLE_STRIP);
- for (j = 0; j < mend; j++) {
- glColor4fv(f);
- f += 4;
- glTexCoord2fv(f);
- f += 2;
- glVertex3fv(f);
- f += 3;
- }
- glEnd();
- }
-}
-
-static void
-calcposobs(void)
-{
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
-
- dir[0] = sin(alpha * M_PI / 180.0);
- dir[1] = cos(alpha * M_PI / 180.0) * sin(beta * M_PI / 180.0);
- dir[2] = cos(beta * M_PI / 180.0);
-
- if (dir[0] < 1.0e-5 && dir[0] > -1.0e-5)
- dir[0] = 0;
- if (dir[1] < 1.0e-5 && dir[1] > -1.0e-5)
- dir[1] = 0;
- if (dir[2] < 1.0e-5 && dir[2] > -1.0e-5)
- dir[2] = 0;
-
- obs[0] += v * dir[0] * dt;
- obs[1] += v * dir[1] * dt;
- obs[2] += v * dir[2] * dt;
-}
-
-static void
-special(int k, int x, int y)
-{
- switch (k) {
- case GLUT_KEY_LEFT:
- alpha -= 2.0;
- break;
- case GLUT_KEY_RIGHT:
- alpha += 2.0;
- break;
- case GLUT_KEY_DOWN:
- beta -= 2.0;
- break;
- case GLUT_KEY_UP:
- beta += 2.0;
- break;
- }
-}
-
-static void
-cleanup(void)
-{
- glDeleteTextures(1, &t1id);
- glDeleteTextures(1, &t2id);
-}
-
-static void
-key(unsigned char k, int x, int y)
-{
- switch (k) {
- case 27:
- glutDestroyWindow(channel[0]);
- glutDestroyWindow(channel[1]);
- cleanup();
- exit(0);
- break;
-
- case 'a':
- v += 5.;
- break;
- case 'z':
- v -= 5.;
- break;
-
-#ifdef XMESA
- case ' ':
- fullscreen = (!fullscreen);
-
- glutSetWindow(channel[0]);
- XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW);
-
- glutSetWindow(channel[1]);
- XMesaSetFXmode(fullscreen ? XMESA_FX_FULLSCREEN : XMESA_FX_WINDOW);
- break;
-#endif
-
- case 'j':
- joyactive = (!joyactive);
- break;
- case 'h':
- help = (!help);
- break;
- case 'f':
- fog = (!fog);
- break;
- case 't':
- usetex = (!usetex);
- break;
- case 'b':
- if (bfcull) {
- glDisable(GL_CULL_FACE);
- bfcull = 0;
- }
- else {
- glEnable(GL_CULL_FACE);
- bfcull = 1;
- }
- break;
- case 'm':
- cstrip = (!cstrip);
- break;
-
- case 'd':
- fprintf(stderr, "Deleting textures...\n");
- glDeleteTextures(1, &t1id);
- glDeleteTextures(1, &t2id);
- fprintf(stderr, "Loading textures...\n");
- inittextures();
- fprintf(stderr, "Done.\n");
- break;
- }
-}
-
-static void
-reshapechannel0(int w, int h)
-{
- float ratio;
-
- WIDTHC0 = w;
- HEIGHTC0 = h;
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
-
- ratio = 0.5f * w / (float) h;
-
- glFrustum(-2.0, 0.0, -1.0 * ratio, 1.0 * ratio, 1.0, 60.0);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glViewport(0, 0, w, h);
-}
-
-static void
-reshapechannel1(int w, int h)
-{
- float ratio;
-
- WIDTHC1 = w;
- HEIGHTC1 = h;
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
-
- ratio = 0.5f * w / (float) h;
-
- glFrustum(0.0, 2.0, -1.0 * ratio, 1.0 * ratio, 1.0, 60.0);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
- glViewport(0, 0, w, h);
-}
-
-static void
-printstring(void *font, char *string)
-{
- int len, i;
-
- len = (int) strlen(string);
- for (i = 0; i < len; i++)
- glutBitmapCharacter(font, string[i]);
-}
-
-static void
-printhelp(void)
-{
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glColor4f(0.0, 0.0, 0.0, 0.5);
- glRecti(40, 40, 600, 440);
-
- glColor3f(1.0, 0.0, 0.0);
- glRasterPos2i(300, 420);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Help");
-
- glRasterPos2i(60, 390);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "h - Toggle Help");
- glRasterPos2i(60, 360);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "t - Toggle Textures");
- glRasterPos2i(60, 330);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "f - Toggle Fog");
- glRasterPos2i(60, 300);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "m - Toggle strips");
- glRasterPos2i(60, 270);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "b - Toggle Back face culling");
- glRasterPos2i(60, 240);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "Arrow Keys - Rotate");
- glRasterPos2i(60, 210);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "a - Increase velocity");
- glRasterPos2i(60, 180);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24, "z - Decrease velocity");
-
- glRasterPos2i(60, 150);
- if (joyavailable)
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,
- "j - Toggle jostick control (Joystick control available)");
- else
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,
- "(No Joystick control available)");
-}
-
-static void
-dojoy(void)
-{
-#ifdef WIN32
- static UINT max[2] = { 0, 0 };
- static UINT min[2] = { 0xffffffff, 0xffffffff }, center[2];
- MMRESULT res;
- JOYINFO joy;
-
- res = joyGetPos(JOYSTICKID1, &joy);
-
- if (res == JOYERR_NOERROR) {
- joyavailable = 1;
-
- if (max[0] < joy.wXpos)
- max[0] = joy.wXpos;
- if (min[0] > joy.wXpos)
- min[0] = joy.wXpos;
- center[0] = (max[0] + min[0]) / 2;
-
- if (max[1] < joy.wYpos)
- max[1] = joy.wYpos;
- if (min[1] > joy.wYpos)
- min[1] = joy.wYpos;
- center[1] = (max[1] + min[1]) / 2;
-
- if (joyactive) {
- if (fabs(center[0] - (float) joy.wXpos) > 0.1 * (max[0] - min[0]))
- alpha -=
- 2.0 * (center[0] - (float) joy.wXpos) / (max[0] - min[0]);
- if (fabs(center[1] - (float) joy.wYpos) > 0.1 * (max[1] - min[1]))
- beta += 2.0 * (center[1] - (float) joy.wYpos) / (max[1] - min[1]);
-
- if (joy.wButtons & JOY_BUTTON1)
- v += 0.01;
- if (joy.wButtons & JOY_BUTTON2)
- v -= 0.01;
- }
- }
- else
- joyavailable = 0;
-#endif
-}
-
-static void
-draw(void)
-{
- static char frbuf[80] = "";
- int i;
- float base, offset;
-
- dojoy();
-
- glClear(GL_COLOR_BUFFER_BIT);
-
- glClear(GL_COLOR_BUFFER_BIT);
-
- if (usetex)
- glEnable(GL_TEXTURE_2D);
- else
- glDisable(GL_TEXTURE_2D);
-
- if (fog)
- glEnable(GL_FOG);
- else
- glDisable(GL_FOG);
-
- glShadeModel(GL_SMOOTH);
-
- glPushMatrix();
- calcposobs();
- gluLookAt(obs[0], obs[1], obs[2],
- obs[0] + dir[0], obs[1] + dir[1], obs[2] + dir[2],
- 0.0, 0.0, 1.0);
-
- if (dir[0] > 0) {
- offset = 8.0;
- base = obs[0] - fmod(obs[0], 8.0);
- }
- else {
- offset = -8.0;
- base = obs[0] + (8.0 - fmod(obs[0], 8.0));
- }
-
- glPushMatrix();
- glTranslatef(base - offset / 2.0, 0.0, 0.0);
- for (i = 0; i < NUMBLOC; i++) {
- glTranslatef(offset, 0.0, 0.0);
- glBindTexture(GL_TEXTURE_2D, t1id);
- drawobjs(striplength_skin_11, stripdata_skin_11);
- glBindTexture(GL_TEXTURE_2D, t2id);
- drawobjs(striplength_skin_12, stripdata_skin_12);
- drawobjs(striplength_skin_9, stripdata_skin_9);
- drawobjs(striplength_skin_13, stripdata_skin_13);
- }
- glPopMatrix();
- glPopMatrix();
-
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_FOG);
- glShadeModel(GL_FLAT);
-
- glMatrixMode(GL_PROJECTION);
- glPushMatrix();
- glLoadIdentity();
- glOrtho(-0.5, 639.5, -0.5, 479.5, -1.0, 1.0);
-
- glMatrixMode(GL_MODELVIEW);
- glLoadIdentity();
-
- glColor3f(1.0, 0.0, 0.0);
- glRasterPos2i(10, 10);
- printstring(GLUT_BITMAP_HELVETICA_18, frbuf);
- glRasterPos2i(350, 470);
- printstring(GLUT_BITMAP_HELVETICA_10,
- "Tunnel2 V1.0 Written by David Bucciarelli (tech.hmw@plus.it)");
-
- if (help)
- printhelp();
-
- glMatrixMode(GL_PROJECTION);
- glPopMatrix();
- glMatrixMode(GL_MODELVIEW);
-
- Frames++;
- {
- GLint t = glutGet(GLUT_ELAPSED_TIME);
- if (t - T0 >= 2000) {
- GLfloat seconds = (t - T0) / 1000.0;
- GLfloat fps = Frames / seconds;
- sprintf(frbuf, "Frame rate: %f", fps);
- T0 = t;
- Frames = 0;
- }
- }
-}
-
-static void
-drawchannel0(void)
-{
- glutSetWindow(channel[0]);
- draw();
- glutSwapBuffers();
-}
-
-static void
-drawchannel1(void)
-{
- glutSetWindow(channel[1]);
- draw();
- glutSwapBuffers();
-}
-
-static void
-drawall(void)
-{
- glutSetWindow(channel[0]);
- draw();
- glutSetWindow(channel[1]);
- draw();
-
- glutSetWindow(channel[0]);
- glutSwapBuffers();
- glutSetWindow(channel[1]);
- glutSwapBuffers();
-}
-
-static void
-init(void)
-{
- float fogcolor[4] = { 0.7, 0.7, 0.7, 1.0 };
-
- glShadeModel(GL_SMOOTH);
- glDisable(GL_DEPTH_TEST);
- glEnable(GL_CULL_FACE);
- glEnable(GL_TEXTURE_2D);
-
- glEnable(GL_FOG);
- glFogi(GL_FOG_MODE, GL_EXP2);
- glFogfv(GL_FOG_COLOR, fogcolor);
-
- glFogf(GL_FOG_DENSITY, 0.06);
- glHint(GL_FOG_HINT, GL_NICEST);
-
- glEnable(GL_BLEND);
- /*
- glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE);
- glEnable(GL_POLYGON_SMOOTH);
- */
-
- glClearColor(fogcolor[0], fogcolor[1], fogcolor[2], fogcolor[3]);
- glClear(GL_COLOR_BUFFER_BIT);
-}
-
-int
-main(int ac, char **av)
-{
- fprintf(stderr,
- "Tunnel2 V1.0\nWritten by David Bucciarelli (tech.hmw@plus.it)\n");
-
- glutInitWindowSize(WIDTHC0, HEIGHTC0);
- glutInit(&ac, av);
-
- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
-
-#ifdef FX
- if (fxMesaSelectCurrentBoard(0) < 0) {
- fprintf(stderr, "The first Voodoo Graphics board is missing !?!?\n");
- return -1;
- }
-#endif
- if (!(channel[0] = glutCreateWindow("Channel 0"))) {
- fprintf(stderr, "Error, couldn't open window\n");
- return -1;
- }
-
- reshapechannel0(WIDTHC0, HEIGHTC0);
- init();
- inittextures();
- glutDisplayFunc(drawchannel0);
- glutReshapeFunc(reshapechannel0);
- glutKeyboardFunc(key);
- glutSpecialFunc(special);
-
-#ifdef FX
- if (fxMesaSelectCurrentBoard(1) < 0) {
- fprintf(stderr, "The second Voodoo Graphics board is missing !\n");
- exit(-1);
- }
-#endif
- glutInitWindowPosition(WIDTHC0, 0);
- glutInitWindowSize(WIDTHC1, HEIGHTC1);
- if (!(channel[1] = glutCreateWindow("Channel 1"))) {
- fprintf(stderr, "Error, couldn't open window\n");
- exit(-1);
- }
-
- reshapechannel1(WIDTHC1, HEIGHTC1);
- init();
- inittextures();
- glutDisplayFunc(drawchannel1);
- glutReshapeFunc(reshapechannel1);
- glutKeyboardFunc(key);
- glutSpecialFunc(special);
-
- glutIdleFunc(drawall);
-
- calcposobs();
-
- glutMainLoop();
- cleanup();
-
- return 0;
-}
diff --git a/progs/demos/tunneldat.h b/progs/demos/tunneldat.h
deleted file mode 100644
index af1e52e1f1..0000000000
--- a/progs/demos/tunneldat.h
+++ /dev/null
@@ -1,395 +0,0 @@
-/* Object: skin_13 */
-
-#if defined(_MSC_VER) && defined(_WIN32)
-#pragma warning( disable : 4305 ) /* 'initializing' : truncation from 'const double' to 'float' */
-#endif
-
-static const int striplength_skin_13[] = {
- 10, 7, 3, 5, 5, 4, 4, 4, 4, 5, 3, 4, 5, 4, 4, 4, 4, 4, 4, 6,
- 6, 3, 6, 3, 3, 3, 3, 0
-};
-
-static const float stripdata_skin_13[] = {
- 0.415686, 0.415686, 0.415686, 1.000000, 0.000000, 1.500000, 2.000000,
- 4.000000, 0.000000, 0.341176, 0.341176, 0.341176, 1.000000, -0.500000,
- 1.500000, 4.000000, 4.000000, 0.000000, 0.545098, 0.545098, 0.545098,
- 1.000000, 0.000000, 1.000000, 2.000000, 4.000000, 2.000000, 0.435294,
- 0.435294, 0.435294, 1.000000, -0.500000, 1.000000, 4.000000, 4.000000,
- 2.000000, 0.517647, 0.517647, 0.517647, 1.000000, 0.000000, 0.500000,
- 2.000000, 4.000000, 4.000000, 0.450980, 0.450980, 0.450980, 1.000000,
- -0.500000, 0.500000, 4.000000, 4.000000, 4.000000, 0.427451, 0.427451,
- 0.427451, 1.000000, 0.000000, 0.000000, 2.000000, 4.000000, 6.000000,
- 0.388235, 0.388235, 0.388235, 1.000000, -0.500000, 0.000000, 4.000000,
- 4.000000, 6.000000, 0.356863, 0.356863, 0.356863, 1.000000, 0.000000,
- -0.500000, 2.000000, 4.000000, 8.000000, 0.333333, 0.333333, 0.333333,
- 1.000000, -0.500000, -0.500000, 4.000000, 4.000000, 8.000000,
- 0.435294, 0.435294, 0.435294, 1.000000, 1.500000, 1.000000, -4.000000,
- 4.000000, 2.000000, 0.415686, 0.415686, 0.415686, 1.000000, 1.000000,
- 1.500000, -2.000000, 4.000000, 0.000000, 0.545098, 0.545098, 0.545098,
- 1.000000, 1.000000, 1.000000, -2.000000, 4.000000, 2.000000, 0.450980,
- 0.450980, 0.450980, 1.000000, 0.500000, 1.500000, 0.000000, 4.000000,
- 0.000000, 0.600000, 0.600000, 0.600000, 1.000000, 0.500000, 1.000000,
- 0.000000, 4.000000, 2.000000, 0.415686, 0.415686, 0.415686, 1.000000,
- 0.000000, 1.500000, 2.000000, 4.000000, 0.000000, 0.545098, 0.545098,
- 0.545098, 1.000000, 0.000000, 1.000000, 2.000000, 4.000000, 2.000000,
- 0.435294, 0.435294, 0.435294, 1.000000, 1.500000, 1.000000, -4.000000,
- 4.000000, 2.000000, 0.341176, 0.341176, 0.341176, 1.000000, 1.500000,
- 1.500000, -4.000000, 4.000000, 0.000000, 0.415686, 0.415686, 0.415686,
- 1.000000, 1.000000, 1.500000, -2.000000, 4.000000, 0.000000,
- 0.356863, 0.356863, 0.356863, 1.000000, 0.000000, -0.500000, 2.000000,
- 4.000000, 8.000000, 0.364706, 0.364706, 0.364706, 1.000000, 0.500000,
- -0.500000, 0.000000, 4.000000, 8.000000, 0.427451, 0.427451, 0.427451,
- 1.000000, 0.000000, 0.000000, 2.000000, 4.000000, 6.000000, 0.415686,
- 0.415686, 0.415686, 1.000000, 0.395020, -0.133318, 0.420032, 4.000000,
- 6.533272, 0.423529, 0.423529, 0.423529, 1.000000, 0.388550, -0.103582,
- 0.445932, 4.000000, 6.414327,
- 0.423529, 0.423529, 0.423529, 1.000000, 0.388550, -0.103582, 0.445932,
- 4.000000, 6.414327, 0.427451, 0.427451, 0.427451, 1.000000, 0.383423,
- -0.069344, 0.466541, 4.000000, 6.277375, 0.427451, 0.427451, 0.427451,
- 1.000000, 0.000000, 0.000000, 2.000000, 4.000000, 6.000000, 0.435294,
- 0.435294, 0.435294, 1.000000, 0.380371, -0.034595, 0.478689, 4.000000,
- 6.138380, 0.439216, 0.439216, 0.439216, 1.000000, 0.379272, 0.000000,
- 0.482673, 4.000000, 6.000000,
- 0.407843, 0.407843, 0.407843, 1.000000, 0.414673, -0.191394, 0.341301,
- 4.000000, 6.765576, 0.411765, 0.411765, 0.411765, 1.000000, 0.403687,
- -0.162957, 0.385368, 4.000000, 6.651829, 0.364706, 0.364706, 0.364706,
- 1.000000, 0.500000, -0.500000, 0.000000, 4.000000, 8.000000, 0.415686,
- 0.415686, 0.415686, 1.000000, 0.395020, -0.133318, 0.420032, 4.000000,
- 6.533272,
- 0.400000, 0.400000, 0.400000, 1.000000, 0.438232, -0.232438, 0.247284,
- 4.000000, 6.929754, 0.403922, 0.403922, 0.403922, 1.000000, 0.425171,
- -0.212276, 0.299425, 4.000000, 6.849104, 0.364706, 0.364706, 0.364706,
- 1.000000, 0.500000, -0.500000, 0.000000, 4.000000, 8.000000, 0.407843,
- 0.407843, 0.407843, 1.000000, 0.414673, -0.191394, 0.341301, 4.000000,
- 6.765576,
- 0.396078, 0.396078, 0.396078, 1.000000, 0.467285, -0.260554, 0.130636,
- 4.000000, 7.042214, 0.400000, 0.400000, 0.400000, 1.000000, 0.453857,
- -0.250068, 0.184711, 4.000000, 7.000273, 0.364706, 0.364706, 0.364706,
- 1.000000, 0.500000, -0.500000, 0.000000, 4.000000, 8.000000, 0.400000,
- 0.400000, 0.400000, 1.000000, 0.438232, -0.232438, 0.247284, 4.000000,
- 6.929754,
- 0.396078, 0.396078, 0.396078, 1.000000, 0.500000, -0.270672, 0.000000,
- 4.000000, 7.082688, 0.396078, 0.396078, 0.396078, 1.000000, 0.482788,
- -0.267902, 0.068730, 4.000000, 7.071609, 0.364706, 0.364706, 0.364706,
- 1.000000, 0.500000, -0.500000, 0.000000, 4.000000, 8.000000, 0.396078,
- 0.396078, 0.396078, 1.000000, 0.467285, -0.260554, 0.130636, 4.000000,
- 7.042214,
- 0.439216, 0.439216, 0.439216, 1.000000, 0.379272, 0.000000, 0.482673,
- 4.000000, 6.000000, 0.474510, 0.474510, 0.474510, 1.000000, 0.379272,
- 0.180448, 0.482673, 4.000000, 5.278208, 0.517647, 0.517647, 0.517647,
- 1.000000, 0.000000, 0.500000, 2.000000, 4.000000, 4.000000, 0.513726,
- 0.513726, 0.513726, 1.000000, 0.379272, 0.360896, 0.482673, 4.000000,
- 4.556417, 0.545098, 0.545098, 0.545098, 1.000000, 0.379272, 0.500000,
- 0.482673, 4.000000, 4.000000,
- 0.545098, 0.545098, 0.545098, 1.000000, 0.379272, 0.500000, 0.482673,
- 4.000000, 4.000000, 0.545098, 0.545098, 0.545098, 1.000000, 0.000000,
- 1.000000, 2.000000, 4.000000, 2.000000, 0.517647, 0.517647, 0.517647,
- 1.000000, 0.000000, 0.500000, 2.000000, 4.000000, 4.000000,
- 0.600000, 0.600000, 0.600000, 1.000000, 0.500000, 1.000000, 0.000000,
- 4.000000, 2.000000, 0.545098, 0.545098, 0.545098, 1.000000, 0.000000,
- 1.000000, 2.000000, 4.000000, 2.000000, 0.552941, 0.552941, 0.552941,
- 1.000000, 0.379272, 0.541344, 0.482673, 4.000000, 3.834625, 0.545098,
- 0.545098, 0.545098, 1.000000, 0.379272, 0.500000, 0.482673, 4.000000,
- 4.000000,
- 0.552941, 0.552941, 0.552941, 1.000000, 0.379272, 0.541344, 0.482673,
- 4.000000, 3.834625, 0.556863, 0.556863, 0.556863, 1.000000, 0.459717,
- 0.541344, 0.160891, 4.000000, 3.834625, 0.600000, 0.600000, 0.600000,
- 1.000000, 0.500000, 1.000000, 0.000000, 4.000000, 2.000000, 0.556863,
- 0.556863, 0.556863, 1.000000, 0.500000, 0.541344, 0.000000, 4.000000,
- 3.834625, 0.556863, 0.556863, 0.556863, 1.000000, 0.540283, 0.541344,
- -0.160891, 4.000000, 3.834625,
- 0.396078, 0.396078, 0.396078, 1.000000, 0.517212, -0.267902, -0.068730,
- 4.000000, 7.071609, 0.396078, 0.396078, 0.396078, 1.000000, 0.500000,
- -0.270672, 0.000000, 4.000000, 7.082688, 0.356863, 0.356863, 0.356863,
- 1.000000, 1.000000, -0.500000, -2.000000, 4.000000, 8.000000, 0.364706,
- 0.364706, 0.364706, 1.000000, 0.500000, -0.500000, 0.000000, 4.000000,
- 8.000000,
- 0.400000, 0.400000, 0.400000, 1.000000, 0.546143, -0.250068, -0.184711,
- 4.000000, 7.000273, 0.396078, 0.396078, 0.396078, 1.000000, 0.532715,
- -0.260554, -0.130636, 4.000000, 7.042214, 0.356863, 0.356863, 0.356863,
- 1.000000, 1.000000, -0.500000, -2.000000, 4.000000, 8.000000, 0.396078,
- 0.396078, 0.396078, 1.000000, 0.517212, -0.267902, -0.068730, 4.000000,
- 7.071609,
- 0.403922, 0.403922, 0.403922, 1.000000, 0.574829, -0.212276, -0.299425,
- 4.000000, 6.849104, 0.400000, 0.400000, 0.400000, 1.000000, 0.561768,
- -0.232438, -0.247284, 4.000000, 6.929754, 0.356863, 0.356863, 0.356863,
- 1.000000, 1.000000, -0.500000, -2.000000, 4.000000, 8.000000, 0.400000,
- 0.400000, 0.400000, 1.000000, 0.546143, -0.250068, -0.184711, 4.000000,
- 7.000273,
- 0.411765, 0.411765, 0.411765, 1.000000, 0.596313, -0.162957, -0.385368,
- 4.000000, 6.651829, 0.407843, 0.407843, 0.407843, 1.000000, 0.585327,
- -0.191394, -0.341301, 4.000000, 6.765576, 0.356863, 0.356863, 0.356863,
- 1.000000, 1.000000, -0.500000, -2.000000, 4.000000, 8.000000, 0.403922,
- 0.403922, 0.403922, 1.000000, 0.574829, -0.212276, -0.299425, 4.000000,
- 6.849104,
- 0.423529, 0.423529, 0.423529, 1.000000, 0.611450, -0.103582, -0.445931,
- 4.000000, 6.414327, 0.415686, 0.415686, 0.415686, 1.000000, 0.604980,
- -0.133318, -0.420033, 4.000000, 6.533272, 0.356863, 0.356863, 0.356863,
- 1.000000, 1.000000, -0.500000, -2.000000, 4.000000, 8.000000, 0.411765,
- 0.411765, 0.411765, 1.000000, 0.596313, -0.162957, -0.385368, 4.000000,
- 6.651829,
- 0.435294, 0.435294, 0.435294, 1.000000, 0.619629, -0.034595, -0.478689,
- 4.000000, 6.138380, 0.427451, 0.427451, 0.427451, 1.000000, 0.616577,
- -0.069344, -0.466541, 4.000000, 6.277375, 0.356863, 0.356863, 0.356863,
- 1.000000, 1.000000, -0.500000, -2.000000, 4.000000, 8.000000, 0.423529,
- 0.423529, 0.423529, 1.000000, 0.611450, -0.103582, -0.445931, 4.000000,
- 6.414327,
- 0.513726, 0.513726, 0.513726, 1.000000, 0.620728, 0.360896, -0.482673,
- 4.000000, 4.556417, 0.474510, 0.474510, 0.474510, 1.000000, 0.620728,
- 0.180448, -0.482673, 4.000000, 5.278208, 0.427451, 0.427451, 0.427451,
- 1.000000, 1.000000, 0.000000, -2.000000, 4.000000, 6.000000, 0.439216,
- 0.439216, 0.439216, 1.000000, 0.620728, 0.000000, -0.482673, 4.000000,
- 6.000000, 0.356863, 0.356863, 0.356863, 1.000000, 1.000000, -0.500000,
- -2.000000, 4.000000, 8.000000, 0.435294, 0.435294, 0.435294, 1.000000,
- 0.619629, -0.034595, -0.478689, 4.000000, 6.138380,
- 0.333333, 0.333333, 0.333333, 1.000000, 1.500000, -0.500000, -4.000000,
- 4.000000, 8.000000, 0.388235, 0.388235, 0.388235, 1.000000, 1.500000,
- 0.000000, -4.000000, 4.000000, 6.000000, 0.427451, 0.427451, 0.427451,
- 1.000000, 1.000000, 0.000000, -2.000000, 4.000000, 6.000000, 0.517647,
- 0.517647, 0.517647, 1.000000, 1.000000, 0.500000, -2.000000, 4.000000,
- 4.000000, 0.513726, 0.513726, 0.513726, 1.000000, 0.620728, 0.360896,
- -0.482673, 4.000000, 4.556417, 0.545098, 0.545098, 0.545098, 1.000000,
- 0.620728, 0.500000, -0.482673, 4.000000, 4.000000,
- 0.333333, 0.333333, 0.333333, 1.000000, 1.500000, -0.500000, -4.000000,
- 4.000000, 8.000000, 0.427451, 0.427451, 0.427451, 1.000000, 1.000000,
- 0.000000, -2.000000, 4.000000, 6.000000, 0.356863, 0.356863, 0.356863,
- 1.000000, 1.000000, -0.500000, -2.000000, 4.000000, 8.000000,
- 0.556863, 0.556863, 0.556863, 1.000000, 0.540283, 0.541344, -0.160891,
- 4.000000, 3.834625, 0.552941, 0.552941, 0.552941, 1.000000, 0.620728,
- 0.541344, -0.482673, 4.000000, 3.834625, 0.545098, 0.545098, 0.545098,
- 1.000000, 1.000000, 1.000000, -2.000000, 4.000000, 2.000000, 0.517647,
- 0.517647, 0.517647, 1.000000, 1.000000, 0.500000, -2.000000, 4.000000,
- 4.000000, 0.450980, 0.450980, 0.450980, 1.000000, 1.500000, 0.500000,
- -4.000000, 4.000000, 4.000000, 0.388235, 0.388235, 0.388235, 1.000000,
- 1.500000, 0.000000, -4.000000, 4.000000, 6.000000,
- 0.517647, 0.517647, 0.517647, 1.000000, 1.000000, 0.500000, -2.000000,
- 4.000000, 4.000000, 0.552941, 0.552941, 0.552941, 1.000000, 0.620728,
- 0.541344, -0.482673, 4.000000, 3.834625, 0.545098, 0.545098, 0.545098,
- 1.000000, 0.620728, 0.500000, -0.482673, 4.000000, 4.000000,
- 0.450980, 0.450980, 0.450980, 1.000000, 1.500000, 0.500000, -4.000000,
- 4.000000, 4.000000, 0.435294, 0.435294, 0.435294, 1.000000, 1.500000,
- 1.000000, -4.000000, 4.000000, 2.000000, 0.545098, 0.545098, 0.545098,
- 1.000000, 1.000000, 1.000000, -2.000000, 4.000000, 2.000000,
- 0.439216, 0.439216, 0.439216, 1.000000, 0.379272, 0.000000, 0.482673,
- 4.000000, 6.000000, 0.517647, 0.517647, 0.517647, 1.000000, 0.000000,
- 0.500000, 2.000000, 4.000000, 4.000000, 0.427451, 0.427451, 0.427451,
- 1.000000, 0.000000, 0.000000, 2.000000, 4.000000, 6.000000,
- 0.556863, 0.556863, 0.556863, 1.000000, 0.540283, 0.541344, -0.160891,
- 4.000000, 3.834625, 0.545098, 0.545098, 0.545098, 1.000000, 1.000000,
- 1.000000, -2.000000, 4.000000, 2.000000, 0.600000, 0.600000, 0.600000,
- 1.000000, 0.500000, 1.000000, 0.000000, 4.000000, 2.000000
-};
-
-
-/* Object: skin_12 */
-
-static const int striplength_skin_12[] = {
- 12, 12, 12, 12, 12, 0
-};
-
-static const float stripdata_skin_12[] = {
- 0.498039, 0.498039, 0.498039, 1.000000, -0.099976, 1.500000, -2.400000,
- -4.000000, -0.000002, 0.337255, 0.337255, 0.337255, 1.000000, -0.500000,
- 1.500000, -4.000000, -4.000000, -0.000002, 0.568627, 0.568627, 0.568627,
- 1.000000, -0.099976, 1.100000, -2.400000, -4.000000, 1.599999, 0.341176,
- 0.341176, 0.341176, 1.000000, -0.500000, 1.100000, -4.000000, -4.000000,
- 1.599999, 0.498039, 0.498039, 0.498039, 1.000000, -0.099976, 0.700000,
- -2.400000, -4.000000, 3.200000, 0.325490, 0.325490, 0.325490, 1.000000,
- -0.500000, 0.700000, -4.000000, -4.000000, 3.199999, 0.352941, 0.352941,
- 0.352941, 1.000000, -0.099976, 0.300000, -2.400000, -4.000000, 4.800000,
- 0.282353, 0.282353, 0.282353, 1.000000, -0.500000, 0.300000, -4.000000,
- -4.000000, 4.800000, 0.282353, 0.282353, 0.282353, 1.000000, -0.099976,
- -0.100000, -2.400000, -4.000000, 6.400001, 0.254902, 0.254902, 0.254902,
- 1.000000, -0.500000, -0.100000, -4.000000, -4.000000, 6.400000,
- 0.239216, 0.239216, 0.239216, 1.000000, -0.099976, -0.500000, -2.400000,
- -4.000000, 8.000000, 0.227451, 0.227451, 0.227451, 1.000000, -0.500000,
- -0.500000, -4.000000, -4.000000, 8.000000,
- 0.239216, 0.239216, 0.239216, 1.000000, 1.099976, -0.500000, 2.400001,
- -4.000000, 8.000000, 0.227451, 0.227451, 0.227451, 1.000000, 1.500000,
- -0.500000, 4.000002, -4.000000, 8.000000, 0.282353, 0.282353, 0.282353,
- 1.000000, 1.099976, -0.100000, 2.400001, -4.000000, 6.400001, 0.254902,
- 0.254902, 0.254902, 1.000000, 1.500000, -0.100000, 4.000002, -4.000000,
- 6.400001, 0.352941, 0.352941, 0.352941, 1.000000, 1.099976, 0.300000,
- 2.400002, -4.000000, 4.800001, 0.282353, 0.282353, 0.282353, 1.000000,
- 1.500000, 0.300000, 4.000002, -4.000000, 4.800001, 0.498039, 0.498039,
- 0.498039, 1.000000, 1.099976, 0.700000, 2.400002, -4.000000, 3.200000,
- 0.321569, 0.321569, 0.321569, 1.000000, 1.500000, 0.700000, 4.000003,
- -4.000000, 3.200000, 0.568627, 0.568627, 0.568627, 1.000000, 1.099976,
- 1.100000, 2.400002, -4.000000, 1.599999, 0.341176, 0.341176, 0.341176,
- 1.000000, 1.500000, 1.100000, 4.000003, -4.000000, 1.599999, 0.494118,
- 0.494118, 0.494118, 1.000000, 1.099976, 1.500000, 2.400003, -4.000000,
- -0.000002, 0.337255, 0.337255, 0.337255, 1.000000, 1.500000, 1.500000,
- 4.000004, -4.000000, -0.000002,
- 0.639216, 0.639216, 0.639216, 1.000000, 0.300049, 1.500000, -0.799999,
- -4.000000, -0.000002, 0.498039, 0.498039, 0.498039, 1.000000, -0.099976,
- 1.500000, -2.400000, -4.000000, -0.000002, 0.858824, 0.858824, 0.858824,
- 1.000000, 0.300049, 1.100000, -0.799999, -4.000000, 1.599999, 0.568627,
- 0.568627, 0.568627, 1.000000, -0.099976, 1.100000, -2.400000, -4.000000,
- 1.599999, 0.686275, 0.686275, 0.686275, 1.000000, 0.300049, 0.700000,
- -0.799999, -4.000000, 3.200000, 0.498039, 0.498039, 0.498039, 1.000000,
- -0.099976, 0.700000, -2.400000, -4.000000, 3.200000, 0.419608, 0.419608,
- 0.419608, 1.000000, 0.300049, 0.300000, -0.800000, -4.000000, 4.800000,
- 0.352941, 0.352941, 0.352941, 1.000000, -0.099976, 0.300000, -2.400000,
- -4.000000, 4.800000, 0.298039, 0.298039, 0.298039, 1.000000, 0.300049,
- -0.100000, -0.800000, -4.000000, 6.400001, 0.282353, 0.282353, 0.282353,
- 1.000000, -0.099976, -0.100000, -2.400000, -4.000000, 6.400001,
- 0.247059, 0.247059, 0.247059, 1.000000, 0.300049, -0.500000, -0.800000,
- -4.000000, 8.000000, 0.239216, 0.239216, 0.239216, 1.000000, -0.099976,
- -0.500000, -2.400000, -4.000000, 8.000000,
- 0.639216, 0.639216, 0.639216, 1.000000, 0.699951, 1.500000, 0.800002,
- -4.000000, -0.000002, 0.639216, 0.639216, 0.639216, 1.000000, 0.300049,
- 1.500000, -0.799999, -4.000000, -0.000002, 0.858824, 0.858824, 0.858824,
- 1.000000, 0.699951, 1.100000, 0.800001, -4.000000, 1.599999, 0.858824,
- 0.858824, 0.858824, 1.000000, 0.300049, 1.100000, -0.799999, -4.000000,
- 1.599999, 0.686275, 0.686275, 0.686275, 1.000000, 0.699951, 0.700000,
- 0.800001, -4.000000, 3.200000, 0.686275, 0.686275, 0.686275, 1.000000,
- 0.300049, 0.700000, -0.799999, -4.000000, 3.200000, 0.419608, 0.419608,
- 0.419608, 1.000000, 0.699951, 0.300000, 0.800001, -4.000000, 4.800001,
- 0.419608, 0.419608, 0.419608, 1.000000, 0.300049, 0.300000, -0.800000,
- -4.000000, 4.800000, 0.298039, 0.298039, 0.298039, 1.000000, 0.699951,
- -0.100000, 0.800001, -4.000000, 6.400001, 0.298039, 0.298039, 0.298039,
- 1.000000, 0.300049, -0.100000, -0.800000, -4.000000, 6.400001, 0.247059,
- 0.247059, 0.247059, 1.000000, 0.699951, -0.500000, 0.800000, -4.000000,
- 8.000000, 0.247059, 0.247059, 0.247059, 1.000000, 0.300049, -0.500000,
- -0.800000, -4.000000, 8.000000,
- 0.494118, 0.494118, 0.494118, 1.000000, 1.099976, 1.500000, 2.400003,
- -4.000000, -0.000002, 0.639216, 0.639216, 0.639216, 1.000000, 0.699951,
- 1.500000, 0.800002, -4.000000, -0.000002, 0.568627, 0.568627, 0.568627,
- 1.000000, 1.099976, 1.100000, 2.400002, -4.000000, 1.599999, 0.858824,
- 0.858824, 0.858824, 1.000000, 0.699951, 1.100000, 0.800001, -4.000000,
- 1.599999, 0.498039, 0.498039, 0.498039, 1.000000, 1.099976, 0.700000,
- 2.400002, -4.000000, 3.200000, 0.686275, 0.686275, 0.686275, 1.000000,
- 0.699951, 0.700000, 0.800001, -4.000000, 3.200000, 0.352941, 0.352941,
- 0.352941, 1.000000, 1.099976, 0.300000, 2.400002, -4.000000, 4.800001,
- 0.419608, 0.419608, 0.419608, 1.000000, 0.699951, 0.300000, 0.800001,
- -4.000000, 4.800001, 0.282353, 0.282353, 0.282353, 1.000000, 1.099976,
- -0.100000, 2.400001, -4.000000, 6.400001, 0.298039, 0.298039, 0.298039,
- 1.000000, 0.699951, -0.100000, 0.800001, -4.000000, 6.400001, 0.239216,
- 0.239216, 0.239216, 1.000000, 1.099976, -0.500000, 2.400001, -4.000000,
- 8.000000, 0.247059, 0.247059, 0.247059, 1.000000, 0.699951, -0.500000,
- 0.800000, -4.000000, 8.000000
-};
-
-
-/* Object: skin_11 */
-
-static const int striplength_skin_11[] = {
- 12, 12, 12, 12, 12, 0
-};
-
-static const float stripdata_skin_11[] = {
- 0.145098, 0.145098, 0.145098, 1.000000, -0.099976, 1.500000, -2.400000,
- 4.000002, 0.000000, 0.141176, 0.141176, 0.141176, 1.000000, -0.500000,
- 1.500000, -4.000000, 4.000002, 0.000000, 0.176471, 0.176471, 0.176471,
- 1.000000, -0.099976, 1.100000, -2.400000, 2.400001, 0.000000, 0.145098,
- 0.145098, 0.145098, 1.000000, -0.500000, 1.100000, -4.000000, 2.400001,
- 0.000000, 0.341176, 0.341176, 0.341176, 1.000000, -0.099976, 0.700000,
- -2.400000, 0.800000, 0.000000, 0.188235, 0.188235, 0.188235, 1.000000,
- -0.500000, 0.700000, -4.000000, 0.800000, 0.000000, 0.450980, 0.450980,
- 0.450980, 1.000000, -0.099976, 0.300000, -2.400000, -0.800000, 0.000000,
- 0.247059, 0.247059, 0.247059, 1.000000, -0.500000, 0.300000, -4.000000,
- -0.800000, 0.000000, 0.439216, 0.439216, 0.439216, 1.000000, -0.099976,
- -0.100000, -2.400000, -2.400000, 0.000000, 0.270588, 0.270588, 0.270588,
- 1.000000, -0.500000, -0.100000, -4.000000, -2.400000, 0.000000,
- 0.364706, 0.364706, 0.364706, 1.000000, -0.099976, -0.500000, -2.400000,
- -4.000000, 0.000000, 0.258824, 0.258824, 0.258824, 1.000000, -0.500000,
- -0.500000, -4.000000, -4.000000, 0.000000,
- 0.364706, 0.364706, 0.364706, 1.000000, 1.099976, -0.500000, 2.400001,
- -4.000000, 0.000000, 0.258824, 0.258824, 0.258824, 1.000000, 1.500000,
- -0.500000, 4.000002, -4.000000, 0.000000, 0.439216, 0.439216, 0.439216,
- 1.000000, 1.099976, -0.100000, 2.400001, -2.400001, 0.000000, 0.270588,
- 0.270588, 0.270588, 1.000000, 1.500000, -0.100000, 4.000002, -2.400001,
- 0.000000, 0.454902, 0.454902, 0.454902, 1.000000, 1.099976, 0.300000,
- 2.400002, -0.800000, 0.000000, 0.247059, 0.247059, 0.247059, 1.000000,
- 1.500000, 0.300000, 4.000002, -0.800000, 0.000000, 0.341176, 0.341176,
- 0.341176, 1.000000, 1.099976, 0.700000, 2.400002, 0.800000, 0.000000,
- 0.184314, 0.184314, 0.184314, 1.000000, 1.500000, 0.700000, 4.000003,
- 0.800000, 0.000000, 0.176471, 0.176471, 0.176471, 1.000000, 1.099976,
- 1.100000, 2.400002, 2.400001, 0.000000, 0.145098, 0.145098, 0.145098,
- 1.000000, 1.500000, 1.100000, 4.000003, 2.400001, 0.000000, 0.145098,
- 0.145098, 0.145098, 1.000000, 1.099976, 1.500000, 2.400003, 4.000003,
- 0.000000, 0.141176, 0.141176, 0.141176, 1.000000, 1.500000, 1.500000,
- 4.000004, 4.000002, 0.000000,
- 0.145098, 0.145098, 0.145098, 1.000000, 0.300049, 1.500000, -0.799999,
- 4.000002, 0.000000, 0.145098, 0.145098, 0.145098, 1.000000, -0.099976,
- 1.500000, -2.400000, 4.000002, 0.000000, 0.262745, 0.262745, 0.262745,
- 1.000000, 0.300049, 1.100000, -0.799999, 2.400001, 0.000000, 0.176471,
- 0.176471, 0.176471, 1.000000, -0.099976, 1.100000, -2.400000, 2.400001,
- 0.000000, 0.580392, 0.580392, 0.580392, 1.000000, 0.300049, 0.700000,
- -0.799999, 0.800000, 0.000000, 0.341176, 0.341176, 0.341176, 1.000000,
- -0.099976, 0.700000, -2.400000, 0.800000, 0.000000, 0.709804, 0.709804,
- 0.709804, 1.000000, 0.300049, 0.300000, -0.800000, -0.800000, 0.000000,
- 0.450980, 0.450980, 0.450980, 1.000000, -0.099976, 0.300000, -2.400000,
- -0.800000, 0.000000, 0.627451, 0.627451, 0.627451, 1.000000, 0.300049,
- -0.100000, -0.800000, -2.400001, 0.000000, 0.439216, 0.439216, 0.439216,
- 1.000000, -0.099976, -0.100000, -2.400000, -2.400000, 0.000000,
- 0.458824, 0.458824, 0.458824, 1.000000, 0.300049, -0.500000, -0.800000,
- -4.000000, 0.000000, 0.364706, 0.364706, 0.364706, 1.000000, -0.099976,
- -0.500000, -2.400000, -4.000000, 0.000000,
- 0.145098, 0.145098, 0.145098, 1.000000, 0.699951, 1.500000, 0.800002,
- 4.000002, 0.000000, 0.145098, 0.145098, 0.145098, 1.000000, 0.300049,
- 1.500000, -0.799999, 4.000002, 0.000000, 0.262745, 0.262745, 0.262745,
- 1.000000, 0.699951, 1.100000, 0.800001, 2.400001, 0.000000, 0.262745,
- 0.262745, 0.262745, 1.000000, 0.300049, 1.100000, -0.799999, 2.400001,
- 0.000000, 0.580392, 0.580392, 0.580392, 1.000000, 0.699951, 0.700000,
- 0.800001, 0.800000, 0.000000, 0.580392, 0.580392, 0.580392, 1.000000,
- 0.300049, 0.700000, -0.799999, 0.800000, 0.000000, 0.713726, 0.713726,
- 0.713726, 1.000000, 0.699951, 0.300000, 0.800001, -0.800000, 0.000000,
- 0.709804, 0.709804, 0.709804, 1.000000, 0.300049, 0.300000, -0.800000,
- -0.800000, 0.000000, 0.631373, 0.631373, 0.631373, 1.000000, 0.699951,
- -0.100000, 0.800001, -2.400001, 0.000000, 0.627451, 0.627451, 0.627451,
- 1.000000, 0.300049, -0.100000, -0.800000, -2.400001, 0.000000, 0.458824,
- 0.458824, 0.458824, 1.000000, 0.699951, -0.500000, 0.800000, -4.000000,
- 0.000000, 0.458824, 0.458824, 0.458824, 1.000000, 0.300049, -0.500000,
- -0.800000, -4.000000, 0.000000,
- 0.145098, 0.145098, 0.145098, 1.000000, 1.099976, 1.500000, 2.400003,
- 4.000003, 0.000000, 0.145098, 0.145098, 0.145098, 1.000000, 0.699951,
- 1.500000, 0.800002, 4.000002, 0.000000, 0.176471, 0.176471, 0.176471,
- 1.000000, 1.099976, 1.100000, 2.400002, 2.400001, 0.000000, 0.262745,
- 0.262745, 0.262745, 1.000000, 0.699951, 1.100000, 0.800001, 2.400001,
- 0.000000, 0.341176, 0.341176, 0.341176, 1.000000, 1.099976, 0.700000,
- 2.400002, 0.800000, 0.000000, 0.580392, 0.580392, 0.580392, 1.000000,
- 0.699951, 0.700000, 0.800001, 0.800000, 0.000000, 0.454902, 0.454902,
- 0.454902, 1.000000, 1.099976, 0.300000, 2.400002, -0.800000, 0.000000,
- 0.713726, 0.713726, 0.713726, 1.000000, 0.699951, 0.300000, 0.800001,
- -0.800000, 0.000000, 0.439216, 0.439216, 0.439216, 1.000000, 1.099976,
- -0.100000, 2.400001, -2.400001, 0.000000, 0.631373, 0.631373, 0.631373,
- 1.000000, 0.699951, -0.100000, 0.800001, -2.400001, 0.000000, 0.364706,
- 0.364706, 0.364706, 1.000000, 1.099976, -0.500000, 2.400001, -4.000000,
- 0.000000, 0.458824, 0.458824, 0.458824, 1.000000, 0.699951, -0.500000,
- 0.800000, -4.000000, 0.000000
-};
-
-
-/* Object: skin_9 */
-
-static const int striplength_skin_9[] = {
- 18, 0
-};
-
-static const float stripdata_skin_9[] = {
- 0.384314, 0.384314, 0.384314, 1.000000, -0.500000, 1.500000, -4.000000,
- 4.000000, 8.000000, 0.384314, 0.384314, 0.384314, 1.000000, 1.500000,
- 1.500000, 4.000000, 4.000000, 8.000000, 0.376471, 0.376471, 0.376471,
- 1.000000, -0.500000, 1.250000, -4.000000, 3.695518, 9.530733, 0.403922,
- 0.403922, 0.403922, 1.000000, 1.500000, 1.250000, 4.000000, 3.695518,
- 9.530733, 0.415686, 0.415686, 0.415686, 1.000000, -0.500000, 1.000000,
- -4.000000, 2.828427, 10.828427, 0.431373, 0.431373, 0.431373, 1.000000,
- 1.500000, 1.000000, 4.000000, 2.828427, 10.828427, 0.435294, 0.435294,
- 0.435294, 1.000000, -0.500000, 0.750000, -4.000000, 1.530734, 11.695518,
- 0.443137, 0.443137, 0.443137, 1.000000, 1.500000, 0.750000, 4.000000,
- 1.530734, 11.695518, 0.439216, 0.439216, 0.439216, 1.000000, -0.500000,
- 0.500000, -4.000000, 0.000000, 12.000000, 0.435294, 0.435294, 0.435294,
- 1.000000, 1.500000, 0.500000, 4.000000, 0.000000, 12.000000, 0.427451,
- 0.427451, 0.427451, 1.000000, -0.500000, 0.250000, -4.000000, -1.530734,
- 11.695518, 0.411765, 0.411765, 0.411765, 1.000000, 1.500000, 0.250000,
- 4.000000, -1.530734, 11.695518, 0.396078, 0.396078, 0.396078, 1.000000,
- -0.500000, 0.000000, -4.000000, -2.828427, 10.828427, 0.368627,
- 0.368627, 0.368627, 1.000000, 1.500000, 0.000000, 4.000000, -2.828427,
- 10.828427, 0.341176, 0.341176, 0.341176, 1.000000, -0.500000, -0.250000,
- -4.000000, -3.695518, 9.530733, 0.301961, 0.301961, 0.301961, 1.000000,
- 1.500000, -0.250000, 4.000000, -3.695518, 9.530733, 0.294118, 0.294118,
- 0.294118, 1.000000, -0.500000, -0.500000, -4.000000, -4.000000,
- 8.000000, 0.294118, 0.294118, 0.294118, 1.000000, 1.500000, -0.500000,
- 4.000000, -4.000000, 8.000000
-};
diff --git a/progs/demos/vao_demo.c b/progs/demos/vao_demo.c
deleted file mode 100644
index b81004b067..0000000000
--- a/progs/demos/vao_demo.c
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * (C) Copyright IBM Corporation 2006
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * IBM AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-
-#ifdef __darwin__
-#include <GLUT/glut.h>
-
-typedef void (* PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
-typedef void (* PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);
-typedef void (* PFNGLGENVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);
-typedef GLboolean (* PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
-
-#else
-#include <GL/glut.h>
-#endif
-
-static PFNGLBINDVERTEXARRAYAPPLEPROC bind_vertex_array = NULL;
-static PFNGLGENVERTEXARRAYSAPPLEPROC gen_vertex_arrays = NULL;
-static PFNGLDELETEVERTEXARRAYSAPPLEPROC delete_vertex_arrays = NULL;
-static PFNGLISVERTEXARRAYAPPLEPROC is_vertex_array = NULL;
-
-static int Width = 400;
-static int Height = 200;
-static int Win = 0;
-static const GLfloat Near = 5.0, Far = 25.0;
-static GLfloat angle = 0.0;
-
-static GLuint cube_array_obj = 0;
-static GLuint oct_array_obj = 0;
-
-static const GLfloat cube_vert[] = {
- -0.5, -0.5, -0.5, 1.0,
- 0.5, -0.5, -0.5, 1.0,
- 0.5, 0.5, -0.5, 1.0,
- -0.5, 0.5, -0.5, 1.0,
-
- -0.5, -0.5, 0.5, 1.0,
- 0.5, -0.5, 0.5, 1.0,
- 0.5, 0.5, 0.5, 1.0,
- -0.5, 0.5, 0.5, 1.0,
-
- -0.5, 0.5, -0.5, 1.0,
- 0.5, 0.5, -0.5, 1.0,
- 0.5, 0.5, 0.5, 1.0,
- -0.5, 0.5, 0.5, 1.0,
-
- -0.5, -0.5, -0.5, 1.0,
- 0.5, -0.5, -0.5, 1.0,
- 0.5, -0.5, 0.5, 1.0,
- -0.5, -0.5, 0.5, 1.0,
-
- 0.5, -0.5, -0.5, 1.0,
- 0.5, -0.5, 0.5, 1.0,
- 0.5, 0.5, 0.5, 1.0,
- 0.5, 0.5, -0.5, 1.0,
-
- -0.5, -0.5, -0.5, 1.0,
- -0.5, -0.5, 0.5, 1.0,
- -0.5, 0.5, 0.5, 1.0,
- -0.5, 0.5, -0.5, 1.0,
-
-};
-
-static const GLfloat cube_color[] = {
- 1.0, 0.0, 0.0, 1.0,
- 1.0, 0.0, 0.0, 1.0,
- 1.0, 0.0, 0.0, 1.0,
- 1.0, 0.0, 0.0, 1.0,
-
- 0.0, 1.0, 0.0, 1.0,
- 0.0, 1.0, 0.0, 1.0,
- 0.0, 1.0, 0.0, 1.0,
- 0.0, 1.0, 0.0, 1.0,
-
- 0.0, 0.0, 1.0, 1.0,
- 0.0, 0.0, 1.0, 1.0,
- 0.0, 0.0, 1.0, 1.0,
- 0.0, 0.0, 1.0, 1.0,
-
- 1.0, 0.0, 1.0, 1.0,
- 1.0, 0.0, 1.0, 1.0,
- 1.0, 0.0, 1.0, 1.0,
- 1.0, 0.0, 1.0, 1.0,
-
- 1.0, 1.0, 1.0, 1.0,
- 1.0, 1.0, 1.0, 1.0,
- 1.0, 1.0, 1.0, 1.0,
- 1.0, 1.0, 1.0, 1.0,
-
- 0.5, 0.5, 0.5, 1.0,
- 0.5, 0.5, 0.5, 1.0,
- 0.5, 0.5, 0.5, 1.0,
- 0.5, 0.5, 0.5, 1.0,
-};
-
-static const GLfloat oct_vert[] = {
- 0.0, 0.0, 0.7071, 1.0,
- 0.5, 0.5, 0.0, 1.0,
- -0.5, 0.5, 0.0, 1.0,
-
- 0.0, 0.0, 0.7071, 1.0,
- 0.5, -0.5, 0.0, 1.0,
- -0.5, -0.5, 0.0, 1.0,
-
- 0.0, 0.0, 0.7071, 1.0,
- -0.5, -0.5, 0.0, 1.0,
- -0.5, 0.5, 0.0, 1.0,
-
- 0.0, 0.0, 0.7071, 1.0,
- 0.5, 0.5, 0.0, 1.0,
- 0.5, -0.5, 0.0, 1.0,
-
-
- 0.0, 0.0, -0.7071, 1.0,
- 0.5, 0.5, 0.0, 1.0,
- -0.5, 0.5, 0.0, 1.0,
-
- 0.0, 0.0, -0.7071, 1.0,
- 0.5, -0.5, 0.0, 1.0,
- -0.5, -0.5, 0.0, 1.0,
-
- 0.0, 0.0, -0.7071, 1.0,
- -0.5, -0.5, 0.0, 1.0,
- -0.5, 0.5, 0.0, 1.0,
-
- 0.0, 0.0, -0.7071, 1.0,
- 0.5, 0.5, 0.0, 1.0,
- 0.5, -0.5, 0.0, 1.0,
-};
-
-static const GLfloat oct_color[] = {
- 1.0, 0.64, 0.0, 1.0,
- 1.0, 0.64, 0.0, 1.0,
- 1.0, 0.64, 0.0, 1.0,
-
- 0.8, 0.51, 0.0, 1.0,
- 0.8, 0.51, 0.0, 1.0,
- 0.8, 0.51, 0.0, 1.0,
-
- 0.5, 0.32, 0.0, 1.0,
- 0.5, 0.32, 0.0, 1.0,
- 0.5, 0.32, 0.0, 1.0,
-
- 0.2, 0.13, 0.0, 1.0,
- 0.2, 0.13, 0.0, 1.0,
- 0.2, 0.13, 0.0, 1.0,
-
- 0.2, 0.13, 0.0, 1.0,
- 0.2, 0.13, 0.0, 1.0,
- 0.2, 0.13, 0.0, 1.0,
-
- 0.5, 0.32, 0.0, 1.0,
- 0.5, 0.32, 0.0, 1.0,
- 0.5, 0.32, 0.0, 1.0,
-
- 0.8, 0.51, 0.0, 1.0,
- 0.8, 0.51, 0.0, 1.0,
- 0.8, 0.51, 0.0, 1.0,
-
- 1.0, 0.64, 0.0, 1.0,
- 1.0, 0.64, 0.0, 1.0,
- 1.0, 0.64, 0.0, 1.0,
-};
-
-static void Display( void )
-{
- glClearColor(0.1, 0.1, 0.4, 0);
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
-
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
- glTranslatef( 0.0, 0.0, -15.0 );
- glRotatef( angle, 0.0 * angle , 0.0 * angle, 1.0 );
-
-
- (*bind_vertex_array)( cube_array_obj );
- glPushMatrix();
- glTranslatef(-1.5, 0, 0);
- glRotatef( angle, 0.3 * angle , 0.8 * angle, 1.0 );
- glDrawArrays( GL_QUADS, 0, 4 * 6 );
- glPopMatrix();
-
-
- (*bind_vertex_array)( oct_array_obj );
- glPushMatrix();
- glTranslatef(1.5, 0, 0);
- glRotatef( angle, 0.3 * angle , 0.8 * angle, 1.0 );
- glDrawArrays( GL_TRIANGLES, 0, 3 * 8 );
- glPopMatrix();
-
- glutSwapBuffers();
-}
-
-
-static void Idle( void )
-{
- static double t0 = -1.;
- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
- if (t0 < 0.0)
- t0 = t;
- dt = t - t0;
- t0 = t;
-
- angle += 70.0 * dt; /* 70 degrees per second */
- angle = fmod(angle, 360.0); /* prevents eventual overflow */
-
- glutPostRedisplay();
-}
-
-
-static void Visible( int vis )
-{
- if ( vis == GLUT_VISIBLE ) {
- glutIdleFunc( Idle );
- }
- else {
- glutIdleFunc( NULL );
- }
-}
-static void Reshape( int width, int height )
-{
- GLfloat ar = (float) width / (float) height;
- Width = width;
- Height = height;
- glViewport( 0, 0, width, height );
- glMatrixMode( GL_PROJECTION );
- glLoadIdentity();
- glFrustum( -ar, ar, -1.0, 1.0, Near, Far );
-}
-
-
-static void Key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case 27:
- (*delete_vertex_arrays)( 1, & cube_array_obj );
- (*delete_vertex_arrays)( 1, & oct_array_obj );
- glutDestroyWindow(Win);
- exit(0);
- break;
- }
- glutPostRedisplay();
-}
-
-
-static void Init( void )
-{
- const char * const ver_string = (const char *)
- glGetString( GL_VERSION );
-
- printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
- printf("GL_VERSION = %s\n", ver_string);
-
- if ( !glutExtensionSupported("GL_APPLE_vertex_array_object") ) {
- printf("Sorry, this program requires GL_APPLE_vertex_array_object\n");
- exit(1);
- }
-
- bind_vertex_array = (PFNGLBINDVERTEXARRAYAPPLEPROC) glutGetProcAddress( "glBindVertexArrayAPPLE" );
- gen_vertex_arrays = (PFNGLGENVERTEXARRAYSAPPLEPROC) glutGetProcAddress( "glGenVertexArraysAPPLE" );
- delete_vertex_arrays = (PFNGLDELETEVERTEXARRAYSAPPLEPROC) glutGetProcAddress( "glDeleteVertexArraysAPPLE" );
- is_vertex_array = (PFNGLISVERTEXARRAYAPPLEPROC) glutGetProcAddress( "glIsVertexArrayAPPLE" );
-
- assert(bind_vertex_array);
- assert(gen_vertex_arrays);
- assert(delete_vertex_arrays);
- assert(is_vertex_array);
-
- glEnable( GL_DEPTH_TEST );
-
- (*gen_vertex_arrays)( 1, & cube_array_obj );
- (*bind_vertex_array)( cube_array_obj );
- glVertexPointer( 4, GL_FLOAT, sizeof(GLfloat) * 4, cube_vert);
- glColorPointer( 4, GL_FLOAT, sizeof(GLfloat) * 4, cube_color);
- glEnableClientState( GL_VERTEX_ARRAY );
- glEnableClientState( GL_COLOR_ARRAY );
-
- (*gen_vertex_arrays)( 1, & oct_array_obj );
- (*bind_vertex_array)( oct_array_obj );
- glVertexPointer( 4, GL_FLOAT, sizeof(GLfloat) * 4, oct_vert);
- glColorPointer( 4, GL_FLOAT, sizeof(GLfloat) * 4, oct_color);
- glEnableClientState( GL_VERTEX_ARRAY );
- glEnableClientState( GL_COLOR_ARRAY );
-
- (*bind_vertex_array)( 0 );
- glVertexPointer( 4, GL_FLOAT, sizeof(GLfloat) * 4, (void *) 0xDEADBEEF );
- glColorPointer( 4, GL_FLOAT, sizeof(GLfloat) * 4, (void *) 0xBADDC0DE );
-}
-
-
-int main( int argc, char *argv[] )
-{
- glutInitWindowSize( Width, Height );
- glutInit( &argc, argv );
- glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH );
- Win = glutCreateWindow( "GL_APPLE_vertex_array_object demo" );
- glutReshapeFunc( Reshape );
- glutKeyboardFunc( Key );
- glutDisplayFunc( Display );
- glutVisibilityFunc( Visible );
- Init();
- glutMainLoop();
- return 0;
-}
diff --git a/progs/demos/winpos.c b/progs/demos/winpos.c
deleted file mode 100644
index f935f9bee0..0000000000
--- a/progs/demos/winpos.c
+++ /dev/null
@@ -1,116 +0,0 @@
-
-/*
- * Example of how to use the GL_MESA_window_pos extension.
- * Brian Paul This file is in the public domain.
- */
-
-#include <math.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#ifdef _WIN32
-#include <windows.h>
-#endif
-#include "GL/glew.h"
-#include "GL/glut.h"
-
-#include "readtex.h"
-
-#define IMAGE_FILE "../images/girl.rgb"
-
-
-#ifndef M_PI
-# define M_PI 3.14159265
-#endif
-
-
-
-static GLubyte *Image;
-static int ImgWidth, ImgHeight;
-static GLenum ImgFormat;
-
-static PFNGLWINDOWPOS2FPROC WindowPosFunc;
-
-static void draw( void )
-{
- GLfloat angle;
-
- glClear( GL_COLOR_BUFFER_BIT );
-
- for (angle = -45.0; angle <= 135.0; angle += 10.0) {
- GLfloat x = 50.0 + 200.0 * cos( angle * M_PI / 180.0 );
- GLfloat y = 50.0 + 200.0 * sin( angle * M_PI / 180.0 );
-
- /* Don't need to worry about the modelview or projection matrices!!! */
- (*WindowPosFunc)( x, y );
-
- glDrawPixels( ImgWidth, ImgHeight, ImgFormat, GL_UNSIGNED_BYTE, Image );
- }
- glFinish();
-}
-
-
-static void key( unsigned char key, int x, int y )
-{
- (void) x;
- (void) y;
- switch (key) {
- case 27:
- exit(0);
- }
-}
-
-
-/* new window size or exposure */
-static void reshape( int width, int height )
-{
- glViewport(0, 0, (GLint)width, (GLint)height);
-}
-
-
-static void init( void )
-{
- if (GLEW_ARB_window_pos) {
- printf("Using GL_ARB_window_pos\n");
- WindowPosFunc = glWindowPos2fARB;
- }
- else
- if (GLEW_MESA_window_pos) {
- printf("Using GL_MESA_window_pos\n");
- WindowPosFunc = glWindowPos2fMESA;
- }
- else
- {
- printf("Sorry, GL_ARB/MESA_window_pos extension not available.\n");
- exit(1);
- }
-
- Image = LoadRGBImage( IMAGE_FILE, &ImgWidth, &ImgHeight, &ImgFormat );
- if (!Image) {
- printf("Couldn't read %s\n", IMAGE_FILE);
- exit(0);
- }
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
-}
-
-
-int main( int argc, char *argv[] )
-{
- glutInitWindowSize(500, 500);
- glutInit(&argc, argv);
- glutInitDisplayMode( GLUT_RGB );
-
- if (glutCreateWindow("winpos") <= 0) {
- exit(0);
- }
-
- glewInit();
-
- init();
-
- glutReshapeFunc( reshape );
- glutKeyboardFunc( key );
- glutDisplayFunc( draw );
- glutMainLoop();
- return 0;
-}