summaryrefslogtreecommitdiff
path: root/progs/demos
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2010-05-21 09:32:38 -0700
committerEric Anholt <eric@anholt.net>2010-05-21 12:20:39 -0700
commit68fc4b415e322f6744299e39864fbc377c6eff74 (patch)
tree4bafffd8b0105174f3c5c0ae327a005be9145990 /progs/demos
parente4f4489e3fc0b36d72821b55794fb843b2b7fa5f (diff)
Remove demos that have moved to git+ssh://git.freedesktop.org/git/mesa/demos.
The remaining programs are ones I've had difficulty finding a build environment for to make the build system or are unit tests that should probably live next to their code instead. Hopefully people can bring over the build for remaining pieces they care about.
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;
-}