diff options
Diffstat (limited to 'progs/demos')
110 files changed, 0 insertions, 42716 deletions
diff --git a/progs/demos/.gitignore b/progs/demos/.gitignore deleted file mode 100644 index aecdd9a0118..00000000000 --- 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 a13a272ce9c..00000000000 --- 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 0efc1ab0c99..00000000000 --- 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 ([email protected]) 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 0d0b19b9fe7..00000000000 --- 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 a3d0c18bb97..00000000000 --- 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 ([email protected]) - -Humanware s.r.l. -Via XXIV Maggio 62 -Pisa, Italy -Tel./Fax +39-50-554108 -email: [email protected] -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 20ec6a002a7..00000000000 --- 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 5c9b3450da1..00000000000 --- 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 ff33ba6e13f..00000000000 --- 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 58fadcca2dc..00000000000 --- 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 7c37b1b3ead..00000000000 --- 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 d989e736dea..00000000000 --- 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 f21be177921..00000000000 --- 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 9d046a4c6e8..00000000000 --- 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 2cf6b1a8260..00000000000 --- 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 f3e499fea0b..00000000000 --- 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 7a2c65a0d1e..00000000000 --- 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 9a6edd79b1c..00000000000 --- 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 e3d8df6b983..00000000000 --- 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 39bc8574af8..00000000000 --- 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 b5ccb82afb0..00000000000 --- 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 5a112d457b8..00000000000 --- 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 b7cfb5efcb3..00000000000 --- 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 05f7fea51a3..00000000000 --- 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 ff13579a41f..00000000000 --- 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 98723303d96..00000000000 --- 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 2d1d437f71d..00000000000 --- 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 6f43ff97cd2..00000000000 --- 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 d6e66c821af..00000000000 --- 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 0c6f26ca026..00000000000 --- 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 63102f13a54..00000000000 --- 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 425d4eb2581..00000000000 --- 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 ca0b30b6042..00000000000 --- 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 74f411a47e9..00000000000 --- 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 e0059002b36..00000000000 --- 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 2618431ae14..00000000000 --- 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 9d385b2dc74..00000000000 --- 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 0a8ea1af5ba..00000000000 --- 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 5d8c93b9e49..00000000000 --- 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 63cea205044..00000000000 --- 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 35c67a5f948..00000000000 --- 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 62815ea8ac8..00000000000 --- 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 326a2728ebe..00000000000 --- 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 926e72408b3..00000000000 --- 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 964c6d207e8..00000000000 --- 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 2a44dffd360..00000000000 --- 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 2ba95dc634d..00000000000 --- 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 218d3728662..00000000000 --- 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 bd2b6c07f2a..00000000000 --- 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 a388a425e93..00000000000 --- 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 861b3b72522..00000000000 --- 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 a0ce7f3f5bc..00000000000 --- 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 cc787eeb8a7..00000000000 --- 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 195a23803a4..00000000000 --- 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 a9a291e0a6f..00000000000 --- 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 c40f118a64b..00000000000 --- 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 98c835f44f8..00000000000 --- 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 3e79d6a5589..00000000000 --- 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 d7a912133ac..00000000000 --- a/progs/demos/descrip.mms +++ /dev/null @@ -1,90 +0,0 @@ -# Makefile for GLUT-based demo programs for VMS -# contributed by Jouk Jansen [email protected] -# 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 cbf8751e257..00000000000 --- 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 8ab5242d91c..00000000000 --- 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 9bc7086e04b..00000000000 --- 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 ee7d5c154a9..00000000000 --- 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 17767a148f9..00000000000 --- 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 ([email protected])"); - - 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 46bf1c5f6a2..00000000000 --- 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 bb912fb4473..00000000000 --- 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 ([email protected]) - * 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 ([email protected])"); - - 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 ([email protected])\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 336aa580755..00000000000 --- 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 f52a4f78686..00000000000 --- 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 91a5a801327..00000000000 --- 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 61c6d125fbe..00000000000 --- 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 71d0281904b..00000000000 --- 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 31a5b79eab9..00000000000 --- 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 00b6e78b724..00000000000 --- 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. - * <[email protected]> - * - * 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 09fe4c64c28..00000000000 --- 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 a6a7478288e..00000000000 --- 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 ddfd548b8b9..00000000000 --- 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 3658a395988..00000000000 --- 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 ([email protected]) - * 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 265378b90a9..00000000000 --- 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 ([email protected]) - * 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 ([email protected])"); - - 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 ([email protected])\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 a5b21ffb5c3..00000000000 --- 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 5cadecdb430..00000000000 --- 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 23488b1616e..00000000000 --- 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 07458eb156f..00000000000 --- 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 - * - * and - * - * 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: [email protected] or [email protected] -- 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 ([email protected])\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 82796a0c3f4..00000000000 --- 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 5d4b8662b5c..00000000000 --- 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 b88c318e0bc..00000000000 --- 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 ([email protected]) - * 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 a49dd691e4a..00000000000 --- 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 ([email protected]) - * 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 b4d0a67f993..00000000000 --- 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 d162568b9f0..00000000000 --- 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 60fc4146c80..00000000000 --- 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 ([email protected]) - * 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 ([email protected])"); - - 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 ([email protected])\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 9cc464d2390..00000000000 --- 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 ([email protected]) - * 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 ([email protected])"); - - 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 ([email protected])\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 cc4e4902694..00000000000 --- 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 b72af12885d..00000000000 --- 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 ([email protected]) 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 61dd860ddbe..00000000000 --- 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 677a42104f8..00000000000 --- 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 9899c245b2a..00000000000 --- 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 c1dada9d634..00000000000 --- 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 36e226e1d07..00000000000 --- 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 de18480c25e..00000000000 --- 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 - * - * 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 04a675f36e6..00000000000 --- 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 ([email protected]) - * 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 ([email protected])"); - - 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 ([email protected])\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 a72c8d3caea..00000000000 --- 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 ([email protected]) - * Humanware s.r.l. - * - * based on a Mikael SkiZoWalker's (MoDEL) / France ([email protected]) 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 ([email protected])"); - glRasterPos2i(434, 457); - printstring(GLUT_BITMAP_HELVETICA_10, - "Based on a Mickael's demo ([email protected])"); - - 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 2af385e9c25..00000000000 --- 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 8b988e36c13..00000000000 --- 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 <[email protected]> - */ - -#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 4df97ec4f50..00000000000 --- 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 260ca8718f0..00000000000 --- 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 <[email protected]> - */ - -#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 b668995aac1..00000000000 --- 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 c07c3409472..00000000000 --- 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 efc007c79aa..00000000000 --- 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 ([email protected]) - * 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 ([email protected])"); - - 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 ([email protected])\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 f15da95b18b..00000000000 --- 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 ([email protected]) - * 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 ([email protected])"); - - 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 ([email protected])\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 af1e52e1f17..00000000000 --- 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 b81004b067d..00000000000 --- 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 f935f9bee0f..00000000000 --- 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; -} |