diff --git a/PROJ1_NIX/makefile b/PROJ1_NIX/makefile index 30fbaa8..543b0e7 100755 --- a/PROJ1_NIX/makefile +++ b/PROJ1_NIX/makefile @@ -8,7 +8,7 @@ CUDA_FLAGS = -I/usr/local/cuda/samples/common/inc -I/usr/local/cuda/include LFLAGS = -lglut -lGL -lGLEW -all: 565Pathtracer +all: 565raytracer raytraceKernel.o: ../src/raytraceKernel.cu $(NVCC) $(CUDA_FLAGS) -c ../src/raytraceKernel.cu @@ -34,12 +34,12 @@ stb_image_write.o: ../src/stb_image/stb_image_write.c main.o: ../src/main.cpp $(CPPC) $(CUDA_FLAGS) ../src/main.cpp -c -565Pathtracer: main.o raytraceKernel.o glslUtility.o utilities.o image.o scene.o stb_image_write.o stb_image.o - $(NVCC) $(LFLAGS) main.o raytraceKernel.o glslUtility.o utilities.o image.o scene.o stb_image_write.o stb_image.o -o 565Pathtracer +565raytracer: main.o raytraceKernel.o glslUtility.o utilities.o image.o scene.o stb_image_write.o stb_image.o + $(NVCC) $(LFLAGS) main.o raytraceKernel.o glslUtility.o utilities.o image.o scene.o stb_image_write.o stb_image.o -o 565raytracer clean: rm *.o - rm 565Pathtracer + rm 565raytracer -test: 565Pathtracer - ./565Pathtracer scene=../scenes/sampleScene.txt +test: 565raytracer + ./565raytracer scene=../scenes/sampleScene.txt diff --git a/PROJ1_WIN/565Raytracer.sdf b/PROJ1_WIN/565Raytracer.sdf new file mode 100644 index 0000000..126bdb5 Binary files /dev/null and b/PROJ1_WIN/565Raytracer.sdf differ diff --git a/PROJ1_WIN/565Pathtracer.sln b/PROJ1_WIN/565Raytracer.sln old mode 100755 new mode 100644 similarity index 90% rename from PROJ1_WIN/565Pathtracer.sln rename to PROJ1_WIN/565Raytracer.sln index 5cc5973..5a37658 --- a/PROJ1_WIN/565Pathtracer.sln +++ b/PROJ1_WIN/565Raytracer.sln @@ -1,34 +1,34 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "565Pathtracer", "565Pathtracer\565Pathtracer.vcxproj", "{FF21CA49-522E-4E86-B508-EE515B248FC4}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug (v4.0)|Win32 = Debug (v4.0)|Win32 - Debug (v4.0)|x64 = Debug (v4.0)|x64 - Debug (v5.5)|Win32 = Debug (v5.5)|Win32 - Debug (v5.5)|x64 = Debug (v5.5)|x64 - Release (v4.0)|Win32 = Release (v4.0)|Win32 - Release (v4.0)|x64 = Release (v4.0)|x64 - Release (v5.5)|Win32 = Release (v5.5)|Win32 - Release (v5.5)|x64 = Release (v5.5)|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v4.0)|Win32.ActiveCfg = Debug|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v4.0)|Win32.Build.0 = Debug|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v4.0)|x64.ActiveCfg = Debug|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v5.5)|Win32.ActiveCfg = Debug (v5.5)|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v5.5)|Win32.Build.0 = Debug (v5.5)|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v5.5)|x64.ActiveCfg = Debug (v5.5)|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v4.0)|Win32.ActiveCfg = Release|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v4.0)|Win32.Build.0 = Release|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v4.0)|x64.ActiveCfg = Release|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v5.5)|Win32.ActiveCfg = Release (v5.5)|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v5.5)|Win32.Build.0 = Release (v5.5)|Win32 - {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v5.5)|x64.ActiveCfg = Release (v5.5)|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "565Raytracer", "565Raytracer\565Raytracer.vcxproj", "{FF21CA49-522E-4E86-B508-EE515B248FC4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug (v4.0)|Win32 = Debug (v4.0)|Win32 + Debug (v4.0)|x64 = Debug (v4.0)|x64 + Debug (v5.5)|Win32 = Debug (v5.5)|Win32 + Debug (v5.5)|x64 = Debug (v5.5)|x64 + Release (v4.0)|Win32 = Release (v4.0)|Win32 + Release (v4.0)|x64 = Release (v4.0)|x64 + Release (v5.5)|Win32 = Release (v5.5)|Win32 + Release (v5.5)|x64 = Release (v5.5)|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v4.0)|Win32.ActiveCfg = Debug|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v4.0)|Win32.Build.0 = Debug|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v4.0)|x64.ActiveCfg = Debug|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v5.5)|Win32.ActiveCfg = Debug (v5.5)|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v5.5)|Win32.Build.0 = Debug (v5.5)|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Debug (v5.5)|x64.ActiveCfg = Debug (v5.5)|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v4.0)|Win32.ActiveCfg = Release|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v4.0)|Win32.Build.0 = Release|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v4.0)|x64.ActiveCfg = Release|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v5.5)|Win32.ActiveCfg = Release (v5.5)|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v5.5)|Win32.Build.0 = Release (v5.5)|Win32 + {FF21CA49-522E-4E86-B508-EE515B248FC4}.Release (v5.5)|x64.ActiveCfg = Release (v5.5)|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/PROJ1_WIN/565Raytracer.v11.suo b/PROJ1_WIN/565Raytracer.v11.suo new file mode 100644 index 0000000..eb69af2 Binary files /dev/null and b/PROJ1_WIN/565Raytracer.v11.suo differ diff --git a/PROJ1_WIN/565Pathtracer/565Pathtracer.filters b/PROJ1_WIN/565Raytracer/565Raytracer.filters old mode 100755 new mode 100644 similarity index 97% rename from PROJ1_WIN/565Pathtracer/565Pathtracer.filters rename to PROJ1_WIN/565Raytracer/565Raytracer.filters index b7836e2..9c1f97f --- a/PROJ1_WIN/565Pathtracer/565Pathtracer.filters +++ b/PROJ1_WIN/565Raytracer/565Raytracer.filters @@ -1,41 +1,41 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - Header Files - - - - - Source Files - - + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + + + Header Files + + + Header Files + + + Header Files + + + + + Source Files + + \ No newline at end of file diff --git a/PROJ1_WIN/565Pathtracer/565Pathtracer.user b/PROJ1_WIN/565Raytracer/565Raytracer.user old mode 100755 new mode 100644 similarity index 98% rename from PROJ1_WIN/565Pathtracer/565Pathtracer.user rename to PROJ1_WIN/565Raytracer/565Raytracer.user index 695b5c7..ace9a86 --- a/PROJ1_WIN/565Pathtracer/565Pathtracer.user +++ b/PROJ1_WIN/565Raytracer/565Raytracer.user @@ -1,3 +1,3 @@ - - + + \ No newline at end of file diff --git a/PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj b/PROJ1_WIN/565Raytracer/565Raytracer.vcxproj old mode 100755 new mode 100644 similarity index 88% rename from PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj rename to PROJ1_WIN/565Raytracer/565Raytracer.vcxproj index 4515c57..05c1330 --- a/PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj +++ b/PROJ1_WIN/565Raytracer/565Raytracer.vcxproj @@ -1,205 +1,220 @@ - - - - - Debug (v5.5) - Win32 - - - Debug - Win32 - - - Release (v5.5) - Win32 - - - Release - Win32 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {FF21CA49-522E-4E86-B508-EE515B248FC4} - Win32Proj - 565Pathtracer - 565Pathtracer - - - - Application - true - Unicode - - - Application - true - Unicode - - - Application - false - true - Unicode - - - Application - false - true - Unicode - - - - - - - - - - - - - - - - - - - - true - - - true - - - false - - - false - - - - - - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include;C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\common\inc;../shared/glew/include;../shared/freeglut/include;%(AdditionalIncludeDirectories) - - - Console - true - ../shared/glew/lib;../shared/freeglut/lib;%(AdditionalLibraryDirectories) - cudart.lib; glew32.lib;glu32.lib;opengl32.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;%(AdditionalDependencies) - mainCRTStartup - - - - - $(ProjectDir)$(Platform)/$(Configuration)/%(Filename)%(Extension).obj - C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include;C:/ProgramData/NVIDIA Corporation/NVIDIA GPU Computing SDK 4.0/C/common/inc;../shared/glew/includes;../shared/freeglut/includes - - - - - - - Level3 - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.5\common\inc;../shared/glew/include;../shared/freeglut/include;%(AdditionalIncludeDirectories) - - - Console - true - ../shared/glew/lib;../shared/freeglut/lib;%(AdditionalLibraryDirectories) - cudart.lib; glew32.lib;glu32.lib;opengl32.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;%(AdditionalDependencies) - mainCRTStartup - - - - - $(ProjectDir)$(Platform)/$(Configuration)/%(Filename)%(Extension).obj - C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc;../shared/glew/includes;../shared/freeglut/includes - - - - - Level3 - - - MaxSpeed - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include;C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\common\inc;../shared/glew/include;../shared/freeglut/include;%(AdditionalIncludeDirectories) - - - Console - true - true - true - ../shared/glew/lib;../shared/freeglut/lib;%(AdditionalLibraryDirectories) - cudart.lib; glew32.lib;glu32.lib;opengl32.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;%(AdditionalDependencies) - mainCRTStartup - - - $(ProjectDir)$(Platform)/$(Configuration)/%(Filename)%(Extension).obj - C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include;C:/ProgramData/NVIDIA Corporation/NVIDIA GPU Computing SDK 4.0/C/common/inc;../shared/glew/includes;../shared/freeglut/includes - - - - - Level3 - - - MaxSpeed - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.5\common\inc;../shared/glew/include;../shared/freeglut/include;%(AdditionalIncludeDirectories) - - - Console - true - true - true - ../shared/glew/lib;../shared/freeglut/lib;%(AdditionalLibraryDirectories) - cudart.lib; glew32.lib;glu32.lib;opengl32.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;%(AdditionalDependencies) - mainCRTStartup - - - $(ProjectDir)$(Platform)/$(Configuration)/%(Filename)%(Extension).obj - C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc;../shared/glew/includes;../shared/freeglut/includes - - - - - - - + + + + + Debug (v5.5) + Win32 + + + Debug + Win32 + + + Release (v5.5) + Win32 + + + Release + Win32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + false + true + true + + + + {FF21CA49-522E-4E86-B508-EE515B248FC4} + Win32Proj + 565Raytracer + 565Raytracer + + + + Application + true + Unicode + v110 + + + Application + true + Unicode + v110 + + + Application + false + true + Unicode + v110 + + + Application + false + true + Unicode + v110 + + + + + + + + + + + + + + + + + + + + true + + + true + + + false + + + false + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.5\common\inc;../shared/glew/include;../shared/freeglut/include;%(AdditionalIncludeDirectories) + + + Console + true + ../shared/glew/lib;../shared/freeglut/lib;%(AdditionalLibraryDirectories) + cudart.lib; glew32.lib;glu32.lib;opengl32.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;%(AdditionalDependencies) + mainCRTStartup + + + + + $(ProjectDir)$(Platform)/$(Configuration)/%(Filename)%(Extension).obj + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc;../shared/glew/includes;../shared/freeglut/includes + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.5\common\inc;../shared/glew/include;../shared/freeglut/include;%(AdditionalIncludeDirectories) + + + Console + true + ../shared/glew/lib;../shared/freeglut/lib;%(AdditionalLibraryDirectories) + cudart.lib; glew32.lib;glu32.lib;opengl32.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;%(AdditionalDependencies) + mainCRTStartup + + + + + $(ProjectDir)$(Platform)/$(Configuration)/%(Filename)%(Extension).obj + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc;../shared/glew/includes;../shared/freeglut/includes + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include;C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\common\inc;../shared/glew/include;../shared/freeglut/include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + ../shared/glew/lib;../shared/freeglut/lib;%(AdditionalLibraryDirectories) + cudart.lib; glew32.lib;glu32.lib;opengl32.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;%(AdditionalDependencies) + mainCRTStartup + + + $(ProjectDir)$(Platform)/$(Configuration)/%(Filename)%(Extension).obj + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\include;C:/ProgramData/NVIDIA Corporation/NVIDIA GPU Computing SDK 4.0/C/common/inc;../shared/glew/includes;../shared/freeglut/includes + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.5\common\inc;../shared/glew/include;../shared/freeglut/include;%(AdditionalIncludeDirectories) + + + Console + true + true + true + ../shared/glew/lib;../shared/freeglut/lib;%(AdditionalLibraryDirectories) + cudart.lib; glew32.lib;glu32.lib;opengl32.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;%(AdditionalDependencies) + mainCRTStartup + + + $(ProjectDir)$(Platform)/$(Configuration)/%(Filename)%(Extension).obj + C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc;../shared/glew/includes;../shared/freeglut/includes + + + + + + + \ No newline at end of file diff --git a/PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj.filters b/PROJ1_WIN/565Raytracer/565Raytracer.vcxproj.filters old mode 100755 new mode 100644 similarity index 85% rename from PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj.filters rename to PROJ1_WIN/565Raytracer/565Raytracer.vcxproj.filters index d49ad9c..9efe791 --- a/PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj.filters +++ b/PROJ1_WIN/565Raytracer/565Raytracer.vcxproj.filters @@ -1,42 +1,48 @@ - - - - - - - - - - stb_image - - - stb_image - - - - - - - - - - - - - - - stb_image - - - stb_image - - - - - - - - {011aa553-95e8-4e59-b7ff-1bb89aebe21d} - - + + + + + + + + + + stb_image + + + stb_image + + + + + + + + + + + + + + + + + stb_image + + + stb_image + + + + + + + + + + + + {011aa553-95e8-4e59-b7ff-1bb89aebe21d} + + \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/565Raytracer.vcxproj.lucy.nvuser b/PROJ1_WIN/565Raytracer/565Raytracer.vcxproj.lucy.nvuser new file mode 100644 index 0000000..4cdd3e7 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/565Raytracer.vcxproj.lucy.nvuser @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj.user b/PROJ1_WIN/565Raytracer/565Raytracer.vcxproj.user old mode 100755 new mode 100644 similarity index 60% rename from PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj.user rename to PROJ1_WIN/565Raytracer/565Raytracer.vcxproj.user index dfd9f6c..e681642 --- a/PROJ1_WIN/565Pathtracer/565Pathtracer.vcxproj.user +++ b/PROJ1_WIN/565Raytracer/565Raytracer.vcxproj.user @@ -1,19 +1,19 @@ - - - - scene=../../scenes/sampleScene.txt - WindowsLocalDebugger - - - scene=../../scenes/sampleScene.txt - WindowsLocalDebugger - - - scene=../../scenes/sampleScene.txt - WindowsLocalDebugger - - - scene=../../scenes/sampleScene.txt - WindowsLocalDebugger - - + + + + scene=../../scenes/texture.txt + WindowsLocalDebugger + + + scene=../../scenes/texture.txt + WindowsLocalDebugger + + + scene=../../scenes/texture.txt + WindowsLocalDebugger + + + scene=../../scenes/texture.txt + WindowsLocalDebugger + + \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/565Raytracer.lastbuildstate b/PROJ1_WIN/565Raytracer/Debug (v5.5)/565Raytracer.lastbuildstate new file mode 100644 index 0000000..a8852d4 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/565Raytracer.lastbuildstate @@ -0,0 +1,2 @@ +#v4.0:v110:false +Debug (v5.5)|Win32|C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\| diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/565Raytracer.log b/PROJ1_WIN/565Raytracer/Debug (v5.5)/565Raytracer.log new file mode 100644 index 0000000..a928907 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/565Raytracer.log @@ -0,0 +1,46 @@ +Build started 11/17/2013 10:48:45 PM. + 1>Project "C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\565Raytracer\565Raytracer.vcxproj" on node 2 (Build target(s)). + 1>ClCompile: + C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\CL.exe /c /I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" /I"C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.5\common\inc" /I../shared/glew/include /I../shared/freeglut/include /I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Debug (v5.5)\\" /Fd"Debug (v5.5)\vc110.pdb" /Gd /TP /analyze- /errorReport:prompt ..\..\src\scene.cpp + scene.cpp + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\objload.h(130): warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + c:\program files (x86)\microsoft visual studio 11.0\vc\include\stdio.h(311) : see declaration of 'sscanf' + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\objload.h(134): warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + c:\program files (x86)\microsoft visual studio 11.0\vc\include\stdio.h(311) : see declaration of 'sscanf' + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(165): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(169): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(171): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(223): warning C4244: 'initializing' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(225): warning C4244: 'initializing' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(261): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(262): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(263): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(293): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(298): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(300): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(302): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(304): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(306): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(311): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(313): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(315): warning C4244: '=' : conversion from 'double' to 'int', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(325): warning C4018: '<' : signed/unsigned mismatch + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(332): warning C4018: '<' : signed/unsigned mismatch + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\scene.cpp(337): warning C4018: '<' : signed/unsigned mismatch + Link: + C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\Debug (v5.5)\565Raytracer.exe" /INCREMENTAL /NOLOGO /LIBPATH:../shared/glew/lib /LIBPATH:../shared/freeglut/lib /LIBPATH:"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\lib\Win32" cudart.lib glew32.lib glu32.lib opengl32.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 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\Debug (v5.5)\565Raytracer.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /ENTRY:"mainCRTStartup" /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\Debug (v5.5)\565Raytracer.lib" /MACHINE:X86 "C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\565Raytracer\Win32/Debug (v5.5)/raytraceKernel.cu.obj" + "Debug (v5.5)\fps.obj" + "Debug (v5.5)\glslUtility.obj" + "Debug (v5.5)\image.obj" + "Debug (v5.5)\main.obj" + "Debug (v5.5)\objload.obj" + "Debug (v5.5)\scene.obj" + "Debug (v5.5)\stb_image.obj" + "Debug (v5.5)\stb_image_write.obj" + "Debug (v5.5)\utilities.obj" + 565Raytracer.vcxproj -> C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\Debug (v5.5)\565Raytracer.exe + 1>Done Building Project "C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\565Raytracer\565Raytracer.vcxproj" (Build target(s)). + +Build succeeded. + +Time Elapsed 00:00:01.79 diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/CL.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/CL.read.1.tlog new file mode 100644 index 0000000..367b0da Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/CL.read.1.tlog differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/CL.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/CL.write.1.tlog new file mode 100644 index 0000000..b31903f Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/CL.write.1.tlog differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/cl.command.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/cl.command.1.tlog new file mode 100644 index 0000000..7af821b Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/cl.command.1.tlog differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/fps.obj b/PROJ1_WIN/565Raytracer/Debug (v5.5)/fps.obj new file mode 100644 index 0000000..9a1b197 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/fps.obj differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/glslUtility.obj b/PROJ1_WIN/565Raytracer/Debug (v5.5)/glslUtility.obj new file mode 100644 index 0000000..c9f6bbd Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/glslUtility.obj differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/image.obj b/PROJ1_WIN/565Raytracer/Debug (v5.5)/image.obj new file mode 100644 index 0000000..3146689 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/image.obj differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link-cvtres.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link-cvtres.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link-cvtres.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link-cvtres.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link-cvtres.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link-cvtres.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link-rc.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link-rc.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link-rc.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link-rc.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link-rc.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link-rc.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672-cvtres.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672-cvtres.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672-cvtres.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672-cvtres.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672-cvtres.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672-cvtres.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672-rc.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672-rc.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672-rc.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672-rc.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672-rc.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672-rc.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.1672.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096-cvtres.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096-cvtres.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096-cvtres.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096-cvtres.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096-cvtres.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096-cvtres.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096-rc.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096-rc.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096-rc.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096-rc.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096-rc.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096-rc.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2096.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176-cvtres.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176-cvtres.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176-cvtres.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176-cvtres.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176-cvtres.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176-cvtres.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176-rc.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176-rc.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176-rc.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176-rc.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176-rc.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176-rc.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2176.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220-cvtres.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220-cvtres.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220-cvtres.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220-cvtres.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220-cvtres.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220-cvtres.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220-rc.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220-rc.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220-rc.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220-rc.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220-rc.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220-rc.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.220.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920-cvtres.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920-cvtres.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920-cvtres.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920-cvtres.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920-cvtres.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920-cvtres.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920-rc.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920-rc.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920-rc.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920-rc.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920-rc.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920-rc.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.2920.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120-cvtres.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120-cvtres.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120-cvtres.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120-cvtres.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120-cvtres.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120-cvtres.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120-rc.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120-rc.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120-rc.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120-rc.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120-rc.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120-rc.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3120.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920-cvtres.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920-cvtres.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920-cvtres.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920-cvtres.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920-cvtres.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920-cvtres.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920-rc.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920-rc.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920-rc.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920-rc.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920-rc.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920-rc.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3920.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984-cvtres.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984-cvtres.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984-cvtres.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984-cvtres.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984-cvtres.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984-cvtres.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984-rc.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984-rc.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984-rc.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984-rc.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984-rc.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984-rc.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.3984.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808-cvtres.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808-cvtres.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808-cvtres.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808-cvtres.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808-cvtres.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808-cvtres.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808-rc.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808-rc.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808-rc.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808-rc.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808-rc.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808-rc.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.4808.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136-cvtres.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136-cvtres.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136-cvtres.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136-cvtres.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136-cvtres.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136-cvtres.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136-rc.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136-rc.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136-rc.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136-rc.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136-rc.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136-rc.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5136.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372-cvtres.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372-cvtres.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372-cvtres.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372-cvtres.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372-cvtres.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372-cvtres.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372-rc.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372-rc.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372-rc.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372-rc.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372-rc.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372-rc.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5372.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592-cvtres.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592-cvtres.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592-cvtres.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592-cvtres.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592-cvtres.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592-cvtres.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592-rc.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592-rc.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592-rc.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592-rc.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592-rc.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592-rc.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.5592.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.command.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.command.1.tlog new file mode 100644 index 0000000..599dae6 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.command.1.tlog differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.read.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.read.1.tlog new file mode 100644 index 0000000..665a2c8 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.read.1.tlog differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.write.1.tlog b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.write.1.tlog new file mode 100644 index 0000000..5eb11f9 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/link.write.1.tlog differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/main.obj b/PROJ1_WIN/565Raytracer/Debug (v5.5)/main.obj new file mode 100644 index 0000000..a6747b0 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/main.obj differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/objload.obj b/PROJ1_WIN/565Raytracer/Debug (v5.5)/objload.obj new file mode 100644 index 0000000..6c44bca Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/objload.obj differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/raytraceKernel.cu.cache b/PROJ1_WIN/565Raytracer/Debug (v5.5)/raytraceKernel.cu.cache new file mode 100644 index 0000000..7d25948 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Debug (v5.5)/raytraceKernel.cu.cache @@ -0,0 +1,49 @@ +Identity=..\..\src\raytraceKernel.cu +AdditionalCompilerOptions= +AdditionalCompilerOptions= +AdditionalDependencies= +AdditionalDeps= +AdditionalLibraryDirectories= +AdditionalOptions= +AdditionalOptions= +CInterleavedPTX=false +CodeGeneration=compute_10,sm_10 +CodeGeneration=compute_10,sm_10 +CompileOut=C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\565Raytracer\Win32/Debug (v5.5)/raytraceKernel.cu.obj +CudaRuntime=Static +CudaToolkitCustomDir= +Defines=;WIN32;_DEBUG;_CONSOLE;_UNICODE;UNICODE; +Emulation=false +FastMath=false +GenerateLineInfo=false +GenerateRelocatableDeviceCode=false +GPUDebugInfo=true +GPUDebugInfo=true +HostDebugInfo=true +Include=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc;../shared/glew/includes;../shared/freeglut/includes;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.5\common\inc;../shared/glew/include;../shared/freeglut/include;;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include +Inputs= +Keep=false +KeepDir=Debug (v5.5) +LinkOut= +MaxRegCount=0 +NvccCompilation=compile +NvccPath= +Optimization=Od +Optimization=Od +PerformDeviceLink= +PtxAsOptionV=false +RequiredIncludes= +Runtime=MDd +Runtime=MDd +RuntimeChecks=RTC1 +RuntimeChecks=RTC1 +TargetMachinePlatform=32 +TargetMachinePlatform=32 +TypeInfo= +TypeInfo= +UseHostDefines=true +UseHostInclude=true +UseHostLibraryDependencies= +UseHostLibraryDirectories= +Warning=W3 +Warning=W3 diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/scene.obj b/PROJ1_WIN/565Raytracer/Debug (v5.5)/scene.obj new file mode 100644 index 0000000..3498948 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/scene.obj differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/stb_image.obj b/PROJ1_WIN/565Raytracer/Debug (v5.5)/stb_image.obj new file mode 100644 index 0000000..41bb437 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/stb_image.obj differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/stb_image_write.obj b/PROJ1_WIN/565Raytracer/Debug (v5.5)/stb_image_write.obj new file mode 100644 index 0000000..7ecd0ba Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/stb_image_write.obj differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/utilities.obj b/PROJ1_WIN/565Raytracer/Debug (v5.5)/utilities.obj new file mode 100644 index 0000000..a86fe43 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/utilities.obj differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/vc110.idb b/PROJ1_WIN/565Raytracer/Debug (v5.5)/vc110.idb new file mode 100644 index 0000000..f1396e9 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/vc110.idb differ diff --git a/PROJ1_WIN/565Raytracer/Debug (v5.5)/vc110.pdb b/PROJ1_WIN/565Raytracer/Debug (v5.5)/vc110.pdb new file mode 100644 index 0000000..27bb8fa Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Debug (v5.5)/vc110.pdb differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/565Raytracer.lastbuildstate b/PROJ1_WIN/565Raytracer/Release (v5.5)/565Raytracer.lastbuildstate new file mode 100644 index 0000000..953a2b5 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Release (v5.5)/565Raytracer.lastbuildstate @@ -0,0 +1,2 @@ +#v4.0:v110:false +Release (v5.5)|Win32|C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\| diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/565Raytracer.log b/PROJ1_WIN/565Raytracer/Release (v5.5)/565Raytracer.log new file mode 100644 index 0000000..3d37a9d --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Release (v5.5)/565Raytracer.log @@ -0,0 +1,336 @@ +Build started 11/17/2013 8:42:30 PM. + 1>Project "C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\565Raytracer\565Raytracer.vcxproj" on node 2 (Build target(s)). + 1>AddCudaCompileDeps: + C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cl.exe /E /nologo /showIncludes /TP /D__CUDACC__ /DWIN32 /DNDEBUG /D_CONSOLE /D_UNICODE /DUNICODE /I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" /I"C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc" /I../shared/glew/includes /I../shared/freeglut/includes /I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" /I"C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.5\common\inc" /I../shared/glew/include /I../shared/freeglut/include /I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" /I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\bin" /I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" /I. /FIcuda_runtime.h /c C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\src\raytraceKernel.cu + CudaBuild: + Compiling CUDA source file ..\..\src\raytraceKernel.cu... + cmd.exe /C "C:\Users\lucy\AppData\Local\Temp\tmpcd6c7b45ea1340a285d187e7ca89ed6b.cmd" + "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2012 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" -I"C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc" -I../shared/glew/includes -I../shared/freeglut/includes -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" -I"C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.5\common\inc" -I../shared/glew/include -I../shared/freeglut/include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" --keep-dir "Release (v5.5)" -maxrregcount=0 --machine 32 --compile -cudart static -DWIN32 -DNDEBUG -D_CONSOLE -D_UNICODE -DUNICODE -Xcompiler "/EHsc /W3 /nologo /O2 /Zi /MD " -o "C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\565Raytracer\Win32/Release (v5.5)/raytraceKernel.cu.obj" "C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\src\raytraceKernel.cu" + + C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\565Raytracer>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2012 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" -I"C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc" -I../shared/glew/includes -I../shared/freeglut/includes -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" -I"C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.5\common\inc" -I../shared/glew/include -I../shared/freeglut/include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" --keep-dir "Release (v5.5)" -maxrregcount=0 --machine 32 --compile -cudart static -DWIN32 -DNDEBUG -D_CONSOLE -D_UNICODE -DUNICODE -Xcompiler "/EHsc /W3 /nologo /O2 /Zi /MD " -o "C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\565Raytracer\Win32/Release (v5.5)/raytraceKernel.cu.obj" "C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\src\raytraceKernel.cu" + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl(48): warning : a __host__ function("glm::detail::toFloat32") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl(122): warning : a __host__ function("glm::detail::toFloat16") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl(324): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl(329): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl(334): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl(339): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl(345): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl(350): warning : a __host__ function("glm::detail::operator--") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl(355): warning : a __host__ function("glm::detail::operator++") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl(360): warning : a __host__ function("glm::detail::operator==") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl(369): warning : a __host__ function("glm::detail::operator!=") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl(378): warning : a __host__ function("glm::detail::operator<") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl(387): warning : a __host__ function("glm::detail::operator<=") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl(396): warning : a __host__ function("glm::detail::operator>") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl(405): warning : a __host__ function("glm::detail::operator>=") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_vec2.inl(114): warning : a __host__ function("glm::detail::tvec2::tvec2") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(419): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(431): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(443): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(455): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(467): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(479): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(491): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(507): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(519): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(534): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(546): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(560): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(576): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(594): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(606): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(628): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(638): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(649): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(660): warning : a __host__ function("glm::detail::operator++") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl(672): warning : a __host__ function("glm::detail::operator--") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(55): warning : a __host__ function("glm::detail::tmat2x3::operator[]") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(66): warning : a __host__ function("glm::detail::tmat2x3::operator[]") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(396): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(408): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(420): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(432): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(444): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(456): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(468): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(480): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(491): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(507): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(541): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(563): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(575): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(588): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(599): warning : a __host__ function("glm::detail::operator++") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl(611): warning : a __host__ function("glm::detail::operator--") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(399): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(411): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(423): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(435): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(447): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(459): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(477): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(496): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(508): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(553): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(571): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(593): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(605): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(618): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(629): warning : a __host__ function("glm::detail::operator++") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl(641): warning : a __host__ function("glm::detail::operator--") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(428): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(441): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(454): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(467): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(480): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(493): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(506): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(517): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(529): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(558): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(574): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(592): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(605): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(619): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(631): warning : a __host__ function("glm::detail::operator++") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl(645): warning : a __host__ function("glm::detail::operator--") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(486): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(499): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(512): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(525): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(538): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(551): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(564): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(577): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(590): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(603): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(616): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(656): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(672): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(694): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(707): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(720): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(730): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(740): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(751): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(763): warning : a __host__ function("glm::detail::operator++") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl(776): warning : a __host__ function("glm::detail::operator--") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(55): warning : a __host__ function("glm::detail::tmat3x4::operator[]") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(66): warning : a __host__ function("glm::detail::tmat3x4::operator[]") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(427): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(440): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(453): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(466): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(479): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(492): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(505): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(524): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(537): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(590): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(608): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(630): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(643): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(657): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(669): warning : a __host__ function("glm::detail::operator++") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl(682): warning : a __host__ function("glm::detail::operator--") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl(461): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl(475): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl(489): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl(503): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl(517): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl(531): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl(545): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl(556): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl(602): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl(618): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl(636): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl(650): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl(665): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl(678): warning : a __host__ function("glm::detail::operator++") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl(692): warning : a __host__ function("glm::detail::operator--") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(55): warning : a __host__ function("glm::detail::tmat4x3::operator[]") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(66): warning : a __host__ function("glm::detail::tmat4x3::operator[]") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(463): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(475): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(487): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(499): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(511): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(523): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(535): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(547): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(560): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(576): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(622): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(644): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(658): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(673): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(686): warning : a __host__ function("glm::detail::operator++") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl(700): warning : a __host__ function("glm::detail::operator--") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(577): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(591): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(605): warning : a __host__ function("glm::detail::operator+") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(619): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(633): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(647): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(661): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(675): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(689): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(703): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(717): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(735): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(757): warning : a __host__ function("glm::detail::operator*") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(782): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(796): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(810): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(830): warning : a __host__ function("glm::detail::operator/") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(841): warning : a __host__ function("glm::detail::operator-") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(854): warning : a __host__ function("glm::detail::operator++") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl(868): warning : a __host__ function("glm::detail::operator--") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl(35): warning : a __host__ function("glm::radians") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl(50): warning : a __host__ function("glm::degrees") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl(65): warning : a __host__ function("glm::sin") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl(79): warning : a __host__ function("glm::cos") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl(90): warning : a __host__ function("glm::tan") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl(104): warning : a __host__ function("glm::asin") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl(118): warning : a __host__ function("glm::acos") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl(132): warning : a __host__ function("glm::atan") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl(146): warning : a __host__ function("glm::atan") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl(160): warning : a __host__ function("glm::sinh") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl(174): warning : a __host__ function("glm::cosh") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl(188): warning : a __host__ function("glm::tanh") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl(202): warning : a __host__ function("glm::asinh") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl(216): warning : a __host__ function("glm::acosh") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl(232): warning : a __host__ function("glm::atanh") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_exponential.inl(35): warning : a __host__ function("glm::pow") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_exponential.inl(50): warning : a __host__ function("glm::exp") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_exponential.inl(64): warning : a __host__ function("glm::log") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_exponential.inl(78): warning : a __host__ function("glm::exp2") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_exponential.inl(119): warning : a __host__ function("glm::log2") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_exponential.inl(132): warning : a __host__ function("glm::sqrt") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_exponential.inl(145): warning : a __host__ function("glm::inversesqrt") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(65): warning : a __host__ function("glm::abs") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(78): warning : a __host__ function("glm::sign") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(107): warning : a __host__ function("glm::floor") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(118): warning : a __host__ function("glm::trunc") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(128): warning : a __host__ function("glm::round") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(152): warning : a __host__ function("glm::roundEven") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(186): warning : a __host__ function("glm::ceil") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(197): warning : a __host__ function("glm::fract") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(211): warning : a __host__ function("glm::mod") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(227): warning : a __host__ function("glm::modf") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(287): warning : a __host__ function("glm::min") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(306): warning : a __host__ function("glm::max") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(325): warning : a __host__ function("glm::clamp") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(430): warning : a __host__ function("glm::mix") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(618): warning : a __host__ function("glm::step") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(709): warning : a __host__ function("glm::smoothstep") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl(1099): warning : a __host__ function("glm::fma") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_packing.inl(31): warning : a __host__ function("glm::packUnorm2x16") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_packing.inl(38): warning : a __host__ function("glm::unpackUnorm2x16") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_packing.inl(48): warning : a __host__ function("glm::packSnorm2x16") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_packing.inl(63): warning : a __host__ function("glm::unpackSnorm2x16") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_packing.inl(79): warning : a __host__ function("glm::packUnorm4x8") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_packing.inl(88): warning : a __host__ function("glm::unpackUnorm4x8") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_packing.inl(102): warning : a __host__ function("glm::packSnorm4x8") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_packing.inl(119): warning : a __host__ function("glm::unpackSnorm4x8") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_packing.inl(137): warning : a __host__ function("glm::packDouble2x32") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_packing.inl(142): warning : a __host__ function("glm::unpackDouble2x32") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_packing.inl(147): warning : a __host__ function("glm::packHalf2x16") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_packing.inl(163): warning : a __host__ function("glm::unpackHalf2x16") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_geometric.inl(199): warning : a __host__ function("glm::cross") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_geometric.inl(215): warning : a __host__ function("glm::normalize") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_geometric.inl(264): warning : a __host__ function("glm::faceforward") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_geometric.inl(306): warning : a __host__ function("glm::refract") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_matrix.inl(35): warning : a __host__ function("glm::matrixCompMult") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_matrix.inl(422): warning : a __host__ function("glm::determinant") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_matrix.inl(433): warning : a __host__ function("glm::determinant") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_matrix.inl(447): warning : a __host__ function("glm::determinant") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_matrix.inl(474): warning : a __host__ function("glm::inverse") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_matrix.inl(494): warning : a __host__ function("glm::inverse") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_matrix.inl(523): warning : a __host__ function("glm::inverse") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_vector_relational.inl(143): warning : a __host__ function("glm::any") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_vector_relational.inl(155): warning : a __host__ function("glm::all") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_vector_relational.inl(167): warning : a __host__ function("glm::not_") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_integer.inl(39): warning : a __host__ function("glm::uaddCarry") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_integer.inl(96): warning : a __host__ function("glm::usubBorrow") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_integer.inl(154): warning : a __host__ function("glm::umulExtended") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_integer.inl(216): warning : a __host__ function("glm::imulExtended") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_integer.inl(278): warning : a __host__ function("glm::bitfieldExtract") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_integer.inl(339): warning : a __host__ function("glm::bitfieldInsert") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_integer.inl(407): warning : a __host__ function("glm::bitfieldReverse") redeclared with __host__ __device__, hence treated as a __host__ __device__ function + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_swizzle.hpp(194): warning : missing return statement at end of non-void function "glm::detail::_swizzle_base2::operator=(const glm::detail::_swizzle_base2::Stub &)" + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\intersections.h(92): warning C4068: unknown pragma + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\intersections.h(103): warning C4068: unknown pragma + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\intersections.h(177): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\intersections.h(178): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\intersections.h(196): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\intersections.h(197): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\intersections.h(215): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\intersections.h(216): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\intersections.h(335): warning C4244: 'argument' : conversion from 'float' to 'unsigned int', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\intersections.h(380): warning C4244: 'argument' : conversion from 'float' to 'unsigned int', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\intersections.h(381): warning C4305: 'argument' : truncation from 'double' to 'float' + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\intersections.h(382): warning C4305: 'argument' : truncation from 'double' to 'float' + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\interactions.h(70): warning C4244: 'argument' : conversion from 'float' to 'unsigned int', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\interactions.h(86): warning C4244: 'initializing' : conversion from 'double' to 'float', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\interactions.h(89): warning C4244: 'argument' : conversion from 'float' to 'unsigned int', possible loss of data + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\interactions.h(106): warning C4244: 'initializing' : conversion from 'double' to 'float', possible loss of data + 1>C:/Users/lucy/Documents/School/2013fall/CIS565/Project2-Pathtracer/src/raytraceKernel.cu(92): warning C4244: 'initializing' : conversion from 'float' to 'int', possible loss of data + 1>C:/Users/lucy/Documents/School/2013fall/CIS565/Project2-Pathtracer/src/raytraceKernel.cu(94): warning C4244: 'argument' : conversion from 'float' to 'unsigned int', possible loss of data + 1>C:/Users/lucy/Documents/School/2013fall/CIS565/Project2-Pathtracer/src/raytraceKernel.cu(118): warning C4244: 'argument' : conversion from 'float' to 'unsigned int', possible loss of data + 1>C:/Users/lucy/Documents/School/2013fall/CIS565/Project2-Pathtracer/src/raytraceKernel.cu(322): warning C4244: 'initializing' : conversion from 'float' to 'int', possible loss of data + 1>C:/Users/lucy/Documents/School/2013fall/CIS565/Project2-Pathtracer/src/raytraceKernel.cu(346): warning C4244: 'initializing' : conversion from 'float' to 'int', possible loss of data + ClCompile: + C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\CL.exe /c /I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" /I"C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.5\common\inc" /I../shared/glew/include /I../shared/freeglut/include /I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" /Zi /nologo /W3 /WX- /O2 /Oi /Oy- /GL /D WIN32 /D NDEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm- /EHsc /MD /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Release (v5.5)\\" /Fd"Release (v5.5)\vc110.pdb" /Gd /TP /analyze- /errorReport:prompt ..\..\src\main.cpp ..\..\src\scene.cpp + main.cpp + Note: including lib: glut32.lib + + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\objload.h(130): warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\stdio.h(311) : see declaration of 'sscanf' + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\objload.h(134): warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\stdio.h(311) : see declaration of 'sscanf' + 1>..\..\src\main.cpp(242): warning C4018: '<' : signed/unsigned mismatch + scene.cpp + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\objload.h(130): warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\stdio.h(311) : see declaration of 'sscanf' + 1>c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\objload.h(134): warning C4996: 'sscanf': This function or variable may be unsafe. Consider using sscanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. + C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\stdio.h(311) : see declaration of 'sscanf' + 1>..\..\src\scene.cpp(162): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(166): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(168): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(220): warning C4244: 'initializing' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(222): warning C4244: 'initializing' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(259): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(260): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(261): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(291): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(296): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(298): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(300): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(302): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(304): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(309): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(311): warning C4244: '=' : conversion from 'double' to 'float', possible loss of data + 1>..\..\src\scene.cpp(313): warning C4244: '=' : conversion from 'double' to 'int', possible loss of data + 1>..\..\src\scene.cpp(323): warning C4018: '<' : signed/unsigned mismatch + 1>..\..\src\scene.cpp(330): warning C4018: '<' : signed/unsigned mismatch + 1>..\..\src\scene.cpp(335): warning C4018: '<' : signed/unsigned mismatch + Link: + C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\Release (v5.5)\565Raytracer.exe" /INCREMENTAL:NO /NOLOGO /LIBPATH:../shared/glew/lib /LIBPATH:../shared/freeglut/lib /LIBPATH:"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\lib\Win32" cudart.lib glew32.lib glu32.lib opengl32.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 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\Release (v5.5)\565Raytracer.pdb" /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /LTCG /TLBID:1 /ENTRY:"mainCRTStartup" /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\Release (v5.5)\565Raytracer.lib" /MACHINE:X86 /SAFESEH "C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\565Raytracer\Win32/Release (v5.5)/raytraceKernel.cu.obj" + "Release (v5.5)\fps.obj" + "Release (v5.5)\glslUtility.obj" + "Release (v5.5)\image.obj" + "Release (v5.5)\main.obj" + "Release (v5.5)\objload.obj" + "Release (v5.5)\scene.obj" + "Release (v5.5)\stb_image.obj" + "Release (v5.5)\stb_image_write.obj" + "Release (v5.5)\utilities.obj" + Generating code + Finished generating code + 565Raytracer.vcxproj -> C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\Release (v5.5)\565Raytracer.exe + 1>Done Building Project "C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\565Raytracer\565Raytracer.vcxproj" (Build target(s)). + +Build succeeded. + +Time Elapsed 00:00:11.34 diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/CL.read.1.tlog b/PROJ1_WIN/565Raytracer/Release (v5.5)/CL.read.1.tlog new file mode 100644 index 0000000..bc19c64 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/CL.read.1.tlog differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/CL.write.1.tlog b/PROJ1_WIN/565Raytracer/Release (v5.5)/CL.write.1.tlog new file mode 100644 index 0000000..86e88d4 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/CL.write.1.tlog differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/cl.command.1.tlog b/PROJ1_WIN/565Raytracer/Release (v5.5)/cl.command.1.tlog new file mode 100644 index 0000000..92d50f1 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/cl.command.1.tlog differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/fps.obj b/PROJ1_WIN/565Raytracer/Release (v5.5)/fps.obj new file mode 100644 index 0000000..057fa4c Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/fps.obj differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/glslUtility.obj b/PROJ1_WIN/565Raytracer/Release (v5.5)/glslUtility.obj new file mode 100644 index 0000000..ca8e026 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/glslUtility.obj differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/image.obj b/PROJ1_WIN/565Raytracer/Release (v5.5)/image.obj new file mode 100644 index 0000000..2adb171 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/image.obj differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/link-cvtres.read.1.tlog b/PROJ1_WIN/565Raytracer/Release (v5.5)/link-cvtres.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Release (v5.5)/link-cvtres.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/link-cvtres.write.1.tlog b/PROJ1_WIN/565Raytracer/Release (v5.5)/link-cvtres.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Release (v5.5)/link-cvtres.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/link-rc.read.1.tlog b/PROJ1_WIN/565Raytracer/Release (v5.5)/link-rc.read.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Release (v5.5)/link-rc.read.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/link-rc.write.1.tlog b/PROJ1_WIN/565Raytracer/Release (v5.5)/link-rc.write.1.tlog new file mode 100644 index 0000000..46b134b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Release (v5.5)/link-rc.write.1.tlog @@ -0,0 +1 @@ +ÿþ \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/link.command.1.tlog b/PROJ1_WIN/565Raytracer/Release (v5.5)/link.command.1.tlog new file mode 100644 index 0000000..b46377d Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/link.command.1.tlog differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/link.read.1.tlog b/PROJ1_WIN/565Raytracer/Release (v5.5)/link.read.1.tlog new file mode 100644 index 0000000..4dae99f Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/link.read.1.tlog differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/link.write.1.tlog b/PROJ1_WIN/565Raytracer/Release (v5.5)/link.write.1.tlog new file mode 100644 index 0000000..2ece392 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/link.write.1.tlog differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/main.obj b/PROJ1_WIN/565Raytracer/Release (v5.5)/main.obj new file mode 100644 index 0000000..80a049b Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/main.obj differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/objload.obj b/PROJ1_WIN/565Raytracer/Release (v5.5)/objload.obj new file mode 100644 index 0000000..f463a32 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/objload.obj differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/raytraceKernel.cu.cache b/PROJ1_WIN/565Raytracer/Release (v5.5)/raytraceKernel.cu.cache new file mode 100644 index 0000000..3eea895 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/Release (v5.5)/raytraceKernel.cu.cache @@ -0,0 +1,49 @@ +Identity=..\..\src\raytraceKernel.cu +AdditionalCompilerOptions= +AdditionalCompilerOptions= +AdditionalDependencies= +AdditionalDeps= +AdditionalLibraryDirectories= +AdditionalOptions= +AdditionalOptions= +CInterleavedPTX=false +CodeGeneration=compute_10,sm_10 +CodeGeneration=compute_10,sm_10 +CompileOut=C:\Users\lucy\Documents\School\2013fall\CIS565\Project2-Pathtracer\PROJ1_WIN\565Raytracer\Win32/Release (v5.5)/raytraceKernel.cu.obj +CudaRuntime=Static +CudaToolkitCustomDir= +Defines=;WIN32;NDEBUG;_CONSOLE;_UNICODE;UNICODE; +Emulation=false +FastMath=false +GenerateLineInfo=false +GenerateRelocatableDeviceCode=false +GPUDebugInfo=false +GPUDebugInfo=false +HostDebugInfo=false +Include=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc;../shared/glew/includes;../shared/freeglut/includes;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.5\common\inc;../shared/glew/include;../shared/freeglut/include;;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include +Inputs= +Keep=false +KeepDir=Release (v5.5) +LinkOut= +MaxRegCount=0 +NvccCompilation=compile +NvccPath= +Optimization=O2 +Optimization=O2 +PerformDeviceLink= +PtxAsOptionV=false +RequiredIncludes= +Runtime=MD +Runtime=MD +RuntimeChecks=Default +RuntimeChecks=Default +TargetMachinePlatform=32 +TargetMachinePlatform=32 +TypeInfo= +TypeInfo= +UseHostDefines=true +UseHostInclude=true +UseHostLibraryDependencies= +UseHostLibraryDirectories= +Warning=W3 +Warning=W3 diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/scene.obj b/PROJ1_WIN/565Raytracer/Release (v5.5)/scene.obj new file mode 100644 index 0000000..c91b03c Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/scene.obj differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/stb_image.obj b/PROJ1_WIN/565Raytracer/Release (v5.5)/stb_image.obj new file mode 100644 index 0000000..b71d7a5 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/stb_image.obj differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/stb_image_write.obj b/PROJ1_WIN/565Raytracer/Release (v5.5)/stb_image_write.obj new file mode 100644 index 0000000..9c7a208 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/stb_image_write.obj differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/utilities.obj b/PROJ1_WIN/565Raytracer/Release (v5.5)/utilities.obj new file mode 100644 index 0000000..5be64bd Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/utilities.obj differ diff --git a/PROJ1_WIN/565Raytracer/Release (v5.5)/vc110.pdb b/PROJ1_WIN/565Raytracer/Release (v5.5)/vc110.pdb new file mode 100644 index 0000000..cc60a9b Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Release (v5.5)/vc110.pdb differ diff --git a/PROJ1_WIN/565Raytracer/Win32/Debug (v5.5)/raytraceKernel.cu.obj b/PROJ1_WIN/565Raytracer/Win32/Debug (v5.5)/raytraceKernel.cu.obj new file mode 100644 index 0000000..ab10a71 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Win32/Debug (v5.5)/raytraceKernel.cu.obj differ diff --git a/PROJ1_WIN/565Raytracer/Win32/Debug/raytraceKernel.cu.obj b/PROJ1_WIN/565Raytracer/Win32/Debug/raytraceKernel.cu.obj new file mode 100644 index 0000000..d2bc92a Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Win32/Debug/raytraceKernel.cu.obj differ diff --git a/PROJ1_WIN/565Raytracer/Win32/Release (v5.5)/raytraceKernel.cu.obj b/PROJ1_WIN/565Raytracer/Win32/Release (v5.5)/raytraceKernel.cu.obj new file mode 100644 index 0000000..f820fad Binary files /dev/null and b/PROJ1_WIN/565Raytracer/Win32/Release (v5.5)/raytraceKernel.cu.obj differ diff --git a/PROJ1_WIN/565Pathtracer/glut32.dll b/PROJ1_WIN/565Raytracer/glut32.dll old mode 100755 new mode 100644 similarity index 100% rename from PROJ1_WIN/565Pathtracer/glut32.dll rename to PROJ1_WIN/565Raytracer/glut32.dll diff --git a/PROJ1_WIN/565Raytracer/obj/bunny.obj b/PROJ1_WIN/565Raytracer/obj/bunny.obj new file mode 100644 index 0000000..d05947b --- /dev/null +++ b/PROJ1_WIN/565Raytracer/obj/bunny.obj @@ -0,0 +1,9976 @@ +# This file uses centimeters as units for non-parametric coordinates. + +v -0.003410 0.130320 0.021754 +v -0.081719 0.152501 0.029656 +v -0.030543 0.124779 0.001098 +v -0.024902 0.112111 0.037560 +v -0.018406 0.178431 -0.024220 +v 0.019068 0.121449 0.031968 +v 0.006041 0.124944 0.032653 +v -0.013469 0.162994 -0.012000 +v -0.034393 0.172367 -0.000982 +v -0.084314 0.109573 0.003710 +v -0.042234 0.172116 -0.004180 +v -0.063308 0.156606 -0.013839 +v -0.076904 0.167080 -0.026931 +v -0.072254 0.115396 0.051670 +v 0.012981 0.113664 0.038303 +v -0.037857 0.170101 0.001424 +v 0.004869 0.037962 0.045868 +v -0.057181 0.040919 0.046301 +v -0.045209 0.038839 0.044504 +v -0.033761 0.126179 0.001713 +v -0.050242 0.157737 0.009394 +v -0.021217 0.158879 -0.004692 +v -0.056473 0.157784 0.008179 +v -0.052802 0.041320 0.046170 +v -0.049960 0.043102 0.044463 +v -0.029749 0.036540 0.052493 +v -0.003544 0.042660 0.047542 +v 0.004930 0.041983 0.045723 +v -0.039088 0.168720 -0.011925 +v -0.056901 0.045437 0.043237 +v -0.041245 0.043099 0.042130 +v -0.026472 0.045035 0.051219 +v -0.021867 0.044023 0.053244 +v -0.036996 0.168993 0.001326 +v -0.067217 0.161713 -0.013734 +v 0.049760 0.070235 0.023732 +v -0.049187 0.046411 0.041170 +v -0.044590 0.043798 0.042685 +v -0.043686 0.047155 0.040286 +v -0.022492 0.046514 0.051885 +v -0.006517 0.045036 0.047503 +v 0.000377 0.044936 0.046520 +v 0.034024 0.113539 0.024595 +v -0.026468 0.181043 -0.008081 +v -0.017533 0.047964 0.048830 +v -0.007001 0.046417 0.047486 +v 0.005986 0.046689 0.049074 +v 0.009101 0.048474 0.049353 +v -0.035454 0.112448 0.035055 +v -0.075983 0.138208 0.049217 +v 0.034838 0.043153 0.028954 +v -0.052656 0.048494 0.038731 +v -0.047379 0.048457 0.039127 +v -0.038934 0.046364 0.040365 +v -0.026469 0.047816 0.049323 +v -0.022366 0.048074 0.050127 +v -0.013373 0.047892 0.047884 +v -0.012193 0.049470 0.049484 +v -0.000634 0.047193 0.049137 +v 0.002066 0.050105 0.052290 +v -0.022749 0.049884 0.046606 +v -0.018002 0.049918 0.046948 +v -0.007804 0.050169 0.050989 +v -0.002684 0.051247 0.053187 +v -0.063876 0.161401 -0.020064 +v 0.032434 0.045334 0.030317 +v -0.088065 0.124968 0.000574 +v -0.041504 0.167485 0.003277 +v -0.064457 0.153429 -0.005118 +v -0.034303 0.050520 0.038286 +v -0.022949 0.051021 0.043926 +v -0.014355 0.054428 0.050710 +v 0.001377 0.052303 0.053149 +v 0.003629 0.053199 0.053423 +v 0.008072 0.051574 0.051774 +v -0.072666 0.130056 0.051668 +v 0.037993 0.049793 0.031902 +v 0.038497 0.048062 0.031737 +v 0.021504 0.125640 0.021253 +v -0.076481 0.148274 -0.008938 +v -0.087240 0.119672 -0.000178 +v -0.043720 0.168227 0.002343 +v -0.040652 0.122665 0.026290 +v -0.046686 0.054571 0.037587 +v -0.044072 0.051058 0.038978 +v -0.038144 0.050600 0.039302 +v -0.019876 0.051608 0.046142 +v -0.016911 0.051844 0.048459 +v -0.016249 0.054292 0.050307 +v -0.010447 0.053686 0.051959 +v -0.004309 0.054467 0.053908 +v 0.007815 0.055051 0.052750 +v 0.037955 0.104887 -0.003203 +v -0.079004 0.128505 0.053149 +v -0.079779 0.134489 0.050990 +v -0.059130 0.150397 0.034490 +v -0.065692 0.149618 0.038161 +v -0.031952 0.125184 0.019401 +v -0.069373 0.160618 -0.009190 +v -0.045226 0.129355 0.020378 +v -0.041879 0.056164 0.039797 +v -0.030615 0.054413 0.036694 +v -0.024788 0.052606 0.040840 +v -0.021589 0.056837 0.045467 +v -0.000243 0.054536 0.054641 +v -0.080901 0.125587 0.052155 +v -0.029996 0.178111 -0.005236 +v 0.035515 0.050450 0.031440 +v 0.043316 0.052146 0.032492 +v -0.063939 0.152627 0.034481 +v -0.044489 0.061078 0.039545 +v -0.038980 0.057996 0.040151 +v -0.079088 0.170445 -0.041373 +v -0.004625 0.057760 0.053991 +v -0.001499 0.055925 0.054631 +v 0.005198 0.057018 0.053424 +v 0.000031 0.123157 0.034750 +v 0.033568 0.115237 0.021798 +v 0.038686 0.056451 0.031189 +v -0.034386 0.054096 0.038060 +v -0.008531 0.060159 0.055309 +v -0.000440 0.058343 0.054483 +v -0.091079 0.115060 0.040142 +v 0.040775 0.054557 0.032015 +v 0.045637 0.057403 0.031992 +v 0.020359 0.124487 0.025906 +v -0.014170 0.127679 0.001308 +v -0.011988 0.057493 0.052752 +v 0.003251 0.059829 0.055464 +v -0.012395 0.122647 0.033588 +v 0.013814 0.123222 0.032503 +v -0.077004 0.155213 0.024535 +v -0.028001 0.061075 0.037471 +v -0.000855 0.060594 0.055825 +v -0.038050 0.115271 0.033179 +v -0.016231 0.123829 0.029577 +v -0.025374 0.158400 -0.001480 +v -0.067819 0.154544 0.030234 +v -0.004308 0.061419 0.055688 +v -0.003196 0.119125 0.038350 +v -0.006429 0.122011 0.035741 +v 0.042313 0.059099 0.030848 +v 0.048510 0.061781 0.030347 +v 0.050412 0.060313 0.030245 +v -0.039186 0.063075 0.041383 +v -0.034449 0.060780 0.039544 +v -0.014746 0.065584 0.053731 +v 0.002665 0.062700 0.056525 +v -0.013992 0.119626 0.036252 +v 0.019659 0.112362 0.037545 +v -0.032597 0.174987 -0.002595 +v -0.002151 0.099437 0.049850 +v -0.056001 0.061831 0.027931 +v -0.054707 0.063462 0.031671 +v -0.051308 0.060522 0.031435 +v -0.041979 0.069630 0.041825 +v -0.030272 0.062475 0.037982 +v -0.011388 0.064742 0.054918 +v 0.006954 0.064700 0.055599 +v 0.043015 0.097691 0.001026 +v 0.040636 0.061575 0.029841 +v 0.046184 0.061910 0.030223 +v 0.037553 0.106853 0.026303 +v -0.078641 0.163872 -0.028388 +v -0.061996 0.147615 -0.004326 +v -0.005750 0.065489 0.056173 +v 0.000254 0.065741 0.056569 +v -0.020543 0.119795 0.033004 +v 0.004316 0.127826 0.028647 +v -0.046550 0.067652 0.039636 +v -0.017421 0.069659 0.054090 +v -0.015242 0.070910 0.055005 +v -0.010283 0.068926 0.055290 +v -0.000113 0.069288 0.056580 +v -0.036309 0.118769 0.030674 +v -0.070326 0.063368 0.019809 +v 0.043023 0.063796 0.028039 +v 0.042831 0.085556 0.027874 +v 0.016982 0.127150 0.022931 +v -0.042121 0.128251 0.001075 +v 0.016329 0.122519 0.031375 +v -0.081264 0.153812 0.025898 +v -0.032258 0.088193 -0.025131 +v -0.013775 0.070888 0.054696 +v 0.005293 0.068006 0.055670 +v 0.007696 0.072376 0.056062 +v 0.003483 0.120026 0.036912 +v 0.006653 0.116736 0.038716 +v 0.046087 0.066474 0.026809 +v 0.052327 0.064327 0.028282 +v -0.061898 0.122971 -0.008773 +v -0.006393 0.105245 -0.022842 +v -0.035218 0.068560 0.041381 +v -0.032690 0.067730 0.040124 +v -0.029245 0.069552 0.039369 +v -0.005002 0.069655 0.056893 +v 0.016574 0.118902 0.035042 +v -0.089385 0.099024 0.017522 +v 0.045719 0.069489 0.023549 +v 0.054537 0.068797 0.024518 +v -0.044989 0.071577 0.041929 +v -0.004244 0.129149 0.025829 +v -0.073880 0.120916 0.053396 +v -0.074034 0.144069 0.044995 +v 0.050400 0.067292 0.026851 +v -0.054057 0.156716 -0.002487 +v 0.026148 0.120147 0.027308 +v -0.010736 0.129903 0.010994 +v -0.045079 0.087261 -0.021866 +v -0.038341 0.068844 0.041846 +v -0.029256 0.075169 0.041186 +v -0.047311 0.162960 0.006074 +v -0.011866 0.073184 0.056250 +v -0.006373 0.072184 0.057973 +v -0.002994 0.072186 0.058167 +v -0.025781 0.093778 -0.028388 +v -0.016693 0.115686 0.037853 +v -0.084123 0.108320 0.024731 +v -0.074294 0.163568 -0.015534 +v -0.094297 0.126177 0.019225 +v -0.035207 0.125052 0.021636 +v -0.049496 0.073436 0.041674 +v -0.033064 0.076655 0.041278 +v -0.007316 0.073920 0.057972 +v 0.000022 0.073496 0.057697 +v 0.004193 0.072915 0.056299 +v -0.077256 0.145659 0.043123 +v 0.041073 0.088724 -0.009788 +v 0.037419 0.108508 0.000340 +v -0.055111 0.074688 0.041940 +v -0.042740 0.076995 0.042804 +v -0.068531 0.156300 0.020998 +v -0.009944 0.076343 0.057389 +v -0.003248 0.075711 0.058715 +v 0.013414 0.093074 0.051468 +v -0.073504 0.093883 -0.014752 +v -0.074472 0.135075 0.050689 +v -0.025851 0.121829 0.026080 +v -0.034023 0.175971 -0.003727 +v -0.075406 0.168391 -0.026793 +v -0.036658 0.075087 0.042007 +v -0.017795 0.077486 0.056087 +v -0.011379 0.079877 0.057699 +v -0.000104 0.076882 0.058191 +v 0.002738 0.079106 0.056719 +v 0.005568 0.076397 0.056327 +v -0.061896 0.154242 -0.019019 +v -0.072647 0.140989 0.046977 +v 0.015800 0.129014 0.013237 +v -0.011703 0.097356 0.051592 +v -0.058922 0.077545 0.042961 +v -0.053121 0.077912 0.043335 +v -0.050746 0.076148 0.043138 +v -0.047402 0.075550 0.042630 +v -0.045056 0.078796 0.042341 +v -0.039518 0.078128 0.042919 +v -0.015246 0.082941 0.056935 +v -0.014558 0.076582 0.056493 +v -0.005941 0.079038 0.057970 +v 0.037177 0.110644 0.018811 +v 0.002393 0.131627 0.011955 +v -0.093644 0.117894 0.018662 +v -0.063940 0.078622 0.042084 +v -0.045376 0.082384 0.043282 +v -0.036505 0.081152 0.043162 +v -0.033244 0.082267 0.041852 +v -0.030801 0.080068 0.041798 +v -0.002058 0.080998 0.057554 +v 0.008185 0.080756 0.055375 +v -0.012953 0.115936 0.038920 +v -0.078081 0.123519 0.052137 +v -0.026581 0.155677 -0.004196 +v -0.082472 0.116241 -0.002324 +v -0.027538 0.079965 0.047697 +v 0.001256 0.083846 0.057446 +v 0.006151 0.083406 0.056463 +v -0.062433 0.084035 0.044203 +v -0.059867 0.080541 0.043277 +v -0.055238 0.081999 0.044985 +v -0.054000 0.080568 0.044601 +v -0.050027 0.081311 0.044264 +v -0.041996 0.081084 0.042456 +v -0.039358 0.083631 0.043502 +v -0.086161 0.108386 0.018245 +v -0.086723 0.099917 0.003554 +v -0.022414 0.083284 0.055591 +v -0.016993 0.082556 0.057524 +v -0.012406 0.085223 0.057268 +v -0.007444 0.116934 0.039284 +v -0.002145 0.111433 0.042437 +v -0.075718 0.125227 0.053087 +v -0.077057 0.131935 0.052462 +v -0.061121 0.155697 0.022517 +v -0.037539 0.127441 0.015321 +v -0.002052 0.100935 0.045626 +v -0.064992 0.084551 0.044120 +v -0.057862 0.083944 0.044186 +v -0.045681 0.084988 0.044160 +v -0.035023 0.082888 0.042913 +v -0.029982 0.085402 0.043745 +v -0.088892 0.099209 0.009570 +v -0.019135 0.083475 0.057217 +v -0.083490 0.107247 0.000758 +v -0.070113 0.117904 0.052714 +v -0.035526 0.175956 -0.004868 +v -0.070831 0.122544 0.053275 +v 0.045134 0.093631 0.006234 +v -0.053617 0.085347 0.045332 +v -0.049001 0.086222 0.045352 +v -0.036745 0.086084 0.043613 +v -0.010873 0.088827 0.056665 +v -0.003845 0.084788 0.057198 +v -0.049020 0.117713 0.031581 +v -0.042914 0.118360 0.030645 +v -0.057685 0.155617 0.012983 +v -0.025412 0.124725 0.000129 +v 0.019012 0.127362 0.017787 +v -0.059499 0.088845 0.045109 +v -0.056931 0.088101 0.044693 +v 0.003577 0.131390 0.007209 +v -0.016683 0.087267 0.056741 +v -0.008498 0.083990 0.057605 +v 0.003508 0.086340 0.057048 +v -0.028399 0.180707 -0.007847 +v -0.076566 0.116740 0.051489 +v 0.017869 0.090899 0.048713 +v -0.040342 0.116696 0.032460 +v 0.005911 0.131409 0.016824 +v -0.085778 0.091701 -0.000047 +v -0.050372 0.088845 0.045188 +v -0.044434 0.087655 0.043478 +v -0.042056 0.086712 0.042535 +v -0.033058 0.086186 0.042560 +v -0.029242 0.090453 0.044237 +v -0.006896 0.084433 0.057169 +v -0.006621 0.090415 0.056880 +v -0.001244 0.089093 0.056552 +v 0.009408 0.090328 0.054214 +v 0.040195 0.102316 -0.002005 +v -0.086227 0.114668 0.002210 +v -0.089495 0.095632 0.014235 +v -0.067132 0.157094 -0.006203 +v -0.052936 0.090914 0.044569 +v -0.036745 0.088887 0.043312 +v -0.013626 0.089788 0.056674 +v 0.023337 0.123534 0.024874 +v -0.037054 0.127151 0.000355 +v -0.073697 0.156130 0.014360 +v -0.065592 0.091042 0.044092 +v -0.058997 0.092031 0.045335 +v -0.033239 0.088574 0.043697 +v -0.031835 0.090723 0.044173 +v -0.020022 0.088032 0.055589 +v -0.011214 0.092366 0.056105 +v 0.039108 0.108291 0.013142 +v 0.028676 0.119596 0.024546 +v -0.068940 0.156528 -0.001972 +v -0.062615 0.091127 0.045091 +v 0.030445 0.118864 0.020822 +v -0.015241 0.091822 0.055817 +v -0.005622 0.093235 0.055894 +v 0.004799 0.091655 0.054715 +v -0.068282 0.092377 0.042389 +v -0.055624 0.092187 0.045055 +v -0.051901 0.095458 0.043938 +v -0.048809 0.091084 0.044457 +v -0.045412 0.091002 0.043253 +v -0.044515 0.094860 0.042972 +v -0.039430 0.089598 0.043178 +v -0.035642 0.092617 0.044238 +v -0.000122 0.093201 0.055398 +v 0.009510 0.095484 0.050911 +v 0.021442 0.091355 0.048043 +v -0.008983 0.169264 -0.022683 +v -0.073019 0.156021 0.022419 +v -0.064760 0.153116 -0.002037 +v -0.069369 0.095243 0.042129 +v -0.060117 0.095553 0.044184 +v -0.029242 0.094290 0.044821 +v -0.026561 0.093290 0.044975 +v -0.014394 0.094588 0.053994 +v -0.008869 0.095400 0.054446 +v -0.001219 0.096202 0.053816 +v 0.004048 0.095817 0.052937 +v -0.004602 0.124285 0.033472 +v -0.078436 0.139280 0.048329 +v 0.010775 0.130792 0.014342 +v -0.056624 0.096322 0.043668 +v -0.036299 0.095696 0.043580 +v -0.024380 0.095866 0.044435 +v 0.010916 0.126336 0.029857 +v -0.005862 0.097350 0.052744 +v 0.016973 0.097107 0.047441 +v -0.067232 0.099174 0.041594 +v -0.054994 0.099641 0.042955 +v -0.048618 0.096453 0.044183 +v -0.055369 0.154425 0.016161 +v -0.094244 0.122074 0.023568 +v 0.013243 0.096738 0.048750 +v 0.020639 0.096602 0.046971 +v 0.007343 0.120982 0.035973 +v -0.013494 0.128824 0.005969 +v -0.020111 0.125045 0.023588 +v -0.069438 0.164799 -0.017219 +v -0.064028 0.097839 0.042565 +v -0.051996 0.099708 0.042717 +v -0.043991 0.099425 0.042383 +v -0.039738 0.102154 0.040574 +v -0.035931 0.099810 0.042336 +v -0.030868 0.096915 0.044651 +v -0.028342 0.097783 0.043761 +v -0.025623 0.098713 0.044211 +v -0.085237 0.110774 0.024538 +v 0.007194 0.098859 0.048420 +v 0.009651 0.101088 0.047373 +v 0.013487 0.100764 0.047454 +v 0.007739 0.131475 0.011683 +v 0.000809 0.116333 0.040168 +v -0.072653 0.165679 -0.018212 +v -0.005601 0.130767 0.010516 +v -0.026304 0.125189 0.017393 +v -0.047590 0.100812 0.042349 +v -0.041461 0.098545 0.041779 +v -0.033582 0.103839 0.040738 +v -0.022870 0.102847 0.043545 +v -0.022362 0.098208 0.044766 +v -0.018871 0.098973 0.044489 +v -0.071434 0.077574 0.038061 +v -0.073001 0.118267 0.053035 +v -0.068466 0.134981 -0.008336 +v -0.074684 0.107861 -0.009048 +v -0.064959 0.158520 -0.012595 +v -0.078932 0.150931 0.035152 +v -0.074114 0.099443 0.038338 +v -0.070457 0.100988 0.039794 +v -0.059059 0.100413 0.042725 +v -0.049187 0.104520 0.040301 +v -0.029151 0.101974 0.042633 +v -0.011600 0.101078 0.044192 +v 0.005145 0.101639 0.045423 +v -0.051496 0.104967 0.040347 +v -0.020218 0.102144 0.043701 +v 0.004252 0.105237 0.042564 +v 0.016833 0.103375 0.045287 +v -0.025661 0.125627 0.004554 +v -0.072142 0.105367 0.037523 +v -0.064985 0.103716 0.040648 +v -0.060652 0.104672 0.040906 +v -0.055309 0.103654 0.041517 +v -0.044243 0.104317 0.041340 +v -0.015513 0.104361 0.042919 +v -0.007632 0.103045 0.043711 +v -0.007805 0.105166 0.043825 +v 0.009716 0.105235 0.043604 +v 0.030300 0.115536 0.028685 +v -0.047497 0.106357 0.040166 +v -0.038979 0.106830 0.038248 +v -0.025869 0.104267 0.042208 +v -0.018058 0.105039 0.042803 +v -0.015180 0.108077 0.042350 +v -0.003898 0.105662 0.044047 +v 0.000027 0.104467 0.043776 +v 0.011978 0.104036 0.045396 +v 0.015005 0.107269 0.041812 +v 0.026488 0.122303 0.020398 +v -0.036226 0.106342 0.038645 +v -0.021127 0.109323 0.040715 +v -0.012820 0.104571 0.043466 +v 0.005285 0.109437 0.041675 +v 0.008940 0.107106 0.041243 +v -0.051840 0.160620 0.007142 +v -0.054201 0.114517 0.034844 +v 0.013226 0.129581 0.019690 +v -0.069382 0.108658 0.037508 +v -0.067691 0.107341 0.038018 +v -0.063782 0.110373 0.037580 +v -0.050749 0.109287 0.038298 +v -0.009394 0.107428 0.043455 +v 0.001176 0.109325 0.042663 +v 0.009802 0.110040 0.039945 +v 0.020131 0.107328 0.040324 +v -0.002787 0.105775 -0.022459 +v -0.054997 0.107742 0.039425 +v -0.045967 0.109051 0.038754 +v -0.042325 0.107373 0.039456 +v -0.032161 0.108965 0.038103 +v -0.030770 0.115973 0.032859 +v -0.011609 0.109837 0.042475 +v -0.029428 0.093167 -0.024932 +v -0.080044 0.092080 -0.009420 +v -0.049797 0.113421 0.035118 +v -0.043724 0.161914 0.005771 +v -0.057982 0.109432 0.037998 +v -0.041491 0.112248 0.035873 +v -0.024930 0.115928 0.034095 +v -0.020882 0.114095 0.037873 +v -0.007552 0.111838 0.042040 +v 0.003767 0.112405 0.041495 +v -0.062830 0.151895 -0.009237 +v -0.059196 0.113208 0.036235 +v -0.051079 0.093893 -0.021762 +v -0.073945 0.084375 -0.015154 +v -0.072146 0.134864 -0.007759 +v -0.019409 0.170411 -0.020995 +v -0.055530 0.149055 -0.001960 +v 0.016688 0.036977 0.043001 +v -0.052277 0.117751 0.033769 +v -0.069201 0.093039 -0.016486 +v 0.026579 0.117024 0.030868 +v -0.023574 0.037037 0.054145 +v -0.007378 0.038988 0.048929 +v 0.013235 0.038453 0.044501 +v 0.019487 0.040809 0.042641 +v -0.063954 0.146947 0.038484 +v -0.049579 0.036097 0.045955 +v -0.043324 0.036286 0.044042 +v -0.029047 0.125563 0.007762 +v -0.001734 0.039477 0.047263 +v -0.031358 0.153622 -0.004674 +v 0.002582 0.107476 -0.020606 +v -0.056802 0.145147 0.031740 +v -0.056464 0.037683 0.046820 +v -0.050965 0.038312 0.046286 +v -0.050980 0.134866 0.027585 +v -0.025647 0.038861 0.054161 +v -0.022542 0.040616 0.053986 +v -0.017618 0.038911 0.052403 +v -0.019712 0.168291 -0.013021 +v 0.023780 0.095223 0.046347 +v 0.014744 0.042717 0.044510 +v 0.021691 0.040162 0.040846 +v -0.064067 0.090172 -0.018856 +v 0.020319 0.100420 0.045761 +v -0.036425 0.093631 -0.023535 +v -0.014981 0.042571 0.051405 +v -0.057335 0.123401 0.040231 +v -0.054173 0.123379 0.037576 +v 0.022625 0.043622 0.040905 +v 0.028811 0.043352 0.032158 +v -0.042764 0.157275 0.005202 +v 0.009223 0.044125 0.045057 +v 0.015048 0.045756 0.043794 +v -0.063757 0.102511 -0.017484 +v -0.034070 0.161490 -0.013787 +v -0.082191 0.075610 0.016543 +v -0.066299 0.123371 0.050616 +v -0.015510 0.045283 0.050653 +v 0.018928 0.044250 0.043010 +v 0.025822 0.046327 0.038277 +v 0.027269 0.044548 0.036153 +v -0.045301 0.156951 0.007204 +v 0.023856 0.106166 0.039378 +v 0.021633 0.048127 0.040694 +v 0.043785 0.048804 0.031343 +v 0.048075 0.048970 0.028165 +v 0.052663 0.047674 0.021201 +v -0.052722 0.044723 0.044143 +v -0.030072 0.172583 -0.006360 +v -0.034508 0.154475 0.001650 +v 0.010630 0.046712 0.046472 +v 0.016743 0.048439 0.043679 +v 0.028827 0.092133 0.043920 +v -0.059937 0.127262 0.040771 +v -0.036752 0.158021 0.004186 +v -0.037885 0.161997 0.000247 +v -0.022048 0.183486 -0.012095 +v -0.024365 0.180968 -0.009831 +v -0.044882 0.150530 0.007645 +v 0.026997 0.051318 0.038752 +v 0.047736 0.052751 0.030797 +v 0.051704 0.048857 0.024148 +v -0.067504 0.114241 0.048036 +v -0.016258 0.160313 -0.009693 +v -0.063926 0.167924 -0.040730 +v -0.041665 0.149961 0.004541 +v -0.035203 0.164936 -0.002681 +v 0.041319 0.099497 0.024276 +v 0.014055 0.052524 0.048594 +v 0.019421 0.051321 0.044799 +v 0.023678 0.051474 0.041053 +v 0.034258 0.051931 0.032758 +v 0.055957 0.053147 0.023198 +v -0.039938 0.149228 0.001602 +v -0.046989 0.126008 0.026986 +v -0.027708 0.090081 -0.031911 +v 0.019205 0.055167 0.047722 +v 0.021886 0.053928 0.045102 +v 0.031286 0.052864 0.036914 +v 0.046661 0.054719 0.031977 +v 0.051824 0.053277 0.027927 +v -0.029265 0.161404 -0.002104 +v -0.068701 0.144635 0.043042 +v -0.056070 0.150007 0.029868 +v 0.044718 0.094803 0.012025 +v -0.041804 0.155821 0.006455 +v -0.068369 0.122893 0.052438 +v -0.064115 0.095510 -0.018115 +v -0.018383 0.185437 -0.017136 +v 0.011745 0.056678 0.051914 +v -0.059375 0.119982 0.040548 +v 0.059092 0.057957 0.020270 +v 0.043548 0.097389 0.017315 +v -0.026292 0.159634 -0.000518 +v 0.014905 0.056350 0.049523 +v 0.024286 0.054959 0.043087 +v 0.028953 0.056125 0.040389 +v -0.049508 0.129495 0.030259 +v 0.040825 0.095170 0.028658 +v 0.017775 0.058244 0.048865 +v 0.033574 0.058515 0.038311 +v 0.036385 0.056996 0.033601 +v -0.064205 0.122439 0.048008 +v -0.065425 0.140113 0.041309 +v 0.050801 0.057308 0.030001 +v 0.056672 0.056971 0.024292 +v -0.049350 0.149135 0.011274 +v -0.069761 0.134429 0.048265 +v 0.019537 0.060004 0.048576 +v 0.027014 0.059953 0.043454 +v 0.057679 0.061393 0.024202 +v -0.056917 0.126235 0.039427 +v 0.023469 0.116563 0.033537 +v -0.058299 0.138855 0.032937 +v 0.006460 0.060297 0.054780 +v 0.010406 0.059162 0.052484 +v 0.023184 0.058654 0.045871 +v 0.033040 0.061774 0.039781 +v -0.064348 0.126281 0.046650 +v -0.057031 0.115620 0.036495 +v 0.054452 0.058343 0.027653 +v -0.030134 0.170113 -0.007359 +v -0.037077 0.159864 0.001610 +v -0.056033 0.137311 0.031971 +v -0.067676 0.141503 0.043868 +v 0.009991 0.062735 0.054009 +v 0.014522 0.061383 0.050501 +v 0.030052 0.062170 0.041546 +v 0.037519 0.061063 0.034366 +v 0.053944 0.061392 0.028269 +v 0.059120 0.063129 0.021562 +v -0.024366 0.176933 -0.011720 +v -0.013253 0.166272 -0.014120 +v 0.039219 0.106693 0.020450 +v -0.017969 0.180780 -0.018103 +v 0.021902 0.060876 0.047282 +v 0.035342 0.061630 0.037606 +v -0.062146 0.135998 0.036701 +v 0.056821 0.063691 0.025286 +v -0.032800 0.159487 0.002196 +v 0.011212 0.066584 0.053982 +v 0.012920 0.064204 0.052441 +v 0.020127 0.063851 0.047920 +v 0.035972 0.066670 0.037781 +v 0.039907 0.064361 0.031687 +v -0.066702 0.132106 0.045481 +v -0.041601 0.159780 0.003537 +v 0.033045 0.107663 0.031916 +v 0.024672 0.063694 0.045205 +v 0.026109 0.068008 0.043903 +v 0.033364 0.067055 0.039729 +v 0.042916 0.066708 0.026995 +v 0.054715 0.064697 0.026980 +v -0.016531 0.163250 -0.009248 +v -0.017892 0.161138 -0.006707 +v 0.041118 0.097491 -0.003976 +v 0.023387 0.070076 0.047013 +v 0.038103 0.065678 0.035133 +v 0.010145 0.122217 0.034719 +v 0.058392 0.066741 0.021979 +v 0.038302 0.084549 -0.014479 +v 0.034126 0.097054 0.037590 +v -0.031356 0.158099 0.001913 +v -0.058260 0.140995 0.032441 +v -0.066817 0.119515 0.051490 +v -0.068090 0.116471 0.051151 +v 0.016568 0.066270 0.051010 +v 0.029363 0.066510 0.042289 +v 0.037027 0.093950 -0.011674 +v 0.056413 0.067660 0.023969 +v -0.061296 0.145200 0.037138 +v 0.008387 0.113362 0.039793 +v 0.011807 0.070921 0.054240 +v 0.029742 0.070647 0.041654 +v 0.036294 0.071221 0.037115 +v 0.039900 0.070295 0.032720 +v -0.062763 0.137780 0.036679 +v -0.015815 0.175049 -0.018654 +v -0.092269 0.114752 0.017017 +v -0.000950 0.101411 0.044290 +v -0.063713 0.112742 0.038007 +v -0.061096 0.117017 0.039654 +v 0.020992 0.069335 0.049004 +v 0.025659 0.070550 0.044540 +v 0.032979 0.073501 0.040487 +v 0.042156 0.069718 0.028318 +v -0.055517 0.129561 0.036598 +v -0.040802 0.164361 0.003745 +v -0.006255 0.101217 0.044322 +v -0.010987 0.166212 -0.016048 +v -0.030351 0.164482 -0.005329 +v 0.026111 0.100890 0.041733 +v -0.065600 0.113295 0.042319 +v 0.028815 0.096713 0.042258 +v 0.015263 0.071572 0.052717 +v 0.028982 0.074088 0.043447 +v 0.044873 0.075517 0.023155 +v -0.078225 0.149625 -0.002502 +v -0.046095 0.152968 0.009003 +v -0.052369 0.146829 0.018935 +v -0.021592 0.157634 -0.006862 +v 0.017177 0.073066 0.051827 +v 0.022688 0.075149 0.049312 +v 0.035472 0.073077 0.038482 +v -0.089481 0.138400 0.025061 +v -0.053217 0.132220 0.032978 +v -0.037777 0.155519 0.004370 +v -0.090549 0.135119 0.021681 +v -0.063367 0.130371 0.041670 +v 0.014074 0.076652 0.054221 +v 0.018110 0.075807 0.052488 +v 0.042210 0.078861 0.029187 +v -0.052116 0.141799 0.020510 +v 0.029063 0.111496 0.033806 +v -0.054731 0.142672 0.028980 +v 0.025904 0.075536 0.046417 +v 0.031299 0.075907 0.042699 +v 0.038446 0.075649 0.035051 +v 0.046352 0.074080 0.018354 +v -0.047657 0.130775 0.025524 +v -0.011447 0.171311 -0.019603 +v -0.036647 0.166401 -0.000282 +v -0.046654 0.159178 0.007802 +v -0.045570 0.146636 0.005651 +v 0.041439 0.092365 -0.007459 +v -0.064287 0.134636 0.039946 +v -0.061129 0.131783 0.038916 +v -0.047844 0.122151 0.028833 +v -0.049537 0.124913 0.031778 +v -0.071135 0.138177 0.047854 +v 0.010114 0.076468 0.055257 +v 0.017897 0.079517 0.052760 +v 0.021741 0.080251 0.050425 +v 0.025272 0.078725 0.048027 +v 0.030885 0.078999 0.043389 +v -0.062442 0.140848 0.036966 +v -0.062165 0.156668 -0.017838 +v 0.020657 0.104168 0.043005 +v -0.063603 0.115715 0.042572 +v 0.014424 0.080086 0.053756 +v 0.028779 0.082553 0.044527 +v 0.044450 0.081847 0.024553 +v 0.045542 0.083338 0.019701 +v -0.049666 0.120638 0.032163 +v -0.029177 0.176200 -0.005624 +v -0.058203 0.132710 0.036919 +v 0.038997 0.097088 -0.007780 +v -0.054726 0.120713 0.037451 +v 0.013189 0.084211 0.053066 +v -0.019926 0.164897 -0.009990 +v 0.020153 0.118497 0.034271 +v -0.055860 0.117743 0.037253 +v 0.018045 0.083623 0.051286 +v -0.063757 0.159122 -0.050156 +v -0.018528 0.176532 -0.017044 +v 0.028734 0.103601 0.038035 +v 0.041414 0.102842 0.016579 +v 0.024412 0.098017 0.044687 +v 0.020925 0.086311 0.049433 +v 0.030445 0.084960 0.043011 +v 0.033030 0.083782 0.041637 +v 0.036975 0.079876 0.037198 +v -0.077721 0.113559 0.048156 +v 0.029250 0.106519 0.036590 +v -0.053078 0.137547 0.028266 +v -0.062991 0.119995 0.045236 +v -0.065398 0.117520 0.048736 +v 0.033374 0.112279 0.027788 +v 0.038414 0.087490 0.035186 +v -0.061946 0.164792 -0.056648 +v -0.022876 0.173928 -0.013431 +v 0.043766 0.088390 -0.003571 +v 0.039292 0.101260 0.027551 +v 0.010936 0.086027 0.054733 +v 0.024109 0.084493 0.048292 +v 0.036758 0.099195 0.032838 +v -0.051942 0.125660 0.034588 +v -0.031582 0.166418 -0.005732 +v 0.007641 0.086427 0.056118 +v 0.016771 0.088645 0.050523 +v 0.034405 0.086933 0.040574 +v 0.036144 0.084439 0.037937 +v 0.041259 0.103611 0.002676 +v 0.024766 0.110811 0.036728 +v -0.022602 0.162504 -0.006072 +v -0.012894 0.178790 -0.022625 +v -0.024939 0.170311 -0.011330 +v -0.048469 0.145596 0.008366 +v 0.012534 0.089594 0.053395 +v 0.025873 0.088482 0.046655 +v 0.032756 0.088969 0.042215 +v -0.023344 0.161034 -0.003186 +v -0.092595 0.119438 0.026803 +v -0.074315 0.137617 -0.006670 +v -0.092499 0.121315 0.029256 +v -0.077378 0.157643 -0.014134 +v -0.092907 0.123070 0.036523 +v 0.028423 0.088011 0.044234 +v 0.035252 0.090837 0.039184 +v 0.015761 0.093204 0.049939 +v 0.038786 0.094954 0.032520 +v -0.061511 0.123736 0.043063 +v -0.068145 0.127487 0.050149 +v -0.020617 0.182376 -0.014299 +v 0.015137 0.115715 0.037032 +v -0.050718 0.152763 0.011817 +v 0.030169 0.100487 0.039405 +v -0.087426 0.095470 0.004031 +v -0.060010 0.142845 0.035450 +v -0.058603 0.146372 0.033809 +v 0.032412 0.093736 0.040890 +v -0.075918 0.149977 -0.016842 +v 0.018597 0.035294 -0.008678 +v 0.017210 0.035259 -0.014685 +v 0.044327 0.090818 0.022098 +v 0.038336 0.038831 0.003094 +v 0.022193 0.036775 -0.002092 +v 0.019636 0.038234 -0.012508 +v 0.023682 0.039763 0.037149 +v 0.046693 0.042465 0.006565 +v 0.021621 0.037657 -0.004702 +v 0.016639 0.038196 -0.019885 +v -0.090254 0.113663 0.037720 +v -0.090594 0.113731 0.010277 +v -0.062542 0.176795 -0.057822 +v -0.011092 0.179921 -0.025996 +v -0.062263 0.152199 -0.022579 +v -0.042277 0.094983 -0.022562 +v 0.043293 0.041864 0.002063 +v 0.043780 0.044531 -0.001262 +v 0.021697 0.040427 -0.009463 +v -0.011184 0.164500 -0.016152 +v -0.062373 0.153130 -0.028997 +v -0.009249 0.177259 -0.028270 +v 0.041477 0.085509 -0.009158 +v -0.081269 0.108794 0.029441 +v 0.049576 0.043816 0.014583 +v 0.052988 0.047748 0.005042 +v 0.021978 0.042855 -0.014536 +v 0.018506 0.038294 -0.017136 +v -0.035101 0.152034 -0.000133 +v 0.048749 0.045265 0.002302 +v 0.031913 0.099870 -0.014621 +v -0.014223 0.161674 -0.013349 +v -0.048664 0.136385 0.006806 +v -0.009584 0.174261 -0.028391 +v 0.052802 0.046540 0.010428 +v 0.051434 0.048485 0.001040 +v 0.023911 0.098022 -0.020807 +v 0.024567 0.044130 -0.010821 +v 0.020357 0.043662 -0.020456 +v -0.021882 0.110874 -0.019695 +v -0.053832 0.149817 0.025067 +v 0.054114 0.047773 0.017484 +v 0.056731 0.050516 0.010627 +v 0.045942 0.048139 -0.003872 +v -0.083818 0.111091 0.028524 +v 0.029208 0.047450 -0.008508 +v 0.028455 0.048067 -0.012847 +v 0.026637 0.047607 -0.016428 +v 0.022040 0.044992 -0.017529 +v 0.019120 0.047168 -0.022115 +v -0.015782 0.100730 -0.023724 +v -0.062514 0.172131 -0.052788 +v -0.062346 0.147455 -0.007660 +v 0.045598 0.088152 0.013124 +v -0.049423 0.142835 0.008973 +v -0.082762 0.111623 0.044221 +v -0.052166 0.150137 0.017449 +v -0.063617 0.148014 -0.020170 +v -0.051493 0.137964 0.023662 +v -0.061518 0.175174 -0.060632 +v 0.056525 0.050126 0.015564 +v 0.055258 0.051416 0.003206 +v 0.050318 0.052786 -0.003417 +v -0.062682 0.167441 -0.045714 +v 0.056520 0.051180 0.019941 +v 0.056908 0.051578 0.007254 +v 0.052854 0.051899 -0.000621 +v -0.038921 0.033767 -0.029043 +v 0.029741 0.050325 -0.013991 +v -0.068796 0.035118 -0.005207 +v 0.058826 0.055504 0.018648 +v -0.026161 0.123100 -0.004474 +v -0.053342 0.144012 0.024261 +v 0.058177 0.052821 0.015182 +v 0.059798 0.056840 0.013343 +v 0.054550 0.056045 -0.000662 +v 0.026775 0.051423 -0.020234 +v -0.008696 0.172916 -0.026709 +v -0.077040 0.071967 0.026405 +v -0.063070 0.158975 -0.042952 +v 0.035707 0.056083 -0.008999 +v 0.032600 0.053708 -0.011006 +v 0.029740 0.052538 -0.016225 +v 0.059239 0.056363 0.009453 +v 0.057422 0.056012 0.004025 +v 0.029063 0.055211 -0.018042 +v -0.017224 0.095214 -0.032085 +v -0.085911 0.109688 0.007658 +v 0.060595 0.061677 0.015592 +v 0.059532 0.060505 0.005840 +v 0.057306 0.059945 0.001889 +v 0.038829 0.059840 -0.006425 +v 0.030663 0.057300 -0.016518 +v -0.027762 0.120685 -0.009015 +v -0.088195 0.103146 0.017509 +v 0.060779 0.061647 0.010464 +v 0.035915 0.059916 -0.011967 +v 0.024252 0.056457 -0.024255 +v -0.061954 0.168653 -0.052621 +v -0.090558 0.112760 0.016141 +v -0.088469 0.111243 0.012679 +v 0.059558 0.063099 0.005947 +v 0.030940 0.060518 -0.018133 +v -0.093576 0.124746 0.026213 +v -0.093190 0.120199 0.037914 +v -0.009230 0.173145 -0.024198 +v -0.081739 0.076861 0.023314 +v -0.036993 0.150639 -0.002037 +v 0.060094 0.065693 0.018533 +v 0.059837 0.066423 0.008514 +v 0.040706 0.064475 -0.005592 +v 0.034746 0.063261 -0.014647 +v -0.061880 0.160004 -0.025806 +v -0.076538 0.153449 -0.012899 +v 0.038111 0.064812 -0.011142 +v 0.031909 0.064657 -0.018473 +v -0.083159 0.146743 0.003076 +v -0.087056 0.105628 0.009765 +v -0.071448 0.181053 -0.055479 +v -0.085632 0.124611 -0.002734 +v 0.060729 0.065807 0.013975 +v 0.039910 0.068172 -0.009570 +v 0.034982 0.067741 -0.015683 +v -0.091822 0.127473 0.036459 +v -0.062425 0.163666 -0.049667 +v -0.071169 0.147402 -0.027591 +v -0.050365 0.137158 0.001953 +v -0.050493 0.141599 0.016292 +v 0.059887 0.068513 0.016172 +v -0.061407 0.172688 -0.058266 +v 0.024991 0.065897 -0.023568 +v -0.074853 0.149931 -0.027753 +v -0.062226 0.060265 0.020449 +v -0.062002 0.036435 0.043919 +v 0.058375 0.071186 0.013073 +v -0.036125 0.122867 -0.008293 +v 0.029217 0.067850 -0.020419 +v -0.041682 0.125751 -0.007019 +v -0.074227 0.164370 -0.038240 +v -0.009785 0.169285 -0.024757 +v -0.089578 0.120783 0.003523 +v -0.062312 0.163711 -0.040624 +v 0.043515 0.091520 -0.002647 +v -0.048434 0.137550 0.013245 +v -0.089313 0.136530 0.030459 +v -0.074230 0.156527 -0.025167 +v 0.037379 0.073093 -0.012635 +v 0.026322 0.070241 -0.023879 +v -0.048024 0.144266 0.004250 +v -0.092020 0.116115 0.035843 +v -0.071306 0.073899 0.035970 +v -0.062059 0.156978 -0.033785 +v -0.009702 0.167389 -0.019360 +v 0.043342 0.071676 -0.002230 +v 0.041772 0.069568 -0.006160 +v 0.033505 0.072810 -0.017035 +v 0.029665 0.071507 -0.021282 +v -0.029460 0.155503 -0.001191 +v -0.086396 0.104794 0.005982 +v -0.054911 0.146623 0.028439 +v 0.044204 0.085204 -0.002117 +v 0.043264 0.075811 -0.003884 +v 0.013097 0.091126 -0.029270 +v -0.067069 0.091145 -0.017426 +v -0.090822 0.122769 0.006100 +v 0.045620 0.074684 0.002607 +v -0.093040 0.120264 0.011217 +v 0.044636 0.092794 0.017832 +v -0.011243 0.164575 -0.018241 +v 0.045511 0.086953 0.003887 +v 0.046253 0.077374 0.006914 +v 0.040282 0.072637 -0.009288 +v 0.043218 0.099487 0.005015 +v -0.051108 0.145202 0.014279 +v 0.044693 0.092689 0.002247 +v 0.043423 0.091860 0.024538 +v 0.040751 0.105547 0.007507 +v -0.085613 0.096277 -0.000665 +v 0.040721 0.078476 -0.008213 +v 0.035538 0.076063 -0.014435 +v -0.092737 0.120731 0.032693 +v -0.062279 0.151666 -0.014673 +v 0.044960 0.080943 0.000611 +v 0.037815 0.079698 -0.013290 +v 0.033864 0.078657 -0.017632 +v -0.091044 0.141999 0.021730 +v -0.074004 0.178185 -0.053916 +v -0.061769 0.160680 -0.034046 +v -0.049747 0.141125 0.005294 +v 0.041065 0.090461 0.029889 +v -0.072916 0.065057 0.018795 +v -0.090950 0.138954 0.017371 +v 0.042879 0.100938 0.009475 +v -0.072455 0.176107 -0.053535 +v -0.075863 0.150713 -0.009021 +v -0.085270 0.102678 0.001394 +v -0.077026 0.113968 -0.004617 +v 0.046281 0.078702 0.014786 +v 0.042107 0.081533 -0.006669 +v 0.036524 0.081992 -0.016230 +v -0.037420 0.045428 -0.024227 +v -0.085149 0.139655 0.002481 +v -0.063313 0.165033 -0.032895 +v -0.061591 0.156816 -0.025946 +v 0.045919 0.087036 0.008424 +v 0.044631 0.084178 0.000827 +v -0.044843 0.146294 0.001711 +v -0.064124 0.179536 -0.058730 +v -0.067070 0.180727 -0.056619 +v -0.064794 0.178853 -0.055883 +v -0.064371 0.172962 -0.049226 +v -0.070382 0.180712 -0.053173 +v -0.075269 0.152329 0.034374 +v -0.016273 0.128445 0.016684 +v -0.062116 0.156008 0.018034 +v -0.056011 0.153817 0.025369 +v -0.037278 0.172891 -0.000866 +v -0.074159 0.179873 -0.050795 +v -0.079040 0.155374 0.015142 +v -0.072506 0.154595 0.029589 +v -0.067738 0.177289 -0.050376 +v -0.007535 0.100213 0.047489 +v -0.059576 0.154724 0.026373 +v -0.077383 0.153466 0.030895 +v -0.081497 0.154731 0.019697 +v -0.072223 0.158967 -0.005424 +v -0.013709 0.184912 -0.025550 +v -0.043465 0.124511 0.022519 +v -0.069104 0.155595 0.001637 +v -0.073748 0.155393 0.002349 +v -0.068192 0.174398 -0.045366 +v -0.060053 0.152803 0.032888 +v -0.023459 0.126154 0.016614 +v -0.072777 0.178545 -0.048209 +v -0.076596 0.177532 -0.047118 +v 0.013906 0.127908 0.025110 +v -0.086368 0.109065 0.011981 +v -0.031359 0.121410 0.025971 +v -0.049105 0.136669 0.019314 +v -0.042931 0.129284 0.009270 +v -0.065320 0.153903 0.000914 +v -0.037606 0.124226 0.024314 +v 0.009508 0.130419 0.020715 +v -0.001798 0.131173 0.016361 +v 0.003623 0.130768 0.021169 +v -0.092675 0.117019 0.011890 +v -0.065740 0.155653 0.026018 +v -0.086562 0.142492 0.008433 +v -0.070732 0.155700 0.006906 +v -0.008084 0.130305 0.016872 +v -0.044286 0.126066 0.020795 +v -0.070222 0.151435 0.036719 +v -0.015211 0.184636 -0.022057 +v -0.017271 0.186996 -0.019978 +v -0.083561 0.152559 0.007681 +v -0.088130 0.097541 0.005679 +v -0.088399 0.138990 0.010641 +v -0.067781 0.156145 0.014276 +v -0.006586 0.126417 0.030226 +v -0.088746 0.136256 0.007148 +v -0.077207 0.156400 -0.018973 +v -0.093176 0.118210 0.023362 +v -0.023507 0.126720 0.010997 +v -0.066547 0.171711 -0.042128 +v -0.069136 0.172478 -0.039013 +v 0.057180 0.071108 0.008031 +v -0.075391 0.179528 -0.052402 +v -0.031829 0.126391 0.010013 +v -0.008989 0.129523 0.022027 +v 0.034326 0.111933 -0.002241 +v -0.081415 0.097100 -0.006875 +v -0.023299 0.183243 -0.017923 +v -0.061642 0.155820 0.011100 +v -0.088826 0.090483 0.021205 +v 0.058373 0.068068 0.005725 +v -0.043046 0.127851 0.016842 +v 0.030836 0.115542 -0.003179 +v -0.088631 0.094881 0.007934 +v -0.091715 0.117100 0.030809 +v -0.072084 0.174998 -0.041930 +v -0.069541 0.153085 0.033866 +v 0.060079 0.068129 0.011455 +v -0.040081 0.126284 0.019607 +v 0.032820 0.116556 0.004446 +v -0.072823 0.145106 -0.015655 +v -0.085270 0.105518 0.023291 +v -0.076051 0.111038 -0.006272 +v -0.086538 0.151548 0.025875 +v 0.055888 0.072579 0.010670 +v -0.054642 0.155230 0.012612 +v 0.036730 0.111168 0.003867 +v 0.031502 0.117252 0.001686 +v -0.078752 0.095240 -0.010601 +v -0.089408 0.143528 0.030925 +v -0.020891 0.185953 -0.015037 +v -0.070864 0.161365 -0.009732 +v -0.070920 0.171367 -0.032764 +v -0.030771 0.125641 0.016595 +v -0.054454 0.152977 0.022505 +v -0.001554 0.127547 0.029233 +v 0.029131 0.120274 0.006112 +v 0.025726 0.121227 -0.000036 +v -0.089319 0.099547 0.013418 +v -0.075429 0.170956 -0.032880 +v -0.028596 0.119012 0.029888 +v 0.021070 0.124978 0.001100 +v -0.092241 0.118168 0.041202 +v 0.002409 0.100168 0.046938 +v -0.056628 0.152706 0.029629 +v -0.057265 0.155062 0.019322 +v -0.036452 0.121999 0.027671 +v -0.074108 0.173557 -0.037987 +v 0.051537 0.073497 0.012699 +v -0.066096 0.155325 0.007156 +v 0.036102 0.112661 0.010492 +v 0.016715 0.126899 0.000223 +v -0.080768 0.143014 -0.001531 +v -0.091758 0.143346 0.017791 +v -0.086825 0.152808 0.015521 +v -0.065808 0.167643 -0.030559 +v -0.078217 0.168740 -0.033564 +v -0.072567 0.147532 0.041714 +v 0.058440 0.070201 0.017780 +v 0.056848 0.072017 0.017139 +v 0.054919 0.073162 0.015224 +v 0.047447 0.073691 0.012430 +v 0.012319 0.129038 0.001334 +v -0.079791 0.103517 -0.006628 +v -0.076655 0.155098 0.007969 +v 0.021747 0.121185 0.030879 +v -0.075260 0.149386 0.039176 +v -0.025920 0.182728 -0.013541 +v -0.067984 0.169748 -0.031627 +v 0.016831 0.124871 0.028426 +v 0.054016 0.072884 0.018678 +v 0.050523 0.073398 0.016167 +v -0.059582 0.156233 0.007921 +v 0.025344 0.123747 0.009982 +v 0.019263 0.126894 0.005555 +v -0.090759 0.142234 0.026008 +v -0.046548 0.133208 0.016890 +v -0.024107 0.183809 -0.011545 +v 0.008678 0.128946 0.026157 +v 0.002492 0.129836 0.024847 +v 0.057345 0.069483 0.021154 +v -0.085330 0.153399 0.020378 +v 0.032877 0.116915 0.009296 +v 0.024247 0.123778 0.004876 +v -0.047766 0.133020 0.022874 +v -0.063542 0.163321 -0.025913 +v -0.066605 0.164774 -0.020671 +v -0.068504 0.167320 -0.023960 +v -0.072759 0.169659 -0.027013 +v 0.048207 0.072699 0.016995 +v -0.027383 0.123243 0.021659 +v -0.045077 0.131244 0.011146 +v 0.029253 0.120577 0.012299 +v 0.013678 0.129673 0.006933 +v 0.008421 0.130910 0.006275 +v 0.000968 0.130643 0.002587 +v 0.003080 0.098307 0.050536 +v -0.052420 0.153101 0.012927 +v -0.070360 0.169070 -0.026144 +v 0.054359 0.071467 0.021381 +v 0.045161 0.071030 0.022531 +v 0.019320 0.127383 0.011296 +v -0.093281 0.126911 0.013505 +v -0.087405 0.105940 0.013646 +v -0.022852 0.090635 0.052280 +v -0.062099 0.154067 0.030837 +v -0.045852 0.120730 0.027665 +v 0.050782 0.072155 0.020680 +v -0.089607 0.139711 0.029309 +v -0.053323 0.152735 0.016214 +v -0.015227 0.127849 0.021545 +v 0.033664 0.115742 0.017181 +v 0.024000 0.124688 0.015518 +v -0.084167 0.097757 -0.003276 +v -0.036224 0.127775 0.009850 +v -0.039190 0.128282 0.005035 +v -0.033674 0.177744 -0.008180 +v -0.074489 0.156494 -0.002595 +v -0.046756 0.132843 0.008121 +v -0.084970 0.153223 0.012654 +v -0.010866 0.126917 0.027575 +v -0.003107 0.130729 0.005643 +v -0.088761 0.097037 0.021079 +v -0.064811 0.034531 0.015508 +v -0.064300 0.035086 0.024272 +v -0.066727 0.035896 0.033849 +v 0.019839 0.096519 -0.022786 +v -0.038671 0.160702 -0.012358 +v -0.076890 0.130419 -0.006957 +v -0.072540 0.035399 0.007030 +v -0.069209 0.035455 0.012042 +v -0.064161 0.035901 0.017688 +v -0.066804 0.037378 0.033296 +v -0.062928 0.039062 0.042708 +v -0.071752 0.036789 0.008697 +v -0.065171 0.037290 0.025954 +v -0.066392 0.037712 0.029622 +v -0.064559 0.039640 0.039412 +v -0.060146 0.041202 0.044294 +v -0.060318 0.038443 0.045246 +v -0.036756 0.088663 -0.023869 +v -0.039495 0.037552 0.042871 +v -0.072016 0.037573 0.003979 +v -0.071694 0.039461 0.006014 +v -0.071166 0.039366 0.008114 +v -0.069000 0.038468 0.010769 +v -0.067253 0.038142 0.013534 +v -0.061126 0.037790 0.019711 +v -0.039180 0.042407 0.041476 +v -0.035146 0.038586 0.047733 +v -0.028951 0.039286 0.053309 +v -0.018224 0.097495 0.046848 +v -0.066916 0.122789 -0.008908 +v -0.063755 0.038250 0.016593 +v -0.064416 0.041284 0.028243 +v -0.085856 0.097025 0.027415 +v -0.037501 0.040222 0.044297 +v -0.034334 0.040924 0.048426 +v -0.031173 0.040294 0.051312 +v -0.069997 0.042073 0.006690 +v -0.080379 0.097801 0.033646 +v -0.026273 0.077631 0.048356 +v -0.037501 0.042737 0.042988 +v -0.026177 0.042499 0.053315 +v -0.069637 0.041881 0.003183 +v -0.067157 0.041973 0.010241 +v -0.087406 0.102052 0.022020 +v -0.023944 0.078800 0.053535 +v -0.060902 0.043430 0.042679 +v -0.031218 0.043848 0.049781 +v -0.075729 0.103540 0.036071 +v -0.062425 0.041886 0.014647 +v -0.061052 0.044392 0.012422 +v 0.025855 0.089611 -0.022702 +v -0.077645 0.082215 0.035798 +v -0.060381 0.045921 0.040089 +v -0.024982 0.081778 0.053421 +v -0.034454 0.044564 0.045423 +v -0.029843 0.046782 0.047747 +v -0.015120 0.099930 0.044500 +v -0.067306 0.044177 0.007596 +v -0.057853 0.046445 0.011063 +v -0.051815 0.163926 0.001749 +v -0.055174 0.048384 0.038518 +v -0.078849 0.118674 0.050623 +v -0.027229 0.087991 0.047910 +v -0.075537 0.159771 -0.010439 +v -0.036151 0.046505 0.040741 +v -0.025439 0.090678 0.048852 +v -0.080050 0.116704 0.048762 +v -0.052514 0.047578 0.014858 +v -0.032044 0.050462 0.039342 +v -0.031488 0.046930 0.045253 +v -0.020321 0.094000 0.051589 +v -0.072145 0.091556 0.041495 +v -0.053644 0.049358 0.012202 +v -0.082404 0.121866 0.049365 +v -0.049754 0.049738 0.037037 +v -0.032332 0.048673 0.042524 +v -0.023123 0.094516 0.047359 +v -0.086347 0.091722 0.026811 +v -0.057713 0.048718 0.007277 +v -0.086970 0.088912 0.024880 +v -0.092238 0.124885 0.040787 +v -0.015863 0.097022 0.050139 +v -0.027720 0.050502 0.043341 +v -0.085919 0.142634 0.039850 +v -0.075097 0.090074 0.039581 +v -0.089431 0.147306 0.027695 +v -0.053288 0.051926 0.011730 +v -0.050169 0.053462 0.016255 +v -0.085986 0.146709 0.034827 +v -0.069937 0.086077 0.042176 +v -0.050399 0.051831 0.034037 +v -0.083299 0.149608 0.033741 +v -0.029175 0.052265 0.037637 +v -0.088764 0.119449 0.046560 +v -0.077693 0.173680 -0.041479 +v -0.083418 0.094127 0.030898 +v -0.056068 0.053471 0.007372 +v -0.078936 0.148172 0.039463 +v -0.067903 0.087817 0.043527 +v -0.044111 0.092884 -0.022373 +v -0.086605 0.132268 0.046783 +v -0.092654 0.120840 0.041630 +v -0.050887 0.052728 0.014456 +v -0.049763 0.056241 0.033624 +v -0.089771 0.129049 0.043023 +v -0.028054 0.054551 0.036787 +v -0.025867 0.056689 0.039182 +v -0.083702 0.122264 -0.003730 +v -0.081455 0.130122 0.052118 +v -0.051459 0.055878 0.015900 +v -0.078598 0.174416 -0.046608 +v -0.052910 0.057043 0.020988 +v -0.052979 0.059554 0.026212 +v -0.052131 0.056303 0.026672 +v -0.047715 0.061945 0.036706 +v -0.083540 0.081170 0.027014 +v -0.018340 0.057490 0.049763 +v -0.080070 0.090586 0.034593 +v -0.083812 0.086338 0.029223 +v -0.055437 0.059420 0.023019 +v -0.082228 0.145138 0.040600 +v -0.024188 0.072269 0.047681 +v -0.025353 0.062567 0.040642 +v -0.091132 0.122821 0.044115 +v -0.046076 0.168197 0.000737 +v -0.087829 0.143515 0.035708 +v -0.086991 0.138123 0.042317 +v -0.015716 0.060823 0.052365 +v -0.083804 0.125611 0.050440 +v -0.062787 0.112742 -0.013605 +v -0.081034 0.084698 0.033106 +v -0.088564 0.116245 0.045393 +v -0.020268 0.062267 0.048212 +v -0.012620 0.061635 0.054424 +v -0.070491 0.081818 0.040610 +v -0.083883 0.133315 0.049114 +v -0.056560 0.048356 0.036607 +v 0.009944 0.109197 -0.019473 +v -0.055928 0.035917 0.046376 +v -0.076003 0.163613 -0.018021 +v -0.083799 0.102907 0.028038 +v -0.088252 0.126927 0.046141 +v -0.079127 0.106199 0.032051 +v -0.088206 0.094486 0.023744 +v -0.089110 0.138514 0.037659 +v -0.019321 0.092124 0.053821 +v -0.058266 0.090926 -0.020949 +v -0.027046 0.067014 0.039672 +v -0.021416 0.179777 -0.021733 +v -0.007824 0.109241 -0.022186 +v -0.023988 0.085996 0.053716 +v -0.060484 0.155680 0.004334 +v -0.086389 0.121685 0.048412 +v -0.074084 0.149877 -0.032610 +v -0.020581 0.079572 0.056014 +v -0.083838 0.139279 0.044894 +v -0.022934 0.035633 0.052865 +v -0.086154 0.127356 0.048564 +v -0.065729 0.107098 -0.014318 +v -0.021481 0.074194 0.052858 +v -0.076424 0.157363 -0.009035 +v -0.077216 0.085595 0.037421 +v -0.084151 0.129550 0.050484 +v -0.081221 0.081003 0.031256 +v -0.081704 0.101672 0.030940 +v -0.086253 0.101068 0.025414 +v -0.080945 0.139036 0.047359 +v -0.078908 0.094831 0.035436 +v -0.073440 0.095413 0.040211 +v -0.052676 0.088221 -0.021886 +v -0.076441 0.077511 0.033748 +v -0.021791 0.106580 -0.022327 +v -0.088361 0.149967 0.026044 +v -0.024079 0.067907 0.045178 +v -0.020018 0.067569 0.051565 +v -0.083578 0.120526 0.049178 +v -0.014656 0.174565 -0.025973 +v -0.027396 0.084108 0.048746 +v -0.041934 0.088463 -0.022126 +v -0.031694 0.102613 -0.022352 +v -0.027890 0.104407 -0.022831 +v -0.073790 0.120167 -0.007885 +v -0.046124 0.105064 -0.020458 +v -0.027413 0.073269 0.042641 +v -0.045533 0.034736 -0.021363 +v -0.044993 0.039017 -0.021098 +v -0.046463 0.036800 -0.017779 +v -0.088366 0.113619 0.005823 +v 0.051746 0.072897 0.009065 +v -0.070385 0.037450 -0.000932 +v -0.060923 0.038622 0.022469 +v -0.077697 0.170279 -0.043118 +v -0.043793 0.169555 -0.007303 +v -0.077587 0.177179 -0.050221 +v -0.040542 0.038886 -0.027365 +v -0.044216 0.036131 -0.024252 +v -0.066635 0.040430 -0.005018 +v -0.069242 0.041474 0.000193 +v -0.075641 0.159304 -0.026908 +v -0.063087 0.039614 0.025182 +v -0.072303 0.151867 -0.041544 +v -0.041051 0.041529 -0.024061 +v -0.046991 0.038892 -0.014017 +v -0.089560 0.128517 0.004546 +v -0.076987 0.153694 -0.002297 +v -0.070122 0.168826 -0.051174 +v -0.064793 0.041725 0.031617 +v -0.042148 0.124096 -0.009560 +v -0.048070 0.124930 -0.008408 +v -0.042150 0.043344 -0.021509 +v -0.067315 0.044034 0.001574 +v -0.073387 0.154634 -0.029944 +v -0.055353 0.042936 0.019135 +v -0.060068 0.041419 0.022953 +v -0.065488 0.040938 0.035315 +v -0.080066 0.150396 0.000605 +v -0.044031 0.041949 -0.017994 +v -0.045187 0.042453 -0.014194 +v -0.083109 0.102654 -0.003293 +v -0.065473 0.045628 0.004558 +v -0.075428 0.152012 -0.014394 +v -0.054473 0.045938 0.023613 +v -0.062464 0.043722 0.028493 +v -0.062833 0.045183 0.034623 +v -0.063538 0.043524 0.037974 +v -0.060255 0.044750 -0.004132 +v -0.063242 0.045550 0.000484 +v -0.062249 0.046540 0.007190 +v -0.091004 0.148857 0.021507 +v -0.057094 0.045997 0.026865 +v -0.057276 0.047300 0.029890 +v -0.039520 0.173859 -0.007575 +v -0.089641 0.138419 0.034142 +v -0.092601 0.130187 0.025184 +v -0.092281 0.127621 0.029752 +v -0.033957 0.041025 -0.029660 +v -0.090200 0.116575 0.005675 +v -0.058516 0.047731 0.000212 +v -0.071724 0.146174 -0.021568 +v -0.052390 0.045449 0.017686 +v -0.059414 0.047278 0.034172 +v -0.057521 0.158776 0.004162 +v -0.080959 0.109267 -0.002019 +v -0.051904 0.046100 0.019421 +v -0.051830 0.048569 0.021647 +v -0.077650 0.156580 -0.016599 +v -0.037416 0.047682 -0.017147 +v -0.078876 0.153470 0.003988 +v -0.057635 0.050426 0.004611 +v -0.052625 0.050435 0.029047 +v -0.052999 0.049169 0.033968 +v -0.073503 0.168719 -0.044792 +v -0.054421 0.047837 -0.005919 +v -0.052313 0.051085 0.024486 +v -0.079130 0.167366 -0.035506 +v 0.009412 0.123503 -0.009829 +v -0.032716 0.108966 -0.018941 +v -0.031133 0.049607 -0.019407 +v 0.045997 0.069814 0.003014 +v 0.033525 0.109662 -0.006989 +v -0.055047 0.052768 -0.003946 +v -0.056898 0.049656 -0.001532 +v -0.050290 0.049099 0.017165 +v -0.050595 0.049923 0.019174 +v -0.051887 0.053325 0.028706 +v -0.067684 0.165336 -0.055466 +v -0.030271 0.052106 -0.017676 +v -0.009109 0.111417 -0.020543 +v -0.057069 0.054424 0.002340 +v -0.032748 0.177599 -0.011627 +v -0.029010 0.051265 -0.022176 +v -0.031383 0.051791 -0.013887 +v -0.055674 0.056984 -0.003351 +v -0.050916 0.053814 0.019753 +v -0.088875 0.151694 0.020087 +v -0.077153 0.173787 -0.047868 +v -0.078578 0.164206 -0.031826 +v -0.027546 0.054022 -0.025147 +v -0.054464 0.055357 0.010327 +v -0.087041 0.130589 0.000912 +v -0.090009 0.132781 0.005922 +v -0.092233 0.131954 0.015431 +v -0.048640 0.164725 -0.005059 +v -0.054066 0.059959 -0.007599 +v -0.057434 0.057684 0.008726 +v -0.086795 0.138507 0.004558 +v -0.092990 0.130923 0.019919 +v -0.091282 0.133119 0.024689 +v 0.021815 0.117705 -0.010015 +v -0.029647 0.058104 -0.021311 +v -0.031290 0.055209 -0.014388 +v -0.059002 0.059235 0.002614 +v -0.090242 0.135760 0.014149 +v -0.061569 0.170849 -0.061679 +v -0.066070 0.165578 -0.058644 +v -0.024540 0.180059 -0.018727 +v -0.016132 0.182988 -0.026037 +v -0.030809 0.056998 -0.017835 +v 0.010464 0.096180 -0.025899 +v -0.057492 0.059530 -0.001079 +v -0.089146 0.136505 0.025953 +v 0.004371 0.103919 -0.021515 +v -0.090377 0.132525 0.031083 +v -0.090795 0.138552 0.020563 +v -0.094238 0.126154 0.022201 +v -0.090337 0.131198 0.038139 +v -0.045083 0.122184 -0.011569 +v 0.011348 0.098244 -0.023024 +v -0.039228 0.099185 -0.021913 +v -0.065510 0.158573 -0.055600 +v -0.077410 0.162605 -0.020755 +v -0.048580 0.166892 -0.002526 +v -0.076923 0.153514 -0.009079 +v -0.067751 0.157348 -0.053982 +v 0.052906 0.065230 -0.000511 +v -0.029055 0.061084 -0.024918 +v -0.031067 0.065059 -0.022751 +v 0.024250 0.102662 -0.018314 +v -0.055474 0.160502 0.001376 +v -0.066643 0.160409 -0.056843 +v -0.078200 0.160732 -0.024000 +v -0.018321 0.119686 -0.011111 +v 0.021713 0.109563 -0.015081 +v -0.068383 0.159802 -0.054209 +v -0.025446 0.060209 -0.030865 +v -0.026540 0.065084 -0.031665 +v -0.028426 0.062200 -0.027939 +v -0.032606 0.061265 -0.015453 +v -0.070872 0.116116 -0.007956 +v -0.069781 0.159386 -0.049418 +v -0.030325 0.067695 -0.027655 +v -0.032977 0.066365 -0.018386 +v 0.013533 0.102554 -0.021579 +v 0.044409 0.069759 0.000948 +v -0.002200 0.112159 -0.019659 +v -0.072029 0.067047 -0.000723 +v -0.078700 0.173139 -0.042720 +v -0.083212 0.150721 0.004213 +v -0.087439 0.133749 0.002397 +v 0.026348 0.084562 -0.023152 +v -0.074901 0.070419 -0.002285 +v -0.054576 0.091563 -0.022099 +v -0.073243 0.152313 -0.035704 +v -0.074551 0.172187 -0.047551 +v -0.028681 0.068283 -0.030610 +v 0.017373 0.102460 -0.021488 +v -0.081257 0.073025 0.007102 +v -0.074982 0.154078 -0.018974 +v -0.091556 0.131963 0.010638 +v -0.000824 0.095165 -0.032056 +v -0.077619 0.073999 -0.005326 +v -0.079859 0.072755 0.003042 +v -0.081627 0.073471 0.011162 +v -0.073679 0.147860 -0.020236 +v -0.091310 0.148486 0.016270 +v -0.090850 0.146256 0.014809 +v -0.068544 0.175130 -0.057188 +v -0.027254 0.107475 -0.021280 +v 0.021444 0.122738 -0.002932 +v -0.079061 0.073724 -0.000845 +v -0.082064 0.075994 0.001762 +v -0.083737 0.076772 0.008959 +v -0.090206 0.149478 0.013035 +v 0.000848 0.116700 -0.017337 +v -0.074578 0.151640 -0.028648 +v -0.029087 0.072925 -0.033354 +v -0.031184 0.073990 -0.030340 +v -0.032607 0.071956 -0.024867 +v -0.080576 0.076608 -0.002988 +v -0.089491 0.143926 0.012488 +v -0.077388 0.146564 -0.004354 +v -0.072896 0.158350 -0.034109 +v 0.007135 0.114682 -0.018346 +v -0.034503 0.076130 -0.022373 +v -0.083891 0.080790 0.002295 +v -0.083740 0.077240 0.004667 +v -0.086205 0.080931 0.010535 +v -0.086062 0.079931 0.014441 +v -0.081543 0.077951 0.026727 +v 0.026666 0.112686 -0.010510 +v -0.076041 0.156631 -0.021420 +v -0.090012 0.150833 0.015753 +v -0.071157 0.163351 -0.045361 +v -0.033211 0.076873 -0.027708 +v -0.073263 0.079984 -0.013750 +v -0.079286 0.080049 -0.007013 +v -0.086035 0.082646 0.019543 +v -0.084335 0.080730 0.022180 +v -0.071351 0.157271 -0.042183 +v -0.073548 0.161208 -0.035288 +v 0.016733 0.109912 -0.017020 +v -0.030979 0.077021 -0.032816 +v -0.062359 0.175448 -0.061486 +v -0.017588 0.114913 -0.017205 +v -0.082354 0.080876 -0.002404 +v -0.078579 0.140501 -0.004603 +v -0.028931 0.079248 -0.035050 +v -0.031226 0.080413 -0.032182 +v -0.033259 0.079622 -0.027146 +v -0.044697 0.117915 -0.014726 +v -0.079724 0.084227 -0.008761 +v -0.085042 0.083818 -0.000078 +v -0.086776 0.084345 0.012419 +v -0.086675 0.082665 0.015174 +v -0.085106 0.085177 0.025679 +v -0.076976 0.082936 -0.011451 +v -0.082776 0.083431 -0.004369 +v -0.086180 0.082572 0.006364 +v -0.091161 0.141444 0.015674 +v -0.074639 0.143985 -0.007150 +v -0.083448 0.133933 -0.001687 +v -0.075805 0.151345 -0.019881 +v -0.074924 0.152730 -0.019397 +v -0.052314 0.121596 -0.010798 +v -0.030734 0.085428 -0.030507 +v -0.032591 0.081943 -0.029100 +v -0.086455 0.086940 0.000917 +v -0.012502 0.106344 -0.022360 +v -0.088586 0.146059 0.009878 +v -0.085610 0.147125 0.006598 +v -0.087511 0.150615 0.010152 +v -0.060114 0.035550 0.044908 +v -0.088284 0.086869 0.008103 +v -0.088813 0.087765 0.014227 +v -0.088001 0.086626 0.015467 +v -0.086991 0.086445 0.022421 +v -0.074610 0.147278 -0.014172 +v -0.034708 0.084036 -0.024302 +v -0.084965 0.089963 -0.003007 +v -0.088091 0.087742 0.004849 +v -0.091490 0.145432 0.022277 +v -0.094380 0.121839 0.017904 +v -0.029165 0.085393 -0.033667 +v -0.030558 0.088626 -0.027551 +v -0.077771 0.087845 -0.011695 +v -0.080728 0.088204 -0.007800 +v -0.083273 0.089477 -0.005650 +v -0.089399 0.089539 0.011646 +v -0.089698 0.139713 0.013775 +v -0.077135 0.151512 -0.005582 +v -0.051121 0.163741 -0.002664 +v -0.086443 0.127674 -0.001486 +v -0.069606 0.154908 -0.050189 +v -0.087265 0.092110 0.004206 +v -0.089086 0.092377 0.010570 +v -0.089612 0.091600 0.017812 +v -0.082732 0.141969 0.001253 +v -0.072618 0.143681 -0.010987 +v -0.077677 0.166110 -0.036777 +v -0.015078 0.093863 -0.034317 +v -0.071057 0.154769 -0.045779 +v -0.092332 0.125239 0.009159 +v -0.076047 0.091037 -0.013643 +v -0.082943 0.093292 -0.006186 +v -0.010411 0.094592 -0.033785 +v -0.029331 0.114762 -0.015845 +v -0.037218 0.115942 -0.015173 +v -0.012430 0.102860 -0.023822 +v 0.006651 0.088145 -0.032946 +v -0.006412 0.092876 -0.034818 +v 0.015800 0.119966 -0.011416 +v 0.029103 0.102475 -0.015768 +v 0.042081 0.063481 -0.002541 +v 0.028723 0.097943 -0.017497 +v -0.019988 0.102783 -0.023393 +v 0.033748 0.083644 -0.018630 +v -0.018686 0.186896 -0.020249 +v 0.006415 0.117902 -0.016283 +v 0.056305 0.067770 0.002653 +v -0.005361 0.112894 -0.019613 +v 0.045769 0.064629 -0.001217 +v -0.010091 0.098230 -0.027731 +v -0.060459 0.117556 -0.011355 +v 0.012934 0.118873 -0.013979 +v 0.015236 0.094978 -0.024437 +v -0.030893 0.047409 -0.024954 +v -0.017766 0.185723 -0.023049 +v -0.013035 0.110029 -0.020161 +v -0.071207 0.038609 0.000772 +v 0.017905 0.106277 -0.017729 +v -0.033623 0.118404 -0.011927 +v -0.049907 0.117883 -0.014402 +v -0.006688 0.117472 -0.015359 +v -0.015451 0.185976 -0.024796 +v -0.030604 0.038038 -0.030124 +v -0.013220 0.183972 -0.027519 +v -0.047859 0.111627 -0.017482 +v -0.013099 0.090776 -0.036659 +v -0.063117 0.154254 0.002973 +v -0.055140 0.110516 -0.017673 +v -0.011097 0.182023 -0.028042 +v -0.026569 0.034696 -0.029114 +v -0.006640 0.102222 -0.023519 +v -0.056996 0.157417 0.000602 +v 0.019077 0.091871 -0.024890 +v 0.013473 0.124299 -0.006836 +v -0.021730 0.098411 -0.024307 +v -0.017142 0.098057 -0.024924 +v -0.058698 0.151373 -0.000658 +v 0.003564 0.127649 -0.004467 +v -0.008537 0.099921 -0.024351 +v -0.012172 0.181251 -0.029061 +v -0.061114 0.153052 0.001000 +v -0.029571 0.117139 -0.013676 +v 0.030530 0.112212 -0.008186 +v -0.031714 0.035112 -0.030659 +v -0.013691 0.179147 -0.028126 +v 0.011621 0.115490 -0.016386 +v -0.061994 0.150281 -0.001630 +v 0.036684 0.100996 -0.009849 +v 0.048513 0.071798 0.006001 +v -0.000466 0.119837 -0.013611 +v 0.016747 0.090114 -0.027127 +v 0.006983 0.097730 -0.024800 +v -0.043227 0.046264 -0.011772 +v -0.008356 0.113736 -0.018240 +v -0.012354 0.115568 -0.016487 +v 0.046834 0.074354 0.010139 +v 0.025319 0.109317 -0.013580 +v -0.042459 0.113925 -0.016188 +v 0.057745 0.064158 0.002628 +v -0.059711 0.036536 -0.009495 +v -0.003208 0.109621 -0.021524 +v 0.027021 0.061346 -0.022292 +v 0.007103 0.101912 -0.021231 +v -0.038226 0.124655 -0.007326 +v 0.025942 0.115764 -0.008219 +v -0.061298 0.033900 -0.009322 +v -0.059467 0.147440 -0.001889 +v 0.010507 0.100877 -0.022110 +v 0.033081 0.102734 -0.012787 +v 0.012518 0.104754 -0.019916 +v 0.023088 0.093999 -0.022211 +v 0.031555 0.092485 -0.018204 +v 0.006272 0.099910 -0.022297 +v -0.040917 0.046122 -0.017943 +v 0.035407 0.098189 -0.012009 +v 0.009414 0.121219 -0.012938 +v 0.053735 0.072027 0.006801 +v 0.025620 0.118807 -0.005033 +v -0.038150 0.042467 -0.026894 +v -0.028212 0.111169 -0.018002 +v -0.060254 0.143391 -0.003791 +v 0.019017 0.104015 -0.019333 +v 0.007545 0.091682 -0.031643 +v -0.007076 0.122401 -0.011364 +v -0.019048 0.096562 -0.027580 +v -0.016953 0.106693 -0.022003 +v -0.000673 0.101199 -0.022858 +v -0.009018 0.125280 -0.007791 +v -0.068136 0.180061 -0.058816 +v -0.023600 0.115138 -0.015577 +v -0.059831 0.042842 -0.006647 +v 0.053124 0.059012 -0.002885 +v -0.036932 0.037107 -0.029714 +v -0.056215 0.141392 -0.002803 +v 0.036696 0.103728 -0.007962 +v -0.035885 0.120400 -0.010640 +v -0.009357 0.085424 -0.038113 +v -0.060127 0.120414 -0.009379 +v -0.039843 0.121561 -0.011570 +v 0.028322 0.108480 -0.012623 +v -0.001873 0.115939 -0.017169 +v 0.038648 0.090153 -0.012550 +v -0.001736 0.092244 -0.034310 +v 0.050001 0.061612 -0.003465 +v 0.055859 0.062910 0.000690 +v 0.020462 0.115154 -0.013104 +v -0.015166 0.117981 -0.014466 +v -0.070860 0.071510 0.033895 +v 0.022674 0.086606 -0.024925 +v 0.035359 0.087439 -0.017109 +v 0.018401 0.121455 -0.007680 +v -0.025426 0.041421 -0.029205 +v -0.008209 0.096777 -0.030810 +v -0.056811 0.033874 -0.011166 +v -0.034589 0.044745 -0.027123 +v -0.040252 0.118275 -0.013674 +v 0.016387 0.114023 -0.015497 +v 0.042635 0.060797 -0.003458 +v -0.050687 0.035936 -0.012381 +v 0.007345 0.094510 -0.029683 +v -0.019707 0.092917 -0.034637 +v -0.012083 0.122192 -0.009712 +v 0.048806 0.068458 0.001695 +v -0.003087 0.098403 -0.027403 +v -0.053199 0.136729 -0.001658 +v -0.047290 0.130554 0.001691 +v 0.004465 0.120440 -0.013931 +v -0.002385 0.122905 -0.010382 +v -0.024833 0.095858 -0.025162 +v -0.042297 0.036292 -0.027254 +v -0.054388 0.134049 -0.003992 +v -0.050539 0.133367 -0.001087 +v 0.002604 0.096943 -0.028407 +v -0.007816 0.128212 -0.001943 +v 0.006511 0.130025 0.000929 +v 0.034743 0.092274 -0.015655 +v -0.067788 0.180889 -0.058191 +v -0.033715 0.111516 -0.018078 +v 0.004463 0.124273 -0.009429 +v -0.023370 0.093393 -0.032032 +v -0.048982 0.129806 -0.001323 +v -0.000782 0.128229 -0.003249 +v 0.002496 0.089858 -0.033628 +v 0.007455 0.111968 -0.019554 +v 0.028791 0.091157 -0.020370 +v -0.053590 0.124375 -0.007347 +v -0.047744 0.120644 -0.012813 +v -0.019616 0.121092 -0.009549 +v -0.065047 0.179991 -0.059759 +v -0.051704 0.037620 -0.011763 +v -0.052124 0.129298 -0.004119 +v -0.045334 0.128915 0.001582 +v -0.003047 0.129195 -0.001069 +v 0.007213 0.127220 -0.005207 +v 0.011669 0.127202 -0.003185 +v 0.053056 0.069709 0.003129 +v -0.063021 0.178110 -0.060394 +v 0.028205 0.064391 -0.020698 +v 0.034400 0.105030 -0.010225 +v 0.030975 0.107902 -0.011058 +v -0.048984 0.114805 -0.015967 +v -0.032822 0.123005 -0.005909 +v -0.050793 0.127165 -0.004818 +v -0.035302 0.125478 -0.003154 +v 0.056455 0.069951 0.004919 +v -0.016240 0.125122 -0.003650 +v -0.016970 0.111198 -0.019586 +v -0.054088 0.039781 -0.010545 +v -0.034190 0.047514 -0.022302 +v 0.013699 0.093914 -0.026428 +v 0.000880 0.099235 -0.024356 +v -0.046459 0.127240 -0.004884 +v -0.041736 0.126876 -0.004174 +v -0.021000 0.123136 -0.006119 +v -0.012130 0.125726 -0.005201 +v -0.004382 0.126408 -0.006950 +v 0.001409 0.034782 -0.023265 +v -0.014846 0.035071 -0.026072 +v -0.021399 0.034795 -0.027959 +v 0.012009 0.035962 -0.021736 +v 0.003825 0.036129 -0.023878 +v -0.051140 0.096618 -0.022095 +v -0.054813 0.098102 -0.021425 +v -0.027597 0.169798 -0.018170 +v 0.013360 0.039377 -0.022496 +v 0.004392 0.038674 -0.024170 +v -0.006848 0.036445 -0.025177 +v -0.013280 0.037700 -0.026392 +v -0.047673 0.036117 -0.013301 +v -0.045590 0.108538 -0.018797 +v -0.050096 0.109909 -0.018505 +v -0.065767 0.036470 -0.007207 +v -0.023456 0.168247 -0.018823 +v -0.004592 0.038405 -0.025413 +v -0.024954 0.037441 -0.029153 +v 0.029008 0.037358 -0.000275 +v -0.007947 0.041490 -0.025911 +v -0.016804 0.039754 -0.027565 +v -0.065156 0.140345 -0.007685 +v -0.047080 0.040701 -0.011870 +v -0.068471 0.037478 -0.004956 +v 0.037327 0.040210 -0.000859 +v 0.035350 0.041257 -0.002808 +v 0.005182 0.041536 -0.024066 +v 0.018661 0.100308 -0.022127 +v -0.060511 0.107484 -0.017042 +v -0.062374 0.040146 -0.007404 +v 0.025457 0.039484 -0.004025 +v -0.000228 0.043395 -0.025124 +v -0.008109 0.043439 -0.026140 +v -0.017362 0.043237 -0.027665 +v -0.026417 0.044674 -0.028210 +v 0.003806 0.109443 -0.020204 +v -0.058232 0.095690 -0.020616 +v -0.066122 0.042341 -0.002754 +v -0.060960 0.094173 -0.019016 +v 0.031352 0.042649 -0.004674 +v -0.033541 0.036343 0.049090 +v 0.017253 0.044336 -0.023067 +v 0.010638 0.044162 -0.024926 +v 0.004384 0.045807 -0.026789 +v -0.008251 0.045149 -0.028441 +v -0.015748 0.045044 -0.027878 +v 0.028990 0.044698 -0.006186 +v 0.008169 0.045053 -0.025179 +v -0.000963 0.045378 -0.027308 +v -0.001703 0.047819 -0.029929 +v -0.031536 0.044740 -0.028079 +v -0.033620 0.156915 -0.011025 +v -0.050751 0.043110 -0.010019 +v 0.036891 0.047353 -0.006106 +v 0.024976 0.042645 -0.007017 +v 0.024562 0.048370 -0.019673 +v 0.013964 0.045579 -0.024707 +v 0.013376 0.048630 -0.026551 +v 0.003731 0.048128 -0.029026 +v -0.008795 0.047057 -0.029882 +v -0.013754 0.051865 -0.032243 +v -0.021201 0.046657 -0.027951 +v 0.039694 0.045659 -0.004527 +v 0.033627 0.048718 -0.006390 +v -0.065352 0.099295 -0.016820 +v 0.001287 0.050384 -0.030357 +v -0.008180 0.049846 -0.031071 +v -0.017184 0.048211 -0.029742 +v -0.026049 0.047693 -0.026150 +v -0.084747 0.110784 0.039488 +v -0.051317 0.048271 -0.007931 +v -0.082507 0.127655 -0.004680 +v 0.038664 0.051697 -0.006691 +v -0.075643 0.099440 -0.011928 +v 0.020284 0.051349 -0.024895 +v 0.005944 0.050977 -0.029119 +v -0.025528 0.051473 -0.026885 +v -0.035563 0.049400 -0.012865 +v -0.042819 0.162202 -0.010338 +v -0.065594 0.176657 -0.060505 +v -0.034151 0.174428 -0.013313 +v 0.043673 0.050162 -0.005984 +v -0.050342 0.155462 -0.005193 +v 0.025464 0.054030 -0.021691 +v 0.010150 0.049259 -0.027751 +v -0.022043 0.053612 -0.030136 +v -0.032876 0.051678 -0.010889 +v -0.037614 0.049535 -0.011626 +v -0.040751 0.049285 -0.011286 +v -0.046385 0.047491 -0.010086 +v 0.044473 0.053293 -0.006333 +v 0.033206 0.051021 -0.007238 +v 0.015678 0.051169 -0.026398 +v 0.006834 0.055010 -0.030561 +v 0.002142 0.055503 -0.031334 +v 0.000593 0.052868 -0.030514 +v -0.003648 0.051869 -0.031458 +v -0.009425 0.055399 -0.033654 +v -0.019302 0.058225 -0.033920 +v -0.061084 0.133862 -0.007225 +v -0.043310 0.055657 -0.011402 +v -0.061081 0.168338 -0.059192 +v 0.047575 0.052944 -0.005130 +v -0.037403 0.111508 -0.018243 +v 0.019972 0.054410 -0.027108 +v 0.005397 0.058383 -0.030904 +v -0.010604 0.053603 -0.033403 +v -0.034998 0.052332 -0.010347 +v -0.046471 0.051304 -0.009830 +v -0.067945 0.114936 -0.009511 +v -0.071048 0.151611 -0.044679 +v -0.005890 0.034791 -0.024224 +v 0.016842 0.055556 -0.028285 +v 0.010711 0.054688 -0.029768 +v -0.001183 0.059492 -0.033361 +v -0.005233 0.055689 -0.032840 +v -0.051706 0.052471 -0.007405 +v -0.052626 0.060044 -0.008957 +v -0.072599 0.097763 -0.014435 +v 0.044331 0.055818 -0.006036 +v 0.038463 0.054935 -0.006182 +v 0.038839 0.057808 -0.005258 +v -0.009202 0.059510 -0.034437 +v -0.035263 0.055285 -0.010545 +v -0.038336 0.054504 -0.010905 +v -0.017728 0.036290 0.052222 +v 0.050006 0.058096 -0.004621 +v 0.046134 0.059279 -0.004777 +v 0.015110 0.059820 -0.028646 +v 0.010312 0.057587 -0.029995 +v -0.006135 0.060257 -0.034696 +v -0.012318 0.059396 -0.035269 +v -0.014467 0.063136 -0.036866 +v -0.046650 0.059841 -0.012136 +v -0.056572 0.124803 -0.007189 +v -0.079237 0.120554 -0.005674 +v -0.079335 0.125607 -0.006118 +v 0.022340 0.058492 -0.026014 +v 0.007627 0.062098 -0.031136 +v 0.003310 0.060457 -0.032481 +v -0.016812 0.061275 -0.035929 +v -0.032492 0.057196 -0.012105 +v -0.034108 0.061467 -0.013053 +v -0.033897 0.057025 -0.011048 +v -0.038624 0.058303 -0.011506 +v -0.045008 0.062724 -0.013390 +v -0.056896 0.133987 -0.005627 +v -0.044854 0.157460 -0.008673 +v -0.078610 0.069657 0.011811 +v -0.023730 0.101862 -0.023836 +v -0.028123 0.099322 -0.023580 +v -0.050077 0.149977 -0.003642 +v -0.033048 0.095959 -0.023426 +v 0.019520 0.062065 -0.027292 +v -0.038865 0.103340 -0.020641 +v -0.048953 0.056281 -0.010221 +v -0.053993 0.144987 -0.001109 +v -0.045531 0.098511 -0.021730 +v -0.050911 0.100746 -0.021619 +v 0.023246 0.062793 -0.025048 +v 0.009741 0.063181 -0.031141 +v -0.000866 0.064560 -0.034491 +v -0.008526 0.064002 -0.035850 +v -0.048451 0.064794 -0.013030 +v -0.052325 0.106148 -0.019271 +v -0.055265 0.102167 -0.019897 +v -0.059042 0.099032 -0.019223 +v -0.057847 0.104335 -0.018526 +v -0.027113 0.173322 -0.018539 +v 0.022832 0.067083 -0.026298 +v 0.014519 0.064596 -0.029856 +v 0.011471 0.067581 -0.030901 +v -0.017739 0.066261 -0.037657 +v -0.065060 0.134521 -0.008090 +v -0.075829 0.142446 -0.005809 +v -0.041362 0.061637 -0.012814 +v -0.056148 0.061922 -0.005754 +v -0.062126 0.062845 -0.004520 +v -0.037292 0.164491 -0.013627 +v -0.019819 0.165095 -0.017609 +v 0.006288 0.065416 -0.032563 +v -0.005925 0.069516 -0.035933 +v -0.010539 0.067999 -0.036517 +v -0.035386 0.066817 -0.015435 +v -0.053994 0.064639 -0.009325 +v -0.063852 0.065572 -0.006939 +v -0.063921 0.127742 -0.008549 +v -0.026941 0.036184 0.053352 +v 0.019619 0.067007 -0.028356 +v 0.012275 0.069934 -0.031553 +v 0.005427 0.068248 -0.032731 +v -0.004408 0.066619 -0.034870 +v -0.021911 0.067145 -0.036536 +v -0.045643 0.154669 -0.007297 +v -0.051673 0.066851 -0.012120 +v -0.058105 0.066466 -0.010044 +v -0.056992 0.143119 -0.002240 +v -0.080651 0.131199 -0.004440 +v -0.056544 0.128509 -0.006201 +v 0.017758 0.070139 -0.029405 +v 0.006498 0.070792 -0.033525 +v 0.000758 0.070434 -0.034463 +v -0.013236 0.069293 -0.037917 +v -0.067391 0.118897 -0.008730 +v -0.038120 0.064162 -0.013829 +v 0.001853 0.113034 -0.019794 +v -0.075951 0.068171 0.018118 +v -0.010002 0.072671 -0.037661 +v -0.017976 0.070614 -0.038444 +v -0.023036 0.072778 -0.038073 +v -0.026120 0.071177 -0.035452 +v -0.068535 0.139294 -0.007805 +v -0.035263 0.071068 -0.018012 +v -0.041558 0.069774 -0.016774 +v -0.052832 0.070299 -0.014865 +v -0.066979 0.067639 -0.006809 +v -0.010244 0.178958 -0.029539 +v -0.075273 0.126801 -0.008024 +v -0.087360 0.112483 0.042049 +v 0.008750 0.074302 -0.033398 +v -0.064250 0.160450 -0.057041 +v -0.044354 0.073372 -0.017874 +v -0.045763 0.069445 -0.015929 +v -0.047957 0.072543 -0.016107 +v -0.057823 0.069538 -0.014416 +v -0.072072 0.071538 -0.007471 +v 0.025473 0.074094 -0.024939 +v 0.015720 0.073756 -0.029748 +v 0.004821 0.073764 -0.034552 +v -0.002253 0.073921 -0.035887 +v -0.007383 0.074800 -0.037224 +v -0.020225 0.077095 -0.039044 +v -0.034016 0.072101 -0.020823 +v -0.038493 0.072840 -0.017502 +v -0.064393 0.073116 -0.015335 +v -0.064481 0.070187 -0.012262 +v -0.023854 0.161645 -0.014504 +v 0.022104 0.072693 -0.026900 +v 0.015532 0.076587 -0.029607 +v 0.011574 0.074861 -0.031384 +v -0.014732 0.077641 -0.038491 +v -0.016019 0.074289 -0.038864 +v -0.051104 0.073072 -0.016243 +v -0.057990 0.074018 -0.017522 +v -0.069608 0.072323 -0.010934 +v -0.075996 0.117141 -0.006558 +v -0.037988 0.107515 -0.019976 +v 0.010696 0.079889 -0.032010 +v -0.005343 0.078265 -0.037477 +v -0.026082 0.076191 -0.036780 +v -0.039161 0.157189 -0.010581 +v -0.065610 0.075860 -0.016750 +v -0.070178 0.075663 -0.013839 +v -0.074291 0.074808 -0.009354 +v -0.063429 0.171854 -0.061412 +v 0.030685 0.075727 -0.020778 +v 0.019305 0.079018 -0.027744 +v -0.008599 0.079339 -0.037905 +v -0.023200 0.076568 -0.038387 +v -0.038118 0.076390 -0.018644 +v -0.044231 0.077664 -0.019027 +v -0.051025 0.075705 -0.018187 +v -0.070595 0.129948 -0.008763 +v 0.028148 0.078785 -0.022432 +v 0.007602 0.079436 -0.033715 +v 0.004950 0.078027 -0.034410 +v -0.015858 0.081166 -0.039186 +v -0.018502 0.083344 -0.039011 +v -0.079739 0.136069 -0.004148 +v -0.030980 0.166347 -0.016241 +v -0.035750 0.077248 -0.019374 +v -0.048945 0.079086 -0.019576 +v -0.055066 0.078089 -0.019755 +v 0.023706 0.080240 -0.025450 +v 0.012254 0.083457 -0.030772 +v 0.001855 0.084693 -0.034839 +v -0.000209 0.078941 -0.035782 +v -0.000427 0.082947 -0.036381 +v -0.004410 0.082795 -0.037467 +v -0.033202 0.105783 -0.020648 +v -0.039207 0.081536 -0.020571 +v -0.060355 0.079767 -0.019376 +v -0.041772 0.103967 -0.020833 +v -0.011204 0.082713 -0.038490 +v -0.023181 0.081687 -0.038329 +v -0.027233 0.080571 -0.036621 +v -0.035470 0.080196 -0.022326 +v -0.044864 0.081998 -0.020474 +v -0.050648 0.082309 -0.021366 +v -0.055523 0.081928 -0.021354 +v -0.088090 0.111355 0.018516 +v -0.072036 0.111079 0.045361 +v -0.033360 0.169864 -0.015449 +v -0.066839 0.062171 0.021577 +v 0.030731 0.081969 -0.020040 +v 0.016224 0.086480 -0.028952 +v -0.069856 0.100279 -0.014848 +v -0.063836 0.081705 -0.018909 +v -0.067915 0.080136 -0.017128 +v -0.045752 0.163408 -0.008178 +v 0.011728 0.088011 -0.030860 +v 0.007333 0.085270 -0.032829 +v -0.003436 0.087018 -0.036461 +v -0.026964 0.084513 -0.036362 +v -0.036553 0.085316 -0.022576 +v -0.038791 0.085233 -0.021918 +v -0.057677 0.086258 -0.021098 +v -0.062582 0.086395 -0.019169 +v -0.071395 0.124688 -0.008594 +v 0.014802 0.099041 -0.022843 +v -0.021163 0.174919 -0.021977 +v -0.014824 0.087289 -0.038317 +v -0.023286 0.089468 -0.036027 +v -0.051596 0.084422 -0.021601 +v -0.069481 0.085656 -0.017198 +v -0.070917 0.107548 -0.011497 +v 0.030145 0.086284 -0.020408 +v -0.055578 0.115677 -0.014646 +v -0.008098 0.089070 -0.036552 +v -0.081206 0.112051 -0.000883 +v -0.018772 0.089838 -0.036992 +v -0.021100 0.086588 -0.037849 +v -0.025810 0.088890 -0.035082 +v -0.048985 0.090732 -0.021817 +v -0.035875 0.034776 -0.030845 +v -0.033164 0.033607 -0.029722 +v -0.025964 0.033487 -0.026321 +v -0.016718 0.033612 -0.024625 +v -0.005349 0.033829 -0.022600 +v 0.006484 0.034293 -0.020855 +v 0.013950 0.034880 -0.018613 +v -0.042466 0.034189 -0.027261 +v -0.033241 0.033579 -0.026719 +v 0.006281 0.034166 -0.018764 +v -0.044266 0.033664 -0.021914 +v -0.023671 0.033631 -0.023218 +v -0.011559 0.033895 -0.021054 +v -0.002041 0.034054 -0.019331 +v 0.001732 0.034460 -0.016608 +v -0.027316 0.033910 -0.021354 +v -0.013371 0.034362 -0.019024 +v 0.009589 0.034207 -0.015424 +v -0.014982 0.035878 -0.017992 +v -0.002347 0.035903 -0.015930 +v 0.002254 0.036412 -0.014784 +v -0.035199 0.033835 -0.020508 +v -0.026075 0.035919 -0.019405 +v 0.008274 0.035645 -0.012649 +v 0.010474 0.034743 -0.011263 +v 0.014055 0.034483 -0.014496 +v -0.036971 0.035680 -0.015008 +v -0.002472 0.038409 -0.014159 +v -0.039482 0.033618 -0.023612 +v -0.041092 0.034006 -0.011998 +v -0.031590 0.035592 -0.019204 +v -0.020086 0.038064 -0.017221 +v -0.011113 0.038290 -0.015646 +v 0.004452 0.037705 -0.012958 +v 0.015870 0.034416 -0.002967 +v -0.047872 0.034136 -0.015418 +v -0.047522 0.033623 -0.012805 +v -0.033407 0.037577 -0.016158 +v -0.027851 0.038404 -0.017210 +v -0.008507 0.039029 -0.013001 +v 0.006455 0.038165 -0.010165 +v 0.007415 0.034659 -0.003012 +v 0.011966 0.034335 -0.005957 +v 0.020415 0.035568 -0.003781 +v -0.019289 0.038763 -0.014203 +v -0.001139 0.039177 -0.010381 +v 0.003815 0.039024 -0.008083 +v 0.007521 0.036733 -0.006761 +v 0.019968 0.034844 -0.001898 +v -0.045058 0.033600 -0.012528 +v -0.030755 0.038640 -0.014051 +v -0.051500 0.033729 -0.012083 +v -0.023757 0.038586 -0.011093 +v 0.003973 0.038209 -0.003796 +v 0.009549 0.034233 0.001716 +v 0.029087 0.035800 0.003563 +v -0.055965 0.033530 -0.009125 +v -0.019524 0.038505 -0.004543 +v 0.016363 0.034395 0.002295 +v 0.021325 0.034624 0.005644 +v -0.039670 0.036174 -0.007340 +v -0.014252 0.038648 -0.004303 +v 0.002326 0.035348 0.002325 +v 0.014014 0.035704 0.003888 +v 0.015323 0.036240 0.003663 +v 0.023753 0.034671 0.003989 +v 0.032369 0.035816 0.007025 +v -0.063716 0.033777 -0.008007 +v -0.064267 0.033563 -0.005125 +v -0.038067 0.038519 -0.007308 +v -0.009431 0.038888 -0.007485 +v 0.003968 0.034200 0.004975 +v 0.009429 0.036030 0.004528 +v 0.029859 0.034980 0.009835 +v -0.052730 0.033498 -0.001812 +v -0.041271 0.033855 -0.001880 +v -0.003111 0.038946 -0.002779 +v 0.006219 0.035134 0.006549 +v 0.020898 0.035937 0.008785 +v 0.035606 0.036527 0.009816 +v -0.067078 0.033840 -0.006169 +v -0.000811 0.037424 0.004772 +v 0.003149 0.034125 0.011762 +v 0.004917 0.033997 0.009167 +v 0.025131 0.034547 0.011013 +v 0.028249 0.035046 0.016017 +v -0.067033 0.065146 0.027293 +v -0.046380 0.033605 -0.000894 +v -0.033163 0.038195 -0.000525 +v -0.032074 0.038323 -0.000421 +v -0.021693 0.038266 0.004510 +v 0.023931 0.034817 0.017739 +v 0.042719 0.039977 0.008932 +v -0.058604 0.033462 -0.000217 +v -0.037314 0.033633 0.004572 +v -0.010424 0.038489 0.006229 +v -0.001390 0.038651 0.002397 +v -0.000308 0.035462 0.008261 +v -0.001409 0.036193 0.012945 +v 0.022253 0.036583 0.013980 +v -0.070962 0.034346 -0.000784 +v -0.069066 0.033718 -0.000198 +v -0.064826 0.033506 0.002822 +v -0.047060 0.033502 0.003565 +v -0.003695 0.038173 0.013047 +v 0.033476 0.036447 0.016267 +v 0.037250 0.037510 0.014816 +v -0.045676 0.033704 0.006430 +v -0.038639 0.033937 0.008551 +v -0.009506 0.038353 0.015571 +v 0.021500 0.035807 0.018169 +v 0.044876 0.041231 0.016008 +v -0.072474 0.036256 0.001553 +v -0.071498 0.034453 0.004203 +v -0.027791 0.038063 0.007938 +v -0.016556 0.038286 0.010216 +v 0.008104 0.034843 0.018135 +v 0.023589 0.035891 0.025338 +v 0.041261 0.040585 0.020752 +v -0.051351 0.033646 0.008033 +v -0.047104 0.035549 0.008080 +v -0.001410 0.037000 0.016982 +v 0.000917 0.034803 0.015635 +v 0.002889 0.034636 0.018850 +v 0.013279 0.034380 0.021424 +v 0.014323 0.034426 0.021593 +v 0.017490 0.034646 0.022041 +v 0.029868 0.036249 0.019872 +v -0.039222 0.036326 0.010790 +v -0.030307 0.033995 0.014706 +v 0.020081 0.035173 0.028019 +v 0.024989 0.038105 0.029430 +v 0.033584 0.038304 0.022929 +v 0.049016 0.044574 0.020659 +v -0.058226 0.066607 0.035050 +v -0.067331 0.033846 0.008727 +v -0.034692 0.033829 0.012439 +v -0.029803 0.034287 0.016353 +v 0.001702 0.036311 0.021180 +v 0.045137 0.044625 0.025517 +v -0.068876 0.110222 0.039005 +v -0.057681 0.033623 0.014040 +v -0.053211 0.033585 0.013987 +v -0.035712 0.035892 0.015503 +v -0.028862 0.035397 0.017350 +v -0.026580 0.037743 0.015705 +v -0.001097 0.038148 0.020427 +v 0.035048 0.040974 0.026970 +v -0.069685 0.034479 0.009798 +v -0.054019 0.033310 0.015848 +v 0.004482 0.037118 0.024755 +v 0.006661 0.035205 0.024316 +v 0.008383 0.034749 0.024057 +v 0.038883 0.041033 0.024977 +v -0.002644 0.038727 0.025131 +v 0.003222 0.038708 0.025899 +v 0.009002 0.036891 0.028482 +v 0.013197 0.034836 0.031631 +v 0.022292 0.037053 0.033101 +v 0.028948 0.039160 0.027235 +v -0.087773 0.111814 0.037144 +v -0.017870 0.038204 0.020243 +v 0.010087 0.037048 0.030823 +v 0.042297 0.045436 0.029041 +v -0.084341 0.113880 0.046513 +v -0.073796 0.108956 0.039217 +v -0.051243 0.064239 0.034258 +v -0.061777 0.034018 0.016901 +v -0.036665 0.035304 0.023032 +v -0.014930 0.038644 0.029378 +v -0.080895 0.109672 0.037910 +v -0.089823 0.113872 0.032845 +v -0.069656 0.068728 0.031128 +v -0.078450 0.109888 0.042518 +v -0.075824 0.107949 0.037129 +v -0.055741 0.034128 0.026674 +v -0.038280 0.035429 0.024381 +v -0.035283 0.034180 0.022745 +v -0.025798 0.037865 0.019981 +v 0.006906 0.039004 0.029549 +v 0.015449 0.034852 0.036985 +v 0.019128 0.035641 0.036642 +v -0.063665 0.066048 0.031828 +v 0.039605 0.044940 0.029992 +v -0.080294 0.071702 0.015995 +v -0.054185 0.067323 0.036936 +v -0.073110 0.148472 -0.028748 +v -0.059000 0.073752 0.041197 +v -0.059521 0.061040 -0.002375 +v -0.062792 0.034597 0.023506 +v -0.041896 0.033668 0.026940 +v 0.008981 0.037639 0.033901 +v 0.008529 0.034888 0.036265 +v -0.089804 0.114981 0.042772 +v -0.065545 0.074430 0.039168 +v -0.064644 0.061723 0.000226 +v 0.005250 0.039507 0.033271 +v 0.020250 0.037033 0.039327 +v -0.067006 0.063293 -0.001749 +v -0.064480 0.060651 0.004234 +v -0.057220 0.057000 0.004918 +v -0.074363 0.072437 0.031430 +v -0.062019 0.034343 0.031883 +v -0.046871 0.034444 0.030513 +v -0.020814 0.038401 0.027868 +v 0.016439 0.035635 0.041281 +v -0.069087 0.112050 0.045320 +v -0.071812 0.148613 -0.034639 +v -0.069539 0.063075 0.003576 +v -0.084864 0.078392 0.016462 +v -0.091189 0.115889 0.024706 +v -0.088828 0.113592 0.023874 +v -0.071303 0.113254 0.049445 +v -0.054877 0.070282 0.038828 +v -0.077209 0.107159 0.034738 +v -0.061242 0.059007 0.008092 +v -0.065886 0.035025 0.029417 +v -0.057889 0.034420 0.036266 +v -0.051848 0.034470 0.034635 +v -0.034835 0.034721 0.034578 +v -0.030985 0.038192 0.032390 +v -0.004961 0.039365 0.036702 +v 0.012224 0.035177 0.042621 +v -0.074898 0.114589 0.050776 +v -0.080469 0.113580 0.046643 +v -0.074108 0.069586 0.027264 +v -0.079003 0.076339 0.029248 +v -0.065297 0.034779 0.033744 +v -0.033656 0.034344 0.036914 +v 0.004932 0.034815 0.043462 +v 0.011347 0.036213 0.044652 +v -0.060569 0.071155 0.038654 +v -0.088979 0.114509 0.028446 +v -0.068544 0.061090 0.010558 +v -0.082711 0.116490 0.048519 +v -0.041913 0.034468 0.033200 +v -0.011290 0.039529 0.038844 +v -0.002826 0.034885 0.045611 +v -0.064561 0.059484 0.013062 +v -0.058581 0.057801 0.013430 +v -0.023320 0.039170 0.038473 +v -0.018160 0.039322 0.039403 +v -0.016471 0.034813 0.043685 +v 0.003291 0.035833 0.046025 +v -0.085230 0.112007 0.030417 +v -0.085645 0.111317 0.034235 +v -0.074530 0.066681 0.004695 +v -0.071113 0.062751 0.008800 +v -0.061149 0.058834 0.016539 +v -0.046912 0.034627 0.039740 +v -0.040760 0.034668 0.040493 +v -0.026323 0.034658 0.043474 +v -0.003184 0.036230 0.047873 +v -0.079940 0.109167 0.034120 +v -0.059712 0.063165 0.028789 +v -0.051177 0.068062 0.037398 +v -0.050127 0.070933 0.039481 +v -0.072790 0.064400 0.015206 +v -0.068511 0.061215 0.015354 +v -0.039343 0.035440 0.042493 +v -0.008131 0.035008 0.047502 +v -0.066081 0.070203 0.035553 +v -0.068603 0.149923 -0.040051 +v -0.071722 0.067023 0.024960 +v -0.075115 0.066557 0.010244 +v -0.065147 0.035946 0.039775 +v -0.036899 0.035925 0.044794 +v -0.009478 0.035978 0.049434 +v -0.085176 0.117068 0.048139 +v -0.063366 0.062790 0.025648 +v -0.066633 0.061002 0.018101 +v -0.058168 0.059985 0.022606 +v -0.064212 0.034993 0.039402 +v -0.053426 0.034560 0.042782 +v -0.018031 0.034860 0.049265 +v -0.011440 0.037641 0.050276 +v -0.075165 0.111543 0.046707 +v -0.077168 0.069826 0.005061 +v -0.072801 0.064383 0.012089 +v -0.078022 0.070995 0.021322 +v -0.061263 0.034690 0.041995 +v -0.054404 0.035007 0.044875 +v -0.045754 0.035207 0.043518 +v -0.033832 0.035169 0.046958 +v -0.028658 0.035083 0.050549 +v -0.015306 0.035246 0.050134 +v -0.065284 0.155924 -0.049866 +v -0.066468 0.148715 -0.031579 +v -0.062096 0.163883 -0.058386 +v -0.063275 0.152457 -0.032222 +v -0.043756 0.147734 -0.002143 +v -0.065697 0.145616 -0.018975 +v -0.066714 0.153588 -0.049097 +v -0.010483 0.166683 -0.021746 +v -0.062745 0.163975 -0.059398 +v -0.070413 0.141292 -0.008459 +v -0.061530 0.140376 -0.006273 +v -0.011452 0.172206 -0.026845 +v -0.063731 0.165770 -0.060104 +v -0.028219 0.157581 -0.010999 +v -0.018471 0.159677 -0.011170 +v -0.066701 0.152368 -0.045266 +v -0.049896 0.146709 -0.001861 +v -0.031450 0.154605 -0.007680 +v -0.067448 0.155077 -0.051594 +v -0.010907 0.176493 -0.029246 +v -0.072084 0.149656 -0.039266 +v -0.064231 0.148778 -0.025900 +v -0.063057 0.143416 -0.007491 +v -0.053043 0.140925 -0.000474 +v -0.039269 0.152052 -0.006620 +v -0.064797 0.152106 -0.036186 +v -0.064400 0.158344 -0.054256 +v -0.066178 0.142183 -0.009377 +v -0.067751 0.146052 -0.023333 +v -0.064732 0.154101 -0.040465 +v -0.024266 0.156877 -0.007851 +v -0.015723 0.163123 -0.016397 +v -0.070888 0.144046 -0.014908 +v -0.044342 0.151138 -0.005686 +v -0.062897 0.146948 -0.013099 +v -0.063755 0.144289 -0.011396 +v -0.068215 0.143909 -0.014984 +v -0.050271 0.143366 0.001515 +v -0.028536 0.162085 -0.014786 +v -0.065811 0.143591 -0.012585 +v -0.056179 0.137744 -0.004067 +v -0.068867 0.147233 -0.028740 +v -0.060965 0.170021 -0.060839 +v -0.013895 0.167872 -0.021897 +v -0.069413 0.151218 -0.044539 +v -0.055040 0.057310 0.016991 +vn -0.869341 0.110942 -0.481599 +vn -0.896538 -0.015145 -0.442709 +vn -0.856387 -0.126405 -0.500622 +vn -0.978377 -0.199901 -0.053087 +vn -0.913617 -0.292875 -0.282008 +vn -0.955017 0.253536 -0.153828 +vn -0.166100 0.954518 0.247599 +vn -0.043711 0.920105 0.389225 +vn -0.261179 0.867718 0.422908 +vn 0.185185 0.868876 0.459088 +vn 0.347729 0.851816 0.391782 +vn 0.527732 0.703803 0.475564 +vn 0.144051 0.845715 0.513824 +vn -0.216926 0.780289 0.586593 +vn -0.650542 0.519188 0.554291 +vn -0.182050 0.736232 0.651783 +vn -0.532861 0.767813 0.355701 +vn -0.088944 0.993490 0.071188 +vn -0.179150 0.981476 0.067907 +vn -0.089920 0.978843 0.183795 +vn 0.460319 0.866454 0.193299 +vn 0.640252 0.655327 0.400780 +vn 0.801211 0.570592 0.180236 +vn -0.848756 -0.528667 -0.011170 +vn -0.806760 -0.575859 0.132378 +vn -0.929567 -0.363363 -0.062227 +vn 0.411601 -0.878773 -0.241544 +vn 0.052143 -0.920362 -0.387575 +vn 0.695927 -0.695924 -0.177132 +vn -0.921709 -0.383410 0.058735 +vn -0.994046 -0.058077 0.092197 +vn -0.992006 -0.096385 -0.081454 +vn 0.759219 0.581145 0.293014 +vn 0.651400 0.620709 0.436346 +vn 0.840718 0.272195 0.468084 +vn -0.520939 0.853425 0.016990 +vn -0.618286 0.723954 -0.305962 +vn -0.450157 0.848695 0.277625 +vn -0.212573 0.949306 0.231581 +vn -0.751847 -0.646835 -0.127794 +vn -0.870036 -0.442736 -0.216844 +vn 0.243914 0.900859 0.359110 +vn -0.141788 0.914772 0.378271 +vn 0.276539 0.866997 0.414540 +vn 0.796236 0.544219 0.264262 +vn 0.749660 0.558020 0.355843 +vn 0.848903 0.441010 0.291331 +vn 0.752472 0.547102 0.366696 +vn 0.673496 0.686901 0.273075 +vn 0.842920 0.509336 0.173386 +vn -0.339718 0.235341 -0.910608 +vn -0.782585 -0.411554 -0.467101 +vn -0.109730 -0.953477 -0.280786 +vn 0.516449 0.820508 0.245044 +vn 0.246784 0.920632 0.302547 +vn 0.704555 0.676933 0.212988 +vn 0.494637 0.825661 0.271326 +vn 0.429027 0.760730 0.487059 +vn 0.105124 0.879950 0.463290 +vn 0.642880 0.686070 0.340608 +vn -0.133101 0.895793 0.424074 +vn -0.405017 0.375951 -0.833440 +vn -0.170122 0.197822 -0.965363 +vn -0.157742 0.205503 -0.965860 +vn -0.314194 0.903359 0.291931 +vn -0.335729 0.871119 0.358383 +vn -0.319909 0.821117 0.472678 +vn -0.927709 0.373217 -0.008078 +vn -0.949479 0.300484 0.090552 +vn -0.927431 0.365870 -0.077534 +vn -0.181681 0.939121 -0.291623 +vn -0.215177 0.966413 -0.140513 +vn -0.143341 0.978788 -0.146380 +vn -0.770031 -0.549010 -0.325022 +vn -0.814734 0.300900 -0.495649 +vn -0.794548 -0.145240 -0.589576 +vn -0.895083 -0.439764 -0.073715 +vn -0.997869 -0.040312 -0.051299 +vn -0.992194 -0.070157 0.103098 +vn -0.862058 -0.443214 0.245798 +vn -0.930083 -0.337040 0.146117 +vn -0.211456 0.976639 -0.038243 +vn -0.135380 0.990223 -0.033614 +vn -0.340693 0.904402 -0.256878 +vn -0.267469 0.704349 -0.657535 +vn -0.362456 0.875376 -0.319910 +vn -0.237489 0.962774 -0.129096 +vn -0.227434 0.972582 -0.048564 +vn -0.084702 0.995709 -0.037285 +vn -0.409909 0.377848 -0.830184 +vn -0.344694 0.018362 -0.938535 +vn -0.143200 0.063709 -0.987641 +vn -0.979382 0.191716 -0.063687 +vn -0.949921 0.312242 -0.012479 +vn -0.100955 0.944467 -0.312715 +vn -0.679737 0.641806 0.355025 +vn -0.492909 0.742100 0.454234 +vn -0.483426 0.822336 0.300105 +vn 0.090846 0.655684 0.749551 +vn 0.265958 0.569656 0.777662 +vn 0.163466 0.782705 0.600543 +vn -0.257727 0.964792 0.052463 +vn -0.177007 0.971999 0.154556 +vn -0.981888 0.167370 -0.088783 +vn -0.970886 0.140915 -0.193712 +vn -0.047153 0.998872 -0.005603 +vn -0.219831 0.881931 0.416979 +vn -0.296252 0.939269 0.173230 +vn -0.308532 0.925998 0.217567 +vn -0.383299 0.852199 0.356144 +vn -0.035625 0.966811 -0.252997 +vn 0.000208 0.993727 -0.111832 +vn -0.797277 -0.587060 0.140391 +vn -0.837210 -0.545474 0.039203 +vn 0.603614 0.700556 0.380621 +vn 0.878285 0.465207 0.110444 +vn -0.887315 0.243442 -0.391673 +vn -0.874686 0.401864 -0.270981 +vn -0.764490 0.268482 -0.586065 +vn 0.098104 0.943365 -0.316921 +vn 0.120320 0.567492 -0.814541 +vn 0.269615 0.487385 -0.830520 +vn 0.295330 0.744499 -0.598750 +vn 0.510405 0.802394 0.309276 +vn -0.168586 0.876512 0.450894 +vn -0.268292 0.865350 0.423307 +vn -0.624595 0.723053 0.295086 +vn -0.219783 0.970226 0.101767 +vn 0.004966 0.938837 0.344326 +vn -0.116523 0.921251 0.371106 +vn -0.025165 0.840362 0.541440 +vn -0.976782 -0.037650 -0.210900 +vn -0.999418 0.014244 -0.030994 +vn -0.968905 0.159185 -0.189431 +vn -0.495966 0.791706 0.356679 +vn -0.690759 -0.720472 -0.061417 +vn -0.679735 -0.732978 0.026514 +vn -0.793693 -0.561243 -0.234644 +vn -0.157453 0.830598 0.534150 +vn -0.068069 0.772839 0.630942 +vn 0.636047 0.290951 0.714697 +vn 0.177137 0.531930 0.828054 +vn 0.531628 0.606151 0.591567 +vn -0.884051 -0.424150 0.196343 +vn -0.984700 -0.104610 0.139363 +vn -0.956032 -0.293229 -0.004491 +vn -0.385749 -0.258550 0.885635 +vn -0.112239 0.053583 0.992236 +vn -0.412292 0.210131 0.886488 +vn 0.078573 0.285374 0.955190 +vn -0.287281 0.446651 0.847333 +vn -0.493592 0.738500 -0.459331 +vn -0.186507 0.931814 0.311348 +vn 0.291542 0.869487 0.398743 +vn -0.355051 0.745395 0.564203 +vn -0.312486 0.822762 0.474779 +vn -0.002078 0.541945 0.840411 +vn -0.231530 0.711902 0.663015 +vn 0.314247 0.945138 0.089241 +vn -0.806387 -0.587975 0.063443 +vn -0.361109 -0.240726 0.900917 +vn -0.199446 0.590567 0.781954 +vn -0.264481 0.678231 0.685604 +vn -0.441061 0.566518 0.696077 +vn 0.223770 0.951446 0.211373 +vn 0.349409 0.771513 0.531677 +vn -0.436084 0.793176 0.425091 +vn -0.518699 0.479762 0.707658 +vn -0.585428 0.213880 0.782003 +vn -0.379956 0.519769 0.765162 +vn -0.931563 0.297515 -0.208988 +vn 0.043491 -0.575234 -0.816832 +vn -0.035010 -0.440099 -0.897267 +vn 0.067610 -0.489065 -0.869623 +vn 0.146737 0.081243 -0.985834 +vn -0.076543 0.053413 -0.995635 +vn -0.012401 0.103486 -0.994554 +vn -0.396146 0.807051 0.437878 +vn 0.079866 0.985653 0.148693 +vn 0.180793 0.790278 0.585470 +vn 0.001563 0.080569 0.996748 +vn 0.032895 0.519003 0.854139 +vn 0.919062 0.229860 -0.320139 +vn 0.840062 0.284472 -0.461921 +vn 0.866330 0.308920 -0.392480 +vn -0.909306 -0.380227 -0.169083 +vn -0.930892 -0.365065 0.012949 +vn -0.219409 0.963851 -0.151164 +vn -0.247838 0.968756 -0.009420 +vn -0.986256 0.029973 -0.162485 +vn -0.993020 -0.058288 -0.102537 +vn 0.838667 0.497557 0.221527 +vn 0.143062 0.989397 -0.025048 +vn 0.050764 0.993753 0.099385 +vn 0.044858 0.636484 0.769984 +vn -0.612603 0.597449 0.517468 +vn -0.928769 0.288763 0.232387 +vn -0.849692 -0.041804 0.525620 +vn 0.162063 0.976339 -0.143171 +vn -0.407372 -0.357887 0.840217 +vn -0.200885 -0.101103 0.974384 +vn 0.346539 0.263999 0.900120 +vn 0.285964 0.372527 0.882864 +vn 0.039560 0.285364 -0.957603 +vn 0.049647 0.481659 -0.874951 +vn 0.147754 0.203729 -0.967814 +vn 0.532201 -0.792269 0.298449 +vn 0.457067 -0.887679 -0.055814 +vn 0.568936 -0.722674 0.392496 +vn -0.934691 0.072615 -0.347965 +vn -0.913719 0.286068 -0.288587 +vn -0.853005 0.360424 -0.377462 +vn 0.109141 -0.016754 -0.993885 +vn 0.041499 -0.294403 -0.954780 +vn 0.020331 -0.153361 -0.987961 +vn -0.527954 0.260331 -0.808389 +vn -0.254424 -0.022035 -0.966842 +vn -0.084644 -0.263866 0.960838 +vn -0.130099 0.807802 0.574917 +vn 0.069374 0.711549 0.699203 +vn -0.790912 0.228167 -0.567801 +vn -0.873999 0.084330 -0.478555 +vn -0.952800 -0.129059 -0.274802 +vn 0.299928 0.110001 -0.947599 +vn 0.246910 -0.083131 -0.965466 +vn 0.462050 0.191170 -0.866004 +vn 0.228161 0.148980 0.962158 +vn 0.242190 0.519350 0.819524 +vn -0.206314 -0.663776 0.718913 +vn 0.068243 -0.585699 0.807650 +vn 0.195039 -0.130656 -0.972054 +vn 0.960148 0.260944 -0.100118 +vn 0.931291 -0.130321 -0.340166 +vn -0.948200 0.043035 -0.314747 +vn -0.278841 -0.263424 -0.923502 +vn -0.186994 -0.438214 -0.879205 +vn -0.086857 -0.520482 -0.849443 +vn 0.915830 0.295084 -0.272363 +vn 0.872527 0.445333 -0.200934 +vn 0.938214 0.330908 -0.101261 +vn 0.575100 -0.348037 -0.740358 +vn 0.677662 -0.417782 -0.605171 +vn 0.609568 -0.598026 -0.520377 +vn -0.171567 -0.411552 -0.895092 +vn 0.430439 -0.874905 -0.221955 +vn 0.839492 -0.518846 -0.161409 +vn 0.939891 -0.307606 -0.148268 +vn 0.185285 0.335555 0.923619 +vn 0.199020 0.477092 0.856023 +vn 0.060207 0.498619 0.864728 +vn 0.466058 -0.551365 -0.691945 +vn 0.869849 0.491554 -0.041686 +vn 0.929263 0.368334 0.028295 +vn 0.751303 -0.236504 -0.616124 +vn 0.676342 0.288938 -0.677552 +vn 0.867333 0.256360 -0.426631 +vn 0.694349 0.369001 -0.617833 +vn -0.258164 0.962869 0.078959 +vn 0.008581 0.980437 0.196646 +vn -0.268563 0.189468 0.944445 +vn -0.367613 0.320353 0.873061 +vn -0.560949 0.196484 0.804196 +vn 0.259183 -0.246536 0.933833 +vn 0.276002 -0.285729 0.917705 +vn 0.058108 -0.602175 0.796246 +vn 0.113251 -0.231845 0.966138 +vn 0.357455 0.526560 0.771337 +vn 0.567419 -0.822701 0.034632 +vn 0.455549 -0.888101 -0.061242 +vn 0.535390 -0.832010 -0.145319 +vn 0.820905 -0.093840 -0.563302 +vn 0.869506 -0.293060 -0.397586 +vn 0.961620 0.006667 -0.274303 +vn 0.986710 0.055708 -0.152641 +vn 0.994628 0.046052 -0.092707 +vn -0.586933 0.649095 -0.483927 +vn -0.584302 0.799939 0.136706 +vn -0.674534 0.680729 0.285677 +vn -0.923869 0.232927 -0.303664 +vn -0.844785 -0.144901 -0.515114 +vn -0.847652 0.302767 -0.435681 +vn -0.702810 -0.710327 -0.038647 +vn -0.699124 -0.684576 -0.206353 +vn -0.688939 -0.688700 -0.225957 +vn -0.252618 0.262711 0.931218 +vn -0.240927 0.364307 0.899575 +vn -0.258708 0.087558 0.961979 +vn 0.127182 -0.319252 0.939097 +vn 0.014343 0.194521 0.980794 +vn 0.082910 0.215269 0.973029 +vn 0.037514 0.431539 0.901314 +vn 0.246229 0.425668 0.870734 +vn 0.331769 0.489520 0.806412 +vn 0.244272 0.587461 0.771505 +vn 0.323558 -0.337928 0.883807 +vn 0.103508 -0.109684 0.988562 +vn 0.102649 -0.452091 0.886046 +vn 0.579147 0.348680 0.736893 +vn 0.424152 0.212619 0.880278 +vn 0.937991 0.337438 -0.079426 +vn 0.995277 0.084140 0.048414 +vn -0.964640 0.256070 0.062425 +vn -0.960335 0.245423 0.132377 +vn -0.943776 0.318744 0.087684 +vn -0.812583 -0.014105 -0.582675 +vn -0.797529 0.065172 -0.599750 +vn -0.003489 0.910900 -0.412612 +vn 0.038439 0.850388 0.524751 +vn -0.222859 0.371926 0.901113 +vn 0.855884 -0.486679 -0.174947 +vn 0.839711 -0.513574 -0.176430 +vn 0.957002 -0.269876 -0.106372 +vn 0.047477 -0.506884 0.860706 +vn -0.073889 -0.735521 0.673461 +vn -0.061105 -0.558662 0.827141 +vn 0.073675 0.593128 0.801730 +vn 0.063213 0.755177 0.652466 +vn 0.089315 0.609423 0.787798 +vn 0.984571 -0.055505 -0.165951 +vn 0.700547 -0.712959 0.030404 +vn 0.818922 -0.358704 0.447994 +vn -0.981062 0.163367 0.104060 +vn 0.001866 -0.612066 -0.790805 +vn -0.093540 -0.601320 -0.793514 +vn 0.244240 -0.838497 -0.487104 +vn 0.972573 0.227796 0.047016 +vn 0.978727 0.199666 -0.047192 +vn 0.996908 0.076771 -0.016784 +vn -0.218419 0.937593 -0.270579 +vn -0.918784 -0.391196 -0.052936 +vn 0.276184 0.919388 -0.280085 +vn 0.023849 -0.998036 0.057933 +vn 0.026075 -0.996679 0.077139 +vn 0.014350 -0.997986 0.061790 +vn 0.338811 -0.419138 0.842336 +vn 0.190891 -0.351167 0.916648 +vn 0.101306 -0.725892 0.680308 +vn 0.169399 0.013789 0.985451 +vn 0.990305 -0.087528 -0.107865 +vn 0.950269 0.189419 -0.247202 +vn 0.909307 0.386118 -0.155154 +vn 0.788268 -0.454218 -0.415114 +vn 0.855706 -0.492262 -0.159518 +vn 0.500122 -0.579048 -0.643880 +vn 0.969245 -0.240907 0.050271 +vn -0.319959 0.142121 0.936711 +vn -0.424651 0.005957 0.905337 +vn -0.338735 0.167079 0.925928 +vn 0.216014 0.591864 0.776553 +vn 0.397063 0.600015 0.694495 +vn 0.101656 0.566351 0.817871 +vn 0.129103 0.232905 0.963892 +vn 0.224149 0.394632 0.891080 +vn 0.244869 -0.159653 0.956321 +vn 0.218955 -0.256209 0.941496 +vn 0.681635 0.249222 0.687941 +vn 0.262841 0.620617 0.738748 +vn 0.950560 -0.033306 -0.308751 +vn 0.972442 0.031713 -0.230976 +vn 0.899283 -0.088453 -0.428329 +vn 0.151881 0.966044 0.209025 +vn 0.339249 0.933900 -0.112879 +vn 0.465722 0.884224 -0.035376 +vn 0.455784 0.880330 -0.131456 +vn -0.312076 -0.392792 0.865057 +vn -0.274863 -0.247480 0.929088 +vn -0.460330 -0.329082 0.824501 +vn -0.473769 -0.169547 0.864174 +vn -0.218265 0.258600 0.941003 +vn 0.916417 -0.032065 -0.398939 +vn 0.946363 0.066948 -0.316095 +vn 0.023866 -0.259231 0.965521 +vn -0.077409 -0.371768 0.925093 +vn -0.057278 -0.240058 0.969067 +vn -0.094641 0.531759 0.841591 +vn -0.139170 0.675995 0.723645 +vn 0.129589 0.660124 0.739894 +vn 0.178037 -0.080805 0.980700 +vn 0.237047 -0.089146 0.967400 +vn 0.174068 0.032221 0.984206 +vn 0.486989 0.330395 0.808505 +vn 0.527068 0.286135 0.800204 +vn 0.304958 0.640272 0.705019 +vn -0.072307 -0.308322 0.948530 +vn -0.247592 -0.214024 0.944930 +vn 0.737033 -0.170247 0.654063 +vn 0.761864 -0.272031 0.587846 +vn 0.707273 -0.088592 0.701367 +vn -0.637886 -0.740045 0.213154 +vn -0.768188 -0.533421 0.354047 +vn 0.866041 0.393224 0.308785 +vn 0.863340 0.494686 0.099648 +vn 0.821202 0.499807 0.275355 +vn -0.514432 -0.194671 -0.835143 +vn -0.441943 -0.178578 -0.879089 +vn -0.549641 -0.361480 -0.753145 +vn -0.057072 -0.245558 0.967700 +vn -0.205054 0.081690 0.975336 +vn -0.086788 0.314756 0.945197 +vn 0.096435 -0.099963 0.990307 +vn 0.362420 -0.483251 0.796944 +vn 0.519722 -0.346504 0.780912 +vn -0.351462 -0.429603 -0.831815 +vn -0.511921 -0.360570 -0.779696 +vn -0.307705 -0.600184 -0.738307 +vn -0.190247 0.049883 0.980468 +vn 0.890117 -0.427240 -0.158610 +vn 0.782125 0.559358 0.274589 +vn 0.731199 0.483873 0.480848 +vn 0.817682 0.427042 0.386046 +vn -0.120139 0.296999 0.947290 +vn -0.062345 0.447439 0.892138 +vn 0.030155 0.279589 0.959646 +vn -0.009190 -0.328570 0.944435 +vn -0.137907 -0.013127 0.990358 +vn 0.105048 -0.181106 0.977837 +vn 0.513586 0.268436 -0.814967 +vn 0.633819 0.055053 -0.771520 +vn -0.972090 -0.176665 0.154373 +vn -0.984646 -0.073229 0.158461 +vn -0.944299 0.300669 -0.133783 +vn -0.318125 0.733518 0.600622 +vn 0.316582 -0.665753 -0.675684 +vn 0.232342 -0.833099 -0.501960 +vn 0.366027 -0.825588 -0.429453 +vn -0.287964 -0.788891 -0.542888 +vn -0.310406 -0.863977 -0.396474 +vn -0.319449 -0.907939 -0.271290 +vn -0.165508 -0.348373 0.922629 +vn -0.177538 -0.227668 0.957417 +vn -0.005912 -0.126325 0.991971 +vn -0.005624 0.146304 0.989224 +vn -0.142615 0.710153 0.689451 +vn 0.005622 0.506499 0.862223 +vn 0.281792 0.172069 0.943920 +vn -0.732090 -0.206367 -0.649197 +vn -0.743039 -0.148045 -0.652669 +vn -0.910017 -0.111659 -0.399252 +vn -0.134449 -0.125925 0.982887 +vn 0.035897 0.250348 0.967490 +vn 0.249486 0.026549 0.968015 +vn 0.136570 -0.230249 0.963501 +vn 0.009040 0.109268 0.993971 +vn -0.898629 -0.411725 -0.151489 +vn -0.977776 0.168768 -0.124381 +vn -0.634018 -0.766259 -0.104249 +vn -0.133672 0.375071 0.917308 +vn 0.643685 0.056749 0.763184 +vn 0.311888 0.003257 0.950113 +vn 0.025912 0.418923 0.907652 +vn -0.441256 0.178716 -0.879405 +vn -0.751354 0.333755 -0.569276 +vn -0.580157 0.564811 -0.586861 +vn -0.010793 -0.038754 0.999191 +vn 0.438650 -0.560428 0.702500 +vn -0.446811 -0.285851 0.847732 +vn -0.714380 -0.153078 0.682809 +vn -0.481436 -0.119240 0.868333 +vn 0.203664 0.969211 0.138387 +vn 0.319256 0.881539 0.347800 +vn -0.285015 0.343567 -0.894834 +vn -0.356931 0.402471 -0.842981 +vn -0.316703 0.364234 -0.875804 +vn -0.181681 -0.529086 0.828891 +vn -0.055106 -0.497616 0.865645 +vn 0.175617 0.162798 0.970904 +vn 0.039695 0.426970 0.903394 +vn 0.181639 -0.059354 0.981573 +vn 0.257284 0.184905 0.948480 +vn 0.147471 0.204326 0.967731 +vn 0.995415 -0.069125 -0.066110 +vn 0.896636 0.307571 -0.318502 +vn 0.847256 -0.181226 -0.499313 +vn -0.017149 0.669069 0.743002 +vn -0.124955 -0.572793 0.810120 +vn -0.042058 0.884251 0.465115 +vn -0.655233 -0.593700 -0.467108 +vn -0.794990 -0.381317 -0.471792 +vn -0.060747 0.018606 -0.997980 +vn 0.128785 0.183482 -0.974551 +vn -0.118645 -0.144367 0.982386 +vn -0.017140 0.505087 0.862898 +vn 0.269719 0.083401 0.959321 +vn 0.066800 0.097967 0.992945 +vn -0.054369 0.084387 0.994949 +vn 0.985861 -0.103332 0.131915 +vn 0.993910 0.109091 0.015545 +vn 0.957469 0.114615 0.264796 +vn 0.105274 0.344974 0.932690 +vn -0.210724 0.393525 0.894837 +vn 0.136525 0.781264 0.609087 +vn -0.078105 0.663655 0.743950 +vn 0.153513 0.086687 -0.984337 +vn 0.288658 -0.907356 -0.305586 +vn 0.026603 -0.937470 -0.347048 +vn -0.062098 -0.578425 0.813368 +vn 0.018475 -0.343225 0.939071 +vn -0.055418 -0.041947 0.997582 +vn 0.020770 0.281469 0.959345 +vn 0.172545 0.416910 0.892421 +vn 0.089635 0.212625 0.973014 +vn -0.147712 0.159036 0.976160 +vn 0.285166 0.205681 0.936150 +vn 0.234680 0.263708 0.935619 +vn 0.239471 0.254188 0.937039 +vn 0.060321 0.689405 0.721860 +vn 0.390430 -0.913336 0.115678 +vn 0.362782 -0.931126 -0.037340 +vn -0.186262 0.923143 0.336324 +vn -0.335065 0.234657 -0.912506 +vn -0.019084 -0.327740 0.944575 +vn 0.008610 0.134553 0.990869 +vn -0.176392 -0.587984 0.789405 +vn 0.222439 0.468719 0.854882 +vn 0.132165 0.402373 0.905885 +vn -0.166792 0.518150 0.838869 +vn -0.092508 0.634079 0.767715 +vn 0.350023 0.246351 0.903767 +vn 0.350546 0.256555 0.900721 +vn 0.650892 0.153747 0.743439 +vn 0.066073 0.455665 0.887696 +vn 0.190459 0.749630 0.633861 +vn 0.665136 -0.711277 -0.227331 +vn 0.851050 -0.475903 -0.221880 +vn 0.811624 -0.578364 -0.082227 +vn 0.346567 0.417461 0.840011 +vn -0.556407 0.780888 -0.283946 +vn -0.452683 0.777188 -0.437101 +vn -0.683506 0.600813 -0.414541 +vn 0.768598 0.482096 0.420524 +vn 0.858283 0.344943 0.379953 +vn -0.134326 -0.295256 0.945928 +vn -0.380364 -0.223902 0.897325 +vn -0.369575 -0.340367 0.864618 +vn -0.450950 0.144095 0.880841 +vn -0.524632 -0.422918 0.738852 +vn 0.155577 -0.213523 0.964471 +vn -0.047450 0.165883 0.985003 +vn 0.014597 0.361253 0.932353 +vn -0.008318 0.539573 0.841898 +vn 0.037428 0.636670 0.770228 +vn -0.135919 -0.098787 0.985782 +vn 0.116848 -0.139009 0.983373 +vn -0.096255 -0.291552 0.951700 +vn 0.290853 0.523042 0.801144 +vn 0.281324 0.478397 0.831861 +vn 0.211871 0.454904 0.864970 +vn 0.883519 0.434201 0.175681 +vn 0.834594 0.540832 0.104659 +vn -0.010361 -0.335250 0.942072 +vn 0.087859 0.422540 0.902076 +vn 0.237439 -0.002419 0.971399 +vn 0.003638 0.522871 0.852404 +vn -0.032459 0.876944 0.479495 +vn 0.094827 0.732624 0.673995 +vn -0.444740 0.633419 0.633235 +vn 0.185960 -0.057228 0.980889 +vn 0.004438 0.163163 0.986589 +vn 0.194574 0.118473 0.973707 +vn 0.099757 0.409544 0.906820 +vn 0.158239 0.355287 0.921266 +vn 0.004298 0.356291 0.934365 +vn 0.997697 -0.062420 0.026539 +vn 0.948423 0.264646 0.174520 +vn 0.998485 -0.024069 0.049482 +vn 0.249067 0.457398 0.853670 +vn 0.930082 -0.012461 0.367142 +vn 0.176348 -0.954509 -0.240444 +vn 0.074843 -0.972875 -0.218890 +vn 0.534418 -0.809902 -0.241778 +vn -0.096964 0.413443 0.905352 +vn 0.346892 -0.072030 0.935135 +vn -0.211635 0.920002 0.329858 +vn -0.139782 0.879428 0.455046 +vn 0.227481 -0.178440 -0.957294 +vn 0.606880 -0.514297 -0.605966 +vn -0.883718 -0.443455 0.149633 +vn -0.969372 0.238704 -0.057780 +vn -0.468707 -0.882966 0.026171 +vn 0.145159 0.204908 0.967957 +vn 0.037339 0.327803 0.944008 +vn 0.079892 -0.556749 0.826830 +vn 0.344261 -0.480595 0.806544 +vn 0.079449 -0.286873 0.954668 +vn -0.204830 -0.309982 0.928416 +vn 0.275864 0.181621 0.943882 +vn 0.254556 0.318341 0.913159 +vn 0.317587 0.164848 0.933790 +vn -0.156901 0.591587 0.790827 +vn -0.630702 0.039114 0.775039 +vn -0.818565 0.369700 0.439630 +vn 0.063168 -0.230285 0.971071 +vn 0.026858 -0.602456 0.797700 +vn -0.125097 0.409178 0.903838 +vn 0.019925 0.589415 0.807585 +vn 0.256994 -0.808546 -0.529346 +vn 0.701275 -0.652748 -0.286589 +vn -0.213607 0.090047 0.972761 +vn 0.262698 -0.170425 0.949708 +vn 0.352330 -0.155547 0.922859 +vn 0.296386 0.074435 0.952163 +vn 0.293682 0.052030 0.954486 +vn -0.984243 0.087997 0.153368 +vn -0.955661 -0.017470 -0.293950 +vn -0.998882 0.023496 -0.041018 +vn 0.428144 -0.553472 0.714396 +vn -0.269931 0.737375 0.619206 +vn 0.196731 0.464500 0.863445 +vn 0.369792 0.133034 0.919541 +vn 0.210926 0.652067 0.728230 +vn 0.477310 0.384261 0.790265 +vn 0.880178 0.474016 0.024416 +vn 0.674295 0.306983 -0.671631 +vn -0.308926 0.200609 -0.929689 +vn 0.137232 0.146725 0.979612 +vn 0.106089 -0.829237 -0.548736 +vn 0.386506 -0.820818 -0.420560 +vn 0.367959 0.309802 0.876715 +vn -0.849357 0.301077 -0.433526 +vn -0.699936 0.543088 -0.463838 +vn 0.005373 0.436520 0.899679 +vn 0.491081 0.812312 0.314625 +vn 0.709382 -0.113744 -0.695586 +vn 0.576235 0.021558 -0.817000 +vn 0.548802 -0.016310 -0.835793 +vn -0.188774 -0.266819 0.945078 +vn 0.108909 -0.105864 0.988399 +vn 0.156046 0.162343 0.974317 +vn 0.178509 0.333831 0.925576 +vn -0.067402 0.722351 0.688234 +vn -0.152555 -0.580626 -0.799750 +vn -0.024031 -0.794379 -0.606947 +vn 0.260376 -0.861481 -0.435953 +vn 0.142176 -0.757023 -0.637732 +vn 0.254424 -0.907058 -0.335432 +vn 0.528284 0.218199 0.820552 +vn 0.334481 0.255819 0.907017 +vn -0.088570 -0.059353 0.994300 +vn 0.053712 0.604366 0.794894 +vn 0.004234 0.647444 0.762102 +vn 0.992787 0.062019 0.102603 +vn 0.947126 0.070592 0.312999 +vn 0.647571 -0.757736 -0.080548 +vn 0.158670 0.350962 0.922849 +vn -0.140006 -0.148751 0.978913 +vn -0.068432 -0.042259 0.996760 +vn 0.204722 0.454372 0.866969 +vn 0.721748 -0.666878 -0.185348 +vn 0.283545 -0.030780 0.958465 +vn 0.026767 -0.003721 0.999635 +vn 0.110629 0.457717 0.882188 +vn -0.972848 -0.227998 0.039805 +vn -0.150966 -0.115939 0.981717 +vn -0.030312 0.029915 0.999093 +vn 0.008984 0.196991 0.980364 +vn -0.968465 0.211331 0.131965 +vn 0.982488 -0.185562 -0.016883 +vn -0.043228 0.517794 0.854412 +vn 0.243402 0.321865 0.914964 +vn 0.176802 -0.178620 0.967903 +vn 0.024865 -0.170158 0.985103 +vn 0.032979 -0.121707 0.992018 +vn 0.994642 0.025531 0.100176 +vn -0.653640 0.754782 -0.055300 +vn -0.436861 0.897297 -0.063324 +vn 0.033345 0.143357 0.989109 +vn -0.060518 0.224578 0.972575 +vn -0.115603 0.020205 0.993090 +vn -0.024059 0.310714 0.950199 +vn 0.104712 0.098939 0.989569 +vn 0.052157 -0.063387 0.996625 +vn -0.165678 -0.037055 0.985484 +vn -0.268722 0.056379 0.961566 +vn -0.001010 0.378951 0.925416 +vn 0.935946 0.304443 -0.176973 +vn 0.939588 0.338735 0.049319 +vn 0.987591 -0.151035 0.043042 +vn 0.133064 -0.791097 -0.597042 +vn 0.125023 -0.706134 -0.696953 +vn 0.409581 -0.905971 -0.107053 +vn 0.484692 -0.711796 0.508352 +vn 0.169986 -0.120401 0.978064 +vn -0.242606 0.175622 0.954096 +vn 0.212593 0.385597 0.897842 +vn -0.022452 0.571797 0.820088 +vn 0.072148 0.581997 0.809984 +vn -0.008610 0.658412 0.752609 +vn -0.102548 0.795166 0.597659 +vn -0.375987 0.919391 0.115561 +vn -0.411457 0.908587 -0.071917 +vn -0.602263 0.788082 0.127303 +vn 0.623874 -0.023335 0.781177 +vn 0.110949 0.541250 0.833510 +vn -0.237356 0.766341 0.596979 +vn -0.021590 0.570883 0.820748 +vn 0.029356 0.709971 0.703619 +vn -0.105645 0.665754 0.738655 +vn -0.139356 0.354365 0.924665 +vn 0.931804 0.098869 -0.349238 +vn 0.926054 -0.172737 -0.335540 +vn 0.662588 -0.058471 0.746698 +vn 0.287335 -0.119550 0.950340 +vn 0.196857 -0.126198 0.972277 +vn 0.092755 0.019464 0.995499 +vn -0.037436 -0.115271 0.992628 +vn -0.184705 0.027919 0.982397 +vn -0.197733 0.389265 0.899652 +vn -0.138129 0.493915 0.858469 +vn 0.291186 -0.137947 0.946669 +vn 0.911796 0.394519 0.113945 +vn 0.937765 0.314297 0.147692 +vn 0.215649 -0.970289 -0.109704 +vn 0.695391 -0.681415 -0.228265 +vn -0.409346 0.563005 0.717956 +vn 0.074486 0.379697 0.922107 +vn 0.337500 -0.094221 0.936598 +vn 0.335966 -0.197111 0.921018 +vn 0.171533 -0.141644 0.974943 +vn -0.171666 0.535621 0.826826 +vn 0.241940 0.261387 0.934420 +vn 0.278109 0.309194 0.909425 +vn 0.004058 0.045856 0.998940 +vn 0.763432 -0.209812 0.610860 +vn 0.340677 -0.127594 0.931482 +vn -0.132115 -0.249160 0.959409 +vn -0.136707 -0.233849 0.962614 +vn -0.189576 0.474593 0.859548 +vn 0.668251 -0.056922 0.741755 +vn 0.746376 -0.198693 0.635172 +vn 0.759154 0.623235 0.187783 +vn 0.492776 0.859323 0.136878 +vn 0.353795 -0.159396 0.921641 +vn 0.178695 -0.137002 0.974320 +vn -0.086466 0.638094 0.765088 +vn -0.053721 0.795780 0.603198 +vn -0.053126 -0.157808 0.986040 +vn -0.102416 0.517991 0.849233 +vn -0.070718 0.412083 0.908398 +vn 0.196481 -0.012018 0.980434 +vn 0.284108 -0.189793 0.939820 +vn -0.044477 0.038047 0.998286 +vn -0.110013 0.246911 0.962773 +vn -0.509424 -0.808913 -0.293508 +vn -0.974922 -0.008807 -0.222375 +vn -0.982900 0.178162 -0.046533 +vn -0.674664 -0.222411 0.703819 +vn -0.154920 0.435633 0.886693 +vn 0.274681 0.429364 0.860347 +vn 0.046135 0.635411 0.770795 +vn 0.682755 -0.631149 -0.368100 +vn 0.010597 -0.218276 0.975830 +vn -0.400099 -0.306986 0.863528 +vn -0.716213 -0.079674 0.693319 +vn -0.506325 0.101724 0.856322 +vn 0.017951 0.233243 0.972253 +vn 0.992105 0.108621 0.062681 +vn 0.979745 0.166445 0.111335 +vn 0.659259 -0.394229 0.640282 +vn 0.078942 0.096966 0.992152 +vn 0.315735 0.423709 0.848989 +vn 0.121156 0.639932 0.758820 +vn -0.865238 -0.214859 0.452990 +vn -0.878573 0.039710 0.475955 +vn 0.800566 0.156574 -0.578428 +vn 0.839696 0.382910 -0.385084 +vn 0.265798 0.963513 0.031527 +vn -0.379669 -0.154402 0.912147 +vn -0.461152 0.111411 0.880299 +vn 0.847978 0.390266 -0.358644 +vn 0.811178 0.503196 -0.297967 +vn 0.210313 0.807085 0.551709 +vn 0.195196 0.591661 0.782199 +vn 0.949121 0.179521 0.258730 +vn 0.985162 0.078189 0.152783 +vn 0.707806 -0.655178 -0.264107 +vn 0.846023 -0.483736 -0.224153 +vn -0.311945 0.846404 0.431614 +vn -0.503592 0.710532 0.491467 +vn -0.312079 0.760226 0.569792 +vn -0.717441 -0.250221 0.650129 +vn -0.172308 0.196569 0.965231 +vn -0.237531 0.566699 0.788943 +vn -0.230719 0.457025 0.859009 +vn -0.107094 0.718873 -0.686843 +vn -0.086370 0.630771 -0.771147 +vn -0.122783 0.623752 -0.771919 +vn 0.086164 0.012599 0.996201 +vn -0.035455 -0.046793 -0.998275 +vn 0.962571 -0.263171 -0.064798 +vn -0.787598 -0.036023 0.615135 +vn -0.805987 -0.146411 0.573540 +vn -0.818918 -0.274680 0.503909 +vn -0.926215 -0.038011 0.375074 +vn -0.992379 -0.121875 0.018170 +vn -0.890657 -0.295376 0.345664 +vn 0.719052 -0.344133 0.603769 +vn -0.449720 0.391999 0.802552 +vn -0.210471 0.463527 0.860723 +vn -0.275853 0.642050 0.715316 +vn -0.133007 0.866932 0.480352 +vn -0.240006 -0.102975 -0.965294 +vn -0.248930 -0.379653 -0.891009 +vn -0.028468 0.781935 0.622709 +vn 0.146275 0.908989 0.390310 +vn 0.374626 0.927070 0.014007 +vn -0.387796 0.369489 0.844448 +vn 0.015693 0.606315 0.795070 +vn -0.326101 0.795866 0.510152 +vn -0.681465 0.365107 0.634274 +vn 0.571909 0.258396 0.778557 +vn -0.129349 0.356307 0.925372 +vn 0.170238 -0.869241 -0.464155 +vn 0.394572 -0.880594 -0.262425 +vn 0.754222 -0.129419 0.643739 +vn 0.400229 0.384080 0.832045 +vn -0.312847 0.890334 0.330805 +vn -0.317858 0.410531 0.854653 +vn 0.152447 0.327158 0.932592 +vn 0.023916 0.836155 0.547972 +vn -0.056564 0.246713 0.967436 +vn -0.176310 0.649012 0.740067 +vn -0.136471 0.721386 0.678954 +vn -0.943884 0.116907 -0.308893 +vn 0.193958 0.898786 0.393146 +vn 0.797516 0.154192 0.583260 +vn 0.802539 0.284374 0.524464 +vn 0.591936 0.751349 0.291694 +vn -0.145080 0.385362 0.911289 +vn 0.401079 -0.125107 0.907460 +vn 0.391962 0.862600 0.319823 +vn -0.962566 0.217023 -0.162379 +vn -0.992113 -0.091889 0.085258 +vn -0.964561 -0.195009 -0.177745 +vn -0.281181 0.579407 0.765000 +vn 0.595862 0.323256 -0.735156 +vn 0.556589 0.194176 0.807777 +vn 0.373059 0.256168 0.891743 +vn -0.615365 0.023551 0.787891 +vn -0.788828 -0.121789 0.602427 +vn -0.056363 -0.328693 -0.942753 +vn -0.641538 -0.355183 -0.679907 +vn -0.437024 -0.411710 -0.799691 +vn 0.314951 0.701781 0.638991 +vn 0.303925 0.696600 0.649906 +vn 0.231897 0.518782 0.822854 +vn 0.028219 0.264065 0.964092 +vn 0.497154 -0.097875 0.862124 +vn 0.332095 0.105850 0.937288 +vn 0.170521 0.712164 0.680988 +vn -0.983430 0.158091 -0.088726 +vn -0.891913 0.413615 0.182794 +vn -0.693017 0.712312 -0.111083 +vn 0.390443 0.848828 -0.356434 +vn -0.470785 0.873843 0.121489 +vn -0.475385 0.857119 -0.198385 +vn 0.522339 -0.852485 -0.020771 +vn -0.069530 0.331402 0.940924 +vn -0.316008 0.234318 -0.919366 +vn -0.586674 0.405562 -0.700952 +vn -0.166895 0.294373 -0.941005 +vn 0.290404 0.031432 0.956388 +vn 0.325793 0.014030 0.945337 +vn 0.282296 0.473578 0.834286 +vn -0.223942 0.255786 0.940438 +vn -0.533386 -0.341102 0.774047 +vn 0.027521 0.996284 -0.081612 +vn 0.171422 0.963231 0.206884 +vn -0.276100 -0.607819 -0.744530 +vn -0.539201 0.053567 0.840472 +vn -0.398862 -0.284222 0.871853 +vn -0.305550 0.056397 0.950504 +vn -0.240358 -0.068076 0.968294 +vn 0.545988 0.333990 0.768341 +vn -0.167313 0.195165 0.966394 +vn -0.419861 0.331093 0.845041 +vn -0.130961 0.501785 0.855021 +vn -0.275156 0.562959 0.779337 +vn 0.697997 -0.151169 -0.699963 +vn 0.642224 -0.154890 -0.750705 +vn 0.564464 0.020300 -0.825208 +vn 0.277353 -0.088220 0.956709 +vn -0.564485 0.819930 0.095248 +vn -0.289789 -0.251144 0.923552 +vn 0.060293 -0.114697 0.991569 +vn -0.434110 -0.343366 0.832856 +vn -0.696262 -0.192330 0.691541 +vn -0.489456 -0.271179 0.828791 +vn -0.108044 -0.250301 0.962121 +vn -0.252889 0.450463 0.856230 +vn -0.412059 0.512326 0.753478 +vn 0.328106 0.874969 0.356055 +vn -0.004902 -0.991245 0.131944 +vn -0.067017 -0.866498 0.494662 +vn 0.001507 -0.995249 0.097348 +vn -0.168909 0.367998 0.914356 +vn -0.250901 0.643457 0.723196 +vn 0.080920 0.217874 0.972616 +vn -0.591716 -0.235356 0.771025 +vn -0.316974 -0.344580 0.883625 +vn -0.284794 -0.152520 0.946377 +vn -0.197885 -0.175465 0.964393 +vn -0.058876 -0.029845 0.997819 +vn -0.066417 0.194980 0.978556 +vn -0.244553 0.679366 0.691849 +vn -0.814909 0.149304 -0.560028 +vn -0.792874 0.224900 -0.566366 +vn 0.333318 0.931363 0.146502 +vn -0.184326 0.496423 0.848286 +vn -0.253735 0.761115 0.596928 +vn 0.552596 -0.736296 -0.390519 +vn 0.926613 -0.127469 -0.353751 +vn -0.146384 -0.241236 0.959363 +vn -0.075050 0.090761 0.993041 +vn -0.256868 -0.526326 0.810556 +vn -0.308118 -0.280728 0.908986 +vn -0.142617 -0.042244 0.988876 +vn -0.116289 0.153857 0.981226 +vn -0.173212 0.392391 0.903342 +vn 0.369472 0.472618 0.800077 +vn -0.249585 -0.373033 0.893618 +vn -0.275715 -0.181587 0.943932 +vn -0.191530 -0.107695 0.975560 +vn -0.090654 0.410299 0.907434 +vn -0.047626 0.149928 0.987549 +vn 0.963720 0.170352 -0.205484 +vn -0.025398 0.138306 0.990064 +vn -0.109392 -0.300698 -0.947425 +vn -0.328714 0.941207 0.077953 +vn -0.259626 -0.029714 0.965252 +vn 0.002843 0.101495 0.994832 +vn -0.107195 0.899831 0.422863 +vn -0.298141 0.823561 0.482554 +vn -0.025758 0.783516 0.620838 +vn -0.939639 0.304989 0.155117 +vn 0.354817 -0.037591 0.934180 +vn 0.221402 0.010228 0.975129 +vn 0.480177 -0.013225 0.877072 +vn 0.782162 -0.173354 0.598474 +vn -0.481444 0.800007 0.358050 +vn 0.586503 0.458005 0.668016 +vn 0.490236 0.471389 0.733118 +vn 0.481660 0.344591 0.805767 +vn 0.446972 -0.288526 0.846740 +vn 0.525586 -0.555650 0.644214 +vn 0.369698 0.501877 0.781949 +vn 0.399116 -0.195653 0.895783 +vn 0.448077 -0.224338 0.865390 +vn 0.101746 -0.897415 0.429294 +vn 0.257350 -0.486429 0.834960 +vn 0.257529 -0.504157 0.824321 +vn 0.532932 0.400813 0.745206 +vn 0.450688 0.261401 0.853551 +vn 0.527886 0.334958 0.780473 +vn 0.583126 0.068721 0.809470 +vn 0.429680 -0.223026 0.875006 +vn 0.464686 -0.162861 0.870369 +vn 0.298915 -0.089494 0.950074 +vn 0.686461 -0.200930 0.698856 +vn 0.863959 -0.108786 0.491671 +vn 0.798317 -0.261473 0.542515 +vn 0.948674 0.067628 -0.308940 +vn -0.178044 0.100206 0.978907 +vn 0.286521 -0.136618 0.948283 +vn 0.759528 0.123374 0.638667 +vn 0.630726 -0.396811 0.666877 +vn -0.168794 -0.516450 -0.839516 +vn 0.000712 -0.635015 -0.772500 +vn 0.453578 -0.465344 0.760081 +vn 0.450985 -0.608185 0.653240 +vn 0.453751 -0.365637 0.812662 +vn 0.633594 -0.676749 -0.374926 +vn 0.648894 -0.702399 -0.292529 +vn 0.638980 -0.633580 -0.436213 +vn 0.715892 -0.065913 -0.695093 +vn 0.683410 -0.279079 -0.674586 +vn 0.753199 -0.318934 -0.575303 +vn 0.385300 0.619992 0.683487 +vn 0.190119 0.775511 0.602027 +vn 0.482667 -0.173631 0.858420 +vn 0.496425 -0.217333 0.840434 +vn 0.504190 -0.243402 0.828582 +vn 0.908445 0.344571 0.236639 +vn -0.636610 0.424016 -0.644156 +vn 0.466883 0.360008 0.807722 +vn 0.444043 -0.222014 0.868064 +vn 0.460106 -0.213772 0.861745 +vn 0.821596 -0.061269 0.566768 +vn 0.137077 -0.259009 0.956098 +vn -0.182757 -0.654824 0.733352 +vn 0.043583 -0.919939 0.389631 +vn 0.643631 0.270956 0.715767 +vn 0.731820 0.515404 -0.445868 +vn 0.796657 0.490490 -0.353210 +vn 0.809132 0.411197 -0.419789 +vn 0.709413 0.231943 0.665534 +vn -0.973337 0.222042 0.057560 +vn -0.891783 0.132976 0.432482 +vn -0.991079 0.094843 -0.093629 +vn 0.344384 0.507827 0.789627 +vn 0.706928 0.347766 0.615882 +vn 0.572716 0.398352 0.716458 +vn 0.472447 0.419674 0.775028 +vn 0.361632 -0.110932 0.925698 +vn 0.169800 0.731264 0.660621 +vn 0.339156 -0.842571 0.418387 +vn 0.046509 -0.721098 -0.691271 +vn 0.744599 -0.424317 0.515294 +vn 0.606166 -0.607876 0.512884 +vn -0.692721 -0.720986 -0.017788 +vn 0.654152 -0.127210 0.745589 +vn 0.775996 0.289228 0.560515 +vn 0.683407 0.055128 0.727953 +vn 0.804706 -0.371536 0.463043 +vn 0.487405 -0.532669 0.691882 +vn 0.584432 -0.682600 0.438745 +vn 0.150976 0.758189 0.634315 +vn 0.846489 0.029503 0.531589 +vn 0.932743 -0.003933 0.360520 +vn 0.469744 -0.759762 0.449558 +vn 0.521953 -0.800613 0.294252 +vn 0.847408 -0.223595 0.481565 +vn 0.776889 0.340546 0.529596 +vn 0.836635 -0.089599 0.540383 +vn 0.794843 -0.259917 0.548331 +vn 0.815520 -0.091278 0.571486 +vn 0.697519 -0.022186 0.716222 +vn 0.737044 -0.195756 0.646874 +vn 0.810691 0.244629 0.531917 +vn 0.828743 0.337554 0.446366 +vn 0.752296 0.356779 0.553859 +vn -0.108603 0.132918 -0.985159 +vn -0.100116 0.226842 -0.968772 +vn 0.587441 -0.744597 0.317000 +vn 0.419690 -0.848550 0.322216 +vn 0.762603 -0.511683 0.395750 +vn 0.823822 0.095438 0.558757 +vn 0.929164 -0.326001 -0.174294 +vn 0.640964 0.425240 0.639013 +vn 0.821774 -0.021740 0.569399 +vn 0.764808 -0.030614 0.643531 +vn 0.695483 -0.050236 0.716785 +vn 0.631369 0.093594 0.769814 +vn 0.639832 0.038506 0.767549 +vn 0.535505 0.131176 0.834282 +vn 0.286474 0.665805 0.688939 +vn 0.720636 0.386237 0.575764 +vn 0.583882 -0.223552 0.780452 +vn 0.534940 -0.002872 0.844885 +vn 0.554513 -0.019775 0.831940 +vn 0.772793 -0.008294 0.634604 +vn 0.839609 0.064053 0.539401 +vn 0.764660 -0.021409 0.644078 +vn 0.756625 0.154150 0.635418 +vn -0.007533 0.431151 -0.902248 +vn -0.002118 0.389775 -0.920908 +vn 0.035089 0.275952 -0.960531 +vn 0.418682 0.134809 0.898071 +vn 0.721038 0.297085 0.625976 +vn 0.839869 0.339713 0.423337 +vn 0.830379 0.213789 0.514553 +vn 0.488146 0.192007 0.851379 +vn 0.522850 -0.111824 0.845058 +vn 0.542530 -0.584626 0.603219 +vn 0.384561 0.513279 0.767240 +vn 0.594927 0.435108 0.675827 +vn 0.540198 0.328007 0.774982 +vn 0.493550 -0.551548 0.672460 +vn 0.871874 -0.013095 0.489555 +vn 0.785101 0.029374 0.618671 +vn -0.030717 0.245034 -0.969028 +vn -0.156259 0.415274 -0.896176 +vn 0.849040 -0.040704 0.526758 +vn 0.477646 -0.328604 0.814784 +vn 0.641049 -0.397107 0.656782 +vn 0.537553 -0.381245 0.752123 +vn 0.426163 -0.136482 0.894292 +vn 0.681237 -0.396967 0.615088 +vn 0.632131 -0.044325 0.773593 +vn 0.571281 -0.199634 0.796106 +vn 0.381051 0.130673 0.915273 +vn 0.492046 -0.109181 0.863696 +vn 0.726522 -0.430140 0.535860 +vn 0.504600 -0.600459 -0.620345 +vn 0.583064 -0.522408 0.622195 +vn 0.612171 -0.337273 0.715188 +vn 0.511967 0.341015 0.788415 +vn 0.500705 0.467076 0.728790 +vn 0.545641 0.429895 0.719351 +vn 0.763532 -0.084651 0.640198 +vn 0.577358 -0.418325 0.701186 +vn 0.585425 0.005218 0.810710 +vn -0.040034 0.339911 -0.939605 +vn 0.577284 -0.051427 0.814922 +vn -0.118133 -0.041114 0.992146 +vn 0.199263 0.115509 0.973115 +vn -0.861122 -0.305452 -0.406409 +vn 0.394438 -0.064558 0.916652 +vn 0.675067 -0.691848 0.256184 +vn 0.596647 -0.509648 0.619896 +vn 0.455644 -0.884770 0.097826 +vn 0.425460 0.585714 0.689871 +vn 0.731834 0.312454 0.605633 +vn -0.533583 -0.511712 -0.673380 +vn 0.128532 -0.728791 -0.672565 +vn 0.444832 -0.428789 0.786299 +vn 0.643030 0.033148 0.765124 +vn 0.740783 0.047563 0.670058 +vn 0.461401 -0.480838 0.745590 +vn 0.431391 0.519273 0.737738 +vn 0.590729 0.284786 0.754941 +vn 0.697726 0.030793 0.715703 +vn 0.751647 -0.181783 0.634020 +vn 0.622510 0.337549 0.706075 +vn 0.588215 -0.537706 0.604050 +vn 0.435425 0.568438 0.698057 +vn 0.250018 0.774335 0.581289 +vn 0.622862 0.188166 0.759366 +vn 0.558634 -0.407437 0.722443 +vn 0.648015 -0.236450 0.723995 +vn 0.618726 0.354888 0.700880 +vn 0.478904 0.488401 0.729462 +vn 0.623849 0.384599 0.680364 +vn 0.560043 0.236529 0.793981 +vn 0.794835 -0.005775 0.606799 +vn 0.514695 0.475096 -0.713704 +vn 0.070172 -0.721876 -0.688456 +vn 0.714043 0.049087 0.698379 +vn -0.234306 -0.494427 0.837044 +vn 0.303376 0.192322 0.933261 +vn 0.449391 -0.863789 0.227851 +vn 0.276564 0.676601 0.682439 +vn 0.939195 0.202008 0.277678 +vn 0.576416 -0.796693 -0.181725 +vn 0.549008 0.122229 0.826832 +vn 0.621903 -0.037895 0.782177 +vn 0.209301 -0.079849 0.974586 +vn 0.665051 0.405560 0.627079 +vn 0.778353 -0.008725 0.627767 +vn 0.084110 -0.947042 0.309897 +vn 0.008305 -0.936428 0.350762 +vn 0.013631 -0.996253 0.085403 +vn 0.592535 -0.435272 0.677820 +vn -0.456661 0.181735 -0.870880 +vn -0.328439 0.221153 -0.918270 +vn 0.732183 0.189724 0.654150 +vn 0.859150 0.144251 0.490972 +vn 0.183874 -0.515791 0.836750 +vn 0.251184 0.204185 0.946158 +vn 0.683748 -0.571743 0.453431 +vn 0.708081 0.405633 0.578000 +vn 0.573136 0.481055 0.663402 +vn 0.761760 -0.039669 0.646643 +vn 0.561525 -0.030834 0.826885 +vn 0.565090 -0.212826 0.797106 +vn 0.589269 -0.170617 0.789716 +vn 0.700696 -0.261617 0.663763 +vn 0.629720 -0.184660 0.754555 +vn 0.850862 0.149959 0.503534 +vn 0.892872 0.066951 0.445307 +vn -0.267367 -0.945112 -0.187824 +vn -0.394179 -0.891859 -0.221834 +vn 0.517927 0.069861 0.852567 +vn 0.777217 -0.029980 0.628519 +vn 0.907519 0.082917 0.411745 +vn 0.505374 -0.470830 0.723130 +vn 0.543289 -0.135965 0.828463 +vn 0.524553 0.018515 0.851177 +vn 0.650952 0.225490 0.724855 +vn 0.054036 -0.532315 -0.844820 +vn 0.625887 -0.100229 0.773447 +vn 0.503341 -0.111961 0.856804 +vn 0.333633 -0.787338 -0.518447 +vn 0.427106 -0.687062 -0.587815 +vn 0.473022 -0.796390 -0.376847 +vn -0.516900 0.396657 0.758602 +vn 0.814847 0.348455 0.463253 +vn 0.943854 0.084123 0.319472 +vn 0.876603 -0.392557 0.278329 +vn 0.617648 0.300953 0.726594 +vn 0.862084 0.505282 0.038750 +vn 0.565885 -0.142206 0.812128 +vn 0.575704 0.138923 0.805770 +vn -0.808933 0.284108 -0.514694 +vn -0.650819 -0.235500 -0.721785 +vn -0.369212 0.367086 -0.853774 +vn 0.823393 0.102312 0.558173 +vn 0.784716 0.321598 0.529902 +vn 0.423176 0.107259 0.899676 +vn 0.571181 -0.273676 0.773857 +vn 0.541970 0.209526 0.813860 +vn 0.668506 -0.060792 0.741218 +vn 0.639670 -0.252078 0.726140 +vn 0.650169 -0.355632 0.671421 +vn 0.528892 0.061950 0.846425 +vn 0.522114 0.044741 0.851701 +vn 0.938255 0.203754 0.279573 +vn -0.749640 -0.641383 0.163302 +vn 0.851487 0.229266 0.471600 +vn 0.388530 0.451160 0.803429 +vn 0.584235 -0.178666 0.791674 +vn -0.975273 -0.181313 0.126365 +vn -0.988074 -0.132079 -0.079157 +vn 0.568280 0.024191 0.822480 +vn 0.633024 -0.200890 0.747612 +vn 0.775031 0.140466 0.616114 +vn 0.258005 0.046033 0.965046 +vn 0.518500 -0.482393 0.706013 +vn 0.684599 -0.230690 -0.691452 +vn 0.769921 -0.116082 -0.627492 +vn 0.676330 -0.348739 -0.648814 +vn -0.504804 0.746814 -0.432946 +vn -0.579761 0.730972 -0.359939 +vn -0.345766 -0.263496 -0.900564 +vn 0.871295 0.136057 0.471523 +vn -0.462210 0.131129 -0.877022 +vn -0.580181 0.272311 -0.767617 +vn -0.423109 0.232547 -0.875729 +vn 0.137195 -0.974515 -0.177477 +vn 0.226241 -0.933412 -0.278492 +vn 0.777259 0.182803 0.602039 +vn 0.904042 -0.426403 0.029822 +vn 0.960219 -0.278790 0.015987 +vn 0.651388 -0.028316 0.758216 +vn -0.446168 -0.038312 -0.894129 +vn -0.618714 -0.393107 0.680191 +vn -0.748974 0.052262 0.660535 +vn -0.668758 -0.315100 0.673405 +vn -0.991845 -0.098224 0.081213 +vn 0.878851 -0.041842 0.475258 +vn 0.178705 -0.002679 0.983899 +vn -0.149880 -0.689918 -0.708201 +vn -0.265676 -0.555107 -0.788209 +vn -0.245865 0.245152 -0.937791 +vn -0.452505 0.337492 -0.825432 +vn -0.249739 -0.936951 -0.244446 +vn 0.414553 0.795782 -0.441449 +vn 0.190816 -0.634095 0.749342 +vn 0.181071 0.095250 0.978847 +vn -0.143026 0.039190 0.988943 +vn 0.422622 -0.705293 0.569168 +vn 0.825671 -0.523020 -0.211464 +vn 0.805052 -0.522453 -0.280953 +vn 0.776833 -0.563549 -0.280967 +vn -0.906508 -0.420137 0.041573 +vn -0.178360 0.584913 -0.791243 +vn 0.788767 0.546981 0.280462 +vn 0.412262 -0.092404 0.906367 +vn 0.118232 0.829684 0.545568 +vn 0.929474 -0.187704 0.317562 +vn 0.793219 -0.524814 0.308828 +vn 0.925708 -0.316121 0.207684 +vn 0.662074 0.694823 -0.280853 +vn 0.465533 0.712903 -0.524451 +vn 0.159097 0.891111 -0.424982 +vn 0.769608 -0.637259 0.040051 +vn 0.728709 0.681901 -0.063202 +vn 0.905213 0.395073 0.156547 +vn -0.270932 -0.260396 -0.926709 +vn 0.042915 0.186384 -0.981539 +vn 0.525187 0.564244 -0.637030 +vn 0.313994 -0.014827 0.949309 +vn 0.068989 -0.977880 -0.197460 +vn -0.784495 0.547917 0.290439 +vn -0.508823 0.804453 0.306521 +vn -0.307535 0.942604 0.130078 +vn 0.580801 -0.187075 0.792258 +vn 0.540524 0.082371 0.837287 +vn -0.515685 0.146282 -0.844198 +vn -0.621368 0.324820 -0.713018 +vn -0.513037 0.093495 -0.853259 +vn -0.787049 -0.597597 0.153076 +vn 0.614986 -0.301347 0.728686 +vn 0.976481 0.145414 0.159182 +vn 0.866921 0.410885 0.282171 +vn 0.914113 0.301958 0.270588 +vn 0.583381 -0.640258 -0.499736 +vn 0.730177 -0.648861 0.214061 +vn 0.326001 -0.941326 0.087345 +vn 0.435985 -0.888753 0.141546 +vn -0.196988 0.263184 -0.944421 +vn 0.457812 0.706594 0.539568 +vn 0.245926 0.720616 0.648254 +vn 0.438081 -0.146761 0.886874 +vn 0.304075 -0.481886 -0.821782 +vn -0.917951 0.037218 0.394944 +vn -0.960618 0.116140 0.252436 +vn -0.948695 -0.212362 0.234266 +vn -0.290988 0.729873 -0.618556 +vn 0.944094 0.032435 0.328078 +vn 0.875612 0.239865 0.419248 +vn 0.099649 -0.873557 0.476412 +vn 0.861365 0.208478 0.463236 +vn 0.660723 -0.629106 0.409476 +vn 0.393926 0.178502 0.901643 +vn 0.303014 0.576392 0.758917 +vn -0.111969 -0.004159 -0.993703 +vn -0.037606 -0.007191 -0.999267 +vn -0.068271 0.033316 -0.997110 +vn 0.318289 -0.032830 0.947425 +vn 0.017319 -0.999614 -0.021709 +vn 0.017675 -0.999757 -0.013196 +vn 0.028180 -0.999309 -0.024257 +vn 0.972635 0.063916 0.223374 +vn -0.117144 0.576906 -0.808367 +vn 0.372910 -0.888011 -0.269026 +vn 0.281904 -0.024481 0.959130 +vn 0.649154 0.043453 0.759415 +vn 0.833626 -0.059616 -0.549102 +vn 0.528782 -0.254715 0.809636 +vn -0.484273 0.811467 -0.327110 +vn -0.449358 0.862654 -0.232176 +vn -0.681712 0.469360 -0.561222 +vn 0.893484 -0.067585 -0.443980 +vn -0.091200 -0.035042 -0.995216 +vn 0.259645 0.391214 0.882914 +vn 0.953125 0.293699 0.072761 +vn 0.312763 -0.398027 -0.862412 +vn 0.578460 0.257626 0.773960 +vn 0.995145 -0.068308 0.070857 +vn -0.441357 0.855382 0.271155 +vn -0.650000 -0.752320 -0.107306 +vn 0.008564 0.154199 -0.988003 +vn 0.263592 0.802743 0.534904 +vn -0.713980 0.614754 0.335127 +vn -0.753020 0.583970 0.303216 +vn -0.926762 0.310884 0.210864 +vn 0.816972 -0.028560 0.575969 +vn -0.148975 0.079755 -0.985619 +vn -0.051213 0.888441 -0.456124 +vn -0.710825 -0.680968 0.176098 +vn 0.862563 0.485987 -0.140721 +vn -0.032133 -0.063460 -0.997467 +vn -0.031895 -0.083434 -0.996003 +vn -0.035167 -0.035081 -0.998766 +vn -0.817509 0.434275 0.378266 +vn -0.953744 0.176833 0.243110 +vn -0.909803 0.275973 0.309995 +vn 0.936243 -0.339213 -0.091558 +vn -0.904748 -0.368270 0.214027 +vn -0.982140 0.126118 0.139627 +vn 0.949314 -0.299619 -0.095038 +vn 0.966262 -0.213022 -0.144777 +vn 0.999026 -0.044111 -0.001461 +vn 0.992868 0.116179 -0.026747 +vn 0.954259 0.279713 0.105593 +vn -0.911489 -0.407107 -0.058753 +vn -0.514883 0.047324 0.855953 +vn -0.785466 0.221133 0.578052 +vn -0.673429 -0.266798 0.689429 +vn -0.712958 -0.642353 0.281201 +vn -0.975212 -0.076498 0.207630 +vn -0.292502 -0.727072 0.621135 +vn 0.030477 -0.999435 0.014144 +vn 0.036416 -0.999175 0.017969 +vn -0.891033 0.291956 0.347593 +vn -0.884138 0.016524 0.466933 +vn -0.962452 0.053737 0.266082 +vn -0.922263 0.333863 0.194849 +vn -0.549221 0.624953 -0.554789 +vn -0.879346 0.449539 0.157053 +vn 0.996401 0.084692 0.003526 +vn -0.995122 0.091406 -0.037105 +vn 0.632561 0.206898 -0.746365 +vn -0.927903 -0.287831 -0.236959 +vn 0.692117 -0.230276 -0.684067 +vn 0.251450 -0.778922 0.574502 +vn 0.387903 -0.773034 0.501945 +vn 0.287040 -0.898172 0.333009 +vn -0.039650 -0.997505 0.058416 +vn -0.010828 -0.997843 0.064741 +vn 0.530275 0.112551 -0.840322 +vn 0.624860 0.180149 -0.759669 +vn 0.850332 0.308174 0.426573 +vn 0.974100 -0.115537 -0.194374 +vn -0.954110 -0.077692 -0.289203 +vn -0.934108 0.257560 0.247193 +vn -0.870606 0.282096 0.403071 +vn -0.641953 0.664424 -0.382672 +vn 0.952662 0.255496 0.164793 +vn 0.766751 -0.544801 -0.339536 +vn -0.842680 0.344982 -0.413373 +vn -0.878131 -0.296282 -0.375638 +vn 0.580353 -0.532188 -0.616414 +vn 0.317601 -0.898532 -0.302935 +vn 0.139073 0.820854 -0.553947 +vn 0.194875 0.812100 -0.550016 +vn 0.201590 0.833350 -0.514674 +vn 0.808342 -0.257560 -0.529383 +vn 0.807291 -0.033733 -0.589188 +vn 0.715720 -0.158188 -0.680236 +vn 0.761315 -0.463229 -0.453672 +vn 0.704153 -0.426665 -0.567560 +vn 0.514276 -0.459597 -0.724079 +vn 0.297528 -0.594832 -0.746761 +vn -0.914312 0.203324 -0.350277 +vn 0.753860 0.051422 -0.655020 +vn 0.721940 -0.049833 -0.690159 +vn 0.734396 -0.047561 -0.677053 +vn 0.010449 0.384612 -0.923019 +vn -0.880288 -0.326205 0.344504 +vn -0.734694 -0.527215 -0.426930 +vn -0.810460 0.584841 0.033407 +vn -0.831239 -0.546922 0.099592 +vn 0.860787 0.131752 -0.491618 +vn 0.737393 0.291044 -0.609545 +vn 0.110443 0.212888 -0.970815 +vn -0.011698 0.723643 -0.690075 +vn -0.081421 0.261697 -0.961710 +vn -0.153720 -0.942851 -0.295638 +vn -0.346573 -0.440618 -0.828096 +vn 0.599233 0.087343 -0.795796 +vn 0.681835 -0.017348 -0.731300 +vn 0.784702 0.283226 -0.551385 +vn 0.677756 0.189396 -0.710476 +vn 0.779773 0.259355 -0.569815 +vn -0.673468 -0.727450 0.131366 +vn -0.889213 -0.049894 -0.454764 +vn -0.856874 -0.264306 -0.442617 +vn 0.784776 -0.094457 -0.612539 +vn -0.940221 -0.043217 -0.337812 +vn 0.748231 -0.215811 -0.627356 +vn 0.816754 -0.226584 -0.530634 +vn 0.683635 -0.147776 -0.714707 +vn 0.649391 -0.123644 -0.750336 +vn 0.627506 -0.035500 -0.777802 +vn -0.894043 0.015372 -0.447718 +vn 0.177649 0.936815 -0.301361 +vn 0.171653 0.969541 -0.174713 +vn 0.260761 0.942725 -0.208022 +vn -0.007194 0.816965 -0.576642 +vn 0.001789 0.862380 -0.506259 +vn 0.014195 0.721429 -0.692343 +vn -0.379386 -0.520779 -0.764759 +vn -0.353976 -0.274040 -0.894205 +vn -0.177636 0.832901 0.524139 +vn 0.609974 -0.697035 0.376929 +vn 0.725594 -0.597862 0.340697 +vn -0.993749 -0.086320 0.070787 +vn -0.996366 0.081558 0.024550 +vn 0.690846 0.343919 -0.635965 +vn 0.830783 -0.311550 -0.461233 +vn 0.814587 -0.493012 -0.305592 +vn -0.977163 -0.115762 0.178192 +vn 0.573595 -0.788777 -0.220952 +vn -0.485689 -0.410323 0.771843 +vn -0.345551 -0.506680 0.789854 +vn -0.655590 0.468515 -0.592195 +vn -0.251039 0.620470 -0.742965 +vn -0.233453 0.903392 -0.359698 +vn -0.504518 0.760527 -0.408730 +vn 0.823444 0.005449 -0.567372 +vn 0.834612 -0.121144 -0.537352 +vn -0.675536 0.291402 -0.677301 +vn -0.547667 0.364242 -0.753253 +vn 0.879917 -0.223633 -0.419207 +vn 0.767693 -0.354646 -0.533736 +vn 0.692625 -0.681640 -0.235875 +vn 0.683699 -0.612187 -0.397219 +vn 0.363163 -0.847834 -0.386382 +vn -0.516312 0.744989 0.422390 +vn -0.875985 0.441225 0.194862 +vn 0.840413 -0.297482 -0.453003 +vn 0.421841 -0.449080 0.787641 +vn 0.565881 -0.802458 0.189312 +vn 0.360107 -0.923854 0.129680 +vn -0.390011 0.781982 0.486205 +vn -0.443062 0.770777 0.457819 +vn -0.961366 0.081202 -0.263024 +vn 0.061484 -0.969851 -0.235817 +vn 0.108513 -0.778528 -0.618158 +vn 0.112227 -0.932673 -0.342821 +vn 0.628634 0.006812 -0.777672 +vn 0.250627 0.102312 -0.962662 +vn -0.176607 -0.333686 -0.925993 +vn -0.602598 -0.348083 -0.718132 +vn -0.440035 0.896443 -0.052516 +vn -0.385576 0.851452 0.355472 +vn -0.617087 0.745822 0.250906 +vn -0.922748 -0.131074 -0.362430 +vn 0.178849 -0.794496 0.580335 +vn -0.855272 0.184798 -0.484108 +vn -0.780060 0.507881 -0.365464 +vn -0.684045 0.421174 -0.595562 +vn -0.221493 0.696906 -0.682101 +vn -0.116933 0.472719 -0.873421 +vn -0.335471 0.492872 -0.802830 +vn 0.662655 0.451006 -0.597898 +vn 0.594785 0.355648 -0.720933 +vn -0.723549 -0.650876 0.229862 +vn 0.920536 0.188270 0.342297 +vn -0.361975 -0.383607 0.849600 +vn -0.621218 -0.189449 0.760393 +vn -0.009792 0.330837 -0.943637 +vn -0.006143 -0.649684 -0.760179 +vn 0.248421 -0.361355 0.898727 +vn 0.597882 -0.018572 -0.801369 +vn -0.018797 -0.406192 -0.913594 +vn 0.002981 -0.380680 -0.924702 +vn 0.567556 -0.751513 0.336316 +vn -0.134765 0.732583 -0.667204 +vn 0.918541 0.349730 0.184314 +vn -0.771373 0.572879 -0.277118 +vn -0.623504 0.705496 0.336925 +vn 0.917229 -0.143103 -0.371768 +vn 0.847446 0.471990 0.243023 +vn -0.100822 0.903583 -0.416380 +vn 0.081092 0.889455 -0.449771 +vn 0.010482 0.846347 -0.532529 +vn 0.760837 -0.345197 -0.549514 +vn 0.269099 0.503060 -0.821290 +vn 0.609459 0.046536 -0.791451 +vn 0.156755 0.485815 -0.859891 +vn 0.653335 -0.105297 -0.749710 +vn -0.854611 0.392213 0.340307 +vn 0.808553 0.570604 -0.143712 +vn 0.463189 -0.294830 -0.835782 +vn 0.010472 -0.998024 0.061964 +vn 0.014968 -0.998679 0.049155 +vn -0.085297 -0.783587 0.615399 +vn -0.057535 -0.953969 0.294333 +vn 0.015429 -0.993360 0.114011 +vn -0.663947 -0.429029 -0.612462 +vn -0.423550 -0.767784 -0.480742 +vn -0.213212 -0.857513 -0.468201 +vn -0.971722 0.191743 -0.137805 +vn -0.917357 -0.367672 -0.152561 +vn -0.866880 -0.389421 -0.311242 +vn -0.111924 -0.470674 -0.875179 +vn 0.910704 0.321974 0.258748 +vn 0.178458 -0.405964 -0.896296 +vn 0.959827 0.123834 0.251788 +vn -0.238554 -0.626438 0.742069 +vn -0.331583 -0.835650 0.437883 +vn -0.250962 -0.839526 0.481886 +vn -0.496163 0.641274 0.585312 +vn 0.254545 0.407557 -0.876986 +vn 0.118740 0.513992 -0.849537 +vn 0.177677 0.702253 -0.689400 +vn 0.700540 0.060323 -0.711059 +vn 0.961622 0.165137 0.219116 +vn 0.667697 -0.736088 0.111157 +vn -0.301997 -0.266022 -0.915440 +vn -0.798631 -0.260811 -0.542371 +vn 0.932848 0.245855 0.263342 +vn 0.830684 0.458551 0.315746 +vn -0.757764 -0.576003 0.306618 +vn -0.864200 -0.379989 0.329798 +vn -0.798349 -0.559007 0.223943 +vn -0.163600 -0.208208 -0.964305 +vn -0.484026 -0.251373 -0.838171 +vn 0.632795 -0.689521 0.352322 +vn 0.051510 -0.986227 -0.157170 +vn -0.011494 -0.999934 0.000931 +vn -0.045065 -0.946257 -0.320262 +vn 0.492649 -0.455247 -0.741652 +vn 0.813046 0.546945 0.199517 +vn -0.779550 0.067937 -0.622644 +vn 0.560664 0.731816 0.387430 +vn 0.676565 0.719536 0.156615 +vn 0.661014 0.620514 0.421928 +vn 0.730645 0.682258 -0.026114 +vn -0.605045 -0.724132 -0.330990 +vn -0.360215 0.851786 0.380403 +vn 0.364344 0.900174 -0.238623 +vn 0.752693 0.657864 -0.025865 +vn 0.567888 0.791469 0.226009 +vn 0.293385 0.794003 0.532433 +vn -0.094545 0.990550 0.099359 +vn -0.075568 0.959376 0.271824 +vn -0.597523 0.785837 -0.159455 +vn 0.129629 0.942659 0.307556 +vn -0.004545 0.956591 0.291397 +vn 0.356534 0.922804 -0.146002 +vn 0.270418 0.962451 0.023727 +vn 0.171022 0.944576 0.280228 +vn -0.137270 0.909683 0.391961 +vn -0.212954 0.788901 0.576443 +vn 0.078039 0.996272 -0.036776 +vn -0.093162 0.988531 0.118862 +vn 0.041653 0.966692 -0.252532 +vn 0.144450 0.945602 0.291498 +vn -0.615600 0.396350 -0.681134 +vn 0.643684 0.765276 -0.004771 +vn 0.020902 0.414778 -0.909683 +vn 0.086119 0.996159 0.015822 +vn 0.269040 0.962674 -0.029614 +vn -0.814469 0.460509 -0.352947 +vn -0.387321 0.907114 -0.164701 +vn 0.147023 0.983639 0.104107 +vn 0.030088 0.981183 0.190721 +vn 0.047624 0.913457 0.404140 +vn 0.343281 0.874880 -0.341677 +vn 0.343487 0.928596 -0.140449 +vn 0.151089 0.967161 -0.204382 +vn -0.018869 0.998451 -0.052335 +vn -0.672801 0.496633 -0.548356 +vn 0.085065 0.988259 -0.126917 +vn 0.018146 0.998671 -0.048245 +vn -0.001784 0.998576 -0.053319 +vn 0.260711 0.965317 0.013913 +vn 0.367891 0.929800 -0.011300 +vn 0.180123 0.964858 0.191322 +vn 0.642800 0.702861 0.304624 +vn 0.016958 0.883167 0.468752 +vn -0.938327 -0.308281 0.156542 +vn -0.780370 0.522574 0.343421 +vn -0.468621 -0.588213 0.659090 +vn -0.883191 -0.159049 0.441222 +vn -0.692906 0.652375 -0.307064 +vn -0.890505 0.008932 -0.454887 +vn 0.485080 0.835992 0.256546 +vn 0.777343 0.477893 0.409092 +vn -0.027274 0.903931 0.426807 +vn -0.395373 0.908460 0.135577 +vn 0.017924 0.613579 -0.789430 +vn 0.005789 0.998979 0.044802 +vn 0.263025 0.945416 -0.192369 +vn 0.011855 0.943803 0.330295 +vn -0.680312 0.633112 0.369248 +vn 0.018112 0.950225 -0.311037 +vn -0.359388 -0.171926 -0.917214 +vn -0.957595 0.263093 0.117446 +vn 0.015836 0.812782 0.582353 +vn -0.578720 0.790175 -0.201757 +vn -0.882789 0.286397 0.372372 +vn -0.919271 0.374149 0.122287 +vn -0.973088 0.218533 0.073097 +vn -0.148769 0.952073 -0.267256 +vn 0.229996 0.968888 -0.091421 +vn -0.849850 0.511811 -0.125718 +vn 0.655087 0.590008 0.471966 +vn -0.535122 0.509073 -0.674158 +vn -0.532895 0.222410 -0.816429 +vn -0.781960 0.290002 -0.551758 +vn 0.814056 0.580627 -0.013608 +vn -0.856171 0.237833 0.458700 +vn -0.907670 0.297073 0.296449 +vn 0.775175 0.610925 0.160857 +vn -0.998824 -0.045805 0.015922 +vn 0.771001 0.635349 0.043453 +vn -0.092662 -0.179745 -0.979339 +vn 0.036605 -0.343576 -0.938411 +vn -0.649754 0.752797 0.105430 +vn 0.761102 0.572433 -0.305033 +vn 0.535515 0.603725 0.590542 +vn 0.569465 0.711049 0.412455 +vn -0.582061 0.569508 0.580402 +vn -0.511930 0.783954 0.351203 +vn 0.062016 0.338864 -0.938789 +vn 0.018042 0.517264 -0.855636 +vn 0.264548 0.349369 -0.898864 +vn 0.750805 0.660292 -0.017506 +vn 0.697426 0.708039 0.110804 +vn 0.638101 0.713756 0.288754 +vn 0.760945 0.629327 -0.157832 +vn 0.676562 0.736253 0.013969 +vn 0.617213 0.777618 0.119824 +vn 0.653199 0.658193 -0.374318 +vn 0.657758 0.705871 -0.262869 +vn -0.894266 0.239248 -0.378219 +vn -0.031976 0.957321 -0.287251 +vn -0.587336 -0.003986 -0.809333 +vn 0.642503 0.756102 -0.124494 +vn 0.536510 0.784509 0.310970 +vn 0.758418 0.537618 -0.368469 +vn -0.803866 -0.558143 0.205612 +vn 0.389580 0.839018 0.379837 +vn 0.024528 0.872800 0.487461 +vn 0.573377 0.817626 -0.052221 +vn 0.562981 0.825495 0.040136 +vn 0.483179 0.857709 0.175711 +vn 0.354711 0.810341 0.466400 +vn 0.576515 0.759971 -0.300125 +vn 0.563399 0.809644 -0.164492 +vn 0.432534 0.897203 0.089114 +vn 0.399124 0.878028 0.264134 +vn 0.493399 0.823379 -0.280364 +vn 0.005161 0.214374 -0.976738 +vn -0.725995 0.388226 -0.567637 +vn -0.824438 -0.230769 -0.516766 +vn -0.378876 -0.432594 -0.818117 +vn -0.856807 -0.514798 -0.029403 +vn -0.535632 0.665582 0.519711 +vn -0.917706 -0.116977 0.379647 +vn -0.982166 0.083357 -0.168525 +vn -0.343533 -0.830914 0.437685 +vn -0.271163 -0.900108 0.340993 +vn -0.385552 0.802901 0.454643 +vn -0.496329 0.729787 0.470178 +vn -0.656115 0.525795 0.541344 +vn -0.375329 0.805533 0.458524 +vn -0.306022 0.710005 0.634226 +vn -0.417252 0.020244 0.908565 +vn -0.599151 -0.111593 -0.792821 +vn -0.324548 -0.092078 -0.941377 +vn -0.591243 0.257425 -0.764306 +vn -0.471386 0.701575 0.534404 +vn -0.806021 -0.370123 0.461886 +vn -0.698230 -0.362061 0.617566 +vn -0.816522 0.227239 0.530711 +vn -0.191838 -0.766055 -0.613480 +vn -0.810960 -0.324260 0.487031 +vn -0.804510 -0.325420 0.496856 +vn -0.846650 0.016021 0.531910 +vn -0.724229 0.444017 0.527580 +vn 0.185887 0.312183 -0.931659 +vn 0.019307 -0.999589 -0.021192 +vn 0.018395 -0.999467 -0.026960 +vn 0.013287 -0.999650 -0.022878 +vn -0.774070 0.460234 -0.434741 +vn -0.635254 0.456802 0.622723 +vn -0.566622 0.234499 0.789905 +vn -0.774762 -0.200249 0.599703 +vn -0.681450 0.455777 0.572619 +vn -0.425536 0.273142 -0.862736 +vn -0.709240 0.253601 0.657773 +vn -0.674399 0.730104 -0.110155 +vn -0.660600 -0.331487 0.673591 +vn -0.962797 0.189355 0.192789 +vn -0.917054 0.340408 0.207686 +vn -0.594614 0.393448 0.701165 +vn -0.725044 0.277662 0.630251 +vn -0.812499 -0.059963 0.579871 +vn -0.259364 0.059375 -0.963953 +vn -0.296068 0.182725 -0.937526 +vn -0.365218 0.104464 -0.925042 +vn -0.369468 -0.004730 -0.929231 +vn -0.349297 0.130110 -0.927935 +vn -0.361592 0.112131 -0.925569 +vn -0.783855 -0.022226 -0.620546 +vn -0.609217 -0.230703 -0.758703 +vn -0.727317 -0.579950 0.366971 +vn -0.279342 -0.859136 0.428782 +vn -0.757730 0.271054 0.593611 +vn -0.974990 0.094364 0.201220 +vn -0.496397 0.720759 0.483835 +vn -0.228346 -0.826168 0.515077 +vn -0.689956 -0.340204 0.638923 +vn -0.812351 0.582833 -0.019767 +vn -0.577928 0.518092 0.630539 +vn -0.469249 0.651873 0.595707 +vn 0.536235 0.708057 -0.459465 +vn -0.339001 -0.306481 0.889465 +vn -0.491957 -0.180649 0.851672 +vn -0.544511 -0.060942 0.836537 +vn -0.960107 0.191367 -0.203897 +vn -0.190539 -0.108401 0.975676 +vn -0.654457 0.146399 0.741791 +vn -0.718573 0.075231 0.691371 +vn -0.930705 -0.234088 -0.281055 +vn -0.614661 -0.353998 0.704896 +vn -0.631066 -0.481665 0.608075 +vn -0.852124 0.433512 -0.293175 +vn -0.977594 -0.113740 -0.177124 +vn 0.178600 -0.564369 -0.805971 +vn 0.215193 -0.639006 -0.738487 +vn -0.633528 -0.154925 0.758051 +vn -0.399390 -0.332319 0.854431 +vn -0.770024 0.295993 0.565200 +vn -0.617110 -0.019624 0.786632 +vn -0.387226 0.226300 -0.893781 +vn -0.445140 0.339691 -0.828529 +vn -0.339578 0.346312 -0.874503 +vn -0.745621 -0.012356 0.666256 +vn -0.675623 -0.120272 0.727371 +vn -0.115097 -0.370259 0.921770 +vn -0.601860 -0.284910 -0.746050 +vn -0.043502 -0.573087 0.818339 +vn -0.046720 0.200694 -0.978539 +vn -0.071833 0.282370 -0.956612 +vn -0.930707 0.364542 -0.029889 +vn -0.759319 0.639144 -0.122188 +vn -0.494612 0.158032 -0.854626 +vn -0.648066 0.277721 -0.709141 +vn -0.515062 0.196400 -0.834349 +vn -0.788738 0.367607 0.492704 +vn 0.283548 0.305056 -0.909143 +vn 0.446997 0.319033 -0.835710 +vn 0.414703 0.274944 -0.867426 +vn -0.635211 -0.760668 -0.133761 +vn -0.781313 0.134226 0.609536 +vn -0.578829 0.189342 -0.793162 +vn -0.865286 0.137980 0.481914 +vn -0.747377 0.428350 0.507882 +vn -0.721219 0.671084 0.171725 +vn -0.762007 0.154277 0.628923 +vn -0.235279 -0.311726 -0.920582 +vn -0.666746 0.352232 -0.656797 +vn -0.366290 0.100399 -0.925069 +vn -0.931807 -0.323389 0.164791 +vn -0.675707 0.109579 0.728980 +vn -0.275061 -0.960032 0.051781 +vn -0.878798 -0.218476 0.424243 +vn -0.830795 -0.077173 0.551203 +vn -0.814797 0.131565 0.564620 +vn -0.700275 0.382400 0.602814 +vn -0.691250 0.421108 -0.587233 +vn -0.746644 -0.230233 0.624112 +vn -0.824660 -0.141048 0.547760 +vn -0.763609 0.267641 0.587596 +vn -0.500099 -0.751008 -0.431147 +vn -0.604361 0.139536 0.784396 +vn -0.671586 0.397632 0.625189 +vn -0.769762 0.019226 0.638042 +vn -0.531028 0.012297 -0.847265 +vn -0.294275 -0.031455 -0.955203 +vn -0.152398 -0.199424 -0.967990 +vn -0.690679 0.176819 0.701212 +vn -0.084993 -0.913646 0.397526 +vn -0.116536 0.141825 -0.983008 +vn 0.447274 0.776175 -0.444409 +vn -0.627266 0.630717 0.456874 +vn -0.852904 -0.105110 0.511378 +vn -0.756389 -0.401813 0.516161 +vn -0.707218 0.231003 0.668192 +vn -0.550719 0.785027 -0.283623 +vn -0.701734 0.422371 0.573735 +vn -0.639919 0.550106 0.536551 +vn -0.601459 0.496458 0.625921 +vn -0.782280 -0.128803 0.609466 +vn -0.747187 0.150085 0.647446 +vn -0.763759 -0.346464 0.544641 +vn 0.163110 0.212374 -0.963479 +vn 0.189627 0.394673 -0.899041 +vn 0.144973 0.290497 -0.945830 +vn -0.377758 0.093345 -0.921187 +vn -0.600188 0.097849 -0.793851 +vn -0.493182 0.004998 -0.869912 +vn -0.719188 -0.551168 0.423063 +vn 0.083386 -0.118227 -0.989479 +vn 0.226166 -0.624683 -0.747409 +vn 0.035362 0.214103 -0.976171 +vn -0.784865 0.101257 0.611338 +vn 0.002295 0.142806 -0.989748 +vn -0.582527 0.778206 0.234646 +vn -0.700826 -0.030895 -0.712663 +vn -0.575386 -0.155365 -0.802990 +vn -0.604970 -0.316745 -0.730537 +vn -0.422787 -0.021112 -0.905983 +vn -0.005416 -0.995815 0.091228 +vn -0.000170 -0.999932 0.011646 +vn -0.380055 0.439101 -0.814094 +vn -0.332608 -0.663540 0.670139 +vn -0.013862 0.376154 -0.926454 +vn -0.633068 -0.449711 0.630068 +vn -0.521585 0.014515 -0.853076 +vn 0.312504 -0.502850 -0.805905 +vn -0.464714 -0.094739 -0.880378 +vn 0.332454 0.439983 -0.834200 +vn 0.356232 0.432688 -0.828178 +vn 0.327228 0.324686 -0.887413 +vn -0.076904 0.626915 -0.775283 +vn -0.031921 0.594916 -0.803154 +vn -0.038099 0.642299 -0.765506 +vn -0.585615 -0.026880 -0.810143 +vn 0.069985 0.711213 -0.699484 +vn -0.050606 0.361082 -0.931160 +vn -0.202072 0.629160 -0.750550 +vn 0.120951 0.859720 -0.496239 +vn 0.174867 0.718543 -0.673140 +vn 0.117898 0.607984 -0.785147 +vn -0.051472 0.734133 -0.677052 +vn 0.117128 0.734204 -0.668749 +vn 0.303064 0.677790 -0.669890 +vn 0.387997 0.441189 -0.809204 +vn 0.565476 0.343477 -0.749841 +vn -0.862715 -0.284221 -0.418259 +vn -0.375599 0.569329 -0.731294 +vn -0.630890 -0.263436 -0.729781 +vn -0.684997 -0.475094 -0.552326 +vn -0.627287 -0.318604 -0.710635 +vn -0.464572 -0.371063 -0.804043 +vn -0.958688 0.002179 -0.284452 +vn -0.920987 -0.025568 -0.388754 +vn -0.446444 -0.655117 -0.609516 +vn -0.939239 -0.150103 -0.308707 +vn -0.464720 -0.635598 -0.616482 +vn -0.679412 -0.558519 -0.475873 +vn -0.983201 0.020197 -0.181404 +vn -0.969321 0.048499 -0.240965 +vn -0.706507 -0.583844 -0.399968 +vn -0.553946 0.806796 -0.205486 +vn -0.524264 -0.682623 -0.509090 +vn -0.924492 -0.303099 -0.231182 +vn -0.967502 -0.158690 -0.196867 +vn -0.587909 -0.694302 -0.415099 +vn -0.868709 -0.402378 -0.288853 +vn -0.031373 0.790727 -0.611364 +vn 0.294539 0.582594 -0.757516 +vn 0.284951 0.457281 -0.842435 +vn -0.472729 0.732572 -0.489761 +vn -0.529811 0.705502 -0.470709 +vn -0.185322 -0.960577 -0.207238 +vn -0.981322 0.126499 -0.144929 +vn -0.023102 0.599687 -0.799901 +vn 0.045262 0.523888 -0.850584 +vn -0.051270 0.726279 -0.685485 +vn -0.088988 -0.994928 0.046895 +vn -0.398680 -0.872209 0.283381 +vn -0.173968 -0.969323 0.173634 +vn -0.618698 -0.784032 0.050072 +vn -0.013906 -0.999700 -0.020161 +vn -0.341360 -0.912549 -0.225230 +vn -0.126222 0.731120 -0.670471 +vn -0.085893 0.368810 -0.925528 +vn -0.686316 -0.305180 -0.660179 +vn -0.723679 -0.280352 -0.630628 +vn -0.813653 -0.134734 -0.565522 +vn -0.849621 0.098068 -0.518196 +vn -0.817806 -0.512816 -0.261177 +vn 0.628163 0.412674 -0.659630 +vn 0.577871 0.332780 -0.745200 +vn -0.784016 -0.363356 -0.503280 +vn -0.866544 -0.294531 -0.402931 +vn -0.386654 0.796780 -0.464372 +vn -0.702086 0.567111 -0.430652 +vn -0.858232 0.326849 -0.395736 +vn -0.703875 -0.633565 -0.321178 +vn 0.162098 0.504023 -0.848342 +vn -0.051146 0.377469 -0.924609 +vn 0.131002 0.565425 -0.814330 +vn 0.123188 0.290743 -0.948838 +vn -0.876162 -0.292871 -0.382840 +vn -0.922093 -0.177316 -0.343954 +vn -0.882428 0.165938 -0.440211 +vn -0.975276 0.172568 0.138048 +vn -0.843339 -0.274190 -0.462169 +vn -0.923156 0.008259 -0.384337 +vn -0.924656 -0.299603 -0.235052 +vn -0.910832 -0.257485 -0.322626 +vn -0.909411 -0.278843 -0.308576 +vn -0.949667 -0.298891 -0.093791 +vn 0.128237 0.368690 -0.920664 +vn -0.835455 -0.130309 -0.533887 +vn -0.907965 -0.277543 -0.313958 +vn -0.837079 0.238855 -0.492187 +vn -0.902526 -0.258420 -0.344480 +vn -0.631182 0.236468 -0.738710 +vn -0.680668 0.484795 -0.549240 +vn -0.512297 0.512645 -0.689019 +vn -0.923514 -0.173190 -0.342239 +vn -0.793887 -0.444135 0.415316 +vn -0.617684 0.167856 -0.768304 +vn -0.688968 0.332945 -0.643794 +vn -0.708683 -0.609392 -0.355540 +vn 0.053957 0.141901 -0.988409 +vn 0.152966 -0.452657 -0.878466 +vn -0.157923 -0.959866 0.231769 +vn -0.033431 -0.997833 0.056677 +vn 0.015174 -0.998187 0.058244 +vn -0.942786 -0.317543 -0.101592 +vn 0.322082 0.793683 -0.516072 +vn 0.173735 0.799760 -0.574631 +vn -0.848358 0.378192 -0.370486 +vn -0.391956 0.857975 -0.332037 +vn -0.895476 -0.261547 -0.360162 +vn -0.323810 0.676076 -0.661868 +vn -0.750288 -0.646320 -0.139064 +vn -0.974263 0.211414 -0.078203 +vn -0.887274 -0.373807 -0.270210 +vn -0.949216 0.305889 -0.073625 +vn -0.640139 0.194000 -0.743362 +vn -0.600566 -0.070726 -0.796441 +vn -0.658168 0.186681 -0.729359 +vn -0.918155 0.275906 -0.284371 +vn 0.197039 -0.530949 -0.824178 +vn -0.810738 -0.525294 -0.258399 +vn -0.673060 0.575745 -0.464228 +vn -0.826748 0.500696 -0.256499 +vn -0.961631 0.099965 -0.255488 +vn -0.943898 -0.148259 -0.295087 +vn -0.289626 -0.249978 -0.923920 +vn -0.986058 -0.163986 0.028244 +vn 0.482034 0.388485 -0.785317 +vn 0.607365 0.193341 -0.770537 +vn -0.155649 0.324237 -0.933083 +vn -0.783430 -0.591302 -0.191310 +vn -0.803135 0.517261 -0.295662 +vn -0.946002 -0.138727 -0.292975 +vn 0.531571 0.622746 -0.574125 +vn 0.472942 0.529149 -0.704505 +vn 0.415947 0.493576 -0.763787 +vn 0.016688 -0.998415 0.053756 +vn -0.658797 -0.567143 -0.494303 +vn -0.626992 -0.483899 -0.610510 +vn -0.506330 -0.708327 -0.491837 +vn -0.594944 -0.779441 0.196249 +vn -0.981975 -0.149536 -0.115604 +vn -0.902813 0.311975 -0.295973 +vn -0.788488 0.488359 -0.373889 +vn 0.149643 0.239929 -0.959188 +vn 0.018722 0.707370 -0.706595 +vn -0.056489 0.716990 -0.694791 +vn 0.456094 0.490450 -0.742588 +vn 0.371171 0.514834 -0.772773 +vn -0.926407 -0.360717 -0.107946 +vn -0.607113 -0.368966 -0.703760 +vn -0.711820 -0.285588 -0.641679 +vn -0.544416 -0.119631 -0.830241 +vn -0.115452 -0.984509 0.131958 +vn -0.172174 0.879900 -0.442867 +vn -0.646415 0.657114 -0.387748 +vn 0.276361 0.847903 -0.452422 +vn -0.475948 -0.822621 -0.311076 +vn -0.562479 -0.751638 -0.344467 +vn -0.683020 -0.676474 -0.275440 +vn -0.935246 -0.260547 -0.239646 +vn -0.739908 -0.082691 -0.667606 +vn -0.742265 -0.022323 -0.669735 +vn -0.577119 0.056303 -0.814717 +vn -0.674836 0.189165 -0.713311 +vn -0.108177 0.580699 -0.806899 +vn -0.996369 -0.082582 -0.020703 +vn -0.834680 -0.195761 -0.514769 +vn -0.730923 0.213288 -0.648274 +vn -0.987418 0.015224 -0.157399 +vn -0.079536 0.537716 -0.839366 +vn -0.744519 -0.152130 -0.650037 +vn -0.036343 0.931554 -0.361782 +vn 0.177260 0.872967 -0.454432 +vn 0.203023 -0.529410 -0.823716 +vn 0.202796 -0.048894 -0.978000 +vn 0.463804 0.141008 -0.874644 +vn 0.453625 0.446027 -0.771547 +vn 0.492466 0.397058 -0.774482 +vn 0.213043 -0.077856 -0.973936 +vn -0.809524 0.080066 -0.581601 +vn 0.347350 0.691407 -0.633486 +vn -0.725299 -0.468129 -0.504775 +vn 0.391960 0.366564 -0.843800 +vn 0.484019 0.208272 -0.849911 +vn 0.016359 0.669981 -0.742198 +vn 0.011094 -0.999807 -0.016196 +vn 0.153954 0.348139 -0.924715 +vn -0.982680 0.104529 -0.153014 +vn -0.103409 0.586594 -0.803252 +vn -0.176995 0.555702 -0.812323 +vn -0.731786 -0.334667 -0.593706 +vn -0.778108 -0.130890 -0.614342 +vn 0.022818 -0.999476 -0.022959 +vn -0.078674 0.642186 -0.762501 +vn -0.081644 0.683200 -0.725653 +vn -0.122837 0.775703 -0.619028 +vn 0.219445 0.295881 -0.929677 +vn -0.916795 -0.121582 -0.380402 +vn -0.699603 -0.365180 -0.614165 +vn -0.611615 -0.706256 -0.356553 +vn -0.788050 -0.264302 -0.555987 +vn 0.006878 0.516705 -0.856136 +vn -0.839259 -0.032179 -0.542779 +vn -0.862343 0.355615 -0.360420 +vn -0.815070 -0.406887 -0.412438 +vn -0.841435 -0.385043 -0.379116 +vn -0.895091 -0.055873 -0.442369 +vn -0.842822 0.158883 -0.514205 +vn -0.738188 0.307850 -0.600255 +vn -0.596476 0.338854 -0.727595 +vn -0.564117 0.808476 -0.167748 +vn -0.045013 0.690098 -0.722314 +vn -0.493165 -0.692719 -0.526240 +vn -0.583288 -0.701157 -0.410065 +vn -0.796572 0.255016 -0.548124 +vn -0.687770 -0.197774 -0.698468 +vn -0.867315 0.189693 -0.460196 +vn -0.736497 0.438116 -0.515390 +vn -0.416047 0.840989 -0.345894 +vn -0.519181 0.432670 -0.737054 +vn -0.684507 -0.656252 -0.317466 +vn -0.487931 -0.607594 -0.626699 +vn -0.683880 -0.674971 -0.276989 +vn -0.866556 -0.357810 -0.347927 +vn -0.913546 0.089388 -0.396791 +vn -0.787690 0.158709 -0.595277 +vn -0.913399 -0.114836 -0.390532 +vn -0.948467 0.023440 -0.316009 +vn -0.215787 0.771797 -0.598135 +vn 0.043781 -0.998266 0.039348 +vn -0.614513 0.158356 -0.772850 +vn -0.722747 0.525009 -0.449447 +vn -0.553484 0.792093 -0.257378 +vn -0.711876 -0.268360 -0.649011 +vn -0.871816 0.044097 -0.487845 +vn -0.672578 -0.027435 -0.739517 +vn -0.733105 0.213503 -0.645735 +vn 0.452028 0.250917 -0.855985 +vn 0.507478 0.273891 -0.816976 +vn -0.768520 0.398668 -0.500442 +vn -0.835980 -0.460437 -0.298556 +vn 0.560179 0.490612 -0.667458 +vn -0.752470 0.609582 -0.249399 +vn -0.687922 -0.680803 -0.251536 +vn 0.546318 0.105438 -0.830915 +vn 0.312638 0.422245 -0.850862 +vn 0.406740 0.149027 -0.901307 +vn 0.582539 0.595961 -0.552701 +vn -0.201023 0.807387 -0.554721 +vn -0.036659 0.806805 -0.589680 +vn 0.464428 0.652393 -0.598908 +vn 0.011390 0.441809 -0.897037 +vn 0.403021 0.759422 -0.510738 +vn 0.438805 0.608294 -0.661384 +vn 0.844969 0.067887 -0.530489 +vn -0.023188 -0.990478 0.135703 +vn -0.262501 -0.747473 0.610227 +vn 0.006270 -0.789039 0.614310 +vn -0.174766 -0.984609 -0.001026 +vn -0.117160 -0.988057 -0.100083 +vn 0.249550 0.431219 -0.867050 +vn 0.239281 0.652458 -0.719057 +vn 0.181079 0.569948 -0.801479 +vn -0.129359 0.880519 -0.456018 +vn 0.294302 0.676587 -0.674994 +vn 0.368220 0.688918 -0.624345 +vn 0.079019 0.538987 -0.838600 +vn 0.025687 -0.997416 0.067100 +vn 0.024362 0.511563 -0.858901 +vn 0.519377 0.425437 -0.741114 +vn -0.017575 0.431954 -0.901724 +vn -0.030961 -0.999290 0.021452 +vn -0.225709 0.879120 -0.419765 +vn 0.580538 0.579591 -0.571883 +vn -0.366808 0.580543 -0.726927 +vn -0.168377 -0.980363 0.102648 +vn 0.005307 -0.999671 0.025081 +vn 0.311315 0.280845 -0.907860 +vn -0.392195 0.220324 -0.893107 +vn 0.121508 0.171115 -0.977730 +vn -0.013548 0.825453 -0.564309 +vn -0.264750 0.850919 -0.453700 +vn 0.285868 -0.562648 -0.775698 +vn 0.295686 0.307904 -0.904304 +vn 0.541302 0.270633 -0.796084 +vn 0.414252 0.177947 -0.892597 +vn -0.047496 0.352761 -0.934507 +vn 0.047202 0.432687 -0.900308 +vn -0.057690 0.424559 -0.903561 +vn -0.565436 -0.815378 -0.124263 +vn -0.162783 0.466834 -0.869234 +vn 0.577799 0.295321 -0.760877 +vn 0.062570 0.728679 -0.681991 +vn 0.169445 0.362883 -0.916299 +vn -0.143626 0.695292 -0.704231 +vn -0.210569 0.666358 -0.715282 +vn -0.239743 0.532496 -0.811771 +vn -0.319412 0.563121 -0.762149 +vn 0.174723 -0.180052 -0.968015 +vn 0.285472 0.292946 -0.912518 +vn 0.488287 0.336343 -0.805263 +vn 0.072163 0.695468 -0.714924 +vn 0.318494 0.171372 -0.932305 +vn 0.518503 0.644835 -0.561553 +vn -0.147075 0.533255 -0.833072 +vn -0.091424 0.766199 -0.636067 +vn -0.055234 0.443017 -0.894810 +vn -0.100860 0.636950 -0.764278 +vn -0.006395 0.667352 -0.744715 +vn 0.094807 0.891870 -0.442243 +vn 0.067200 0.480193 -0.874585 +vn 0.093196 0.763578 -0.638954 +vn -0.026271 0.470026 -0.882262 +vn 0.133143 0.870810 -0.473247 +vn -0.371811 -0.770874 0.517214 +vn 0.061018 0.140651 -0.988177 +vn 0.128984 0.555716 -0.821305 +vn 0.193763 -0.527010 0.827476 +vn 0.225330 0.612970 -0.757294 +vn 0.294824 0.822545 -0.486311 +vn 0.358426 0.081333 -0.930008 +vn -0.697059 -0.699793 -0.156203 +vn 0.223753 0.224696 -0.948392 +vn 0.103858 0.620773 -0.777081 +vn -0.044177 0.485341 -0.873208 +vn 0.510007 0.095510 -0.854851 +vn -0.524270 -0.163066 -0.835794 +vn -0.559840 -0.096988 -0.822905 +vn -0.462314 0.354842 -0.812621 +vn -0.264870 -0.105889 -0.958453 +vn -0.397077 -0.281974 -0.873396 +vn -0.308369 0.004398 -0.951257 +vn -0.410227 0.143274 -0.900659 +vn 0.431030 -0.203512 -0.879088 +vn -0.151896 0.303084 -0.940780 +vn -0.219170 0.396253 -0.891599 +vn 0.182485 -0.022953 -0.982941 +vn 0.025618 0.299673 -0.953698 +vn 0.258116 -0.331960 -0.907292 +vn -0.188004 -0.417582 -0.888977 +vn 0.508903 -0.011502 -0.860747 +vn -0.404714 -0.239605 -0.882494 +vn -0.436742 -0.201800 -0.876660 +vn -0.346368 0.164454 -0.923571 +vn -0.473973 -0.669549 -0.571887 +vn -0.310900 -0.606402 -0.731859 +vn -0.347044 -0.712355 -0.610009 +vn -0.515776 -0.073698 -0.853548 +vn -0.521421 -0.482989 -0.703450 +vn 0.132995 -0.337595 -0.931849 +vn -0.239992 0.225727 -0.944167 +vn -0.251060 0.186204 -0.949893 +vn -0.412767 0.137426 -0.900410 +vn 0.067591 -0.027252 -0.997341 +vn -0.091883 -0.489098 -0.867376 +vn -0.011877 -0.999180 -0.038714 +vn -0.240156 0.142338 -0.960242 +vn -0.305480 0.007598 -0.952168 +vn -0.287375 0.290577 -0.912678 +vn -0.126195 0.020263 -0.991798 +vn -0.442562 0.005225 -0.896723 +vn -0.040104 -0.350490 -0.935707 +vn -0.424871 -0.494301 -0.758387 +vn 0.106210 -0.202157 -0.973577 +vn -0.263050 -0.093345 -0.960256 +vn 0.058192 -0.432120 -0.899937 +vn -0.064515 0.363504 -0.929356 +vn 0.075768 -0.306164 -0.948959 +vn -0.317187 -0.393375 -0.862930 +vn 0.028412 -0.292828 -0.955743 +vn -0.341707 -0.725805 -0.597029 +vn -0.416830 -0.257111 -0.871864 +vn -0.250500 -0.301135 -0.920091 +vn -0.420387 -0.305943 -0.854210 +vn -0.085641 -0.320018 -0.943533 +vn 0.008282 -0.997970 0.063151 +vn -0.241278 -0.263135 -0.934101 +vn -0.006663 -0.145025 -0.989406 +vn -0.199764 -0.285872 -0.937215 +vn 0.299911 -0.361520 -0.882812 +vn 0.249806 0.253695 -0.934471 +vn -0.320406 -0.385916 -0.865106 +vn 0.593526 -0.120753 -0.795705 +vn 0.469595 0.041255 -0.881918 +vn -0.092921 0.244676 -0.965142 +vn 0.432283 -0.499873 -0.750505 +vn -0.240867 -0.375974 -0.894778 +vn 0.436210 0.053252 -0.898268 +vn 0.435259 -0.300610 -0.848636 +vn 0.410825 -0.122823 -0.903403 +vn 0.446581 -0.117010 -0.887060 +vn 0.404136 0.008339 -0.914661 +vn 0.396395 0.092518 -0.913407 +vn 0.346633 -0.427789 -0.834771 +vn 0.302990 -0.083400 -0.949337 +vn 0.298601 -0.164924 -0.940020 +vn -0.224733 0.281067 -0.933004 +vn 0.311902 -0.169119 -0.934942 +vn 0.424039 0.016432 -0.905495 +vn -0.637184 -0.748329 0.184392 +vn 0.325061 -0.376690 -0.867433 +vn 0.419742 0.067761 -0.905111 +vn -0.555470 -0.830961 0.030927 +vn -0.149848 -0.988646 -0.011165 +vn 0.278601 -0.421440 -0.863001 +vn 0.249152 -0.257697 -0.933550 +vn 0.437091 0.014138 -0.899306 +vn 0.232128 -0.183026 -0.955311 +vn 0.327864 -0.064315 -0.942533 +vn 0.457609 0.076681 -0.885841 +vn 0.099616 -0.344130 -0.933623 +vn 0.112754 -0.459377 -0.881056 +vn 0.190554 -0.452299 -0.871272 +vn 0.252138 -0.065025 -0.965504 +vn 0.273516 -0.205392 -0.939682 +vn 0.312627 -0.223542 -0.923197 +vn 0.114256 -0.184882 -0.976096 +vn 0.292199 -0.095679 -0.951559 +vn 0.161057 -0.067692 -0.984621 +vn 0.242791 -0.151577 -0.958163 +vn 0.266700 -0.229505 -0.936055 +vn 0.463848 -0.112297 -0.878768 +vn 0.356535 0.119921 -0.926554 +vn 0.296156 0.149024 -0.943442 +vn 0.194430 -0.362458 -0.911494 +vn 0.262632 -0.201726 -0.943574 +vn 0.358416 0.087538 -0.929449 +vn 0.014626 -0.217647 -0.975918 +vn 0.223818 -0.103022 -0.969171 +vn 0.256011 0.034210 -0.966069 +vn 0.204511 -0.623792 -0.754360 +vn 0.297237 -0.507894 -0.808514 +vn 0.283821 -0.223891 -0.932373 +vn 0.339125 0.145326 -0.929448 +vn 0.215881 -0.230837 -0.948741 +vn 0.204265 -0.192974 -0.959707 +vn 0.215971 -0.250462 -0.943730 +vn 0.223881 -0.289075 -0.930759 +vn 0.122917 -0.421142 -0.898627 +vn 0.274855 -0.034437 -0.960869 +vn 0.120435 -0.714349 -0.689349 +vn 0.230065 -0.263513 -0.936820 +vn 0.229467 -0.077359 -0.970237 +vn 0.125982 -0.108266 -0.986107 +vn 0.107160 -0.515075 -0.850420 +vn 0.225567 -0.147142 -0.963052 +vn 0.393381 0.047249 -0.918161 +vn 0.233430 -0.066431 -0.970102 +vn 0.141771 -0.064396 -0.987803 +vn 0.151442 -0.322633 -0.934331 +vn 0.229939 0.043418 -0.972236 +vn 0.166799 -0.283660 -0.944307 +vn 0.229847 -0.102432 -0.967821 +vn 0.218902 -0.176610 -0.959631 +vn 0.105465 -0.508795 -0.854403 +vn -0.009027 -0.503969 -0.863675 +vn 0.139590 -0.269541 -0.952818 +vn 0.184144 -0.139688 -0.972923 +vn -0.074035 -0.800835 0.594291 +vn 0.033511 -0.720100 -0.693060 +vn 0.084866 -0.440769 -0.893600 +vn 0.183313 -0.157536 -0.970350 +vn 0.201831 -0.232837 -0.951342 +vn 0.008823 -0.393211 -0.919406 +vn 0.160062 -0.282311 -0.945876 +vn 0.126188 -0.083422 -0.988492 +vn 0.239654 -0.159005 -0.957749 +vn 0.237501 -0.106413 -0.965541 +vn 0.133300 -0.034595 -0.990472 +vn 0.122278 0.010384 -0.992442 +vn -0.129408 -0.440615 -0.888320 +vn 0.069523 -0.335315 -0.939537 +vn 0.177157 -0.176082 -0.968303 +vn 0.691725 -0.705744 0.153105 +vn -0.117162 -0.601305 0.790383 +vn -0.579433 -0.110707 -0.807466 +vn 0.138787 -0.017221 -0.990173 +vn -0.014176 -0.445225 -0.895307 +vn 0.097581 -0.258684 -0.961021 +vn 0.369317 -0.919269 0.136194 +vn 0.098360 -0.042136 -0.994259 +vn 0.043665 -0.029823 -0.998601 +vn -0.347591 -0.831007 -0.434291 +vn -0.200134 -0.455333 -0.867536 +vn -0.184386 -0.374411 -0.908745 +vn 0.360059 -0.835569 0.414949 +vn -0.072173 -0.184990 -0.980087 +vn 0.201294 -0.842012 0.500497 +vn -0.158998 -0.985527 -0.058787 +vn 0.022746 -0.994710 0.100178 +vn -0.353561 -0.393684 -0.848532 +vn -0.178745 -0.267419 -0.946857 +vn -0.063828 0.118824 -0.990862 +vn -0.472037 -0.176369 -0.863756 +vn -0.597808 -0.796515 -0.090500 +vn -0.815293 -0.203707 -0.542034 +vn -0.066376 -0.039718 -0.997004 +vn -0.204319 -0.158291 -0.966022 +vn -0.447791 -0.338920 -0.827415 +vn -0.353376 -0.907718 0.226218 +vn -0.339111 -0.212842 -0.916353 +vn -0.307886 -0.065919 -0.949137 +vn -0.283958 0.103024 -0.953286 +vn -0.254195 -0.561376 0.787555 +vn -0.244191 -0.858251 0.451415 +vn 0.076323 -0.996592 0.031285 +vn 0.085131 -0.994875 0.054561 +vn -0.181514 -0.983286 0.014178 +vn -0.016952 -0.999724 0.016248 +vn 0.044173 -0.992824 0.111130 +vn 0.014393 -0.999693 0.020163 +vn 0.179197 -0.567579 0.803581 +vn 0.008806 -0.999945 0.005677 +vn -0.231132 -0.972854 0.011556 +vn 0.020392 -0.995252 0.095175 +vn -0.072573 -0.986856 0.144391 +vn -0.498582 -0.866812 -0.007245 +vn -0.157737 -0.923933 -0.348522 +vn 0.056914 -0.997597 0.039524 +vn 0.456375 -0.882915 0.110377 +vn -0.654437 -0.713592 0.249997 +vn -0.516951 -0.741110 0.428390 +vn -0.279347 -0.944001 0.175580 +vn -0.146015 -0.981353 0.125005 +vn -0.428742 -0.897190 0.105975 +vn 0.403599 -0.876190 0.263436 +vn -0.020834 -0.998140 0.057294 +vn 0.010438 -0.999917 0.007566 +vn -0.122181 -0.627477 0.768990 +vn -0.021080 -0.999133 0.035889 +vn -0.612489 -0.788397 0.057343 +vn 0.044815 -0.984075 0.172012 +vn 0.032006 -0.986176 0.162579 +vn 0.175057 -0.982253 0.067332 +vn -0.047678 -0.998509 0.026591 +vn -0.286875 -0.947738 0.139623 +vn -0.473144 -0.875885 0.094663 +vn 0.183689 -0.982933 -0.010056 +vn 0.007860 -0.999328 -0.035792 +vn 0.030148 -0.999260 -0.023888 +vn -0.772151 -0.605732 -0.192018 +vn -0.106263 -0.989083 0.102092 +vn -0.464317 -0.880017 0.099903 +vn -0.468600 -0.876981 -0.106388 +vn -0.472172 -0.878228 0.075957 +vn 0.290281 -0.908732 0.299904 +vn 0.055603 -0.998280 0.018581 +vn 0.385758 -0.922589 -0.004438 +vn -0.617320 -0.786593 0.013669 +vn 0.276060 -0.942800 -0.186864 +vn 0.175232 -0.978241 0.111074 +vn -0.556917 -0.700051 0.446959 +vn 0.328024 -0.914251 0.237793 +vn -0.634412 -0.750541 -0.184959 +vn -0.884362 -0.466381 0.019804 +vn -0.685871 -0.726357 0.044572 +vn -0.677803 -0.688604 -0.257698 +vn -0.381572 -0.913644 -0.140203 +vn 0.077143 -0.996892 -0.015999 +vn 0.119110 -0.991924 -0.043589 +vn -0.474775 -0.880040 -0.010872 +vn -0.032406 -0.997461 0.063416 +vn -0.473356 -0.801897 0.364547 +vn -0.116237 -0.847745 0.517511 +vn -0.376641 -0.854229 0.358378 +vn -0.693210 -0.546276 0.470151 +vn -0.304538 -0.943273 0.132262 +vn 0.018892 -0.996121 0.085939 +vn 0.299735 -0.938328 0.172337 +vn 0.004160 -0.994267 0.106849 +vn -0.287846 -0.952989 0.094641 +vn -0.259007 -0.858583 0.442437 +vn -0.340339 -0.661739 0.668035 +vn -0.320917 -0.922295 0.215371 +vn -0.487833 -0.702845 0.517713 +vn -0.124941 -0.933780 0.335328 +vn 0.265497 -0.926586 0.266362 +vn 0.042688 -0.996785 0.067810 +vn -0.669445 -0.719133 0.186257 +vn -0.521630 -0.814319 -0.254533 +vn -0.720043 -0.613368 0.324527 +vn -0.590827 -0.799973 -0.104720 +vn -0.687833 -0.725839 0.006670 +vn -0.669966 -0.738672 0.074220 +vn -0.076072 -0.872247 0.483113 +vn -0.362690 -0.823152 0.436894 +vn -0.667719 -0.700197 0.252736 +vn -0.569886 -0.751060 0.333374 +vn -0.579558 -0.739976 0.341392 +vn 0.160193 -0.927001 0.339126 +vn -0.343247 -0.920071 -0.188816 +vn -0.435575 -0.897125 -0.073759 +vn -0.573052 -0.765229 0.293319 +vn -0.621018 -0.604176 0.499307 +vn -0.423338 -0.876449 -0.229394 +vn -0.136582 -0.990560 -0.011713 +vn -0.495030 -0.863109 0.099941 +vn -0.325832 -0.939023 -0.109865 +vn -0.313492 -0.949589 -0.001963 +vn -0.353931 -0.908404 0.222565 +vn -0.455556 -0.752693 0.475313 +vn -0.026619 -0.999534 0.014907 +vn -0.380704 -0.851247 0.361169 +vn -0.468848 -0.675750 0.568809 +vn -0.494138 -0.522223 0.695061 +vn -0.095281 -0.993207 0.066791 +vn -0.429395 -0.800428 0.418251 +vn 0.186803 -0.982094 -0.024419 +vn -0.017301 -0.999155 -0.037285 +vn -0.002069 -0.999997 -0.001313 +vn -0.272434 -0.940841 0.201491 +vn -0.337985 -0.670236 0.660719 +vn -0.113693 -0.991955 0.055669 +vn -0.227423 -0.973745 0.009978 +vn -0.263429 -0.910652 0.318306 +vn -0.294445 -0.865223 0.405822 +vn -0.314652 -0.787732 0.529597 +vn 0.011042 -0.999938 -0.001578 +vn -0.036873 -0.998658 0.036378 +vn -0.237855 -0.749838 0.617388 +vn -0.246127 -0.636001 0.731385 +vn -0.025364 -0.999118 -0.033464 +vn -0.176889 -0.980383 -0.086940 +vn -0.004566 -0.999987 -0.002085 +vn 0.052269 -0.998539 0.013739 +vn 0.041959 -0.999066 0.010348 +vn -0.055157 -0.998292 0.019239 +vn 0.027925 -0.999500 -0.014860 +vn -0.008198 -0.999755 0.020582 +vn -0.174236 -0.967056 0.185591 +vn -0.022743 -0.998910 0.040773 +vn -0.118034 -0.659284 0.742572 +vn 0.238033 -0.967414 0.086321 +vn 0.132720 -0.989202 0.062165 +vn -0.019817 -0.966772 0.254871 +vn 0.129533 -0.784293 0.606717 +vn -0.004390 -0.999551 0.029646 +vn -0.129907 -0.980695 0.146158 +vn 0.078827 -0.987135 0.139104 +vn 0.100862 -0.994414 -0.031118 +vn 0.539100 -0.748202 0.386736 +vn 0.775836 -0.615242 0.139844 +vn -0.234267 -0.572166 0.785967 +vn 0.192849 -0.746392 0.636952 +vn 0.360200 -0.832114 0.421715 +vn 0.175949 -0.982052 0.067936 +vn -0.003733 -0.859547 0.511042 +vn -0.377401 -0.714624 0.588966 +vn -0.015857 -0.995951 0.088485 +vn 0.016156 -0.999573 0.024363 +vn -0.045913 -0.659171 0.750590 +vn 0.047019 -0.997792 0.046901 +vn 0.017549 -0.999404 -0.029712 +vn 0.041531 -0.920703 0.388048 +vn -0.154541 -0.935504 0.317724 +vn -0.337041 -0.921248 0.194179 +f 1069//1 1647//2 1578//3 +f 1058//4 909//5 939//6 +f 421//7 1176//8 238//9 +f 1055//10 1101//11 1042//12 +f 238//9 1059//13 1126//14 +f 1254//15 30//16 1261//17 +f 1065//18 1071//19 1//20 +f 1037//21 1130//22 1120//23 +f 1570//24 2381//25 1585//26 +f 2434//27 2502//28 2473//29 +f 1632//30 1654//31 1646//32 +f 1144//33 1166//34 669//35 +f 1202//36 1440//37 305//38 +f 1071//19 1090//39 1//20 +f 1555//40 1570//24 1584//41 +f 1184//42 1174//43 404//44 +f 65//45 432//46 12//47 +f 1032//48 1085//49 574//50 +f 1789//51 2207//52 2223//53 +f 1154//54 1118//55 1184//42 +f 1141//56 1086//57 1154//54 +f 99//58 1117//59 342//60 +f 404//44 1174//43 419//61 +f 489//62 2000//63 1998//64 +f 1118//55 1174//43 1184//42 +f 1196//65 403//66 136//67 +f 1495//68 717//69 1490//70 +f 1804//71 402//72 1207//73 +f 2272//74 1398//75 891//76 +f 1100//77 1002//78 804//79 +f 1596//80 1595//81 2381//25 +f 208//82 420//83 1207//73 +f 402//72 208//82 1207//73 +f 1455//84 1935//85 1925//86 +f 1176//8 1059//13 238//9 +f 1150//87 1040//88 348//89 +f 1957//90 1537//91 2051//92 +f 1124//93 1189//94 939//6 +f 1804//71 1207//73 1823//95 +f 1381//96 1300//97 1109//98 +f 383//99 384//100 1182//101 +f 1085//49 1086//57 1141//56 +f 1040//88 1046//102 132//103 +f 220//104 1495//68 1188//105 +f 420//83 261//106 1207//73 +f 261//106 420//83 1065//18 +f 1055//10 1133//107 1101//11 +f 1054//108 421//7 403//66 +f 182//109 1109//98 2//110 +f 1181//111 1207//73 320//112 +f 545//113 1570//24 1561//114 +f 35//115 342//60 432//46 +f 1024//116 574//50 1141//56 +f 432//46 342//60 12//47 +f 1489//117 1081//118 1547//119 +f 1181//111 320//112 1805//120 +f 1516//121 1683//122 1507//123 +f 357//124 1117//59 1047//125 +f 1561//114 1570//24 1555//40 +f 1090//39 1196//65 1206//126 +f 1047//125 1203//127 1051//128 +f 1165//129 202//130 1121//131 +f 1099//132 341//133 301//134 +f 1174//43 240//135 419//61 +f 922//136 921//137 833//138 +f 1121//131 1080//139 385//140 +f 815//141 21//142 1183//143 +f 35//115 99//58 342//60 +f 1083//144 398//145 262//146 +f 106//147 94//148 1317//149 +f 94//148 292//150 1317//149 +f 292//150 95//151 1317//149 +f 940//152 1039//153 1033//154 +f 1300//97 1306//155 433//156 +f 21//142 212//157 471//158 +f 1120//23 1131//159 1037//21 +f 833//138 921//137 688//160 +f 1117//59 357//124 342//60 +f 106//147 271//161 94//148 +f 386//162 227//163 1375//164 +f 1130//22 1044//165 1053//166 +f 419//61 240//135 219//167 +f 1255//168 1244//169 32//170 +f 1557//171 1081//118 1489//117 +f 2062//172 2120//173 2109//174 +f 2034//175 2110//176 430//177 +f 23//178 315//179 1111//180 +f 291//181 94//148 271//161 +f 291//181 292//150 94//148 +f 50//182 386//162 95//151 +f 964//183 734//184 665//185 +f 1616//186 1585//26 1611//187 +f 445//188 1084//189 402//72 +f 574//50 1085//49 1141//56 +f 1654//31 341//133 1653//190 +f 220//104 1188//105 1640//191 +f 342//60 69//192 12//47 +f 417//193 261//106 328//194 +f 292//150 50//182 95//151 +f 204//195 227//163 386//162 +f 50//182 204//195 386//162 +f 1276//196 1471//197 1311//198 +f 1206//126 1196//65 136//67 +f 1033//154 1055//10 1042//12 +f 1037//21 1044//165 1130//22 +f 1180//199 320//112 417//193 +f 1121//131 202//130 1080//139 +f 325//200 203//201 271//161 +f 291//181 76//202 292//150 +f 292//150 237//203 50//182 +f 2159//204 1696//205 1767//206 +f 583//207 929//208 850//209 +f 1584//41 1585//26 1616//186 +f 1495//68 1490//70 1188//105 +f 1557//171 1489//117 1660//210 +f 1078//211 1069//1 1494//212 +f 1972//213 1992//214 1971//215 +f 183//216 1226//217 2000//63 +f 325//200 429//218 203//201 +f 292//150 76//202 237//203 +f 1152//219 227//163 1143//220 +f 1488//221 1412//222 1489//117 +f 1638//223 1646//32 1653//190 +f 1947//224 1869//225 2468//226 +f 203//201 306//227 291//181 +f 306//227 76//202 291//181 +f 237//203 248//228 50//182 +f 204//195 1143//220 227//163 +f 2395//229 14//230 429//218 +f 1502//231 881//232 2500//233 +f 1//20 1090//39 202//130 +f 1652//234 1653//190 1099//132 +f 2117//235 1863//236 2496//237 +f 50//182 248//228 204//195 +f 160//238 792//239 994//240 +f 884//241 888//242 857//243 +f 544//244 2117//235 2496//237 +f 1090//39 1206//126 202//130 +f 2463//245 879//246 2492//247 +f 429//218 306//227 203//201 +f 498//248 188//249 418//250 +f 865//251 884//241 857//243 +f 994//240 998//252 1014//253 +f 884//241 897//254 888//242 +f 1795//255 948//256 1802//257 +f 208//82 1035//258 1071//19 +f 1065//18 1//20 1066//259 +f 377//260 435//261 1377//262 +f 304//263 429//218 14//230 +f 304//263 306//227 429//218 +f 73//264 60//265 74//266 +f 248//228 592//267 204//195 +f 846//268 2264//269 829//270 +f 897//254 912//271 906//272 +f 1004//273 991//274 992//275 +f 1422//276 1421//277 1233//278 +f 980//279 10//280 303//281 +f 1058//4 922//136 909//5 +f 2436//282 2449//283 2418//284 +f 394//285 435//261 377//260 +f 435//261 475//286 446//287 +f 475//286 474//288 446//287 +f 336//289 337//290 361//291 +f 338//292 235//293 372//294 +f 624//295 148//296 129//297 +f 812//298 306//227 596//299 +f 1726//300 992//275 1019//301 +f 945//302 1514//303 1511//304 +f 1069//1 1627//305 1628//306 +f 1812//307 1823//95 1181//111 +f 1165//129 1121//131 169//308 +f 447//309 475//286 435//261 +f 2487//310 2458//311 901//312 +f 42//313 59//314 46//315 +f 401//316 7//317 187//318 +f 1010//319 970//320 797//321 +f 1513//322 220//104 1640//191 +f 2474//323 2491//324 2462//325 +f 594//326 307//327 1014//253 +f 398//145 1513//322 1640//191 +f 307//327 594//326 1026//328 +f 545//113 2381//25 1570//24 +f 403//66 421//7 238//9 +f 445//188 402//72 127//329 +f 1611//187 1631//330 1616//186 +f 1805//120 1180//199 1148//331 +f 394//285 447//309 435//261 +f 2341//332 2413//333 2376//334 +f 75//335 74//266 60//265 +f 541//336 47//337 42//313 +f 47//337 59//314 42//313 +f 541//336 42//313 28//338 +f 917//339 931//340 1103//341 +f 897//254 906//272 883//342 +f 2484//343 2068//344 779//345 +f 888//242 883//342 857//243 +f 261//106 1065//18 328//194 +f 363//346 1307//347 349//348 +f 377//260 363//346 394//285 +f 444//349 747//350 464//351 +f 323//352 338//292 362//353 +f 92//354 116//355 74//266 +f 592//267 634//356 97//357 +f 982//358 1027//359 1004//273 +f 1020//360 982//358 1004//273 +f 1084//189 1054//108 1035//258 +f 208//82 402//72 1084//189 +f 421//7 1119//361 1176//8 +f 1207//73 1181//111 1823//95 +f 1179//362 1187//363 1160//364 +f 263//365 296//366 1343//367 +f 1298//368 296//366 1307//347 +f 1307//347 296//366 349//348 +f 405//369 363//346 349//348 +f 405//369 394//285 363//346 +f 405//369 447//309 394//285 +f 362//353 372//294 384//100 +f 338//292 372//294 362//353 +f 983//370 1004//273 987//371 +f 122//372 134//373 139//374 +f 415//375 440//376 414//377 +f 75//335 92//354 74//266 +f 226//378 186//379 246//380 +f 796//381 787//382 700//383 +f 1119//361 1059//13 1176//8 +f 122//372 114//384 91//385 +f 624//295 129//297 116//355 +f 641//386 558//387 631//388 +f 1311//198 1318//389 1487//390 +f 100//391 1162//392 1170//393 +f 1653//190 341//133 1099//132 +f 1316//394 1983//395 273//396 +f 263//365 277//397 296//366 +f 296//366 358//398 349//348 +f 436//399 447//309 405//369 +f 109//400 554//401 570//402 +f 504//403 1385//404 2501//405 +f 115//406 122//372 91//385 +f 2068//344 2460//407 779//345 +f 43//408 777//409 163//410 +f 378//411 405//369 349//348 +f 358//398 378//411 349//348 +f 448//412 447//309 436//399 +f 448//412 476//413 447//309 +f 78//414 77//415 108//416 +f 75//335 60//265 47//337 +f 1764//417 2481//418 1795//255 +f 717//69 714//419 1512//420 +f 1490//70 717//69 1501//421 +f 238//9 1126//14 168//422 +f 1878//423 1866//424 826//425 +f 2025//426 2360//427 2367//428 +f 251//429 278//430 263//365 +f 278//430 277//397 263//365 +f 277//397 318//431 296//366 +f 296//366 318//431 358//398 +f 318//431 350//432 358//398 +f 378//411 436//399 405//369 +f 384//100 372//294 1182//101 +f 454//433 440//376 415//375 +f 987//371 1004//273 992//275 +f 493//434 476//413 448//412 +f 323//352 788//435 338//292 +f 403//66 238//9 136//67 +f 1565//436 1503//437 1474//438 +f 297//439 277//397 278//430 +f 297//439 318//431 277//397 +f 358//398 350//432 378//411 +f 378//411 388//440 436//399 +f 476//413 493//434 500//441 +f 73//264 105//442 60//265 +f 323//352 337//290 312//443 +f 953//444 1573//445 2358//446 +f 142//447 161//448 119//449 +f 454//433 443//450 440//376 +f 1862//451 1871//452 1405//453 +f 297//439 319//454 318//431 +f 560//455 47//337 541//336 +f 170//456 1323//457 111//458 +f 357//124 1047//125 1050//459 +f 1119//361 98//460 1059//13 +f 1838//461 1877//462 1900//463 +f 2359//464 230//465 251//429 +f 350//432 364//466 378//411 +f 449//467 448//412 436//399 +f 449//467 493//434 448//412 +f 185//468 186//379 226//378 +f 443//450 469//469 479//470 +f 874//471 165//472 2480//473 +f 463//474 444//349 464//351 +f 64//475 105//442 91//385 +f 1182//101 440//376 1129//476 +f 1958//477 1651//478 2502//28 +f 1238//479 2034//175 191//480 +f 251//429 279//481 278//430 +f 278//430 279//481 297//439 +f 364//466 388//440 378//411 +f 483//482 493//434 449//467 +f 134//373 148//296 139//374 +f 244//483 268//484 259//485 +f 910//486 942//487 930//488 +f 105//442 115//406 91//385 +f 24//489 30//16 18//490 +f 1132//491 487//492 1059//13 +f 1869//225 1947//224 2021//493 +f 2497//494 2494//495 2463//245 +f 2359//464 2385//496 230//465 +f 230//465 280//497 251//429 +f 251//429 280//497 279//481 +f 279//481 308//498 297//439 +f 297//439 308//498 319//454 +f 319//454 364//466 318//431 +f 364//466 350//432 318//431 +f 388//440 395//499 436//399 +f 436//399 395//499 449//467 +f 493//434 472//500 500//441 +f 122//372 129//297 134//373 +f 125//501 142//447 124//502 +f 373//503 400//504 393//505 +f 24//489 557//506 30//16 +f 2264//269 2278//507 2251//508 +f 1261//17 30//16 1269//509 +f 1730//510 1862//451 1877//462 +f 252//511 280//497 230//465 +f 343//512 364//466 319//454 +f 364//466 343//512 388//440 +f 63//513 64//475 91//385 +f 399//514 393//505 416//515 +f 416//515 444//349 463//474 +f 162//516 189//517 142//447 +f 768//518 373//503 326//519 +f 189//517 661//520 177//521 +f 189//517 199//522 661//520 +f 847//523 887//524 864//525 +f 533//526 747//350 444//349 +f 1744//527 1022//528 1418//529 +f 1170//393 524//530 729//531 +f 121//532 1342//533 128//534 +f 1236//535 1244//169 26//536 +f 280//497 281//537 279//481 +f 281//537 308//498 279//481 +f 343//512 319//454 308//498 +f 343//512 365//538 388//440 +f 388//440 365//538 395//499 +f 365//538 406//539 395//499 +f 406//539 449//467 395//499 +f 483//482 477//540 493//434 +f 477//540 491//541 472//500 +f 493//434 477//540 472//500 +f 78//414 109//400 77//415 +f 166//542 174//543 196//544 +f 481//545 150//546 814//547 +f 63//513 59//314 64//475 +f 326//519 373//503 393//505 +f 643//548 260//549 43//408 +f 230//465 253//550 252//511 +f 449//467 441//551 483//482 +f 441//551 477//540 483//482 +f 415//375 416//515 463//474 +f 226//378 246//380 245//552 +f 464//351 470//553 454//433 +f 323//352 362//353 337//290 +f 52//554 37//555 1283//556 +f 253//550 281//537 252//511 +f 281//537 280//497 252//511 +f 309//557 308//498 281//537 +f 330//558 343//512 308//498 +f 366//559 365//538 343//512 +f 441//551 449//467 406//539 +f 464//351 814//547 15//560 +f 883//342 906//272 887//524 +f 337//290 362//353 371//561 +f 479//470 498//248 290//562 +f 247//563 746//564 1003//565 +f 25//566 37//555 557//506 +f 640//567 930//488 669//35 +f 2486//568 2499//569 2459//570 +f 309//557 330//558 308//498 +f 343//512 330//558 366//559 +f 441//551 437//571 477//540 +f 290//562 498//248 418//250 +f 124//502 119//449 108//416 +f 77//415 124//502 108//416 +f 589//572 125//501 109//400 +f 570//402 589//572 109//400 +f 125//501 162//516 142//447 +f 1045//573 433//156 1034//574 +f 1207//73 261//106 320//112 +f 2004//575 2474//323 2495//576 +f 1215//577 1228//578 2285//579 +f 365//538 396//580 406//539 +f 396//580 422//581 406//539 +f 422//581 437//571 441//551 +f 406//539 422//581 441//551 +f 59//314 47//337 60//265 +f 51//582 78//414 66//583 +f 361//291 371//561 383//99 +f 196//544 215//584 214//585 +f 463//474 454//433 415//375 +f 27//586 41//587 535//588 +f 53//589 1283//556 37//555 +f 84//590 1299//591 1283//556 +f 1805//120 320//112 1180//199 +f 254//592 253//550 222//593 +f 254//592 281//537 253//550 +f 309//557 366//559 330//558 +f 396//580 365//538 366//559 +f 456//594 477//540 437//571 +f 484//595 491//541 477//540 +f 2480//473 2485//596 2493//597 +f 418//250 188//249 187//318 +f 53//589 85//598 1283//556 +f 85//598 84//590 1283//556 +f 420//83 1071//19 1065//18 +f 264//599 281//537 254//592 +f 298//600 309//557 281//537 +f 368//601 366//559 367//602 +f 368//601 396//580 366//559 +f 1639//603 1564//604 1139//605 +f 560//455 48//606 47//337 +f 82//607 471//158 212//157 +f 25//566 38//608 37//555 +f 202//130 1206//126 1080//139 +f 264//599 298//600 281//537 +f 298//600 331//609 309//557 +f 309//557 331//609 366//559 +f 331//609 367//602 366//559 +f 396//580 368//601 422//581 +f 422//581 456//594 437//571 +f 491//541 1192//610 313//611 +f 1699//612 2064//613 1710//614 +f 462//615 443//450 479//470 +f 371//561 362//353 384//100 +f 2502//28 2476//616 2464//617 +f 371//561 384//100 383//99 +f 21//142 732//618 212//157 +f 1571//619 1629//620 1627//305 +f 38//608 39//621 53//589 +f 37//555 38//608 53//589 +f 39//621 85//598 53//589 +f 1173//622 1184//42 404//44 +f 1006//623 2142//624 1674//625 +f 201//626 255//627 254//592 +f 255//627 264//599 254//592 +f 368//601 407//628 422//581 +f 450//629 456//594 422//581 +f 450//629 484//595 456//594 +f 456//594 484//595 477//540 +f 314//630 1192//610 491//541 +f 2027//631 2501//405 2489//632 +f 2475//633 2471//634 2488//635 +f 551//636 492//637 732//618 +f 464//351 481//545 814//547 +f 1081//118 1494//212 1547//119 +f 201//626 231//638 255//627 +f 407//628 450//629 422//581 +f 484//595 494//639 491//541 +f 494//639 327//640 491//541 +f 327//640 314//630 491//541 +f 876//641 797//321 995//642 +f 847//523 856//643 829//270 +f 125//501 143//644 162//516 +f 134//373 129//297 148//296 +f 1564//604 1571//619 1627//305 +f 417//193 320//112 261//106 +f 328//194 1065//18 1066//259 +f 170//456 156//645 201//626 +f 156//645 231//638 201//626 +f 231//638 282//646 255//627 +f 282//646 264//599 255//627 +f 450//629 485//647 484//595 +f 484//595 485//647 494//639 +f 2463//245 2486//568 2479//648 +f 159//649 185//468 167//650 +f 492//637 68//651 212//157 +f 732//618 492//637 212//157 +f 68//651 82//607 212//157 +f 1311//198 1471//197 1296//652 +f 101//653 156//645 111//458 +f 332//654 264//599 282//646 +f 332//654 298//600 264//599 +f 332//654 331//609 298//600 +f 331//609 332//654 367//602 +f 407//628 423//655 450//629 +f 450//629 423//655 485//647 +f 804//79 1002//78 1443//656 +f 2484//343 779//345 946//657 +f 689//658 443//450 462//615 +f 440//376 689//658 1129//476 +f 166//542 167//650 174//543 +f 38//608 31//659 39//621 +f 112//660 145//661 101//653 +f 101//653 145//661 156//645 +f 156//645 256//662 231//638 +f 332//654 423//655 368//601 +f 367//602 332//654 368//601 +f 368//601 423//655 407//628 +f 946//657 779//345 920//663 +f 1432//664 1261//17 1449//665 +f 461//666 478//667 453//668 +f 464//351 15//560 470//553 +f 31//659 54//669 39//621 +f 39//621 54//669 85//598 +f 86//670 101//653 85//598 +f 145//661 210//671 156//645 +f 282//646 283//672 332//654 +f 283//672 369//673 332//654 +f 369//673 423//655 332//654 +f 423//655 408//674 485//647 +f 854//675 876//641 965//676 +f 78//414 108//416 66//583 +f 440//376 443//450 689//658 +f 374//677 2465//678 961//679 +f 929//208 519//680 979//681 +f 54//669 86//670 85//598 +f 156//645 241//682 256//662 +f 256//662 282//646 231//638 +f 256//662 283//672 282//646 +f 389//683 423//655 369//673 +f 389//683 408//674 423//655 +f 408//674 457//684 485//647 +f 457//684 49//685 485//647 +f 485//647 49//685 494//639 +f 494//639 135//686 327//640 +f 175//687 83//688 314//630 +f 1167//689 1140//690 1483//691 +f 196//544 174//543 215//584 +f 697//692 16//693 68//651 +f 1038//694 82//607 16//693 +f 140//695 117//696 141//697 +f 1654//31 1653//190 1646//32 +f 1234//698 54//669 31//659 +f 86//670 112//660 101//653 +f 210//671 241//682 156//645 +f 923//699 917//339 911//700 +f 697//692 34//701 16//693 +f 145//661 193//702 210//671 +f 256//662 265//703 283//672 +f 265//703 310//704 283//672 +f 283//672 310//704 369//673 +f 310//704 344//705 369//673 +f 344//705 370//706 369//673 +f 370//706 389//683 369//673 +f 409//707 408//674 389//683 +f 409//707 466//708 408//674 +f 466//708 457//684 408//674 +f 466//708 49//685 457//684 +f 49//685 135//686 494//639 +f 174//543 225//709 215//584 +f 1014//253 766//710 602//711 +f 826//425 2220//712 2215//713 +f 1078//211 1494//212 1081//118 +f 1273//714 70//715 86//670 +f 120//716 112//660 86//670 +f 146//717 145//661 112//660 +f 146//717 193//702 145//661 +f 265//703 256//662 241//682 +f 223//718 265//703 241//682 +f 486//719 49//685 466//708 +f 175//687 327//640 135//686 +f 105//442 122//372 115//406 +f 480//720 15//560 681//721 +f 225//709 234//722 215//584 +f 731//723 34//701 697//692 +f 86//670 54//669 1273//714 +f 70//715 120//716 86//670 +f 193//702 241//682 210//671 +f 299//724 310//704 265//703 +f 310//704 333//725 344//705 +f 344//705 351//726 370//706 +f 424//727 466//708 409//707 +f 135//686 49//685 175//687 +f 214//585 215//584 234//722 +f 48//606 75//335 47//337 +f 34//701 9//728 1038//694 +f 16//693 34//701 1038//694 +f 203//201 291//181 271//161 +f 9//728 558//387 754//729 +f 1195//730 397//731 1120//23 +f 120//716 146//717 112//660 +f 146//717 194//732 193//702 +f 266//733 265//703 223//718 +f 266//733 299//724 265//703 +f 299//724 333//725 310//704 +f 333//725 351//726 344//705 +f 382//734 383//99 392//735 +f 399//514 416//515 415//375 +f 266//733 333//725 299//724 +f 351//726 352//736 370//706 +f 424//727 486//719 466//708 +f 487//492 175//687 49//685 +f 7//317 117//696 187//318 +f 1182//101 414//377 440//376 +f 41//587 42//313 46//315 +f 290//562 289//737 497//738 +f 2502//28 2464//617 2473//29 +f 372//294 399//514 414//377 +f 1570//24 1585//26 1584//41 +f 1066//259 1//20 1165//129 +f 1//20 202//130 1165//129 +f 120//716 70//715 102//739 +f 157//740 146//717 120//716 +f 194//732 223//718 193//702 +f 223//718 241//682 193//702 +f 352//736 379//741 370//706 +f 370//706 379//741 389//683 +f 410//742 409//707 389//683 +f 2478//743 1409//744 1958//477 +f 806//745 945//302 1002//78 +f 157//740 194//732 146//717 +f 267//746 266//733 223//718 +f 267//746 333//725 266//733 +f 379//741 410//742 389//683 +f 410//742 438//747 409//707 +f 438//747 424//727 409//707 +f 190//748 205//749 143//644 +f 337//290 371//561 361//291 +f 2215//713 830//750 826//425 +f 1631//330 1646//32 1638//223 +f 102//739 157//740 120//716 +f 157//740 195//751 194//732 +f 195//751 223//718 194//732 +f 195//751 211//752 223//718 +f 223//718 211//752 267//746 +f 267//746 300//753 333//725 +f 300//753 334//754 351//726 +f 333//725 300//753 351//726 +f 351//726 334//754 352//736 +f 410//742 411//755 438//747 +f 438//747 486//719 424//727 +f 487//492 49//685 486//719 +f 875//756 594//326 989//757 +f 108//416 581//758 66//583 +f 225//709 245//552 244//483 +f 312//443 336//289 335//759 +f 151//760 754//729 107//761 +f 274//762 1386//763 300//753 +f 352//736 334//754 379//741 +f 923//699 1729//764 1096//765 +f 244//483 245//552 268//484 +f 463//474 464//351 454//433 +f 414//377 399//514 415//375 +f 15//560 480//720 470//553 +f 1647//2 1069//1 1078//211 +f 909//5 922//136 833//138 +f 387//766 417//193 328//194 +f 133//767 157//740 102//739 +f 1314//768 133//767 102//739 +f 133//767 195//751 157//740 +f 1148//331 1179//362 1160//364 +f 1046//102 1167//689 182//109 +f 379//741 411//755 410//742 +f 792//239 339//769 229//770 +f 391//771 7//317 668//772 +f 185//468 226//378 174//543 +f 461//666 290//562 497//738 +f 2027//631 504//403 2501//405 +f 1196//65 1054//108 403//66 +f 728//773 1019//301 752//774 +f 2459//570 2483//775 2461//776 +f 1291//777 1264//778 55//779 +f 133//767 1356//780 195//751 +f 195//751 1356//780 211//752 +f 412//781 438//747 411//755 +f 4//782 486//719 438//747 +f 458//783 4//782 438//747 +f 4//782 487//492 486//719 +f 1720//784 1572//785 1771//786 +f 245//552 275//787 268//484 +f 1869//225 2021//493 2059//788 +f 235//293 399//514 372//294 +f 64//475 60//265 105//442 +f 836//789 2492//247 879//246 +f 1315//790 133//767 1314//768 +f 1331//791 1382//792 1356//780 +f 1310//793 926//794 1128//795 +f 7//317 1121//131 117//696 +f 119//449 161//448 611//796 +f 380//797 379//741 334//754 +f 379//741 380//797 411//755 +f 467//798 4//782 458//783 +f 495//799 487//492 4//782 +f 495//799 1126//14 487//492 +f 416//515 400//504 533//526 +f 479//470 469//469 498//248 +f 74//266 116//355 73//264 +f 478//667 461//666 497//738 +f 393//505 400//504 416//515 +f 61//800 1291//777 55//779 +f 505//801 1999//802 2474//323 +f 1999//802 2491//324 2474//323 +f 199//522 189//517 36//803 +f 1164//804 1165//129 169//308 +f 1179//362 387//766 249//805 +f 390//806 411//755 380//797 +f 411//755 390//806 412//781 +f 458//783 438//747 412//781 +f 495//799 168//422 1126//14 +f 480//720 469//469 470//553 +f 116//355 122//372 105//442 +f 418//250 187//318 140//695 +f 185//468 174//543 167//650 +f 166//542 148//296 167//650 +f 470//553 469//469 443//450 +f 40//807 55//779 32//170 +f 61//800 71//808 1291//777 +f 71//808 103//809 1291//777 +f 1184//42 1173//622 1154//54 +f 634//356 514//810 97//357 +f 425//811 458//783 412//781 +f 917//339 923//699 931//340 +f 2472//812 2489//632 853//813 +f 754//729 641//386 567//814 +f 44//815 567//814 1163//816 +f 454//433 470//553 443//450 +f 40//807 32//170 1249//817 +f 33//818 40//807 1249//817 +f 56//819 55//779 40//807 +f 56//819 61//800 55//779 +f 451//820 1265//821 439//822 +f 1180//199 417//193 1179//362 +f 1099//132 301//134 1077//823 +f 1189//94 1058//4 939//6 +f 1059//13 221//824 1132//491 +f 598//825 1074//826 1075//827 +f 412//781 426//828 425//811 +f 650//829 186//379 185//468 +f 234//722 244//483 259//485 +f 226//378 245//552 225//709 +f 1033//154 1042//12 1030//830 +f 2492//247 836//789 247//563 +f 7//317 169//308 1121//131 +f 1462//831 1322//832 1482//833 +f 425//811 467//798 458//783 +f 496//834 4//782 467//798 +f 1751//835 2468//226 2480//473 +f 290//562 418//250 140//695 +f 326//519 789//836 762//837 +f 142//447 177//521 161//448 +f 165//472 1751//835 2480//473 +f 87//838 103//809 71//808 +f 103//809 87//838 104//839 +f 1180//199 1179//362 1148//331 +f 417//193 387//766 1179//362 +f 2081//840 2060//841 2031//842 +f 1154//54 1173//622 1141//56 +f 181//843 131//844 197//845 +f 442//846 425//811 426//828 +f 614//847 144//848 143//644 +f 876//641 1010//319 797//321 +f 40//807 45//849 56//819 +f 56//819 45//849 61//800 +f 87//838 71//808 61//800 +f 1563//850 1437//851 1590//852 +f 1121//131 385//140 117//696 +f 1148//331 1160//364 1137//853 +f 1449//665 1459//854 1439//855 +f 1028//856 2462//325 929//208 +f 442//846 459//857 425//811 +f 459//857 467//798 425//811 +f 168//422 495//799 4//782 +f 496//834 168//422 4//782 +f 1763//858 1403//859 1444//860 +f 140//695 187//318 117//696 +f 244//483 234//722 225//709 +f 246//380 740//861 269//862 +f 372//294 414//377 1182//101 +f 40//807 547//863 45//849 +f 45//849 62//864 61//800 +f 62//864 87//838 61//800 +f 87//838 88//865 104//839 +f 1084//189 517//866 1054//108 +f 387//766 328//194 1064//867 +f 2467//868 2497//494 2485//596 +f 286//869 1363//870 302//871 +f 205//749 189//517 162//516 +f 290//562 140//695 289//737 +f 214//585 234//722 224//872 +f 393//505 399//514 809//873 +f 315//179 1131//159 397//731 +f 302//871 321//874 353//875 +f 1164//804 169//308 391//771 +f 427//876 459//857 442//846 +f 217//877 496//834 467//798 +f 217//877 168//422 496//834 +f 978//878 969//879 2074//880 +f 361//291 383//99 382//734 +f 269//862 276//881 245//552 +f 1440//37 11//882 305//38 +f 62//864 88//865 87//838 +f 328//194 1066//259 1064//867 +f 1066//259 1165//129 1164//804 +f 242//883 287//884 302//871 +f 1363//870 242//883 302//871 +f 287//884 321//874 302//871 +f 1179//362 249//805 1187//363 +f 983//370 1020//360 1004//273 +f 464//351 747//350 481//545 +f 788//435 323//352 276//881 +f 269//862 245//552 246//380 +f 88//865 89//885 1325//886 +f 171//887 172//888 242//883 +f 360//889 353//875 321//874 +f 360//889 1354//890 353//875 +f 1057//891 1064//867 1164//804 +f 2184//892 2188//893 2183//894 +f 460//895 459//857 451//820 +f 460//895 467//798 459//857 +f 149//896 168//422 217//877 +f 149//896 136//67 168//422 +f 116//355 129//297 122//372 +f 109//400 124//502 77//415 +f 159//649 167//650 148//296 +f 28//338 42//313 41//587 +f 57//897 88//865 62//864 +f 45//849 57//897 62//864 +f 1336//898 1325//886 89//885 +f 89//885 72//899 1336//898 +f 147//900 172//888 171//887 +f 172//888 258//901 242//883 +f 258//901 257//902 242//883 +f 257//902 287//884 242//883 +f 257//902 321//874 287//884 +f 345//903 360//889 321//874 +f 360//889 381//904 1354//890 +f 1069//1 938//905 1655//906 +f 387//766 473//907 249//805 +f 270//908 217//877 467//798 +f 130//909 136//67 149//896 +f 851//910 847//523 829//270 +f 983//370 987//371 975//911 +f 189//517 177//521 142//447 +f 88//865 72//899 89//885 +f 184//912 258//901 172//888 +f 257//902 288//913 321//874 +f 1265//821 451//820 459//857 +f 270//908 149//896 217//877 +f 226//378 225//709 174//543 +f 27//586 28//338 41//587 +f 109//400 125//501 124//502 +f 547//863 57//897 45//849 +f 57//897 58//914 88//865 +f 88//865 58//914 72//899 +f 2476//616 2484//343 2458//311 +f 147//900 184//912 172//888 +f 184//912 213//915 258//901 +f 258//901 243//916 257//902 +f 243//916 288//913 257//902 +f 345//903 321//874 288//913 +f 391//771 169//308 7//317 +f 468//917 460//895 451//820 +f 468//917 488//918 460//895 +f 270//908 467//798 460//895 +f 488//918 270//908 460//895 +f 1206//126 136//67 130//909 +f 481//545 793//919 150//546 +f 143//644 205//749 162//516 +f 142//447 119//449 124//502 +f 58//914 90//920 72//899 +f 90//920 128//534 72//899 +f 147//900 173//921 184//912 +f 173//921 213//915 184//912 +f 213//915 233//922 258//901 +f 258//901 233//922 243//916 +f 354//923 360//889 345//903 +f 354//923 381//904 360//889 +f 1026//328 991//274 307//327 +f 268//484 312//443 259//485 +f 1206//126 130//909 1080//139 +f 116//355 105//442 73//264 +f 139//374 148//296 166//542 +f 275//787 312//443 268//484 +f 188//249 401//316 187//318 +f 2479//648 2459//570 2461//776 +f 58//914 63//513 90//920 +f 1064//867 1066//259 1164//804 +f 1064//867 473//907 387//766 +f 288//913 311//924 345//903 +f 311//924 354//923 345//903 +f 996//925 994//240 307//327 +f 452//926 468//917 439//822 +f 452//926 478//667 468//917 +f 478//667 488//918 468//917 +f 141//697 130//909 149//896 +f 1564//604 1639//603 1563//850 +f 547//863 41//587 57//897 +f 2081//840 2107//927 2060//841 +f 382//734 381//904 354//923 +f 497//738 270//908 488//918 +f 289//737 149//896 270//908 +f 289//737 141//697 149//896 +f 114//384 122//372 139//374 +f 59//314 60//265 64//475 +f 275//787 323//352 312//443 +f 401//316 668//772 7//317 +f 41//587 46//315 57//897 +f 57//897 46//315 58//914 +f 1459//854 1345//928 1269//509 +f 1342//533 121//532 158//929 +f 166//542 173//921 158//929 +f 213//915 224//872 233//922 +f 233//922 259//485 243//916 +f 243//916 322//930 288//913 +f 322//930 311//924 288//913 +f 453//668 478//667 452//926 +f 497//738 289//737 270//908 +f 912//271 911//700 906//272 +f 276//881 323//352 275//787 +f 276//881 275//787 245//552 +f 46//315 63//513 58//914 +f 90//920 121//532 128//534 +f 173//921 214//585 213//915 +f 213//915 214//585 224//872 +f 259//485 322//930 243//916 +f 336//289 311//924 322//930 +f 336//289 354//923 311//924 +f 361//291 382//734 354//923 +f 1043//931 439//822 1290//932 +f 497//738 488//918 478//667 +f 385//140 130//909 141//697 +f 385//140 1080//139 130//909 +f 144//848 190//748 143//644 +f 535//588 41//587 547//863 +f 121//532 166//542 158//929 +f 335//759 336//289 322//930 +f 354//923 336//289 361//291 +f 2004//575 2481//418 1764//417 +f 698//933 439//822 1043//931 +f 289//737 140//695 141//697 +f 923//699 1096//765 931//340 +f 650//829 185//468 159//649 +f 46//315 59//314 63//513 +f 63//513 91//385 90//920 +f 90//920 114//384 121//532 +f 121//532 139//374 166//542 +f 173//921 196//544 214//585 +f 259//485 335//759 322//930 +f 2478//743 2502//28 2434//27 +f 312//443 337//290 336//289 +f 90//920 91//385 114//384 +f 114//384 139//374 121//532 +f 166//542 196//544 173//921 +f 224//872 234//722 233//922 +f 234//722 259//485 233//922 +f 259//485 312//443 335//759 +f 1124//93 916//934 1189//94 +f 542//935 541//336 530//936 +f 462//615 479//470 290//562 +f 269//862 783//937 276//881 +f 813//938 567//814 641//386 +f 276//881 783//937 788//435 +f 82//607 1038//694 1333//939 +f 816//940 701//941 703//942 +f 672//943 137//944 603//945 +f 625//946 635//947 624//295 +f 2457//948 2439//949 1973//950 +f 767//951 533//526 529//952 +f 2468//226 1869//225 2480//473 +f 662//953 190//748 639//954 +f 711//955 720//956 719//957 +f 630//958 639//954 614//847 +f 161//448 654//959 638//960 +f 781//961 991//274 982//358 +f 1227//962 31//659 516//963 +f 648//964 639//954 630//958 +f 630//958 614//847 590//965 +f 2098//966 544//244 1899//967 +f 578//968 579//969 586//970 +f 697//692 492//637 551//636 +f 529//952 533//526 400//504 +f 869//971 859//972 870//973 +f 1732//974 924//975 914//976 +f 1004//273 1027//359 991//274 +f 801//977 591//978 603//945 +f 636//979 676//980 651//981 +f 876//641 949//982 965//676 +f 2207//52 1789//51 1859//983 +f 76//202 739//984 237//203 +f 188//249 681//721 15//560 +f 578//968 604//985 599//986 +f 797//321 616//987 995//642 +f 510//988 2035//989 1365//990 +f 76//202 812//298 617//991 +f 617//991 739//984 76//202 +f 1468//992 93//993 1765//994 +f 596//299 546//995 812//298 +f 1457//996 1305//997 1477//998 +f 760//999 197//845 150//546 +f 671//1000 773//1001 765//1002 +f 586//970 609//1003 604//985 +f 591//978 700//383 632//1004 +f 476//413 2312//1005 474//288 +f 2084//1006 2027//631 2489//632 +f 582//1007 590//965 571//1008 +f 1555//40 2449//283 1996//1009 +f 674//1010 546//995 596//299 +f 812//298 655//1011 617//991 +f 161//448 177//521 661//520 +f 599//986 604//985 636//979 +f 700//383 787//382 576//1012 +f 776//1013 675//1014 572//1015 +f 776//1013 674//1010 675//1014 +f 617//991 634//356 739//984 +f 591//978 632//1004 649//1016 +f 612//1017 546//995 674//1010 +f 617//991 655//1011 634//356 +f 728//773 752//774 706//1018 +f 571//1008 2311//1019 2305//1020 +f 775//1021 674//1010 776//1013 +f 775//1021 612//1017 674//1010 +f 612//1017 628//1022 546//995 +f 546//995 628//1022 812//298 +f 812//298 628//1022 655//1011 +f 620//1023 630//958 615//1024 +f 620//1023 648//964 630//958 +f 667//1025 653//1026 646//1027 +f 810//1028 782//1029 785//1030 +f 150//546 197//845 814//547 +f 534//1031 1517//1032 2000//63 +f 702//1033 572//1015 2378//1034 +f 748//1035 776//1013 572//1015 +f 655//1011 613//1036 634//356 +f 911//700 917//339 905//1037 +f 648//964 679//1038 662//953 +f 727//1039 771//1040 713//1041 +f 750//1042 807//1043 799//1044 +f 639//954 190//748 144//848 +f 662//953 679//1038 200//1045 +f 702//1033 748//1035 572//1015 +f 775//1021 776//1013 748//1035 +f 628//1022 718//1046 655//1011 +f 626//1047 658//1048 645//1049 +f 791//1050 778//1051 790//1052 +f 612//1017 811//1053 628//1022 +f 613//1036 514//810 634//356 +f 1380//1054 1756//1055 1673//1056 +f 570//402 590//965 614//847 +f 720//956 741//1057 719//957 +f 1074//826 795//1058 835//1059 +f 614//847 639//954 144//848 +f 612//1017 775//1021 811//1053 +f 718//1046 735//1060 655//1011 +f 655//1011 735//1060 613//1036 +f 798//1061 338//292 788//435 +f 636//979 652//1062 676//980 +f 571//1008 590//965 555//1063 +f 528//1064 730//1065 687//1066 +f 690//1067 702//1033 2312//1005 +f 476//413 690//1067 2312//1005 +f 811//1053 718//1046 628//1022 +f 721//1068 778//1051 727//1039 +f 748//1035 702//1033 690//1067 +f 735//1060 686//1069 613//1036 +f 1517//1032 2002//1070 2127//1071 +f 654//959 685//1072 667//1025 +f 569//1073 588//1074 606//1075 +f 513//1076 531//1077 538//1078 +f 538//1078 549//1079 548//1080 +f 549//1079 553//1081 548//1080 +f 550//1082 588//1074 549//1079 +f 1903//1083 869//971 870//973 +f 691//1084 775//1021 748//1035 +f 691//1084 600//1085 775//1021 +f 600//1085 811//1053 775//1021 +f 811//1053 563//1086 718//1046 +f 563//1086 736//1087 718//1046 +f 718//1046 736//1087 735//1060 +f 736//1087 647//1088 735//1060 +f 735//1060 647//1088 686//1069 +f 686//1069 745//1089 613//1036 +f 745//1089 514//810 613//1036 +f 569//1073 606//1075 605//1090 +f 654//959 667//1025 638//960 +f 851//910 857//243 847//523 +f 588//1074 569//1073 549//1079 +f 690//1067 691//1084 748//1035 +f 680//1091 514//810 745//1089 +f 2127//1071 2002//1070 2094//1092 +f 747//350 701//941 481//545 +f 400//504 373//503 529//952 +f 600//1085 536//1093 811//1053 +f 536//1093 563//1086 811//1053 +f 1306//155 227//163 1152//219 +f 522//1094 24//489 18//490 +f 523//1095 24//489 522//1094 +f 865//251 857//243 851//910 +f 2031//842 2060//841 1540//1096 +f 767//951 701//941 747//350 +f 618//1097 652//1062 609//1003 +f 652//1062 636//979 609//1003 +f 573//1098 22//1099 710//1100 +f 642//1101 699//1102 730//1065 +f 1522//1103 1518//1104 2476//616 +f 500//441 629//1105 691//1084 +f 690//1067 500//441 691//1084 +f 691//1084 629//1105 600//1085 +f 780//1106 644//1107 641//386 +f 579//969 578//968 561//1108 +f 131//844 668//772 197//845 +f 197//845 668//772 814//547 +f 789//836 809//873 798//1061 +f 622//1109 760//999 150//546 +f 621//1110 563//1086 536//1093 +f 673//1111 745//1089 686//1069 +f 673//1111 818//1112 745//1089 +f 818//1112 680//1091 745//1089 +f 680//1091 96//1113 514//810 +f 2495//576 2462//325 1028//856 +f 1028//856 583//207 575//1114 +f 663//1115 794//1116 664//1117 +f 629//1105 761//1118 600//1085 +f 761//1118 757//1119 600//1085 +f 600//1085 757//1119 536//1093 +f 621//1110 696//1120 563//1086 +f 755//1121 736//1087 563//1086 +f 696//1120 755//1121 563//1086 +f 633//1122 736//1087 755//1121 +f 633//1122 647//1088 736//1087 +f 623//1123 686//1069 647//1088 +f 633//1122 623//1123 647//1088 +f 686//1069 623//1123 673//1111 +f 819//1124 680//1091 818//1112 +f 680//1091 819//1124 96//1113 +f 1729//764 1677//1125 1096//765 +f 2482//1126 1899//967 2471//634 +f 537//1127 536//1093 757//1119 +f 536//1093 537//1127 621//1110 +f 673//1111 819//1124 818//1112 +f 2428//1128 222//593 230//465 +f 25//566 24//489 523//1095 +f 25//566 557//506 24//489 +f 38//608 25//566 19//1129 +f 710//1100 22//1099 272//1130 +f 663//1115 759//1131 794//1116 +f 1120//23 878//1132 1195//730 +f 537//1127 696//1120 621//1110 +f 696//1120 633//1122 755//1121 +f 822//1133 2215//713 2220//712 +f 97//357 96//1113 1053//166 +f 750//1042 784//1134 743//1135 +f 887//524 905//1037 864//525 +f 768//518 784//1134 373//503 +f 512//1136 513//1076 548//1080 +f 573//1098 664//1117 22//1099 +f 696//1120 715//1137 633//1122 +f 673//1111 521//1138 819//1124 +f 2454//1139 2453//1140 2445//1141 +f 883//342 887//524 847//523 +f 306//227 812//298 76//202 +f 642//1101 528//1064 759//1131 +f 798//1061 809//873 235//293 +f 994//240 792//239 998//252 +f 587//1142 626//1047 586//970 +f 1900//463 1918//1143 1937//1144 +f 645//1049 652//1062 618//1097 +f 537//1127 786//1145 696//1120 +f 521//1138 593//1146 819//1124 +f 515//1147 19//1129 523//1095 +f 741//1057 749//1148 719//957 +f 789//836 326//519 809//873 +f 539//1149 581//758 550//1082 +f 657//1150 777//409 723//1151 +f 684//1152 713//1041 660//1153 +f 692//1154 712//1155 720//956 +f 652//1062 666//1156 692//1154 +f 507//1157 761//1118 629//1105 +f 472//500 507//1157 629//1105 +f 507//1157 757//1119 761//1118 +f 623//1123 633//1122 673//1111 +f 724//1158 521//1138 673//1111 +f 515//1147 516//963 19//1129 +f 304//263 675//1014 674//1010 +f 178//1159 778//1051 721//1068 +f 947//1160 1447//1161 2358//446 +f 626//1047 645//1049 618//1097 +f 586//970 626//1047 618//1097 +f 784//1134 768//518 742//1162 +f 753//1163 537//1127 757//1119 +f 537//1127 753//1163 786//1145 +f 724//1158 981//1164 521//1138 +f 521//1138 981//1164 593//1146 +f 979//681 559//1165 850//209 +f 637//1166 660//1153 677//1167 +f 787//382 631//388 576//1012 +f 141//697 117//696 385//140 +f 809//873 399//514 235//293 +f 641//386 754//729 558//387 +f 542//935 553//1081 561//1108 +f 742//1162 768//518 762//837 +f 444//349 416//515 533//526 +f 528//1064 687//1066 796//381 +f 813//938 598//825 566//1168 +f 1490//70 1501//421 1557//171 +f 753//1163 757//1119 507//1157 +f 786//1145 715//1137 696//1120 +f 633//1122 724//1158 673//1111 +f 2090//1169 2062//172 2109//174 +f 646//1027 653//1026 660//1153 +f 660//1153 694//1170 683//1171 +f 677//1167 660//1153 683//1171 +f 1872//1172 839//1173 838//1174 +f 1224//1175 18//490 30//16 +f 326//519 393//505 809//873 +f 799//1044 529//952 373//503 +f 313//611 507//1157 472//500 +f 715//1137 774//1176 633//1122 +f 974//1177 699//1102 841//1178 +f 703//942 820//1179 816//940 +f 692//1154 711//955 676//980 +f 1014//253 355//1180 766//710 +f 875//756 752//774 1019//301 +f 627//1181 646//1027 660//1153 +f 711//955 692//1154 720//956 +f 652//1062 692//1154 676//980 +f 799//1044 373//503 784//1134 +f 813//938 566//1168 567//814 +f 2462//325 2482//1126 2475//633 +f 764//1182 644//1107 780//1106 +f 1479//1183 1924//1184 1916//1185 +f 753//1163 738//1186 786//1145 +f 738//1186 607//1187 786//1145 +f 786//1145 607//1187 715//1137 +f 715//1137 524//530 774//1176 +f 633//1122 774//1176 724//1158 +f 559//1165 979//681 672//943 +f 758//1188 798//1061 783//937 +f 683//1171 694//1170 705//1189 +f 820//1179 703//942 562//1190 +f 764//1182 687//1066 644//1107 +f 744//1191 743//1135 725//1192 +f 313//611 753//1163 507//1157 +f 607//1187 524//530 715//1137 +f 664//1117 801//977 22//1099 +f 646//1027 627//1181 610//1193 +f 800//1194 820//1179 562//1190 +f 750//1042 769//1195 807//1043 +f 767//951 747//350 533//526 +f 578//968 586//970 604//985 +f 862//1196 593//1146 981//1164 +f 688//160 2382//1197 1083//144 +f 306//227 304//263 674//1010 +f 738//1186 584//1198 607//1187 +f 168//422 136//67 238//9 +f 773//1001 552//1199 765//1002 +f 2473//29 2464//617 2458//311 +f 773//1001 793//919 552//1199 +f 626//1047 619//1200 658//1048 +f 1007//1201 1139//605 1013//1202 +f 562//1190 529//952 799//1044 +f 744//1191 750//1042 743//1135 +f 659//1203 683//1171 693//1204 +f 677//1167 683//1171 659//1203 +f 313//611 737//1205 753//1163 +f 753//1163 737//1205 738//1186 +f 607//1187 729//531 524//530 +f 27//586 518//1206 28//338 +f 553//1081 569//1073 580//1207 +f 657//1150 163//410 777//409 +f 580//1207 569//1073 605//1090 +f 789//836 798//1061 758//1188 +f 769//1195 562//1190 807//1043 +f 820//1179 671//1000 816//940 +f 638//960 646//1027 611//796 +f 1074//826 598//825 644//1107 +f 750//1042 799//1044 784//1134 +f 1931//1208 907//1209 898//1210 +f 2483//775 2487//310 2461//776 +f 737//1205 584//1198 738//1186 +f 1439//855 1438//1211 1431//1212 +f 2098//966 1213//1213 544//244 +f 48//606 578//968 75//335 +f 796//381 631//388 787//382 +f 815//141 732//618 21//142 +f 581//758 588//1074 550//1082 +f 625//946 636//979 651//981 +f 778//1051 1011//1214 810//1028 +f 693//1204 705//1189 725//1192 +f 693//1204 683//1171 705//1189 +f 236//1215 1921//1216 1966//1217 +f 584//1198 729//531 607//1187 +f 2237//1218 1866//424 2227//1219 +f 530//936 541//336 28//338 +f 237//203 739//984 248//228 +f 512//1136 530//936 28//338 +f 727//1039 778//1051 771//1040 +f 684//1152 727//1039 713//1041 +f 2237//1218 2220//712 826//425 +f 542//935 561//1108 560//455 +f 528//1064 796//381 700//383 +f 808//1220 785//1030 671//1000 +f 739//984 592//267 248//228 +f 895//1221 905//1037 896//1222 +f 740//861 246//380 186//379 +f 272//1130 137//944 979//681 +f 770//1223 769//1195 744//1191 +f 712//1155 742//1162 720//956 +f 1213//1213 2026//1224 544//244 +f 1888//1225 1235//1226 2438//1227 +f 555//1063 554//401 2311//1019 +f 737//1205 313//611 1192//610 +f 1585//26 1612//1228 1611//187 +f 695//1229 721//1068 685//1072 +f 518//1206 17//1230 28//338 +f 769//1195 770//1223 562//1190 +f 719//957 749//1148 740//861 +f 648//964 669//35 679//1038 +f 773//1001 657//1150 723//1151 +f 606//1075 637//1166 619//1200 +f 2072//1231 2062//172 2042//1232 +f 606//1075 619//1200 626//1047 +f 549//1079 569//1073 553//1081 +f 161//448 638//960 611//796 +f 910//486 917//339 942//487 +f 917//339 1103//341 942//487 +f 991//274 1026//328 992//275 +f 979//681 137//944 672//943 +f 785//1030 163//410 657//1150 +f 710//1100 2488//635 2472//812 +f 611//796 581//758 119//449 +f 808//1220 671//1000 820//1179 +f 1820//1233 1900//463 1870//1234 +f 759//1131 700//383 591//978 +f 637//1166 677//1167 619//1200 +f 2494//495 2490//1235 2463//245 +f 671//1000 765//1002 816//940 +f 687//1066 764//1182 780//1106 +f 1019//301 992//275 1026//328 +f 1726//300 1719//1236 987//371 +f 713//1041 771//1040 694//1170 +f 51//582 2355//1237 78//414 +f 510//988 526//1238 525//1239 +f 525//1239 526//1238 1249//817 +f 526//1238 33//818 1249//817 +f 2311//1019 554//401 2335//1240 +f 827//1241 848//1242 840//1243 +f 603//945 591//978 649//1016 +f 758//1188 269//862 740//861 +f 1595//81 1612//1228 1586//1244 +f 1694//1245 1048//1246 1699//612 +f 682//1247 740//861 186//379 +f 22//1099 801//977 603//945 +f 555//1063 570//402 554//401 +f 1053//166 110//1248 97//357 +f 615//1024 582//1007 601//1249 +f 814//547 668//772 188//249 +f 725//1192 705//1189 744//1191 +f 528//1064 700//383 759//1131 +f 640//567 648//964 620//1023 +f 703//942 701//941 562//1190 +f 886//1250 892//1251 582//1007 +f 631//388 731//723 576//1012 +f 1087//1252 1835//1253 1747//1254 +f 882//1255 864//525 895//1221 +f 956//1256 950//1257 1103//341 +f 1502//231 2500//233 2470//1258 +f 205//749 190//748 200//1045 +f 815//141 878//1132 616//987 +f 616//987 878//1132 995//642 +f 1183//143 878//1132 815//141 +f 1601//1259 1827//1260 881//232 +f 527//1261 535//588 526//1238 +f 2184//892 2183//894 2175//1262 +f 1142//1263 1125//1264 1133//107 +f 235//293 338//292 798//1061 +f 160//238 339//769 792//239 +f 599//986 92//354 75//335 +f 598//825 1116//1265 566//1168 +f 631//388 558//387 731//723 +f 771//1040 770//1223 744//1191 +f 730//1065 528//1064 642//1101 +f 841//1178 699//1102 642//1101 +f 668//772 401//316 188//249 +f 510//988 527//1261 526//1238 +f 749//1148 758//1188 740//861 +f 706//1018 721//1068 695//1229 +f 694//1170 726//1266 705//1189 +f 694//1170 744//1191 726//1266 +f 906//272 911//700 905//1037 +f 661//520 695//1229 161//448 +f 708//1267 815//141 616//987 +f 535//588 547//863 33//818 +f 794//1116 759//1131 591//978 +f 778//1051 808//1220 790//1052 +f 269//862 758//1188 783//937 +f 771//1040 744//1191 694//1170 +f 800//1194 808//1220 820//1179 +f 571//1008 886//1250 582//1007 +f 854//675 948//256 1010//319 +f 906//272 905//1037 887//524 +f 625//946 651//981 635//947 +f 2000//63 1226//217 534//1031 +f 2140//1268 1504//1269 2016//1270 +f 601//1249 620//1023 615//1024 +f 620//1023 601//1249 640//567 +f 648//964 640//567 669//35 +f 698//933 452//926 439//822 +f 671//1000 785//1030 657//1150 +f 1561//114 2356//1271 545//113 +f 685//1072 653//1026 667//1025 +f 685//1072 727//1039 684//1152 +f 568//1272 616//987 797//321 +f 708//1267 732//618 815//141 +f 93//993 229//770 339//769 +f 865//251 851//910 839//1173 +f 942//487 1103//341 950//1257 +f 589//572 614//847 125//501 +f 606//1075 610//1193 627//1181 +f 951//1273 834//1274 873//1275 +f 92//354 599//986 625//946 +f 1878//423 830//750 1902//1276 +f 2482//1126 2098//966 1899//967 +f 568//1272 708//1267 616//987 +f 708//1267 551//636 732//618 +f 2434//27 2487//310 2483//775 +f 160//238 964//183 665//185 +f 2316//1277 2391//1278 2309//1279 +f 762//837 758//1188 749//1148 +f 570//402 614//847 589//572 +f 888//242 897//254 883//342 +f 2000//63 1517//1032 1388//1280 +f 685//1072 721//1068 727//1039 +f 588//1074 610//1193 606//1075 +f 653//1026 685//1072 684//1152 +f 651//981 650//829 635//947 +f 760//999 1151//1281 6//1282 +f 793//919 622//1109 150//546 +f 651//981 676//980 650//829 +f 744//1191 769//1195 750//1042 +f 541//336 542//935 560//455 +f 476//413 500//441 690//1067 +f 473//907 1064//867 1057//891 +f 561//1108 578//968 560//455 +f 636//979 625//946 599//986 +f 876//641 995//642 949//982 +f 829//270 856//643 846//268 +f 682//1247 704//1283 740//861 +f 791//1050 790//1052 770//1223 +f 2466//1284 2500//233 2460//407 +f 579//969 587//1142 586//970 +f 1352//1285 1208//1286 1095//1287 +f 1684//1288 1479//1183 1916//1185 +f 604//985 609//1003 636//979 +f 751//1289 721//1068 706//1018 +f 810//1028 608//1290 782//1029 +f 672//943 603//945 649//1016 +f 475//286 447//309 476//413 +f 794//1116 591//978 801//977 +f 682//1247 186//379 650//829 +f 808//1220 800//1194 790//1052 +f 644//1107 598//825 813//938 +f 704//1283 719//957 740//861 +f 1011//1214 608//1290 810//1028 +f 1192//610 584//1198 737//1205 +f 687//1066 780//1106 796//381 +f 2337//1291 474//288 2312//1005 +f 638//960 667//1025 646//1027 +f 706//1018 1186//1292 728//773 +f 733//1293 575//1114 568//1272 +f 595//1294 551//636 708//1267 +f 595//1294 540//1295 551//636 +f 1308//1296 501//1297 1852//1298 +f 665//185 339//769 160//238 +f 527//1261 2447//1299 535//588 +f 558//387 9//728 731//723 +f 723//1151 793//919 773//1001 +f 660//1153 713//1041 694//1170 +f 693//1204 725//1192 666//1156 +f 562//1190 767//951 529//952 +f 550//1082 538//1078 531//1077 +f 2267//1300 2287//1301 2233//1302 +f 996//925 964//183 160//238 +f 2068//344 2470//1258 2466//1284 +f 704//1283 711//955 719//957 +f 741//1057 762//837 749//1148 +f 605//1090 606//1075 626//1047 +f 548//1080 542//935 530//936 +f 995//642 878//1132 709//1303 +f 1898//1304 1684//1288 1916//1185 +f 778//1051 791//1050 771//1040 +f 782//1029 163//410 785//1030 +f 789//836 758//1188 762//837 +f 857//243 883//342 847//523 +f 733//1293 970//320 1028//856 +f 838//1174 829//270 825//1305 +f 2447//1299 511//1306 535//588 +f 22//1099 603//945 137//944 +f 705//1189 726//1266 744//1191 +f 605//1090 587//1142 580//1207 +f 512//1136 548//1080 530//936 +f 743//1135 784//1134 742//1162 +f 790//1052 800//1194 770//1223 +f 778//1051 810//1028 808//1220 +f 1014//253 998//252 355//1180 +f 708//1267 568//1272 595//1294 +f 656//1307 697//692 551//636 +f 540//1295 656//1307 551//636 +f 143//644 125//501 614//847 +f 1000//1308 1020//360 983//370 +f 778//1051 178//1159 1011//1214 +f 676//980 704//1283 682//1247 +f 637//1166 627//1181 660//1153 +f 606//1075 627//1181 637//1166 +f 701//941 552//1199 481//545 +f 808//1220 810//1028 785//1030 +f 590//965 570//402 555//1063 +f 716//1309 595//1294 568//1272 +f 2355//1237 2335//1240 554//401 +f 912//271 1729//764 911//700 +f 1076//1310 1456//1311 1546//1312 +f 697//692 68//651 492//637 +f 676//980 711//955 704//1283 +f 839//1173 851//910 838//1174 +f 1028//856 575//1114 733//1293 +f 1020//360 844//1313 982//358 +f 716//1309 568//1272 575//1114 +f 844//1313 781//961 982//358 +f 1238//479 2156//1314 2034//175 +f 553//1081 580//1207 561//1108 +f 580//1207 579//969 561//1108 +f 452//926 461//666 453//668 +f 560//455 578//968 48//606 +f 564//1315 540//1295 595//1294 +f 632//1004 656//1307 540//1295 +f 564//1315 632//1004 540//1295 +f 75//335 578//968 599//986 +f 518//1206 27//586 535//588 +f 511//1306 518//1206 535//588 +f 783//937 798//1061 788//435 +f 642//1101 759//1131 663//1115 +f 720//956 742//1162 741//1057 +f 605//1090 626//1047 587//1142 +f 580//1207 587//1142 579//969 +f 725//1192 712//1155 666//1156 +f 562//1190 701//941 767//951 +f 1729//764 923//699 911//700 +f 712//1155 743//1135 742//1162 +f 619//1200 677//1167 658//1048 +f 161//448 695//1229 654//959 +f 770//1223 800//1194 562//1190 +f 2084//1006 2489//632 2472//812 +f 575//1114 559//1165 716//1309 +f 716//1309 564//1315 595//1294 +f 654//959 695//1229 685//1072 +f 843//1316 855//1317 2064//613 +f 34//701 731//723 9//728 +f 527//1261 510//988 1973//950 +f 723//1151 622//1109 793//919 +f 992//275 1726//300 987//371 +f 693//1204 666//1156 652//1062 +f 2472//812 853//813 573//1098 +f 624//295 159//649 148//296 +f 671//1000 657//1150 773//1001 +f 681//721 188//249 498//248 +f 797//321 970//320 733//1293 +f 565//1318 656//1307 632//1004 +f 565//1318 697//692 656//1307 +f 565//1318 731//723 697//692 +f 1949//1319 951//1273 920//663 +f 85//598 111//458 84//590 +f 662//953 200//1045 190//748 +f 44//815 324//1320 754//729 +f 33//818 547//863 40//807 +f 658//1048 693//1204 652//1062 +f 658//1048 652//1062 645//1049 +f 664//1117 794//1116 801//977 +f 666//1156 712//1155 692//1154 +f 639//954 648//964 662//953 +f 611//796 646//1027 610//1193 +f 850//209 559//1165 575//1114 +f 1447//1161 2490//1235 1106//1321 +f 1972//213 1955//1322 1935//85 +f 582//1007 615//1024 590//965 +f 66//583 581//758 539//1149 +f 780//1106 641//386 631//388 +f 796//381 780//1106 631//388 +f 1049//1323 1192//610 83//688 +f 1348//1324 13//1325 1519//1326 +f 799//1044 807//1043 562//1190 +f 581//758 611//796 588//1074 +f 687//1066 795//1058 644//1107 +f 663//1115 8//1327 642//1101 +f 1936//1328 1972//213 1935//85 +f 650//829 676//980 682//1247 +f 615//1024 630//958 590//965 +f 730//1065 795//1058 687//1066 +f 742//1162 762//837 741//1057 +f 548//1080 553//1081 542//935 +f 1048//1246 1692//1329 1074//826 +f 658//1048 659//1203 693//1204 +f 37//555 52//554 30//16 +f 611//796 610//1193 588//1074 +f 649//1016 632//1004 564//1315 +f 565//1318 576//1012 731//723 +f 2138//1330 922//136 1058//4 +f 1204//1331 854//675 965//676 +f 725//1192 743//1135 712//1155 +f 644//1107 813//938 641//386 +f 660//1153 653//1026 684//1152 +f 771//1040 791//1050 770//1223 +f 644//1107 795//1058 1074//826 +f 469//469 480//720 681//721 +f 559//1165 672//943 564//1315 +f 716//1309 559//1165 564//1315 +f 672//943 649//1016 564//1315 +f 2161//1332 1378//1333 2171//1334 +f 474//288 475//286 476//413 +f 816//940 765//1002 701//941 +f 765//1002 552//1199 701//941 +f 513//1076 538//1078 548//1080 +f 754//729 324//1320 107//761 +f 609//1003 586//970 618//1097 +f 25//566 523//1095 19//1129 +f 677//1167 659//1203 658//1048 +f 689//658 452//926 698//933 +f 1334//1335 1115//1336 1353//1337 +f 700//383 565//1318 632//1004 +f 700//383 576//1012 565//1318 +f 481//545 552//1199 793//919 +f 763//1338 901//312 2458//311 +f 550//1082 549//1079 538//1078 +f 781//961 964//183 996//925 +f 1596//80 1634//1339 1595//81 +f 198//1340 916//934 1124//93 +f 198//1340 1124//93 341//133 +f 842//1341 973//1342 1025//1343 +f 842//1341 1025//1343 836//789 +f 1009//1344 1024//116 934//1345 +f 573//1098 710//1100 2472//812 +f 1100//77 971//1346 1002//78 +f 1501//421 1081//118 1557//171 +f 1225//1347 1219//1348 955//1349 +f 413//1350 2138//1330 284//1351 +f 955//1349 1630//1352 522//1094 +f 341//133 1124//93 301//134 +f 2333//1353 2376//334 2350//1354 +f 1107//1355 218//1356 284//1351 +f 398//145 925//1357 1513//322 +f 1513//322 1442//1358 1495//68 +f 1935//85 1455//84 1744//527 +f 1723//1359 1935//85 1744//527 +f 825//1305 1872//1172 838//1174 +f 1495//68 1442//1358 1496//1360 +f 963//1361 1024//116 1009//1344 +f 1511//304 1514//303 966//1362 +f 1775//1363 1729//764 912//271 +f 688//160 262//146 1067//1364 +f 714//419 1007//1201 1512//420 +f 919//1365 1732//974 914//976 +f 2319//1366 2331//1367 2304//1368 +f 2400//1369 2407//1370 2391//1278 +f 1674//625 2164//1371 1780//1372 +f 843//1316 927//1373 899//1374 +f 1660//210 988//1375 1188//105 +f 1067//1364 262//146 1640//191 +f 1381//96 1109//98 1483//691 +f 1437//851 1381//96 1483//691 +f 2495//576 1010//319 948//256 +f 1514//303 1289//1376 1313//1377 +f 899//1374 374//677 961//679 +f 1438//1211 1430//1378 1422//276 +f 1634//1339 1095//1287 1632//30 +f 2487//310 973//1342 2461//776 +f 1003//565 499//1379 874//471 +f 849//1380 848//1242 827//1241 +f 1430//1378 1462//831 1453//1381 +f 2496//237 2084//1006 2471//634 +f 909//5 10//280 980//279 +f 730//1065 927//1373 835//1059 +f 2031//842 1540//1096 1536//1382 +f 831//1383 849//1380 2178//1384 +f 881//232 834//1274 951//1273 +f 1841//1385 1722//1386 1803//1387 +f 1005//1388 670//1389 1020//360 +f 1021//1390 670//1389 1005//1388 +f 1869//225 2059//788 2467//868 +f 903//1391 902//1392 1939//1393 +f 2476//616 2502//28 1651//478 +f 853//813 8//1327 573//1098 +f 1850//1394 831//1383 2178//1384 +f 934//1345 746//564 247//563 +f 934//1345 65//45 746//564 +f 301//134 285//1395 1077//823 +f 968//1396 944//1397 977//1398 +f 970//320 2495//576 1028//856 +f 974//1177 2465//678 374//677 +f 899//1374 927//1373 374//677 +f 1882//1399 1898//1304 1916//1185 +f 1613//1400 1634//1339 1596//80 +f 909//5 833//138 1396//1401 +f 2492//247 247//563 1003//565 +f 919//1365 914//976 1931//1208 +f 1459//854 1299//591 1458//1402 +f 1634//1339 1632//30 1633//1403 +f 844//1313 670//1389 228//1404 +f 2494//495 2497//494 2467//868 +f 901//312 973//1342 2487//310 +f 228//1404 1772//1405 734//184 +f 1701//1406 1709//1407 1666//1408 +f 963//1361 574//50 1024//116 +f 847//523 864//525 856//643 +f 1730//510 1736//1409 2239//1410 +f 870//973 859//972 848//1242 +f 2074//880 2111//1411 2103//1412 +f 1140//690 1590//852 1483//691 +f 927//1373 730//1065 974//1177 +f 2103//1412 978//878 2074//880 +f 756//1413 1745//1414 1718//1415 +f 848//1242 859//972 840//1243 +f 1296//652 1482//833 1320//1416 +f 2331//1367 51//582 66//583 +f 1067//1364 988//1375 962//1417 +f 1396//1401 833//138 1445//1418 +f 1001//1419 1005//1388 1000//1308 +f 901//312 1009//1344 973//1342 +f 1099//132 1077//823 817//1420 +f 933//1421 944//1397 936//1422 +f 952//1423 958//1424 1828//1425 +f 988//1375 1660//210 986//1426 +f 833//138 1067//1364 1445//1418 +f 1067//1364 1640//191 988//1375 +f 218//1356 413//1350 284//1351 +f 1843//1427 180//1428 347//1429 +f 1846//1430 1708//1431 1798//1432 +f 2469//1433 2477//1434 855//1317 +f 1006//623 1021//1390 1005//1388 +f 381//904 382//734 250//1435 +f 2369//1436 828//1437 531//1077 +f 968//1396 977//1398 1001//1419 +f 2460//407 1949//1319 779//345 +f 1194//1438 1441//1439 1115//1336 +f 1001//1419 1000//1308 968//1396 +f 756//1413 678//1440 1745//1414 +f 963//1361 1009//1344 901//312 +f 2471//634 2084//1006 2472//812 +f 841//1178 642//1101 8//1327 +f 982//358 991//274 1027//359 +f 670//1389 844//1313 1020//360 +f 1289//1376 1514//303 945//302 +f 869//971 904//1441 890//1442 +f 1161//1443 1115//1336 1639//603 +f 823//1444 2178//1384 849//1380 +f 746//564 12//47 499//1379 +f 263//365 428//1445 2366//1446 +f 1685//1447 1075//827 1692//1329 +f 1002//78 926//794 806//745 +f 1799//1448 1755//1449 216//1450 +f 944//1397 968//1396 993//1451 +f 943//1452 944//1397 993//1451 +f 31//659 38//608 19//1129 +f 531//1077 828//1437 550//1082 +f 1501//421 1078//211 1081//118 +f 1921//1216 1149//1453 431//1454 +f 936//1422 943//1452 932//1455 +f 1660//210 1489//117 1412//222 +f 301//134 980//279 285//1395 +f 903//1391 918//1456 902//1392 +f 869//971 890//1442 868//1457 +f 890//1442 903//1391 867//1458 +f 1003//565 746//564 499//1379 +f 951//1273 1949//1319 2500//233 +f 990//1459 841//1178 853//813 +f 1595//81 1634//1339 1611//187 +f 374//677 927//1373 974//1177 +f 836//789 1025//1343 247//563 +f 1653//190 1652//234 1638//223 +f 1303//1460 1545//1461 1142//1263 +f 1616//186 1631//330 1638//223 +f 1629//620 1546//1312 1628//306 +f 936//1422 932//1455 913//1462 +f 513//1076 506//1463 531//1077 +f 868//1457 890//1442 867//1458 +f 2330//1464 2369//1436 2353//1465 +f 924//975 918//1456 914//976 +f 907//1209 914//976 904//1441 +f 1258//1466 1421//277 1267//1467 +f 301//134 939//6 980//279 +f 1472//1468 1482//833 1296//652 +f 868//1457 867//1458 859//972 +f 472//500 491//541 313//611 +f 272//1130 519//680 2488//635 +f 1471//197 1472//1468 1296//652 +f 1025//1343 934//1345 247//563 +f 1634//1339 1633//1403 1611//187 +f 2176//1469 1847//1470 2177//1471 +f 1310//793 1289//1376 806//745 +f 924//975 933//1421 918//1456 +f 1969//1472 1968//1473 902//1392 +f 2107//927 2128//1474 2118//1475 +f 1428//1476 1436//1477 1287//1478 +f 1139//605 1564//604 1617//1479 +f 2378//1034 572//1015 2384//1480 +f 853//813 841//1178 8//1327 +f 2501//405 961//679 2465//678 +f 1221//1481 1240//1482 1408//1483 +f 1069//1 1578//3 1627//305 +f 1006//623 1005//1388 1001//1419 +f 1617//1479 1564//604 1578//3 +f 828//1437 539//1149 550//1082 +f 1791//1484 2168//1485 2160//1486 +f 1829//1487 1718//1415 1739//1488 +f 1968//1473 1939//1393 902//1392 +f 756//1413 1718//1415 665//185 +f 1998//64 2000//63 1388//1280 +f 2451//1489 545//113 2356//1271 +f 178//1159 997//1490 1011//1214 +f 1275//1491 325//200 1270//1492 +f 1709//1407 872//1493 1666//1408 +f 2176//1469 1959//1494 1847//1470 +f 944//1397 943//1452 936//1422 +f 2424//1495 518//1206 511//1306 +f 1445//1418 1067//1364 962//1417 +f 2007//1496 952//1423 1828//1425 +f 2052//1497 2061//1498 2081//840 +f 828//1437 2303//1499 539//1149 +f 835//1059 1699//612 1048//1246 +f 1709//1407 1706//1500 872//1493 +f 885//1501 574//50 963//1361 +f 1318//389 1296//652 1320//1416 +f 859//972 867//1458 1902//1276 +f 1452//1502 1448//1503 1421//277 +f 943//1452 993//1451 976//1504 +f 993//1451 1000//1308 983//370 +f 854//675 1010//319 876//641 +f 988//1375 986//1426 962//1417 +f 2031//842 2052//1497 2081//840 +f 924//975 1732//974 1828//1425 +f 965//676 949//982 1060//1505 +f 781//961 228//1404 734//184 +f 1718//1415 1765//994 665//185 +f 943//1452 976//1504 932//1455 +f 1680//1506 1794//1507 1783//1508 +f 1448//1503 1471//197 1276//196 +f 1276//196 1267//1467 1421//277 +f 1931//1208 914//976 907//1209 +f 991//274 781//961 996//925 +f 1276//196 1421//277 1448//1503 +f 10//280 909//5 1396//1401 +f 831//1383 860//1509 849//1380 +f 1523//1510 1762//1511 1774//1512 +f 924//975 1828//1425 937//1513 +f 307//327 994//240 1014//253 +f 946//657 963//1361 901//312 +f 978//878 2103//1412 977//1398 +f 977//1398 1006//623 1001//1419 +f 1007//1201 1161//1443 1639//603 +f 1639//603 1294//1514 1437//851 +f 885//1501 1032//48 574//50 +f 1294//1514 1381//96 1437//851 +f 733//1293 568//1272 797//321 +f 792//239 229//770 1112//1515 +f 119//449 581//758 108//416 +f 843//1316 835//1059 927//1373 +f 1889//1516 860//1509 831//1383 +f 2211//1517 2216//1518 2204//1519 +f 2400//1369 2431//1520 2422//1521 +f 2103//1412 1006//623 977//1398 +f 840//1243 1902//1276 830//750 +f 827//1241 840//1243 830//750 +f 827//1241 830//750 822//1133 +f 1003//565 874//471 2492//247 +f 1432//664 1439//855 1431//1212 +f 781//961 734//184 964//183 +f 1937//1144 1936//1328 1723//1359 +f 918//1456 913//1462 902//1392 +f 958//1424 977//1398 944//1397 +f 1850//1394 2178//1384 2177//1471 +f 1005//1388 1020//360 1000//1308 +f 991//274 996//925 307//327 +f 1396//1401 1445//1418 340//1522 +f 2179//1523 1763//858 889//1524 +f 939//6 909//5 980//279 +f 1828//1425 958//1424 937//1513 +f 978//878 977//1398 958//1424 +f 1590//852 1571//619 1563//850 +f 779//345 1949//1319 920//663 +f 1551//1525 1362//1526 1573//445 +f 2103//1412 2142//624 1006//623 +f 920//663 885//1501 963//1361 +f 946//657 920//663 963//1361 +f 1584//41 1616//186 1583//1527 +f 1453//1381 1472//1468 1452//1502 +f 1647//2 1617//1479 1578//3 +f 1578//3 1564//604 1627//305 +f 1628//306 938//905 1069//1 +f 869//971 868//1457 859//972 +f 993//1451 983//370 976//1504 +f 912//271 1762//1511 1775//1363 +f 752//774 751//1289 706//1018 +f 1628//306 1546//1312 938//905 +f 844//1313 228//1404 781//961 +f 840//1243 859//972 1902//1276 +f 898//1210 907//1209 904//1441 +f 1025//1343 973//1342 1009//1344 +f 663//1115 664//1117 573//1098 +f 763//1338 946//657 901//312 +f 898//1210 904//1441 869//971 +f 2172//1528 889//1524 1763//858 +f 1128//795 926//794 971//1346 +f 860//1509 848//1242 849//1380 +f 904//1441 903//1391 890//1442 +f 2486//568 2459//570 2479//648 +f 577//1529 782//1029 608//1290 +f 933//1421 936//1422 918//1456 +f 2177//1471 1847//1470 1851//1530 +f 665//185 1765//994 339//769 +f 937//1513 958//1424 944//1397 +f 894//1531 981//1164 724//1158 +f 968//1396 1000//1308 993//1451 +f 2192//1532 2195//1533 2205//1534 +f 1652//234 1099//132 817//1420 +f 997//1490 608//1290 1011//1214 +f 997//1490 577//1529 608//1290 +f 577//1529 163//410 782//1029 +f 1112//1515 998//252 792//239 +f 2177//1471 1851//1530 1850//1394 +f 1257//1535 1421//277 1258//1466 +f 951//1273 873//1275 920//663 +f 822//1133 830//750 2215//713 +f 1899//967 2496//237 2471//634 +f 1773//1536 1668//1537 1558//1538 +f 904//1441 914//976 903//1391 +f 932//1455 1671//1539 913//1462 +f 873//1275 885//1501 920//663 +f 1013//1202 1617//1479 1647//2 +f 873//1275 1032//48 885//1501 +f 894//1531 862//1196 981//1164 +f 2469//1433 855//1317 961//679 +f 913//1462 1671//1539 1969//1472 +f 2477//1434 2064//613 855//1317 +f 918//1456 936//1422 913//1462 +f 860//1509 870//973 848//1242 +f 937//1513 944//1397 933//1421 +f 1501//421 1013//1202 1647//2 +f 824//1540 178//1159 751//1289 +f 824//1540 997//1490 178//1159 +f 824//1540 577//1529 997//1490 +f 643//548 163//410 577//1529 +f 863//1541 856//643 882//1255 +f 2128//1474 2153//1542 2134//1543 +f 722//1544 774//1176 880//1545 +f 722//1544 894//1531 774//1176 +f 864//525 905//1037 895//1221 +f 850//209 575//1114 583//207 +f 914//976 918//1456 903//1391 +f 924//975 937//1513 933//1421 +f 1501//421 717//69 1013//1202 +f 1587//1546 1324//1547 928//1548 +f 717//69 1512//420 1013//1202 +f 602//711 577//1529 824//1540 +f 766//710 643//548 577//1529 +f 894//1531 709//1303 862//1196 +f 709//1303 878//1132 862//1196 +f 976//1504 975//911 932//1455 +f 1324//1547 1596//80 928//1548 +f 880//1545 524//530 1060//1505 +f 2434//27 2459//570 2499//569 +f 1324//1547 1613//1400 1596//80 +f 752//774 824//1540 751//1289 +f 602//711 766//710 577//1529 +f 1014//253 602//711 594//326 +f 1387//1549 1226//217 2152//1550 +f 2153//1542 1387//1549 2152//1550 +f 669//35 930//488 950//1257 +f 1710//614 1694//1245 1699//612 +f 768//518 326//519 762//837 +f 582//1007 892//1251 601//1249 +f 974//1177 990//1459 2465//678 +f 624//295 116//355 625//946 +f 835//1059 795//1058 730//1065 +f 2458//311 2484//343 763//1338 +f 989//757 602//711 824//1540 +f 2064//613 2477//1434 1710//614 +f 976//1504 983//370 975//911 +f 949//982 722//1544 880//1545 +f 996//925 160//238 994//240 +f 2305//1020 863//1541 556//1551 +f 556//1551 863//1541 886//1250 +f 601//1249 910//486 640//567 +f 2264//269 825//1305 829//270 +f 989//757 824//1540 752//774 +f 856//643 864//525 882//1255 +f 1595//81 1586//1244 2381//25 +f 1627//305 1629//620 1628//306 +f 2174//1552 2180//1553 2173//1554 +f 2128//1474 2134//1543 2118//1475 +f 137//944 272//1130 22//1099 +f 949//982 880//1545 1060//1505 +f 995//642 894//1531 722//1544 +f 894//1531 995//642 709//1303 +f 894//1531 724//1158 774//1176 +f 886//1250 895//1221 892//1251 +f 640//567 910//486 930//488 +f 871//1555 870//973 860//1509 +f 846//268 856//643 863//1541 +f 1026//328 875//756 1019//301 +f 838//1174 851//910 829//270 +f 1024//116 1171//1556 934//1345 +f 36//803 189//517 205//749 +f 863//1541 882//1255 886//1250 +f 886//1250 882//1255 895//1221 +f 875//756 1026//328 594//326 +f 52//554 1459//854 1269//509 +f 896//1222 917//339 910//486 +f 1025//1343 1009//1344 934//1345 +f 949//982 995//642 722//1544 +f 2152//1550 1226//217 1636//1557 +f 895//1221 896//1222 892//1251 +f 892//1251 910//486 601//1249 +f 942//487 950//1257 930//488 +f 875//756 989//757 752//774 +f 594//326 602//711 989//757 +f 766//710 355//1180 643//548 +f 355//1180 260//549 643//548 +f 905//1037 917//339 896//1222 +f 965//676 1060//1505 1162//392 +f 892//1251 896//1222 910//486 +f 1101//11 1052//1558 1042//12 +f 1029//1559 1031//1560 834//1274 +f 1101//11 1133//107 1118//55 +f 342//60 357//124 376//1561 +f 516//963 515//1147 2454//1139 +f 1656//1562 2494//495 2467//868 +f 1056//1563 1303//1460 1133//107 +f 1120//23 1130//22 862//1196 +f 69//192 342//60 376//1561 +f 1055//10 1056//1563 1133//107 +f 499//1379 69//192 165//472 +f 85//598 101//653 111//458 +f 1031//1560 1032//48 834//1274 +f 200//1045 679//1038 1166//34 +f 1031//1560 1042//12 1032//48 +f 1171//1556 65//45 934//1345 +f 1822//1564 1204//1331 1177//1565 +f 1096//765 956//1256 1103//341 +f 514//810 96//1113 97//357 +f 956//1256 1145//1566 1144//33 +f 1185//1567 1166//34 1144//33 +f 1145//1566 1185//1567 1144//33 +f 1185//1567 200//1045 1166//34 +f 375//1568 132//103 1041//1569 +f 1153//1570 1202//36 305//38 +f 32//170 1244//169 1249//817 +f 1096//765 1087//1252 956//1256 +f 554//401 78//414 2355//1237 +f 1191//1571 138//1572 110//1248 +f 65//45 35//115 432//46 +f 1087//1252 1110//1573 956//1256 +f 1110//1573 1146//1574 956//1256 +f 956//1256 1146//1574 1145//1566 +f 1146//1574 1156//1575 1145//1566 +f 1145//1566 1156//1575 1185//1567 +f 950//1257 956//1256 1144//33 +f 2481//418 2495//576 948//256 +f 1156//1575 1193//1576 1185//1567 +f 1050//459 1047//125 1051//128 +f 239//1577 151//760 107//761 +f 1185//1567 1193//1576 36//803 +f 1747//1254 1110//1573 1087//1252 +f 1134//1578 1146//1574 1110//1573 +f 1146//1574 1157//1579 1156//1575 +f 1156//1575 1157//1579 1193//1576 +f 1041//1569 1045//573 1034//574 +f 1397//1580 1134//1578 1110//1573 +f 1157//1579 1146//1574 1134//1578 +f 1157//1579 1175//1581 1193//1576 +f 1193//1576 199//522 36//803 +f 1090//39 1035//258 1196//65 +f 1456//1311 1150//87 1051//128 +f 1175//1581 199//522 1193//1576 +f 1186//1292 695//1229 199//522 +f 1186//1292 199//522 1175//1581 +f 1175//1581 1157//1579 1134//1578 +f 728//773 1186//1292 1175//1581 +f 197//845 760//999 6//1282 +f 1130//22 593//1146 862//1196 +f 1167//689 1109//98 182//109 +f 1194//1438 1115//1336 1161//1443 +f 2140//1268 1928//1582 1504//1269 +f 921//137 922//136 2138//1330 +f 1147//1583 1134//1578 1397//1580 +f 1719//1236 1147//1583 1397//1580 +f 1147//1583 1175//1581 1134//1578 +f 1175//1581 1147//1583 728//773 +f 341//133 1654//31 1208//1286 +f 754//729 151//760 9//728 +f 284//1351 2138//1330 1058//4 +f 1188//105 1557//171 1660//210 +f 1191//1571 110//1248 1053//166 +f 916//934 284//1351 1189//94 +f 284//1351 1058//4 1189//94 +f 2094//1092 1465//1584 2127//1071 +f 1726//300 1019//301 1147//1583 +f 1147//1583 1019//301 728//773 +f 593//1146 1130//22 96//1113 +f 239//1577 305//38 1038//694 +f 1036//1585 1131//159 315//179 +f 397//731 1131//159 1120//23 +f 1053//166 96//1113 1130//22 +f 2467//868 2485//596 1869//225 +f 517//866 1089//1586 421//7 +f 834//1274 1827//1260 1029//1559 +f 419//61 1047//125 1117//59 +f 1034//574 433//156 1306//155 +f 2239//1410 1862//451 1730//510 +f 1453//1381 1462//831 1472//1468 +f 1408//1483 1422//276 1399//1587 +f 471//158 23//178 1111//180 +f 1205//1588 1150//87 1456//1311 +f 1205//1588 1040//88 1150//87 +f 1131//159 1036//1585 293//1589 +f 293//1589 1068//1590 1044//165 +f 375//1568 1041//1569 138//1572 +f 1205//1588 1140//690 1046//102 +f 1040//88 1205//1588 1046//102 +f 1140//690 1167//689 1046//102 +f 1104//1591 1049//1323 83//688 +f 1052//1558 1085//49 1032//48 +f 1044//165 1068//1590 1191//1571 +f 1167//689 1483//691 1109//98 +f 208//82 1084//189 1035//258 +f 1040//88 132//103 375//1568 +f 1834//1592 20//1593 3//1594 +f 1050//459 1051//128 1070//1595 +f 1133//107 1125//1264 1174//43 +f 11//882 1440//37 1401//1596 +f 420//83 208//82 1071//19 +f 1135//1597 1079//1598 1094//1599 +f 1086//57 1101//11 1118//55 +f 1029//1559 1030//830 1031//1560 +f 1200//1600 1061//1601 294//1602 +f 1191//1571 1068//1590 138//1572 +f 1171//1556 1141//56 65//45 +f 1141//56 1172//1603 65//45 +f 1172//1603 35//115 65//45 +f 1172//1603 404//44 35//115 +f 404//44 99//58 35//115 +f 221//824 1104//1591 1063//1604 +f 802//1605 398//145 1083//144 +f 20//1593 1089//1586 3//1594 +f 2064//613 1699//612 835//1059 +f 1042//12 1052//1558 1032//48 +f 1433//1606 1261//17 1432//664 +f 1323//457 2338//1607 155//1608 +f 1076//1310 1205//1588 1456//1311 +f 1088//1609 1402//1610 1056//1563 +f 1150//87 348//89 1070//1595 +f 1200//1600 1089//1586 20//1593 +f 1097//1611 1162//392 100//391 +f 1032//48 873//1275 834//1274 +f 21//142 471//158 1111//180 +f 294//1602 1097//1611 1104//1591 +f 1072//1612 100//391 584//1198 +f 1151//1281 760//999 622//1109 +f 132//103 1045//573 1041//1569 +f 1050//459 1070//1595 1135//1597 +f 1088//1609 1039//153 940//152 +f 650//829 159//649 635//947 +f 100//391 1170//393 729//531 +f 729//531 584//1198 100//391 +f 1103//341 931//340 1096//765 +f 925//1357 1443//656 1513//322 +f 138//1572 1102//1613 110//1248 +f 1034//574 1306//155 1152//219 +f 1071//19 1035//258 1090//39 +f 100//391 1072//1612 1097//1611 +f 23//178 1158//1614 315//179 +f 1068//1590 375//1568 138//1572 +f 1586//1244 1612//1228 1585//26 +f 1819//1615 1030//830 1029//1559 +f 1041//1569 1034//574 1102//1613 +f 232//1616 375//1568 1068//1590 +f 348//89 1079//1598 1070//1595 +f 1061//1601 1097//1611 294//1602 +f 1513//322 1443//656 1442//1358 +f 1200//1600 294//1602 1119//361 +f 376//1561 1050//459 1062//1617 +f 1094//1599 1036//1585 315//179 +f 1200//1600 1119//361 1089//1586 +f 1111//180 1183//143 21//142 +f 1044//165 1191//1571 1053//166 +f 698//933 295//1618 689//658 +f 1079//1598 232//1616 1036//1585 +f 404//44 1117//59 99//58 +f 1495//68 1496//1360 717//69 +f 1119//361 294//1602 98//460 +f 3//1594 1089//1586 517//866 +f 1132//491 1063//1604 83//688 +f 1132//491 83//688 175//687 +f 132//103 1046//102 182//109 +f 1111//180 1195//730 1183//143 +f 1131//159 1044//165 1037//21 +f 127//329 402//72 1804//71 +f 219//167 1272//1619 1047//125 +f 1697//1620 1135//1597 1094//1599 +f 2140//1268 1854//1621 2117//235 +f 1111//180 397//731 1195//730 +f 1177//1565 1162//392 1097//1611 +f 1061//1601 1177//1565 1097//1611 +f 717//69 1509//1622 714//419 +f 2//110 1300//97 433//156 +f 462//615 290//562 461//666 +f 98//460 294//1602 221//824 +f 294//1602 1104//1591 221//824 +f 714//419 1161//1443 1007//1201 +f 1073//1623 1152//219 1143//220 +f 1697//1620 1094//1599 1360//1624 +f 1223//1625 1423//1626 1218//1627 +f 836//789 2479//648 842//1341 +f 1097//1611 1072//1612 1049//1323 +f 348//89 1040//88 375//1568 +f 3//1594 517//866 316//1628 +f 180//1428 1061//1601 1201//1629 +f 348//89 375//1568 232//1616 +f 1432//664 1431//1212 1415//1630 +f 220//104 1513//322 1495//68 +f 1104//1591 1097//1611 1049//1323 +f 306//227 674//1010 596//299 +f 777//409 455//1631 723//1151 +f 2170//1632 2151//1633 1641//1634 +f 1047//125 419//61 219//167 +f 1102//1613 1034//574 1073//1623 +f 1073//1623 1034//574 1152//219 +f 1035//258 1054//108 1196//65 +f 1177//1565 1204//1331 1162//392 +f 746//564 65//45 12//47 +f 751//1289 178//1159 721//1068 +f 1054//108 517//866 421//7 +f 1051//128 1150//87 1070//1595 +f 1102//1613 1073//1623 110//1248 +f 998//252 1136//1635 355//1180 +f 567//814 566//1168 1163//816 +f 1111//180 315//179 397//731 +f 1048//1246 1074//826 835//1059 +f 1158//1614 1094//1599 315//179 +f 1374//1636 1107//1355 1252//1637 +f 1112//1515 1136//1635 998//252 +f 472//500 629//1105 500//441 +f 355//1180 1136//1635 260//549 +f 260//549 118//1638 43//408 +f 1104//1591 83//688 1063//1604 +f 376//1561 357//124 1050//459 +f 1463//1639 1142//1263 1545//1461 +f 1036//1585 232//1616 293//1589 +f 1030//830 1042//12 1031//1560 +f 1079//1598 348//89 232//1616 +f 221//824 1063//1604 1132//491 +f 1094//1599 1079//1598 1036//1585 +f 1076//1310 1629//620 1205//1588 +f 1136//1635 1197//1640 260//549 +f 260//549 1197//1640 118//1638 +f 1204//1331 965//676 1162//392 +f 293//1589 232//1616 1068//1590 +f 1590//852 1205//1588 1629//620 +f 1205//1588 1590//852 1140//690 +f 250//1435 382//734 392//735 +f 1296//652 1318//389 1311//198 +f 347//1429 1201//1629 20//1593 +f 1201//1629 1200//1600 20//1593 +f 132//103 182//109 1045//573 +f 1101//11 1086//57 1052//1558 +f 1033//154 1039//153 1055//10 +f 138//1572 1041//1569 1102//1613 +f 970//320 1010//319 2495//576 +f 455//1631 777//409 43//408 +f 1992//214 1948//1641 2023//1642 +f 20//1593 1834//1592 347//1429 +f 1072//1612 584//1198 1049//1323 +f 584//1198 1192//610 1049//1323 +f 182//109 2//110 1045//573 +f 1163//816 324//1320 44//815 +f 1360//1624 1094//1599 1158//1614 +f 1450//1643 1360//1624 1158//1614 +f 1091//1644 1112//1515 229//770 +f 509//1645 723//1151 455//1631 +f 207//1646 509//1645 455//1631 +f 1251//1647 1257//1535 1266//1648 +f 1488//221 1489//117 1547//119 +f 2157//1649 1541//1650 1875//1651 +f 305//38 107//761 324//1320 +f 1045//573 2//110 433//156 +f 1070//1595 1079//1598 1135//1597 +f 1136//1635 1168//1652 1197//1640 +f 1197//1640 359//1653 118//1638 +f 118//1638 359//1653 43//408 +f 359//1653 356//1654 43//408 +f 356//1654 455//1631 43//408 +f 356//1654 207//1646 455//1631 +f 1240//1482 1422//276 1408//1483 +f 1163//816 1153//1570 324//1320 +f 1201//1629 1061//1601 1200//1600 +f 1052//1558 1086//57 1085//49 +f 1024//116 1141//56 1171//1556 +f 1112//1515 1105//1655 1136//1635 +f 1050//459 1135//1597 1062//1617 +f 1105//1655 1168//1652 1136//1635 +f 1168//1652 1178//1656 1197//1640 +f 1197//1640 1178//1656 359//1653 +f 1173//622 404//44 1172//1603 +f 465//1657 356//1654 359//1653 +f 1174//43 1125//1264 240//135 +f 1240//1482 1431//1212 1422//276 +f 1098//1658 1113//1659 1105//1655 +f 1112//1515 1098//1658 1105//1655 +f 1105//1655 1178//1656 1168//1652 +f 1178//1656 465//1657 359//1653 +f 1091//1644 1098//1658 1112//1515 +f 1133//107 1174//43 1118//55 +f 98//460 221//824 1059//13 +f 487//492 1132//491 175//687 +f 980//279 1017//1660 285//1395 +f 465//1657 207//1646 356//1654 +f 180//1428 1201//1629 347//1429 +f 1060//1505 524//530 1170//393 +f 445//188 127//329 316//1628 +f 1431//1212 1438//1211 1422//276 +f 498//248 469//469 681//721 +f 940//152 1807//1661 1759//1662 +f 381//904 250//1435 1290//932 +f 1113//1659 1122//1663 1105//1655 +f 1105//1655 1122//1663 1178//1656 +f 1151//1281 509//1645 207//1646 +f 1236//535 2035//989 525//1239 +f 1131//159 293//1589 1044//165 +f 346//1664 207//1646 465//1657 +f 346//1664 1151//1281 207//1646 +f 1822//1564 1796//1665 1204//1331 +f 1143//220 204//195 97//357 +f 123//1666 1128//795 971//1346 +f 2153//1542 2152//1550 2134//1543 +f 126//1667 1151//1281 346//1664 +f 517//866 445//188 316//1628 +f 1450//1643 1158//1614 23//178 +f 1458//1402 1462//831 1430//1378 +f 1129//476 152//1668 1182//101 +f 1122//1663 1159//1669 1178//1656 +f 1178//1656 1198//1670 465//1657 +f 79//1671 346//1664 465//1657 +f 126//1667 1155//1672 1151//1281 +f 1151//1281 1155//1672 6//1282 +f 295//1618 1129//476 689//658 +f 1073//1623 1143//220 97//357 +f 1098//1658 1123//1673 1113//1659 +f 1113//1659 1123//1673 1122//1663 +f 1123//1673 1169//1674 1122//1663 +f 1178//1656 1159//1669 1198//1670 +f 1198//1670 79//1671 465//1657 +f 392//735 383//99 152//1668 +f 1822//1564 1061//1601 180//1428 +f 116//355 92//354 625//946 +f 421//7 1089//1586 1119//361 +f 1129//476 295//1618 152//1668 +f 110//1248 1073//1623 97//357 +f 1173//622 1172//1603 1141//56 +f 1122//1663 1169//1674 1159//1669 +f 79//1671 126//1667 346//1664 +f 1155//1672 181//843 6//1282 +f 971//1346 926//794 1002//78 +f 295//1618 1043//931 152//1668 +f 1039//153 1088//1609 1056//1563 +f 1428//1476 1266//1648 1436//1477 +f 404//44 419//61 1117//59 +f 836//789 879//246 2479//648 +f 2464//617 2476//616 2458//311 +f 1198//1670 317//1675 79//1671 +f 1124//93 939//6 301//134 +f 44//815 754//729 567//814 +f 1039//153 1056//1563 1055//10 +f 1439//855 1459//854 1458//1402 +f 1660//210 1412//222 986//1426 +f 1169//1674 1160//364 1159//1669 +f 179//1676 1155//1672 126//1667 +f 1155//1672 131//844 181//843 +f 1061//1601 1822//1564 1177//1565 +f 1153//1570 305//38 324//1320 +f 175//687 314//630 327//640 +f 1160//364 1187//363 1159//1669 +f 1159//1669 1187//363 1198//1670 +f 1198//1670 1187//363 317//1675 +f 79//1671 179//1676 126//1667 +f 1043//931 250//1435 392//735 +f 152//1668 1043//931 392//735 +f 96//1113 819//1124 593//1146 +f 1123//1673 1127//1677 1169//1674 +f 317//1675 179//1676 79//1671 +f 1057//891 1155//1672 179//1676 +f 1155//1672 391//771 131//844 +f 131//844 391//771 668//772 +f 2381//25 1586//1244 1585//26 +f 12//47 69//192 499//1379 +f 262//146 398//145 1640//191 +f 2107//927 2118//1475 2060//841 +f 2130//1678 2094//1092 2002//1070 +f 1187//363 249//805 317//1675 +f 1155//1672 1057//891 391//771 +f 1290//932 439//822 1265//821 +f 305//38 239//1577 107//761 +f 1127//1677 1160//364 1169//1674 +f 317//1675 473//907 179//1676 +f 473//907 1057//891 179//1676 +f 83//688 1192//610 314//630 +f 1043//931 1290//932 250//1435 +f 1807//1661 940//152 1030//830 +f 517//866 1084//189 445//188 +f 1057//891 1164//804 391//771 +f 2492//247 2480//473 2493//597 +f 163//410 643//548 43//408 +f 1056//1563 1545//1461 1303//1460 +f 1069//1 1655//906 1023//1679 +f 249//805 473//907 317//1675 +f 1162//392 1060//1505 1170//393 +f 1086//57 1118//55 1154//54 +f 82//607 68//651 16//693 +f 1989//1680 1990//1681 1536//1382 +f 1633//1403 1632//30 1611//187 +f 1487//390 2372//1682 1305//997 +f 1494//212 1069//1 1023//1679 +f 1137//853 1160//364 1127//1677 +f 669//35 1166//34 679//1038 +f 390//806 1285//1683 426//828 +f 1955//1322 1972//213 1971//215 +f 1219//1348 1223//1625 2437//1684 +f 1254//15 1261//17 1223//1625 +f 1319//1685 1545//1461 1056//1563 +f 1320//1416 1328//1686 2443//1687 +f 1261//17 1433//1606 1223//1625 +f 1219//1348 1254//15 1223//1625 +f 254//592 222//593 2428//1128 +f 1237//1688 1290//932 1265//821 +f 1284//1689 1273//714 1263//1690 +f 1277//1691 1291//777 1301//1692 +f 1314//768 102//739 1301//1692 +f 1280//1693 363//346 377//260 +f 1313//1377 1353//1337 1514//303 +f 468//917 451//820 439//822 +f 1918//1143 1964//1694 1956//1695 +f 2026//1224 29//1696 2140//1268 +f 1354//890 381//904 1279//1697 +f 1224//1175 30//16 1254//15 +f 147//900 158//929 173//921 +f 1247//1698 1253//1699 274//762 +f 1271//1700 380//797 334//754 +f 2043//1701 2072//1231 2042//1232 +f 274//762 300//753 267//746 +f 1356//780 1392//1702 211//752 +f 13//1325 240//135 1142//1263 +f 1382//792 1330//1703 1392//1702 +f 1312//1704 1323//457 155//1608 +f 240//135 1125//1264 1142//1263 +f 2358//446 1573//445 1362//1526 +f 1236//535 1249//817 1244//169 +f 1272//1619 219//167 1348//1324 +f 1271//1700 1274//1705 380//797 +f 191//480 2034//175 1982//1706 +f 1992//214 2052//1497 1990//1681 +f 462//615 452//926 689//658 +f 2262//1707 2286//1708 2261//1709 +f 183//216 489//62 1642//1710 +f 2485//596 2480//473 1869//225 +f 84//590 111//458 1323//457 +f 1190//1711 353//875 1354//890 +f 446//287 434//1712 435//261 +f 1336//898 171//887 1341//1713 +f 2021//493 430//177 2059//788 +f 862//1196 878//1132 1120//23 +f 1263//1690 1273//714 1248//1714 +f 1966//1217 1921//1216 2144//1715 +f 1312//1704 84//590 1323//457 +f 240//135 13//1325 1348//1324 +f 1359//1716 1274//1705 1271//1700 +f 1392//1702 1330//1703 1247//1698 +f 1520//1717 1333//939 11//882 +f 1368//1718 1253//1699 1247//1698 +f 1279//1697 1285//1683 1190//1711 +f 2465//678 990//1459 2489//632 +f 1272//1619 1519//1326 805//1719 +f 1369//1720 1272//1619 805//1719 +f 1317//149 95//151 1344//1721 +f 1242//1722 1248//1714 1234//698 +f 1368//1718 242//883 1363//870 +f 274//762 1262//1723 1386//763 +f 532//1724 597//1725 1886//1726 +f 2117//235 2026//1224 2140//1268 +f 1392//1702 1247//1698 274//762 +f 2162//1727 508//1728 985//1729 +f 1964//1694 1469//1730 1965//1731 +f 1315//790 104//839 1331//791 +f 1392//1702 1356//780 1382//792 +f 128//534 1342//533 1336//898 +f 1285//1683 427//876 426//828 +f 1219//1348 1224//1175 1254//15 +f 1320//1416 1322//832 1321//1732 +f 1320//1416 1321//1732 1328//1686 +f 153//1733 2443//1687 1328//1686 +f 1321//1732 153//1733 1328//1686 +f 1235//1226 1244//169 1243//1734 +f 1225//1347 1224//1175 1219//1348 +f 1359//1716 353//875 1190//1711 +f 1312//1704 1473//1735 1458//1402 +f 1336//898 1342//533 147//900 +f 305//38 1333//939 1038//694 +f 1336//898 147//900 171//887 +f 516//963 31//659 19//1129 +f 2479//648 2461//776 842//1341 +f 1237//1688 1265//821 427//876 +f 1263//1690 1278//1736 1284//1689 +f 881//232 1827//1260 834//1274 +f 1237//1688 427//876 1285//1683 +f 1299//591 1312//1704 1458//1402 +f 1190//1711 1285//1683 1274//1705 +f 1363//870 286//869 1253//1699 +f 2330//1464 2303//1499 828//1437 +f 427//876 442//846 426//828 +f 2493//597 2463//245 2492//247 +f 1285//1683 380//797 1274//1705 +f 522//1094 18//490 1225//1347 +f 2471//634 2472//812 2488//635 +f 2338//1607 154//1737 1321//1732 +f 1423//1626 1415//1630 1218//1627 +f 1225//1347 18//490 1224//1175 +f 1253//1699 286//869 1262//1723 +f 286//869 353//875 1359//1716 +f 171//887 1368//1718 1383//1738 +f 1273//714 54//669 1234//698 +f 1973//950 2447//1299 527//1261 +f 1322//832 155//1608 1321//1732 +f 1203//127 1369//1720 1413//1739 +f 1307//347 363//346 1298//368 +f 1364//1740 1375//164 1329//1741 +f 1329//1741 227//163 1306//155 +f 296//366 1298//368 1343//367 +f 947//1160 2499//569 1447//1161 +f 1203//127 1047//125 1272//1619 +f 1098//1658 1748//1742 1123//1673 +f 1519//1326 1272//1619 1348//1324 +f 1277//1691 70//715 1273//714 +f 1282//1743 1337//1744 1361//1745 +f 286//869 302//871 353//875 +f 103//809 104//839 1315//790 +f 1377//262 435//261 434//1712 +f 1449//665 1261//17 1345//928 +f 926//794 1310//793 806//745 +f 1263//1690 1248//1714 1242//1722 +f 985//1729 508//1728 597//1725 +f 1415//1630 1222//1746 1218//1627 +f 88//865 1325//886 104//839 +f 170//456 111//458 156//645 +f 1384//1747 1282//1743 1361//1745 +f 274//762 1253//1699 1262//1723 +f 1371//1748 1317//149 1344//1721 +f 1371//1748 1366//1749 1337//1744 +f 1345//928 1459//854 1449//665 +f 171//887 1383//1738 1341//1713 +f 2438//1227 1235//1226 1227//962 +f 2134//1543 1582//1750 2118//1475 +f 428//1445 1260//1751 1379//1752 +f 1336//898 1341//1713 1325//886 +f 1235//1226 1242//1722 1227//962 +f 1228//578 1687//1753 2284//1754 +f 1854//1621 2140//1268 2016//1270 +f 1866//424 1887//1755 1873//1756 +f 1343//367 1298//368 1370//1757 +f 1384//1747 1361//1745 2440//1758 +f 171//887 242//883 1368//1718 +f 1344//1721 1309//1759 1366//1749 +f 1371//1748 1344//1721 1366//1749 +f 1280//1693 1377//262 1293//1760 +f 200//1045 1185//1567 205//749 +f 1330//1703 1383//1738 1368//1718 +f 1255//168 1264//778 1263//1690 +f 543//1761 1367//1762 1876//1763 +f 1343//367 1370//1757 1260//1751 +f 1293//1760 1326//1764 1370//1757 +f 2440//1758 1361//1745 1302//1765 +f 1282//1743 1384//1747 2406//1766 +f 271//161 1337//1744 1282//1743 +f 170//456 2338//1607 1323//457 +f 1528//1767 1503//437 2470//1258 +f 515//1147 1347//1768 2453//1140 +f 1997//1769 1705//1770 1998//64 +f 2285//579 1228//578 2284//1754 +f 1229//1771 1250//1772 1228//578 +f 1330//1703 1368//1718 1247//1698 +f 1919//1773 1619//1774 2045//1775 +f 1344//1721 1364//1740 1335//1776 +f 1222//1746 1240//1482 1221//1481 +f 1212//1777 858//1778 1741//1779 +f 2388//1780 1222//1746 1221//1481 +f 1528//1767 2470//1258 2068//344 +f 501//1297 1308//1296 2171//1334 +f 1295//1781 1311//198 1487//390 +f 2116//1782 1619//1774 1655//906 +f 1220//1783 1229//1771 1228//578 +f 8//1327 663//1115 573//1098 +f 1343//367 1260//1751 428//1445 +f 1337//1744 1366//1749 1361//1745 +f 1298//368 1280//1693 1293//1760 +f 1269//509 1345//928 1261//17 +f 1279//1697 381//904 1290//932 +f 1230//1784 1229//1771 1220//1783 +f 1230//1784 1245//1785 1229//1771 +f 1245//1785 1250//1772 1229//1771 +f 1227//962 1234//698 31//659 +f 1302//1765 1361//1745 1350//1786 +f 1245//1785 1266//1648 1428//1476 +f 1992//214 2023//1642 2052//1497 +f 2482//1126 2471//634 2475//633 +f 452//926 462//615 461//666 +f 271//161 1282//1743 1275//1491 +f 1991//1787 1989//1680 1934//1788 +f 1366//1749 1309//1759 1350//1786 +f 1344//1721 1335//1776 1309//1759 +f 730//1065 699//1102 974//1177 +f 1374//1636 1252//1637 1208//1286 +f 597//1725 508//1728 1912//1789 +f 1363//870 1253//1699 1368//1718 +f 1386//763 1271//1700 300//753 +f 1211//1790 1218//1627 1222//1746 +f 1376//1791 1377//262 434//1712 +f 2399//1792 2437//1684 1211//1790 +f 1284//1689 1291//777 1277//1691 +f 1230//1784 1251//1647 1245//1785 +f 1251//1647 1266//1648 1245//1785 +f 1317//149 1371//1748 1337//1744 +f 1288//1793 1286//1794 1095//1287 +f 1095//1287 1286//1794 1352//1285 +f 1241//1795 1208//1286 1352//1285 +f 1241//1795 1374//1636 1208//1286 +f 1284//1689 1278//1736 1291//777 +f 211//752 1392//1702 267//746 +f 1344//1721 1375//164 1364//1740 +f 929//208 583//207 1028//856 +f 1361//1745 1366//1749 1350//1786 +f 1115//1336 1294//1514 1639//603 +f 1291//777 103//809 1301//1692 +f 1220//1783 1231//1796 1230//1784 +f 1231//1796 1251//1647 1230//1784 +f 1234//698 1248//1714 1273//714 +f 1255//168 55//779 1264//778 +f 1360//1624 1450//1643 1702//1797 +f 363//346 1280//1693 1298//368 +f 1369//1720 1203//127 1272//1619 +f 1415//1630 1240//1482 1222//1746 +f 1216//1798 1231//1796 1220//1783 +f 1243//1734 1263//1690 1235//1226 +f 1375//164 227//163 1329//1741 +f 1264//778 1278//1736 1263//1690 +f 855//1317 899//1374 961//679 +f 1286//1794 1241//1795 1352//1285 +f 2081//840 2128//1474 2107//927 +f 1223//1625 1433//1606 1423//1626 +f 1473//1735 1312//1704 155//1608 +f 154//1737 153//1733 1321//1732 +f 1377//262 1376//1791 1293//1760 +f 1392//1702 274//762 267//746 +f 334//754 300//753 1271//1700 +f 1955//1322 1991//1787 1934//1788 +f 1613//1400 1327//1799 1288//1793 +f 1327//1799 1286//1794 1288//1793 +f 1349//1800 1374//1636 1241//1795 +f 2370//1801 2025//426 2367//428 +f 1315//790 1331//791 133//767 +f 434//1712 446//287 1256//1802 +f 1232//1803 1251//1647 1231//1796 +f 1243//1734 1244//169 1255//168 +f 1286//1794 1304//1804 1241//1795 +f 1349//1800 1107//1355 1374//1636 +f 1359//1716 1271//1700 1386//763 +f 1227//962 516//963 2431//1520 +f 219//167 240//135 1348//1324 +f 1270//1492 271//161 1275//1491 +f 1255//168 1263//1690 1243//1734 +f 2026//1224 1926//1805 29//1696 +f 1683//122 2157//1649 1212//1777 +f 1326//1764 1293//1760 1376//1791 +f 1255//168 32//170 55//779 +f 104//839 1325//886 1341//1713 +f 519//680 2462//325 2475//633 +f 2154//1806 2161//1332 2137//1807 +f 1376//1791 434//1712 1246//1808 +f 1246//1808 434//1712 1256//1802 +f 1257//1535 1251//1647 1232//1803 +f 1262//1723 1359//1716 1386//763 +f 2195//1533 2192//1532 2186//1809 +f 1308//1296 534//1031 1226//217 +f 2026//1224 2117//235 544//244 +f 1327//1799 1613//1400 1324//1547 +f 1327//1799 1326//1764 1286//1794 +f 1286//1794 1326//1764 1304//1804 +f 104//839 1341//1713 1331//791 +f 774//1176 524//530 880//1545 +f 837//1810 1517//1032 534//1031 +f 1127//1677 1123//1673 1567//1811 +f 1279//1697 1237//1688 1285//1683 +f 1297//1812 1381//96 1294//1514 +f 1217//1813 1232//1803 1216//1798 +f 1142//1263 1519//1326 13//1325 +f 1436//1477 1267//1467 1287//1478 +f 1324//1547 1372//1814 1327//1799 +f 1304//1804 1246//1808 1241//1795 +f 1246//1808 1349//1800 1241//1795 +f 1246//1808 1373//1815 1349//1800 +f 286//869 1359//1716 1262//1723 +f 1382//792 1383//1738 1330//1703 +f 1284//1689 1277//1691 1273//714 +f 489//62 1998//64 1799//1448 +f 1675//1816 1116//1265 1075//827 +f 106//147 1317//149 1337//1744 +f 1311//198 1295//1781 1281//1817 +f 1292//1818 1364//1740 1329//1741 +f 1335//1776 1364//1740 1292//1818 +f 1334//1335 1294//1514 1115//1336 +f 1334//1335 1297//1812 1294//1514 +f 1300//97 1381//96 1297//1812 +f 973//1342 842//1341 2461//776 +f 1217//1813 1239//1819 1232//1803 +f 1232//1803 1239//1819 1257//1535 +f 1258//1466 1267//1467 1436//1477 +f 1359//1716 1190//1711 1274//1705 +f 1862//451 1405//453 1877//462 +f 1372//1814 1339//1820 1327//1799 +f 1339//1820 1326//1764 1327//1799 +f 1373//1815 1351//1821 1349//1800 +f 1276//196 1311//198 1281//1817 +f 1256//1802 2386//1822 1351//1821 +f 2//110 1109//98 1300//97 +f 482//1823 1731//1824 520//1825 +f 803//1826 1604//1827 2022//1828 +f 1223//1625 1218//1627 1211//1790 +f 1341//1713 1383//1738 1382//792 +f 1298//368 1293//1760 1370//1757 +f 1190//1711 1354//890 1279//1697 +f 1324//1547 2398//1829 1372//1814 +f 1714//1830 1700//1831 2173//1554 +f 183//216 2000//63 489//62 +f 1701//1406 1666//1408 192//1832 +f 1227//962 1242//1722 1234//698 +f 1332//1833 1289//1376 1310//793 +f 1517//1032 2005//1834 2130//1678 +f 1331//791 1341//1713 1382//792 +f 525//1239 1249//817 1236//535 +f 23//178 1268//1835 1450//1643 +f 1264//778 1291//777 1278//1736 +f 1281//1817 1287//1478 1267//1467 +f 1295//1781 1305//997 1287//1478 +f 1281//1817 1295//1781 1287//1478 +f 1487//390 1305//997 1295//1781 +f 1605//1836 2097//1837 2058//1838 +f 1326//1764 1376//1791 1304//1804 +f 1304//1804 1376//1791 1246//1808 +f 1316//394 1919//1773 1984//1839 +f 2500//233 1949//1319 2460//407 +f 1332//1833 1313//1377 1289//1376 +f 2189//1840 2181//1841 2177//1471 +f 1335//1776 1334//1335 1353//1337 +f 1292//1818 1297//1812 1334//1335 +f 1428//1476 1250//1772 1245//1785 +f 969//879 958//1424 952//1423 +f 1217//1813 1233//278 1239//1819 +f 1233//278 1257//1535 1239//1819 +f 1876//1763 1367//1762 1338//1842 +f 1379//1752 1260//1751 1372//1814 +f 1372//1814 1260//1751 1339//1820 +f 1128//795 1302//1765 1310//793 +f 1310//793 1302//1765 1332//1833 +f 1335//1776 1353//1337 1313//1377 +f 1292//1818 1334//1335 1335//1776 +f 1297//1812 1329//1741 1300//97 +f 1279//1697 1290//932 1237//1688 +f 1301//1692 103//809 1314//768 +f 70//715 1301//1692 102//739 +f 23//178 1333//939 1268//1835 +f 380//797 1285//1683 390//806 +f 772//1843 325//200 1275//1491 +f 1314//768 103//809 1315//790 +f 2473//29 2458//311 2487//310 +f 1276//196 1281//1817 1267//1467 +f 1344//1721 95//151 1375//164 +f 2053//1844 1771//786 1572//785 +f 1246//1808 1256//1802 1373//1815 +f 1373//1815 1256//1802 1351//1821 +f 1340//1845 1302//1765 1128//795 +f 1350//1786 1313//1377 1332//1833 +f 1329//1741 1297//1812 1292//1818 +f 2434//27 2473//29 2487//310 +f 106//147 1337//1744 271//161 +f 23//178 471//158 1333//939 +f 622//1109 723//1151 509//1645 +f 1388//1280 1517//1032 2127//1071 +f 1991//1787 1990//1681 1989//1680 +f 183//216 1636//1557 1226//217 +f 2133//1846 1605//1836 2151//1633 +f 1260//1751 1370//1757 1339//1820 +f 1339//1820 1370//1757 1326//1764 +f 867//1458 1894//1847 1902//1276 +f 390//806 426//828 412//781 +f 1235//1226 1263//1690 1242//1722 +f 1399//1587 1422//276 1233//278 +f 305//38 11//882 1333//939 +f 1300//97 1329//1741 1306//155 +f 1302//1765 1350//1786 1332//1833 +f 1350//1786 1309//1759 1313//1377 +f 1309//1759 1335//1776 1313//1377 +f 2470//1258 2102//1848 1502//231 +f 1787//1849 1531//1850 1599//1851 +f 1724//1852 1725//1853 1691//1854 +f 1827//1260 1601//1259 1927//1855 +f 1678//1856 1358//1857 1476//1858 +f 1823//95 1812//307 1846//1430 +f 1805//120 1824//1859 1708//1431 +f 1746//1860 1676//1861 1797//1862 +f 325//200 2395//229 429//218 +f 1835//1253 1677//1125 1826//1863 +f 1507//123 1790//1864 1722//1386 +f 1526//1865 1672//1866 858//1778 +f 158//929 147//900 1342//533 +f 1462//831 1473//1735 1322//832 +f 1474//438 1414//1867 1565//436 +f 1761//1868 1900//463 1877//462 +f 940//152 1759//1662 1008//1869 +f 1565//436 1015//1870 1008//1869 +f 1924//1184 1533//1871 1933//1872 +f 1878//423 826//425 830//750 +f 1565//436 1414//1867 1015//1870 +f 1402//1610 1088//1609 1008//1869 +f 1538//1873 1532//1874 1651//478 +f 1015//1870 1552//1875 1008//1869 +f 1538//1873 1591//1876 1474//438 +f 1532//1874 1538//1873 1474//438 +f 1474//438 1591//1876 1414//1867 +f 1484//1877 1402//1610 1008//1869 +f 1552//1875 1484//1877 1008//1869 +f 1414//1867 1460//1878 1015//1870 +f 1015//1870 1460//1878 1552//1875 +f 806//745 1289//1376 945//302 +f 1597//1879 1538//1873 1659//1880 +f 1484//1877 1319//1685 1402//1610 +f 1056//1563 1402//1610 1319//1685 +f 1538//1873 1597//1879 1591//1876 +f 1591//1876 960//1881 1414//1867 +f 1414//1867 960//1881 1460//1878 +f 1925//86 1466//1882 1455//84 +f 1552//1875 1400//1883 1484//1877 +f 1484//1877 1400//1883 1319//1685 +f 1400//1883 113//1884 1319//1685 +f 1597//1879 1580//1885 1591//1876 +f 1460//1878 1400//1883 1552//1875 +f 1514//303 1441//1439 966//1362 +f 1597//1879 1659//1880 1409//744 +f 1657//1886 113//1884 1400//1883 +f 1460//1878 1657//1886 1400//1883 +f 1288//1793 1095//1287 1634//1339 +f 1551//1525 1597//1879 1409//744 +f 1580//1885 1598//1887 1591//1876 +f 1591//1876 1598//1887 960//1881 +f 1536//1382 1990//1681 2031//842 +f 960//1881 1657//1886 1460//1878 +f 1809//1888 1746//1860 1797//1862 +f 1423//1626 1433//1606 1432//664 +f 2478//743 1362//1526 1409//744 +f 1463//1639 1545//1461 113//1884 +f 1657//1886 1463//1639 113//1884 +f 1457//996 1287//1478 1305//997 +f 1682//1889 1716//1890 1746//1860 +f 1434//1891 1761//1868 1885//1892 +f 1013//1202 1139//605 1617//1479 +f 2379//1893 1362//1526 2478//743 +f 1420//1894 1597//1879 1551//1525 +f 1420//1894 1580//1885 1597//1879 +f 1664//1895 1808//1896 1712//1897 +f 2256//1898 2250//1899 2231//1900 +f 1362//1526 1551//1525 1409//744 +f 2196//1901 2214//1902 2213//1903 +f 1691//1854 1725//1853 1777//1904 +f 1626//1905 192//1832 1666//1408 +f 1534//1906 1574//1907 2058//1838 +f 1574//1907 1600//1908 1605//1836 +f 1600//1908 1606//1909 1605//1836 +f 1606//1909 1641//1634 1605//1836 +f 1573//445 1420//1894 1551//1525 +f 1657//1886 1485//1910 1463//1639 +f 678//1440 1806//1911 1742//1912 +f 1534//1906 1553//1913 1574//1907 +f 1574//1907 1575//1914 1600//1908 +f 1810//1915 2170//1632 585//1916 +f 1623//1917 1641//1634 1606//1909 +f 1407//1918 1657//1886 960//1881 +f 1598//1887 1407//1918 960//1881 +f 1485//1910 1142//1263 1463//1639 +f 1716//1890 1581//1919 1676//1861 +f 1738//1920 1743//1921 1733//1922 +f 843//1316 2064//613 835//1059 +f 1539//1923 1575//1914 1574//1907 +f 1553//1913 1539//1923 1574//1907 +f 1575//1914 1592//1924 1600//1908 +f 1592//1924 1624//1925 1606//1909 +f 1600//1908 1592//1924 1606//1909 +f 1642//1710 585//1916 1641//1634 +f 1623//1917 1642//1710 1641//1634 +f 1485//1910 164//1926 1142//1263 +f 1738//1920 1516//121 1743//1921 +f 1809//1888 1720//784 1798//1432 +f 1533//1871 1535//1927 1534//1906 +f 1592//1924 1607//1928 1624//1925 +f 1624//1925 1623//1917 1606//1909 +f 1163//816 566//1168 1116//1265 +f 1407//1918 1485//1910 1657//1886 +f 1432//664 1449//665 1439//855 +f 1100//77 802//1605 2382//1197 +f 1743//1921 1516//121 1722//1386 +f 1746//1860 1716//1890 1676//1861 +f 1535//1927 1539//1923 1534//1906 +f 1534//1906 1539//1923 1553//1913 +f 1642//1710 1623//1917 1624//1925 +f 1095//1287 1208//1286 1654//31 +f 967//1929 1407//1918 1598//1887 +f 1580//1885 967//1929 1598//1887 +f 1809//1888 1797//1862 1720//784 +f 1924//1184 1524//1930 1535//1927 +f 1533//1871 1924//1184 1535//1927 +f 1539//1923 1576//1931 1575//1914 +f 1642//1710 216//1450 585//1916 +f 1407//1918 1529//1932 1485//1910 +f 1485//1910 1529//1932 164//1926 +f 1472//1468 1462//831 1482//833 +f 1415//1630 1431//1212 1240//1482 +f 966//1362 1194//1438 714//419 +f 383//99 1182//101 152//1668 +f 474//288 2337//1291 446//287 +f 1743//1921 1841//1385 1757//1933 +f 1486//1934 1524//1930 1924//1184 +f 1535//1927 1525//1935 1539//1923 +f 1575//1914 1576//1931 1592//1924 +f 1420//1894 967//1929 1580//1885 +f 1288//1793 1634//1339 1613//1400 +f 459//857 427//876 1265//821 +f 1404//1936 2179//1523 1393//1937 +f 1404//1936 1403//859 1800//1938 +f 1404//1936 1410//1939 1403//859 +f 1410//1939 1749//1940 1403//859 +f 1349//1800 1351//1821 218//1356 +f 1486//1934 1498//1941 1524//1930 +f 1535//1927 1524//1930 1525//1935 +f 1607//1928 1636//1557 1624//1925 +f 183//216 1642//1710 1624//1925 +f 1636//1557 183//216 1624//1925 +f 1107//1355 1349//1800 218//1356 +f 1351//1821 845//1942 218//1356 +f 164//1926 1519//1326 1142//1263 +f 845//1942 413//1350 218//1356 +f 1525//1935 1576//1931 1539//1923 +f 1576//1931 1582//1750 1592//1924 +f 1592//1924 2134//1543 1607//1928 +f 2134//1543 1636//1557 1607//1928 +f 2147//1943 1491//1944 1401//1596 +f 1407//1918 1589//1945 1529//1932 +f 1529//1932 1519//1326 164//1926 +f 1693//1946 1763//858 1444//860 +f 1924//1184 1479//1183 1486//1934 +f 1592//1924 1582//1750 2134//1543 +f 499//1379 165//472 874//471 +f 2176//1469 1857//1947 1959//1494 +f 2327//1948 2368//1949 2326//1950 +f 2358//446 821//1951 953//444 +f 953//444 821//1951 1573//445 +f 1824//1859 1704//1952 1464//1953 +f 1731//1824 1358//1857 1678//1856 +f 1394//1954 1410//1939 1404//1936 +f 1394//1954 1418//529 1410//1939 +f 1466//1882 1479//1183 1839//1955 +f 1486//1934 1479//1183 1498//1941 +f 1498//1941 1525//1935 1524//1930 +f 1576//1931 2080//1956 1582//1750 +f 1785//1957 1684//1288 1898//1304 +f 804//79 398//145 802//1605 +f 804//79 925//1357 398//145 +f 1447//1161 1562//1958 2358//446 +f 2358//446 1562//1958 821//1951 +f 821//1951 1620//1959 1573//445 +f 1620//1959 1420//1894 1573//445 +f 1420//1894 1556//1960 967//1929 +f 1393//1937 1394//1954 1404//1936 +f 1525//1935 2080//1956 1576//1931 +f 1621//1961 1420//1894 1620//1959 +f 1621//1961 1556//1960 1420//1894 +f 967//1929 1589//1945 1407//1918 +f 1505//1962 5//1963 1357//1964 +f 1266//1648 1258//1466 1436//1477 +f 1393//1937 1395//1965 1394//1954 +f 2176//1469 2175//1262 1848//1966 +f 1455//84 1466//1882 1839//1955 +f 1525//1935 1540//1096 2080//1956 +f 1582//1750 2080//1956 2118//1475 +f 1100//77 804//79 802//1605 +f 1556//1960 1589//1945 967//1929 +f 1589//1945 1082//1967 1529//1932 +f 1093//1968 1685//1447 1357//1964 +f 1504//1269 1093//1968 1357//1964 +f 1425//1969 1418//529 1394//1954 +f 1475//1970 1479//1183 1466//1882 +f 1479//1183 1506//1971 1498//1941 +f 1789//51 1784//1972 1730//510 +f 2501//405 2465//678 2489//632 +f 1438//1211 1458//1402 1430//1378 +f 1462//831 1458//1402 1473//1735 +f 1454//1973 805//1719 1529//1932 +f 1082//1967 1454//1973 1529//1932 +f 1529//1932 805//1719 1519//1326 +f 1425//1969 1394//1954 1395//1965 +f 1425//1969 1744//527 1418//529 +f 1479//1183 1475//1970 1506//1971 +f 1540//1096 2060//841 2080//1956 +f 1556//1960 1082//1967 1589//1945 +f 1443//656 945//302 1511//304 +f 1506//1971 1536//1382 1498//1941 +f 1498//1941 1536//1382 1525//1935 +f 1525//1935 1536//1382 1540//1096 +f 1670//1974 852//1975 1672//1866 +f 1998//64 1388//1280 1389//1976 +f 1511//304 966//1362 1509//1622 +f 1509//1622 966//1362 714//419 +f 1442//1358 1443//656 1496//1360 +f 1562//1958 1635//1977 821//1951 +f 155//1608 1322//832 1473//1735 +f 1439//855 1458//1402 1438//1211 +f 1426//1978 1425//1969 1395//1965 +f 1475//1970 1499//1979 1506//1971 +f 1735//1980 1588//1981 1776//1982 +f 2422//1521 2454//1139 2421//1983 +f 1423//1626 1432//664 1415//1630 +f 1559//1984 2101//1985 2073//1986 +f 845//1942 866//1987 413//1350 +f 1429//1988 1620//1959 821//1951 +f 1620//1959 1429//1988 1621//1961 +f 1228//578 1250//1772 1687//1753 +f 1002//78 945//302 1443//656 +f 2382//1197 802//1605 1083//144 +f 1859//983 1411//1989 1395//1965 +f 1411//1989 1426//1978 1395//1965 +f 1426//1978 1744//527 1425//1969 +f 1590//852 1437//851 1483//691 +f 1480//1990 1475//1970 1466//1882 +f 1480//1990 1499//1979 1475//1970 +f 1510//1991 1733//1922 1743//1921 +f 1663//1992 1696//205 1658//1993 +f 1430//1378 1453//1381 1452//1502 +f 1452//1502 1472//1468 1471//197 +f 1452//1502 1471//197 1448//1503 +f 1430//1378 1452//1502 1421//277 +f 1430//1378 1421//277 1422//276 +f 1429//1988 1082//1967 1556//1960 +f 1621//1961 1429//1988 1556//1960 +f 1351//1821 2386//1822 845//1942 +f 1126//14 1059//13 487//492 +f 1639//603 1437//851 1563//850 +f 1504//1269 1928//1582 1093//1968 +f 1499//1979 1536//1382 1506//1971 +f 1588//1981 1770//1994 1727//1995 +f 1110//1573 1747//1254 1397//1580 +f 1776//1982 1588//1981 1531//1850 +f 1322//832 1320//1416 1482//833 +f 1590//852 1629//620 1571//619 +f 1730//510 1877//462 1838//461 +f 1429//1988 935//1996 1082//1967 +f 1082//1967 935//1996 1454//1973 +f 804//79 1443//656 925//1357 +f 1139//605 1007//1201 1639//603 +f 1925//86 1480//1990 1466//1882 +f 1934//1788 1989//1680 1480//1990 +f 1499//1979 1989//1680 1536//1382 +f 1727//1995 1526//1865 1531//1850 +f 1593//1997 1614//1998 502//1999 +f 2455//2000 2431//1520 2400//1369 +f 1755//1449 1680//1506 908//2001 +f 1563//850 1571//619 1564//604 +f 1647//2 1078//211 1501//421 +f 2490//1235 1635//1977 1106//1321 +f 1496//1360 1511//304 717//69 +f 2454//1139 2431//1520 516//963 +f 1478//2002 1153//1570 1093//1968 +f 1870//1234 1426//1978 1411//1989 +f 1426//1978 1723//1359 1744//527 +f 962//1417 986//1426 1412//222 +f 717//69 1511//304 1509//1622 +f 1825//2003 1704//1952 1824//1859 +f 2225//2004 2234//2005 2253//2006 +f 1490//70 1557//171 1188//105 +f 1635//1977 80//2007 821//1951 +f 805//1719 1454//1973 935//1996 +f 1186//1292 706//1018 695//1229 +f 1194//1438 1161//1443 714//419 +f 1512//420 1007//1201 1013//1202 +f 592//267 97//357 204//195 +f 1258//1466 1266//1648 1257//1535 +f 82//607 1333//939 471//158 +f 1694//1245 1710//614 1505//1962 +f 1643//2008 490//2009 1661//2010 +f 1661//2010 490//2009 1114//2011 +f 1518//1104 2068//344 2484//343 +f 1750//2012 1808//1896 1664//1895 +f 1656//1562 1635//1977 2490//1235 +f 935//1996 1521//2013 805//1719 +f 1546//1312 1629//620 1076//1310 +f 1301//1692 70//715 1277//1691 +f 966//1362 1441//1439 1194//1438 +f 1148//331 1825//2003 1824//1859 +f 1614//1998 1609//2014 1643//2008 +f 1114//2011 1092//2015 1921//1216 +f 1770//1994 1739//1488 1670//1974 +f 1631//330 1632//30 1646//32 +f 821//1951 1016//2016 1429//1988 +f 1429//1988 1016//2016 935//1996 +f 1632//30 1095//1287 1654//31 +f 1083//144 262//146 688//160 +f 1724//1852 1686//2017 1725//1853 +f 1644//2018 490//2009 1643//2008 +f 1092//2015 1149//1453 1921//1216 +f 3//1594 893//2019 1832//2020 +f 988//1375 1640//191 1188//105 +f 916//934 1107//1355 284//1351 +f 1656//1562 80//2007 1635//1977 +f 1016//2016 821//1951 80//2007 +f 1016//2016 1521//2013 935//1996 +f 1478//2002 1202//36 1153//1570 +f 1401//1596 1928//1582 29//1696 +f 1440//37 1478//2002 1928//1582 +f 1849//2021 1700//1831 1865//2022 +f 1595//81 1611//187 1612//1228 +f 1208//1286 198//1340 341//133 +f 1464//1953 1704//1952 1746//1860 +f 2143//2023 984//2024 1721//2025 +f 1848//1966 1849//2021 1868//2026 +f 1662//2027 1114//2011 490//2009 +f 1669//2028 1787//1849 1682//1889 +f 1656//1562 1618//2029 80//2007 +f 198//1340 1208//1286 916//934 +f 1440//37 1928//1582 1401//1596 +f 1521//2013 1369//1720 805//1719 +f 1252//1637 1107//1355 916//934 +f 1745//1414 678//1440 1672//1866 +f 1703//2030 1779//2031 1721//2025 +f 1750//2012 1465//1584 1808//1896 +f 1609//2014 1644//2018 1643//2008 +f 1092//2015 1114//2011 1662//2027 +f 1826//1863 1523//1510 1793//2032 +f 2262//1707 2261//1709 2224//2033 +f 1696//205 2166//2034 1767//206 +f 1016//2016 1648//2035 1521//2013 +f 1208//1286 1252//1637 916//934 +f 833//138 688//160 1067//1364 +f 1794//1507 1803//1387 1558//1538 +f 28//338 17//1230 512//1136 +f 1750//2012 861//2036 1566//2037 +f 1594//2038 1644//2018 1609//2014 +f 1644//2018 1645//2039 490//2009 +f 490//2009 1645//2039 1662//2027 +f 2229//2040 2262//1707 2224//2033 +f 1602//2041 861//2036 1760//2042 +f 1530//2043 1777//1904 1760//2042 +f 872//1493 1706//1500 1673//1056 +f 1696//205 1668//1537 2166//2034 +f 1708//1431 1809//1888 1798//1432 +f 1581//1919 1716//1890 1814//2044 +f 1709//1407 1794//1507 1680//1506 +f 1233//278 1421//277 1257//1535 +f 1724//1852 1476//1858 1686//2017 +f 1469//1730 1481//2045 1965//1731 +f 1965//1731 1481//2045 1492//2046 +f 2073//1986 1549//2047 1559//1984 +f 1594//2038 1615//2048 1644//2018 +f 1799//1448 1706//1500 1755//1449 +f 1725//1853 1686//2017 1837//2049 +f 1720//784 1797//1862 1572//785 +f 1618//2029 2467//868 2022//1828 +f 1618//2029 1579//2050 80//2007 +f 1648//2035 1016//2016 80//2007 +f 2134//1543 2152//1550 1636//1557 +f 1611//187 1632//30 1631//330 +f 1761//1868 1434//1891 1470//2051 +f 1559//1984 1577//2052 1594//2038 +f 1603//2053 1615//2048 1594//2038 +f 1615//2048 1645//2039 1644//2018 +f 1637//2054 1662//2027 1645//2039 +f 1662//2027 1199//2055 1092//2015 +f 1199//2055 1149//1453 1092//2015 +f 1451//2056 1108//2057 1149//1453 +f 665//185 734//184 756//1413 +f 1865//2022 1700//1831 1714//1830 +f 1709//1407 1841//1385 1794//1507 +f 1618//2029 2022//1828 1579//2050 +f 1648//2035 1413//1739 1369//1720 +f 1521//2013 1648//2035 1369//1720 +f 1520//1717 11//882 1401//1596 +f 1446//2058 1470//2051 1434//1891 +f 1798//1432 1691//1854 1754//2059 +f 2063//2060 1544//2061 2073//1986 +f 2073//1986 1544//2061 1549//2047 +f 1594//2038 1577//2052 1603//2053 +f 1615//2048 1637//2054 1645//2039 +f 1637//2054 1199//2055 1662//2027 +f 1427//2062 1149//1453 1199//2055 +f 2167//2063 1108//2057 1451//2056 +f 1997//1769 1673//1056 1705//1770 +f 1706//1500 1799//1448 1705//1770 +f 1841//1385 1709//1407 1757//1933 +f 1604//1827 1579//2050 2022//1828 +f 1579//2050 707//2064 80//2007 +f 80//2007 707//2064 1648//2035 +f 1520//1717 1401//1596 1491//1944 +f 1649//2065 1520//1717 1491//1944 +f 1435//2066 1434//1891 1885//1892 +f 1470//2051 1469//1730 1461//2067 +f 1481//2045 1508//2068 2024//2069 +f 2370//1801 1544//2061 2063//2060 +f 1549//2047 1568//2070 1559//1984 +f 1559//1984 1568//2070 1577//2052 +f 1603//2053 1610//2071 1615//2048 +f 1615//2048 1610//2071 1637//2054 +f 999//2072 1199//2055 1637//2054 +f 1451//2056 1149//1453 1427//2062 +f 1137//853 1825//2003 1148//331 +f 1706//1500 1705//1770 1673//1056 +f 1138//2073 1604//1827 2116//1782 +f 1138//2073 1579//2050 1604//1827 +f 1413//1739 1648//2035 707//2064 +f 2360//427 2024//2069 1508//2068 +f 598//825 1075//827 1116//1265 +f 229//770 93//993 1468//992 +f 1839//1955 1479//1183 1684//1288 +f 2216//1518 2229//2040 2224//2033 +f 1610//2071 1625//2074 1637//2054 +f 329//2075 999//2072 1637//2054 +f 1199//2055 1017//1660 1427//2062 +f 1017//1660 303//281 1427//2062 +f 303//281 1451//2056 1427//2062 +f 1792//2076 1754//2059 1777//1904 +f 2309//1279 2391//1278 2301//2077 +f 1655//906 1138//2073 2116//1782 +f 1138//2073 707//2064 1579//2050 +f 1649//2065 1491//1944 206//2078 +f 1406//2079 1885//1892 1398//75 +f 1406//2079 1419//2080 1885//1892 +f 1419//2080 1435//2066 1885//1892 +f 1434//1891 1435//2066 1446//2058 +f 1470//2051 1481//2045 1469//1730 +f 1577//2052 1583//1527 1603//2053 +f 999//2072 1017//1660 1199//2055 +f 81//2081 67//2082 941//2083 +f 67//2082 1650//2084 941//2083 +f 1259//2085 1815//2086 2164//1371 +f 1619//1774 2116//1782 2045//1775 +f 1424//2087 707//2064 1138//2073 +f 1702//1797 1649//2065 206//2078 +f 1687//1753 1406//2079 1398//75 +f 1477//998 1481//2045 1470//2051 +f 1568//2070 1569//2088 1577//2052 +f 1577//2052 1569//2088 1583//1527 +f 1603//2053 1583//1527 1610//2071 +f 1625//2074 329//2075 1637//2054 +f 2167//2063 340//1522 273//396 +f 81//2081 273//396 340//1522 +f 81//2081 962//1417 67//2082 +f 1547//119 1619//1774 1488//221 +f 1830//2089 1739//1488 1770//1994 +f 938//905 1424//2087 1138//2073 +f 1424//2087 1413//1739 707//2064 +f 1527//2090 1649//2065 1702//1797 +f 1527//2090 1520//1717 1649//2065 +f 1527//2090 1268//1835 1520//1717 +f 1250//1772 1406//2079 1687//1753 +f 1441//1439 1353//1337 1115//1336 +f 1203//127 1413//1739 1051//128 +f 1250//1772 1419//2080 1406//2079 +f 1477//998 2372//1682 1481//2045 +f 1481//2045 2372//1682 1508//2068 +f 2449//283 1560//2091 1568//2070 +f 1549//2047 2449//283 1568//2070 +f 1568//2070 1560//2091 1569//2088 +f 1569//2088 1584//41 1583//1527 +f 1652//234 329//2075 1625//2074 +f 329//2075 817//1420 999//2072 +f 285//1395 1017//1660 999//2072 +f 303//281 10//280 1451//2056 +f 10//280 2167//2063 1451//2056 +f 1412//222 1650//2084 67//2082 +f 1412//222 1488//221 1650//2084 +f 1547//119 1023//1679 1619//1774 +f 1023//1679 1655//906 1619//1774 +f 1655//906 938//905 1138//2073 +f 1456//1311 1413//1739 1424//2087 +f 1457//996 1470//2051 1446//2058 +f 1457//996 1477//998 1470//2051 +f 329//2075 1652//234 817//1420 +f 10//280 340//1522 2167//2063 +f 938//905 1546//1312 1424//2087 +f 1546//1312 1456//1311 1424//2087 +f 1259//2085 1548//2092 1779//2031 +f 2052//1497 2031//842 1990//1681 +f 1440//37 1202//36 1478//2002 +f 1428//1476 1419//2080 1250//1772 +f 1428//1476 1435//2066 1419//2080 +f 1428//1476 1446//2058 1435//2066 +f 1934//1788 1935//85 1955//1322 +f 1560//2091 1584//41 1569//2088 +f 1610//2071 1638//223 1625//2074 +f 1638//223 1652//234 1625//2074 +f 817//1420 1077//823 999//2072 +f 1077//823 285//1395 999//2072 +f 980//279 303//281 1017//1660 +f 962//1417 1412//222 67//2082 +f 1494//212 1023//1679 1547//119 +f 325//200 271//161 1270//1492 +f 1443//656 1511//304 1496//1360 +f 1450//1643 1268//1835 1527//2090 +f 1514//303 1353//1337 1441//1439 +f 1287//1478 1446//2058 1428//1476 +f 1446//2058 1287//1478 1457//996 +f 1305//997 2372//1682 1477//998 +f 1992//214 1990//1681 1991//1787 +f 1992//214 1991//1787 1971//215 +f 1971//215 1991//1787 1955//1322 +f 2449//283 1549//2047 2418//284 +f 1583//1527 1616//186 1610//2071 +f 1610//2071 1616//186 1638//223 +f 10//280 1396//1401 340//1522 +f 340//1522 1445//1418 81//2081 +f 1445//1418 962//1417 81//2081 +f 1790//1864 984//2024 1753//2093 +f 984//2024 2148//2094 1753//2093 +f 1588//1981 1713//2095 1770//1994 +f 969//879 978//878 958//1424 +f 1741//1779 1779//2031 1703//2030 +f 1758//2096 1846//1430 1754//2059 +f 1827//1260 1819//1615 1029//1559 +f 1818//2097 1530//2043 1712//1897 +f 1750//2012 1566//2037 2127//1071 +f 2459//570 2434//27 2483//775 +f 1798//1432 1720//784 1771//786 +f 1794//1507 1841//1385 1803//1387 +f 216//1450 1755//1449 1810//1915 +f 1098//1658 1735//1980 1748//1742 +f 1735//1980 1497//2098 1748//1742 +f 1502//231 2102//1848 1601//1259 +f 881//232 1502//231 1601//1259 +f 1455//84 1839//1955 1744//527 +f 1706//1500 1709//1407 1680//1506 +f 1212//1777 1741//1779 1703//2030 +f 1788//2099 1969//1472 1671//1539 +f 1075//827 1074//826 1692//1329 +f 951//1273 2500//233 881//232 +f 2490//1235 2486//568 2463//245 +f 1748//1742 1497//2098 1781//2100 +f 1721//2025 984//2024 1840//2101 +f 1815//2086 1259//2085 1741//1779 +f 1626//1905 1756//1055 1837//2049 +f 975//911 987//371 1542//2102 +f 2230//2103 2236//2104 2235//2105 +f 1772//1405 678//1440 734//184 +f 1542//2102 1671//1539 975//911 +f 1806//1911 1772//1405 1780//1372 +f 678//1440 1772//1405 1806//1911 +f 2218//2106 2225//2004 2268//2107 +f 1828//1425 1732//974 2007//1496 +f 1526//1865 1688//2108 1531//1850 +f 1752//2109 1526//1865 1554//2110 +f 1844//2111 1818//2097 1712//1897 +f 1823//95 1846//1430 1804//71 +f 1781//2100 1669//2028 1704//1952 +f 1721//2025 1779//2031 2143//2023 +f 1770//1994 1670//1974 1526//1865 +f 1497//2098 1669//2028 1781//2100 +f 1098//1658 1713//2095 1735//1980 +f 1742//1912 1815//2086 1741//1779 +f 1526//1865 858//1778 1875//1651 +f 1599//1851 1531//1850 1688//2108 +f 1803//1387 1790//1864 1558//1538 +f 1703//2030 1721//2025 1683//122 +f 1832//2020 1766//2112 957//2113 +f 1542//2102 1679//2114 1671//1539 +f 1679//2114 1788//2099 1671//1539 +f 1927//1855 1819//1615 1827//1260 +f 1718//1415 1745//1414 1739//1488 +f 1684//1288 1022//528 1839//1955 +f 1459//854 1283//556 1299//591 +f 1022//528 1410//1939 1418//529 +f 2368//1949 2393//2115 2326//1950 +f 1669//2028 1497//2098 1776//1982 +f 1875//1651 858//1778 1212//1777 +f 1739//1488 1745//1414 852//1975 +f 1964//1694 1918//1143 1461//2067 +f 1356//780 133//767 1331//791 +f 1765//994 1829//1487 1468//992 +f 858//1778 1742//1912 1741//1779 +f 1006//623 1674//625 1021//1390 +f 1723//1359 1936//1328 1935//85 +f 1468//992 1713//2095 1098//1658 +f 1724//1852 1678//1856 1476//1858 +f 1680//1506 1783//1508 908//2001 +f 1731//1824 1543//2116 520//1825 +f 1683//122 1721//2025 1840//2101 +f 1467//2117 1679//2114 1542//2102 +f 1812//307 1708//1431 1846//1430 +f 1679//2114 1975//2118 1788//2099 +f 1713//2095 1830//2089 1770//1994 +f 1803//1387 1722//1386 1790//1864 +f 2301//2077 2391//1278 2349//2119 +f 1713//2095 1588//1981 1735//1980 +f 1836//2120 1530//2043 1818//2097 +f 1837//2049 1756//1055 861//2036 +f 886//1250 571//1008 556//1551 +f 1181//111 1805//120 1812//307 +f 1706//1500 1680//1506 1755//1449 +f 1677//1125 1729//764 1775//1363 +f 1776//1982 1787//1849 1669//2028 +f 1526//1865 1670//1974 1672//1866 +f 1727//1995 1770//1994 1526//1865 +f 987//371 1467//2117 1542//2102 +f 1567//1811 1704//1952 1137//853 +f 1693//1946 1865//2022 1714//1830 +f 897//254 1762//1511 912//271 +f 1135//1597 1697//1620 1062//1617 +f 1697//1620 376//1561 1062//1617 +f 1543//2116 1731//1824 1678//1856 +f 1793//2032 1679//2114 1467//2117 +f 1777//1904 1602//2041 1760//2042 +f 1846//1430 1798//1432 1754//2059 +f 1835//1253 1096//765 1677//1125 +f 1033//154 1030//830 940//152 +f 1450//1643 1527//2090 1702//1797 +f 1717//2121 376//1561 1697//1620 +f 1711//2122 1717//2121 1697//1620 +f 1717//2121 165//472 376//1561 +f 1840//2101 984//2024 1790//1864 +f 1669//2028 1746//1860 1704//1952 +f 1669//2028 1682//1889 1746//1860 +f 2301//2077 2349//2119 2308//2123 +f 1882//1399 1444//860 1898//1304 +f 1820//1233 1789//51 1730//510 +f 861//2036 1380//1054 1566//2037 +f 2301//2077 2308//2123 2266//2124 +f 1771//786 1543//2116 1691//1854 +f 1958//477 1659//1880 1651//478 +f 1697//1620 1360//1624 1711//2122 +f 1711//2122 1737//2125 1717//2121 +f 1717//2121 1737//2125 165//472 +f 1790//1864 1753//2093 1558//1538 +f 1668//1537 1696//205 1663//1992 +f 1360//1624 1702//1797 1711//2122 +f 1702//1797 1707//2126 1711//2122 +f 1707//2126 1737//2125 1711//2122 +f 1737//2125 1751//835 165//472 +f 1444//860 1782//2127 1693//1946 +f 1716//1890 1787//1849 1599//1851 +f 1744//527 1839//1955 1022//528 +f 1898//1304 1444//860 1785//1957 +f 206//2078 1707//2126 1702//1797 +f 1764//417 2468//226 1751//835 +f 316//1628 1844//2111 893//2019 +f 893//2019 1844//2111 915//2128 +f 1845//2129 1804//71 1758//2096 +f 1380//1054 861//2036 1756//1055 +f 1780//1372 670//1389 1021//1390 +f 1714//1830 2172//1528 1763//858 +f 1783//1508 1558//1538 1663//1992 +f 1750//2012 2127//1071 1465//1584 +f 1798//1432 1771//786 1691//1854 +f 1691//1854 1543//2116 1724//1852 +f 1872//1172 1910//2130 839//1173 +f 1737//2125 2044//2131 1751//835 +f 1751//835 2044//2131 1764//417 +f 1757//1933 1701//1406 482//1823 +f 1725//1853 1602//2041 1777//1904 +f 1836//2120 1845//2129 1530//2043 +f 2102//1848 2470//1258 1503//437 +f 2496//237 1899//967 544//244 +f 763//1338 2484//343 946//657 +f 987//371 1719//1236 1467//2117 +f 1845//2129 1758//2096 1792//2076 +f 1725//1853 1837//2049 1602//2041 +f 1872//1172 1866//424 1873//1756 +f 1712//1897 1530//2043 1760//2042 +f 489//62 1799//1448 216//1450 +f 1760//2042 861//2036 1750//2012 +f 2068//344 2466//1284 2460//407 +f 1696//205 2159//204 2168//1485 +f 377//260 1377//262 1280//1693 +f 1797//1862 1676//1861 1572//785 +f 1581//1919 2053//1844 1572//785 +f 1676//1861 1581//1919 1572//785 +f 1764//417 2498//2132 2468//226 +f 2468//226 2498//2132 1994//2133 +f 1861//2134 1695//2135 1860//2136 +f 2481//418 2004//575 2495//576 +f 1826//1863 1677//1125 1523//1510 +f 1670//1974 1739//1488 852//1975 +f 2234//2005 2269//2137 2253//2006 +f 1724//1852 1543//2116 1678//1856 +f 1658//1993 2168//1485 1791//1484 +f 1397//1580 1747//1254 1719//1236 +f 1696//205 2168//1485 1658//1993 +f 979//681 519//680 272//1130 +f 1774//1512 1975//2118 1679//2114 +f 975//911 1671//1539 932//1455 +f 1787//1849 1716//1890 1682//1889 +f 1835//1253 1826//1863 1747//1254 +f 2501//405 2469//1433 961//679 +f 1810//1915 908//2001 1791//1484 +f 1982//1706 1768//2138 191//480 +f 1137//853 1704//1952 1825//2003 +f 1804//71 1846//1430 1758//2096 +f 2004//575 2044//2131 1737//2125 +f 913//1462 1969//1472 902//1392 +f 2498//2132 1795//255 1801//2139 +f 915//2128 1844//2111 1712//1897 +f 1689//2140 915//2128 1712//1897 +f 1740//2141 1752//2109 1541//1650 +f 695//1229 661//520 199//522 +f 1865//2022 1693//1946 1782//2127 +f 1824//1859 1464//1953 1809//1888 +f 1829//1487 1765//994 1718//1415 +f 1816//2142 1768//2138 1982//1706 +f 1816//2142 1622//2143 1768//2138 +f 1622//2143 2165//2144 1681//2145 +f 1768//2138 1622//2143 1681//2145 +f 670//1389 1772//1405 228//1404 +f 1283//556 1459//854 52//554 +f 1785//1957 1444//860 1749//1940 +f 1675//1816 1075//827 1685//1447 +f 1567//1811 1781//2100 1704//1952 +f 1858//2146 1857//1947 1848//1966 +f 1526//1865 1752//2109 1688//2108 +f 1791//1484 2160//1486 1810//1915 +f 908//2001 1658//1993 1791//1484 +f 1813//2147 1773//1536 1558//1538 +f 1845//2129 1792//2076 1530//2043 +f 69//192 376//1561 165//472 +f 3//1594 1832//2020 1834//1592 +f 1722//1386 1516//121 1507//123 +f 1801//2139 1821//2148 1994//2133 +f 1833//2149 1982//1706 2046//2150 +f 1821//2148 1833//2149 2046//2150 +f 1833//2149 1816//2142 1982//1706 +f 1022//528 1785//1957 1749//1940 +f 2160//1486 2170//1632 1810//1915 +f 1147//1583 1719//1236 1726//300 +f 1683//122 1840//2101 1507//123 +f 1467//2117 1719//1236 1793//2032 +f 1795//255 1802//257 1801//2139 +f 1802//257 1811//2151 1801//2139 +f 1801//2139 1811//2151 1821//2148 +f 1690//2152 2165//2144 1622//2143 +f 1934//1788 1480//1990 1925//86 +f 229//770 1468//992 1091//1644 +f 1780//1372 2164//1371 1742//1912 +f 1672//1866 1742//1912 858//1778 +f 1833//2149 1417//2153 1816//2142 +f 1417//2153 1622//2143 1816//2142 +f 1831//2154 2165//2144 1690//2152 +f 1668//1537 1663//1992 1558//1538 +f 1719//1236 1747//1254 1826//1863 +f 1760//2042 1750//2012 1664//1895 +f 1817//2155 1690//2152 1622//2143 +f 1530//2043 1792//2076 1777//1904 +f 948//256 1796//1665 1802//257 +f 1796//1665 1811//2151 1802//257 +f 1515//2156 1817//2155 1622//2143 +f 1695//2135 1861//2134 1831//2154 +f 1783//1508 1663//1992 1658//1993 +f 1749//1940 1410//1939 1022//528 +f 854//675 1796//1665 948//256 +f 1811//2151 1842//2157 1833//2149 +f 1821//2148 1811//2151 1833//2149 +f 1833//2149 1842//2157 1417//2153 +f 1622//2143 1417//2153 1515//2156 +f 127//329 1804//71 1845//2129 +f 1686//2017 1626//1905 1837//2049 +f 1608//2158 1690//2152 1817//2155 +f 1523//1510 1775//1363 1762//1511 +f 127//329 1845//2129 1836//2120 +f 1812//307 1805//120 1708//1431 +f 1523//1510 1677//1125 1775//1363 +f 1780//1372 1772//1405 670//1389 +f 1758//2096 1754//2059 1792//2076 +f 1204//1331 1796//1665 854//675 +f 1822//1564 1842//2157 1811//2151 +f 1608//2158 1831//2154 1690//2152 +f 1822//1564 1811//2151 1796//1665 +f 1842//2157 1416//2159 1417//2153 +f 1417//2153 1416//2159 1515//2156 +f 1515//2156 1608//2158 1817//2155 +f 1728//2160 1831//2154 1608//2158 +f 908//2001 1783//1508 1658//1993 +f 127//329 1836//2120 316//1628 +f 1805//120 1148//331 1824//1859 +f 852//1975 1745//1414 1672//1866 +f 1478//2002 1093//1968 1928//1582 +f 1822//1564 1843//1427 1842//2157 +f 1843//1427 959//2161 1842//2157 +f 1842//2157 959//2161 1416//2159 +f 1728//2160 1695//2135 1831//2154 +f 1728//2160 1860//2136 1695//2135 +f 2346//2162 446//287 2337//1291 +f 1602//2041 1837//2049 861//2036 +f 1087//1252 1096//765 1835//1253 +f 1708//1431 1824//1859 1809//1888 +f 2004//575 1737//2125 505//801 +f 1567//1811 1748//1742 1781//2100 +f 520//1825 1543//2116 1883//2163 +f 1760//2042 1664//1895 1712//1897 +f 128//534 1336//898 72//899 +f 2053//1844 1883//2163 1543//2116 +f 1822//1564 180//1428 1843//1427 +f 1786//2164 1608//2158 1515//2156 +f 929//208 2462//325 519//680 +f 512//1136 2402//2165 506//1463 +f 1212//1777 1703//2030 1683//122 +f 1830//2089 1829//1487 1739//1488 +f 2053//1844 1543//2116 1771//786 +f 1416//2159 1769//2166 1515//2156 +f 1769//2166 1786//2164 1515//2156 +f 1786//2164 1728//2160 1608//2158 +f 1712//1897 1808//1896 1689//2140 +f 1794//1507 1558//1538 1783//1508 +f 1497//2098 1735//1980 1776//1982 +f 1127//1677 1567//1811 1137//853 +f 1123//1673 1748//1742 1567//1811 +f 36//803 205//749 1185//1567 +f 959//2161 1734//2167 1416//2159 +f 1738//1920 1733//1922 1541//1650 +f 1774//1512 1762//1511 1974//2168 +f 1752//2109 1554//2110 1541//1650 +f 1752//2109 1740//2141 1688//2108 +f 1526//1865 1875//1651 1554//2110 +f 1468//992 1829//1487 1830//2089 +f 1755//1449 908//2001 1810//1915 +f 1716//1890 1599//1851 1814//2044 +f 1806//1911 1780//1372 1742//1912 +f 2308//2123 2349//2119 2340//2169 +f 1832//2020 915//2128 1689//2140 +f 1713//2095 1468//992 1830//2089 +f 1814//2044 1599//1851 1346//2170 +f 1832//2020 1689//2140 1766//2112 +f 1022//528 1684//1288 1785//1957 +f 1093//1968 1153//1570 1116//1265 +f 1672//1866 678//1440 1742//1912 +f 1675//1816 1685//1447 1093//1968 +f 1841//1385 1743//1921 1722//1386 +f 1814//2044 2053//1844 1581//1919 +f 1464//1953 1746//1860 1809//1888 +f 2485//596 2497//494 2493//597 +f 1416//2159 1734//2167 1769//2166 +f 1665//2171 1728//2160 1786//2164 +f 1665//2171 1951//2172 1728//2160 +f 1951//2172 1860//2136 1728//2160 +f 1951//2172 2094//1092 1860//2136 +f 1844//2111 1836//2120 1818//2097 +f 316//1628 1836//2120 1844//2111 +f 1776//1982 1531//1850 1787//1849 +f 1719//1236 1826//1863 1793//2032 +f 2147//1943 1401//1596 29//1696 +f 2111//1411 2121//2173 1548//2092 +f 1741//1779 1259//2085 1779//2031 +f 1843//1427 347//1429 1834//1592 +f 1843//1427 1734//2167 959//2161 +f 1766//2112 1769//2166 1734//2167 +f 957//2113 1766//2112 1734//2167 +f 1766//2112 1786//2164 1769//2166 +f 1766//2112 1689//2140 1786//2164 +f 1689//2140 1665//2171 1786//2164 +f 1754//2059 1691//1854 1777//1904 +f 1507//123 1840//2101 1790//1864 +f 1761//1868 1470//2051 1461//2067 +f 1523//1510 1679//2114 1793//2032 +f 1091//1644 1468//992 1098//1658 +f 1820//1233 1730//510 1838//461 +f 1843//1427 1834//1592 1734//2167 +f 1808//1896 1951//2172 1665//2171 +f 1588//1981 1727//1995 1531//1850 +f 893//2019 915//2128 1832//2020 +f 1523//1510 1774//1512 1679//2114 +f 272//1130 2488//635 710//1100 +f 1093//1968 1116//1265 1675//1816 +f 2340//2169 2349//2119 2348//2174 +f 1832//2020 1734//2167 1834//1592 +f 1832//2020 957//2113 1734//2167 +f 1951//2172 1808//1896 2094//1092 +f 1685//1447 1692//1329 1505//1962 +f 1043//931 295//1618 698//933 +f 2143//2023 1779//2031 2121//2173 +f 1689//2140 1808//1896 1665//2171 +f 1693//1946 1714//1830 1763//858 +f 1738//1920 2157//1649 1516//121 +f 1114//2011 1921//1216 236//1215 +f 1268//1835 1333//939 1520//1717 +f 1149//1453 1108//2057 431//1454 +f 508//1728 2144//1715 1912//1789 +f 1957//90 1108//2057 1537//91 +f 431//1454 1108//2057 1957//90 +f 1018//2175 1108//2057 2167//2063 +f 1338//1842 1957//90 1681//2145 +f 2163//2176 1957//90 1338//1842 +f 1983//395 1390//2177 2093//2178 +f 30//16 557//506 37//555 +f 1714//1830 2173//1554 2172//1528 +f 1983//395 1984//1839 1390//2177 +f 1984//1839 2065//2179 1390//2177 +f 884//241 1762//1511 897//254 +f 2065//2179 1984//1839 1214//2180 +f 1950//2181 1974//2168 1762//1511 +f 884//241 1950//2181 1762//1511 +f 2012//2182 1698//2183 1861//2134 +f 1214//2180 2116//1782 803//1826 +f 1950//2181 1938//2184 1974//2168 +f 1938//2184 1967//2185 1974//2168 +f 1900//463 1761//1868 1461//2067 +f 865//251 1929//2186 884//241 +f 884//241 1929//2186 1950//2181 +f 2062//172 2071//2187 2042//1232 +f 919//1365 1985//2188 1732//974 +f 1593//1997 502//1999 2146//2189 +f 1995//2190 1213//1213 2098//966 +f 1522//1103 2476//616 1651//478 +f 2174//1552 1849//2021 2175//1262 +f 1480//1990 1989//1680 1499//1979 +f 1929//2186 1938//2184 1950//2181 +f 1605//1836 2058//1838 1574//1907 +f 2097//1837 1605//1836 2133//1846 +f 1912//1789 2014//2191 1886//1726 +f 2092//2192 2082//2193 2083//2194 +f 206//2078 1930//2195 505//801 +f 2101//1985 2100//2196 2092//2192 +f 2073//1986 2101//1985 2092//2192 +f 839//1173 1910//2130 865//251 +f 1910//2130 1901//2197 1929//2186 +f 865//251 1910//2130 1929//2186 +f 1967//2185 1788//2099 1975//2118 +f 2073//1986 2092//2192 2063//2060 +f 2101//1985 1593//1997 2100//2196 +f 2015//2198 1876//1763 1698//2183 +f 1853//2199 1884//2200 2014//2191 +f 1831//2154 1698//2183 2165//2144 +f 1316//394 273//396 81//2081 +f 1901//2197 1920//2201 1929//2186 +f 1929//2186 1920//2201 1938//2184 +f 1920//2201 1968//1473 1967//2185 +f 1938//2184 1920//2201 1967//2185 +f 1849//2021 2174//1552 1700//1831 +f 2173//1554 1700//1831 2174//1552 +f 2062//172 2072//1231 2091//2202 +f 803//1826 2467//868 2059//788 +f 2239//1410 1736//1409 2240//2203 +f 1505//1962 1357//1964 1685//1447 +f 1358//1857 1686//2017 1476//1858 +f 1967//2185 1968//1473 1788//2099 +f 1968//1473 1969//1472 1788//2099 +f 2065//2179 2110//176 2156//1314 +f 2065//2179 1214//2180 2110//176 +f 2110//176 1214//2180 503//2204 +f 273//396 2093//2178 1018//2175 +f 273//396 1983//395 2093//2178 +f 532//1724 1886//1726 2155//2205 +f 2034//175 2021//493 1947//224 +f 216//1450 1810//1915 585//1916 +f 1912//1789 543//1761 2014//2191 +f 1390//2177 2051//92 1537//91 +f 1872//1172 1873//1756 1910//2130 +f 1984//1839 2045//1775 1214//2180 +f 597//1725 1912//1789 1886//1726 +f 1593//1997 2146//2189 2100//2196 +f 2071//2187 2062//172 2090//1169 +f 2034//175 2046//2150 1982//1706 +f 2034//175 1947//224 2046//2150 +f 1214//2180 2045//1775 2116//1782 +f 1873//1756 1887//1755 1910//2130 +f 1887//1755 1901//2197 1910//2130 +f 1562//1958 1447//1161 1106//1321 +f 2163//2176 431//1454 1957//90 +f 1948//1641 1972//213 1936//1328 +f 1972//213 1948//1641 1992//214 +f 2014//2191 2015//2198 2013//2206 +f 1853//2199 2014//2191 2013//2206 +f 1550//2207 1884//2200 1853//2199 +f 1947//224 2468//226 1994//2133 +f 1355//2208 1550//2207 2154//1806 +f 1355//2208 1884//2200 1550//2207 +f 2081//840 2108//2209 2128//1474 +f 2024//2069 1965//1731 1492//2046 +f 2024//2069 2032//2210 1965//1731 +f 2116//1782 1604//1827 803//1826 +f 1901//2197 1911//2211 1920//2201 +f 1939//1393 1968//1473 1920//2201 +f 1911//2211 1939//1393 1920//2201 +f 872//1493 1626//1905 1666//1408 +f 2062//172 2091//2202 2120//173 +f 1819//1615 1927//1855 1759//1662 +f 1021//1390 1674//625 1780//1372 +f 872//1493 1673//1056 1756//1055 +f 1550//2207 501//1297 2171//1334 +f 1378//1333 1550//2207 2171//1334 +f 2146//2189 2162//1727 2145//2212 +f 1358//1857 482//1823 192//1832 +f 2109//174 2120//173 2119//2213 +f 1866//424 1872//1172 2227//1219 +f 1391//2214 2012//2182 1860//2136 +f 2136//2215 2137//1807 2161//1332 +f 2162//1727 1661//2010 236//1215 +f 1887//1755 1894//1847 1901//2197 +f 1901//2197 1894//1847 1911//2211 +f 505//801 1707//2126 206//2078 +f 2120//173 2137//1807 2136//2215 +f 2142//624 2164//1371 1674//625 +f 1860//2136 2012//2182 1861//2134 +f 1894//1847 1939//1393 1911//2211 +f 2080//1956 2060//841 2118//1475 +f 2162//1727 236//1215 508//1728 +f 2164//1371 1815//2086 1742//1912 +f 1018//2175 2093//2178 1537//91 +f 2154//1806 1378//1333 2161//1332 +f 2041//2216 2098//966 2491//324 +f 2043//1701 2042//1232 2032//2210 +f 1108//2057 1018//2175 1537//91 +f 1465//1584 2094//1092 1808//1896 +f 502//1999 1643//2008 1661//2010 +f 2467//868 1618//2029 1656//1562 +f 2119//2213 2136//2215 2135//2217 +f 2119//2213 2108//2209 2071//2187 +f 878//1132 1183//143 1195//730 +f 2101//1985 1594//2038 1593//1997 +f 2033//2218 2370//1801 2063//2060 +f 2482//1126 2491//324 2098//966 +f 1282//1743 2406//1766 1275//1491 +f 2003//2219 1948//1641 1956//1695 +f 2043//1701 2032//2210 2024//2069 +f 2025//426 2043//1701 2024//2069 +f 2154//1806 1550//2207 1378//1333 +f 1795//255 2498//2132 1764//417 +f 2142//624 1548//2092 2164//1371 +f 2431//1520 2454//1139 2422//1521 +f 1981//2220 2011//2221 1993//2222 +f 2349//2119 2391//1278 2362//2223 +f 502//1999 2162//1727 2146//2189 +f 2025//426 2024//2069 2360//427 +f 2129//2224 2120//173 2091//2202 +f 1732//974 1985//2188 2007//1496 +f 2171//1334 1308//1296 209//2225 +f 1930//2195 1995//2190 2041//2216 +f 1390//2177 1238//479 2051//92 +f 1866//424 1878//423 1887//1755 +f 1878//423 1894//1847 1887//1755 +f 1965//1731 2032//2210 2011//2221 +f 874//471 2480//473 2492//247 +f 2071//2187 2108//2209 2069//2226 +f 1358//1857 1731//1824 482//1823 +f 430//177 2021//493 2034//175 +f 1965//1731 2003//2219 1964//1694 +f 1855//2227 1889//1516 831//1383 +f 1668//1537 1773//1536 2150//2228 +f 1390//2177 2156//1314 1238//479 +f 898//1210 869//971 1903//1083 +f 2391//1278 2407//1370 2362//2223 +f 2121//2173 2111//1411 2074//880 +f 1548//2092 1259//2085 2164//1371 +f 2099//2229 2129//2224 2091//2202 +f 1550//2207 1853//2199 501//1297 +f 1853//2199 1852//1298 501//1297 +f 952//1423 2017//2230 969//879 +f 2085//2231 2121//2173 2074//880 +f 2130//1678 2006//2232 1391//2214 +f 2144//1715 1367//1762 543//1761 +f 2100//2196 2146//2189 2099//2229 +f 1545//1461 1319//1685 113//1884 +f 1903//1083 1922//2233 898//1210 +f 1922//2233 1931//1208 898//1210 +f 585//1916 2170//1632 1641//1634 +f 2007//1496 2017//2230 952//1423 +f 2017//2230 2074//880 969//879 +f 1558//1538 1753//2093 1813//2147 +f 837//1810 2005//1834 1517//1032 +f 2005//1834 2006//2232 2130//1678 +f 1532//1874 1474//438 1528//1767 +f 2003//2219 1981//2220 1948//1641 +f 2070//2234 2071//2187 2069//2226 +f 1922//2233 919//1365 1931//1208 +f 2017//2230 2085//2231 2074//880 +f 2085//2231 2104//2235 2121//2173 +f 2100//2196 2099//2229 2082//2193 +f 2156//1314 2110//176 2034//175 +f 505//801 2474//323 2004//575 +f 1903//1083 871//1555 1922//2233 +f 1922//2233 1952//2236 919//1365 +f 919//1365 1952//2236 1985//2188 +f 1985//2188 2001//2237 2007//1496 +f 2001//2237 2036//2238 2017//2230 +f 2007//1496 2001//2237 2017//2230 +f 2017//2230 2036//2238 2085//2231 +f 2036//2238 2047//2239 2085//2231 +f 2047//2239 2075//2240 2085//2231 +f 2075//2240 2104//2235 2085//2231 +f 1948//1641 1993//2222 2023//1642 +f 2400//1369 2422//1521 2407//1370 +f 2011//2221 2070//2234 1993//2222 +f 2033//2218 2043//1701 2025//426 +f 2012//2182 2015//2198 1698//2183 +f 1876//1763 1338//1842 2165//2144 +f 871//1555 1940//2241 1922//2233 +f 1985//2188 1976//2242 2001//2237 +f 2121//2173 2104//2235 2143//2023 +f 1051//128 1413//1739 1456//1311 +f 2358//446 1362//1526 2379//1893 +f 1859//983 1789//51 1870//1234 +f 2090//1169 2109//174 2071//2187 +f 1405//453 1398//75 1885//1892 +f 1886//1726 1884//2200 1355//2208 +f 1922//2233 1960//2243 1952//2236 +f 1952//2236 1960//2243 1985//2188 +f 1960//2243 1976//2242 1985//2188 +f 1956//1695 1948//1641 1936//1328 +f 2135//2217 209//2225 2128//1474 +f 2157//1649 1875//1651 1212//1777 +f 2160//1486 2168//1485 2169//2244 +f 1900//463 1461//2067 1918//1143 +f 2001//2237 2018//2245 2036//2238 +f 2075//2240 2086//2246 2104//2235 +f 2111//1411 2142//624 2103//1412 +f 1937//1144 1956//1695 1936//1328 +f 2023//1642 2070//2234 2061//1498 +f 2135//2217 2128//1474 2108//2209 +f 2042//1232 2071//2187 2011//2221 +f 2138//1330 413//1350 2383//2247 +f 2033//2218 2072//1231 2043//1701 +f 1922//2233 1940//2241 1960//2243 +f 2070//2234 2069//2226 2061//1498 +f 2069//2226 2108//2209 2061//1498 +f 2108//2209 2119//2213 2135//2217 +f 1855//2227 1904//2248 1889//1516 +f 1889//1516 1904//2248 871//1555 +f 871//1555 1904//2248 1940//2241 +f 1976//2242 2018//2245 2001//2237 +f 2036//2238 2018//2245 2047//2239 +f 2122//2249 2143//2023 2104//2235 +f 216//1450 1642//1710 489//62 +f 2148//2094 984//2024 2143//2023 +f 1975//2118 1974//2168 1967//2185 +f 2157//1649 1683//122 1516//121 +f 1614//1998 1593//1997 1594//2038 +f 2269//2137 2270//2250 2276//2251 +f 1926//1805 2147//1943 29//1696 +f 2082//2193 2091//2202 2072//1231 +f 430//177 503//2204 2059//788 +f 1904//2248 1905//2252 1940//2241 +f 1940//2241 1961//2253 1960//2243 +f 1961//2253 1976//2242 1960//2243 +f 2087//2254 2086//2246 2075//2240 +f 2065//2179 2156//1314 1390//2177 +f 1820//1233 1838//461 1900//463 +f 534//1031 1308//1296 837//1810 +f 2167//2063 273//396 1018//2175 +f 831//1383 1850//1394 1855//2227 +f 2019//2255 2037//2256 2018//2245 +f 2018//2245 2037//2256 2047//2239 +f 2037//2256 2075//2240 2047//2239 +f 2086//2246 2095//2257 2104//2235 +f 2095//2257 2122//2249 2104//2235 +f 2122//2249 2148//2094 2143//2023 +f 1926//1805 1213//1213 1995//2190 +f 1405//453 1885//1892 1761//1868 +f 2006//2232 2013//2206 2012//2182 +f 2211//1517 2233//1302 2216//1518 +f 1855//2227 1890//2258 1904//2248 +f 1904//2248 1895//2259 1905//2252 +f 1905//2252 1932//2260 1940//2241 +f 1961//2253 1977//2261 1976//2242 +f 1976//2242 1986//2262 2018//2245 +f 2484//343 2476//616 1518//1104 +f 1870//1234 1411//1989 1859//983 +f 1548//2092 2142//624 2111//1411 +f 1904//2248 1890//2258 1895//2259 +f 1895//2259 1932//2260 1905//2252 +f 1940//2241 1932//2260 1961//2253 +f 1976//2242 1977//2261 1986//2262 +f 1986//2262 2008//2263 2018//2245 +f 2018//2245 2008//2263 2019//2255 +f 2087//2254 2075//2240 2037//2256 +f 2087//2254 2095//2257 2086//2246 +f 2094//1092 1391//2214 1860//2136 +f 1852//1298 1853//2199 2006//2232 +f 1853//2199 2013//2206 2006//2232 +f 929//208 979//681 850//209 +f 1855//2227 1874//2264 1890//2258 +f 2008//2263 2028//2265 2019//2255 +f 1993//2222 2070//2234 2023//1642 +f 1705//1770 1799//1448 1998//64 +f 1491//1944 2147//1943 206//2078 +f 1851//1530 1856//2266 1855//2227 +f 1895//2259 1890//2258 1874//2264 +f 2038//2267 2019//2255 2028//2265 +f 2038//2267 2048//2268 2037//2256 +f 2019//2255 2038//2267 2037//2256 +f 2048//2268 2067//2269 2087//2254 +f 2037//2256 2048//2268 2087//2254 +f 2087//2254 2067//2269 2095//2257 +f 2095//2257 2149//2270 2122//2249 +f 2149//2270 2148//2094 2122//2249 +f 1308//1296 2005//1834 837//1810 +f 209//2225 1308//1296 1387//1549 +f 1601//1259 2102//1848 1927//1855 +f 254//592 170//456 201//626 +f 1800//1938 1403//859 1763//858 +f 1510//1991 1346//2170 1740//2141 +f 870//973 871//1555 1903//1083 +f 1919//1773 1650//2084 1619//1774 +f 2148//2094 1667//2271 1753//2093 +f 1932//2260 1923//2272 1961//2253 +f 1977//2261 1953//2273 1986//2262 +f 2067//2269 2112//2274 2095//2257 +f 2112//2274 2149//2270 2095//2257 +f 2148//2094 2149//2270 1667//2271 +f 2422//1521 2421//1983 2407//1370 +f 1926//1805 2026//1224 1213//1213 +f 1912//1789 2144//1715 543//1761 +f 2128//1474 1387//1549 2153//1542 +f 1733//1922 1510//1991 1740//2141 +f 990//1459 853//813 2489//632 +f 503//2204 1214//2180 803//1826 +f 1921//1216 431//1454 2163//2176 +f 2146//2189 2145//2212 2129//2224 +f 2144//1715 1921//1216 2163//2176 +f 1855//2227 1856//2266 1874//2264 +f 1895//2259 1923//2272 1932//2260 +f 1923//2272 1941//2275 1961//2253 +f 1961//2253 1941//2275 1977//2261 +f 2048//2268 2076//2276 2067//2269 +f 2076//2276 2113//2277 2067//2269 +f 2067//2269 2113//2277 2112//2274 +f 1723//1359 1900//463 1937//1144 +f 1870//1234 1900//463 1723//1359 +f 1367//1762 2163//2176 1338//1842 +f 520//1825 1346//2170 1510//1991 +f 1698//2183 1831//2154 1861//2134 +f 1984//1839 1919//1773 2045//1775 +f 1895//2259 1891//2278 1923//2272 +f 2008//2263 1986//2262 2028//2265 +f 1948//1641 1981//2220 1993//2222 +f 1883//2163 1346//2170 520//1825 +f 1883//2163 1814//2044 1346//2170 +f 1930//2195 206//2078 2147//1943 +f 2499//569 2486//568 1447//1161 +f 1891//2278 1906//2279 1923//2272 +f 1923//2272 1953//2273 1941//2275 +f 1953//2273 1977//2261 1941//2275 +f 1953//2273 1987//2280 1986//2262 +f 2113//2277 2123//2281 2112//2274 +f 2123//2281 2149//2270 2112//2274 +f 1387//1549 1308//1296 1226//217 +f 1599//1851 1688//2108 1346//2170 +f 2093//2178 1390//2177 1537//91 +f 2003//2219 2011//2221 1981//2220 +f 1987//2280 2028//2265 1986//2262 +f 2038//2267 2049//2282 2048//2268 +f 2048//2268 2049//2282 2076//2276 +f 1813//2147 1667//2271 2149//2270 +f 2123//2281 1813//2147 2149//2270 +f 1461//2067 1469//1730 1964//1694 +f 1757//1933 1510//1991 1743//1921 +f 505//801 1930//2195 1999//802 +f 2223//53 1784//1972 1789//51 +f 1532//1874 1522//1103 1651//478 +f 1906//2279 1913//2283 1923//2272 +f 1913//2283 1943//2284 1923//2272 +f 1943//2284 1942//2285 1923//2272 +f 1923//2272 1942//2285 1953//2273 +f 1942//2285 1987//2280 1953//2273 +f 1308//1296 1852//1298 2005//1834 +f 2053//1844 1814//2044 1883//2163 +f 1733//1922 1740//2141 1541//1650 +f 2154//1806 1886//1726 1355//2208 +f 1503//437 1528//1767 1474//438 +f 1874//2264 1879//2286 1895//2259 +f 1895//2259 1879//2286 1891//2278 +f 2076//2276 2124//2287 2113//2277 +f 2113//2277 2124//2287 2123//2281 +f 1896//2288 1891//2278 1879//2286 +f 1891//2278 1896//2288 1906//2279 +f 1942//2285 1962//2289 1987//2280 +f 1962//2289 2009//2290 2028//2265 +f 1987//2280 1962//2289 2028//2265 +f 2009//2290 2038//2267 2028//2265 +f 2109//174 2119//2213 2071//2187 +f 1918//1143 1956//1695 1937//1144 +f 1851//1530 1864//2291 1856//2266 +f 1896//2288 1897//2292 1906//2279 +f 1906//2279 1897//2292 1913//2283 +f 1943//2284 1962//2289 1942//2285 +f 2049//2282 2077//2293 2076//2276 +f 2124//2287 2125//2294 2123//2281 +f 1930//2195 2147//1943 1926//1805 +f 1902//1276 1894//1847 1878//423 +f 482//1823 1510//1991 1757//1933 +f 2129//2224 2137//1807 2120//173 +f 503//2204 803//1826 2059//788 +f 1847//1470 1857//1947 1851//1530 +f 1851//1530 1857//1947 1864//2291 +f 2039//2295 2038//2267 2009//2290 +f 2038//2267 2039//2295 2049//2282 +f 2076//2276 2077//2293 2124//2287 +f 2150//2228 1813//2147 2123//2281 +f 482//1823 520//1825 1510//1991 +f 1994//2133 1821//2148 2046//2150 +f 2044//2131 2004//575 1764//417 +f 1864//2291 1867//2296 1856//2266 +f 1867//2296 1874//2264 1856//2266 +f 1897//2292 1944//2297 1913//2283 +f 1943//2284 1944//2297 1962//2289 +f 2124//2287 2126//2298 2125//2294 +f 2150//2228 2123//2281 2125//2294 +f 2099//2229 2146//2189 2129//2224 +f 2041//2216 1995//2190 2098//966 +f 1605//1836 1641//1634 2151//1633 +f 1847//1470 1959//1494 1857//1947 +f 1874//2264 1867//2296 1879//2286 +f 1913//2283 1944//2297 1943//2284 +f 1944//2297 1963//2299 1962//2289 +f 2077//2293 2096//2300 2124//2287 +f 2096//2300 2126//2298 2124//2287 +f 2126//2298 2150//2228 2125//2294 +f 941//2083 1650//2084 1919//1773 +f 2135//2217 2136//2215 209//2225 +f 1884//2200 1886//1726 2014//2191 +f 2049//2282 2029//2301 2077//2293 +f 1388//1280 2127//1071 1389//1976 +f 1389//1976 2127//1071 1566//2037 +f 1930//2195 1926//1805 1995//2190 +f 941//2083 1919//1773 1316//394 +f 2110//176 503//2204 430//177 +f 1867//2296 1880//2302 1879//2286 +f 1879//2286 1880//2302 1896//2288 +f 1897//2292 1907//2303 1944//2297 +f 1963//2299 1978//2304 1962//2289 +f 1962//2289 1978//2304 2009//2290 +f 2039//2295 2029//2301 2049//2282 +f 2077//2293 2078//2305 2096//2300 +f 822//1133 823//1444 827//1241 +f 2166//2034 1668//1537 2150//2228 +f 81//2081 941//2083 1316//394 +f 2204//1519 2216//1518 2203//2306 +f 2011//2221 2071//2187 2070//2234 +f 1880//2302 1892//2307 1896//2288 +f 1892//2307 1907//2303 1897//2292 +f 1896//2288 1892//2307 1897//2292 +f 1907//2303 1914//2308 1944//2297 +f 1978//2304 2010//2309 2009//2290 +f 2010//2309 2039//2295 2009//2290 +f 1688//2108 1740//2141 1346//2170 +f 1789//51 1820//1233 1870//1234 +f 2130//1678 1391//2214 2094//1092 +f 1944//2297 1945//2310 1963//2299 +f 2029//2301 2078//2305 2077//2293 +f 1767//206 2150//2228 2126//2298 +f 1767//206 2166//2034 2150//2228 +f 803//1826 2022//1828 2467//868 +f 1503//437 1927//1855 2102//1848 +f 1914//2308 1954//2311 1944//2297 +f 1944//2297 1954//2311 1945//2310 +f 1963//2299 1970//2312 1978//2304 +f 2078//2305 2105//2313 2096//2300 +f 2105//2313 2126//2298 2096//2300 +f 1965//1731 2011//2221 2003//2219 +f 192//1832 1626//1905 1358//1857 +f 2101//1985 1559//1984 1594//2038 +f 1930//2195 2041//2216 1999//802 +f 1698//2183 1876//1763 2165//2144 +f 1398//75 1871//452 891//76 +f 2165//2144 1338//1842 1681//2145 +f 1970//2312 2010//2309 1978//2304 +f 2010//2309 2030//2314 2029//2301 +f 2039//2295 2010//2309 2029//2301 +f 2030//2314 2055//2315 2078//2305 +f 2029//2301 2030//2314 2078//2305 +f 1849//2021 1848//1966 2175//1262 +f 1871//452 1862//451 891//76 +f 543//1761 2015//2198 2014//2191 +f 1857//1947 1858//2146 1864//2291 +f 1864//2291 1858//2146 1867//2296 +f 1963//2299 1945//2310 1970//2312 +f 2055//2315 2088//2316 2078//2305 +f 2078//2305 2088//2316 2105//2313 +f 2105//2313 2131//2317 2126//2298 +f 2126//2298 2131//2317 1767//206 +f 2063//2060 2083//2194 2033//2218 +f 2161//1332 2171//1334 209//2225 +f 2032//2210 2042//1232 2011//2221 +f 1813//2147 2150//2228 1773//1536 +f 1914//2308 1908//2318 1954//2311 +f 1970//2312 1979//2319 2010//2309 +f 2088//2316 2131//2317 2105//2313 +f 2015//2198 543//1761 1876//1763 +f 1694//1245 1692//1329 1048//1246 +f 1395//1965 2207//52 1859//983 +f 1395//1965 1393//1937 2207//52 +f 1730//510 1784//1972 1736//1409 +f 2500//233 2466//1284 2470//1258 +f 1709//1407 1701//1406 1757//1933 +f 1945//2310 1979//2319 1970//2312 +f 2030//2314 2050//2320 2055//2315 +f 2350//1354 2317//2321 2286//1708 +f 2154//1806 2155//2205 1886//1726 +f 871//1555 860//1509 1889//1516 +f 2161//1332 209//2225 2136//2215 +f 2497//494 2463//245 2493//597 +f 2190//2322 2204//1519 2203//2306 +f 1800//1938 2179//1523 1404//1936 +f 2477//1434 2469//1433 1385//404 +f 1385//404 1715//2323 2477//1434 +f 2128//1474 209//2225 1387//1549 +f 1858//2146 1868//2026 1867//2296 +f 1867//2296 1881//2324 1880//2302 +f 1893//2325 1892//2307 1880//2302 +f 1881//2324 1893//2325 1880//2302 +f 1893//2325 1907//2303 1892//2307 +f 1907//2303 1908//2318 1914//2308 +f 1954//2311 1979//2319 1945//2310 +f 1979//2319 1980//2326 2010//2309 +f 2131//2317 2159//204 1767//206 +f 1765//994 93//993 339//769 +f 1761//1868 1877//462 1405//453 +f 523//1095 1347//1768 515//1147 +f 1541//1650 2157//1649 1738//1920 +f 2144//1715 2163//2176 1367//1762 +f 1380//1054 1389//1976 1566//2037 +f 2317//2321 2392//2327 2316//1277 +f 1994//2133 2498//2132 1801//2139 +f 1867//2296 1868//2026 1881//2324 +f 1980//2326 2050//2320 2030//2314 +f 2010//2309 1980//2326 2030//2314 +f 2050//2320 2089//2328 2055//2315 +f 2055//2315 2089//2328 2088//2316 +f 2088//2316 2114//2329 2131//2317 +f 1538//1873 1651//478 1659//1880 +f 2145//2212 2155//2205 2129//2224 +f 2140//1268 29//1696 1928//1582 +f 2370//1801 2033//2218 2025//426 +f 2252//2330 2239//1410 2240//2203 +f 2239//1410 2252//2330 1862//451 +f 2392//2327 2391//1278 2316//1277 +f 2469//1433 2501//405 1385//404 +f 2477//1434 1715//2323 1710//614 +f 502//1999 1614//1998 1643//2008 +f 2438//1227 1227//962 2431//1520 +f 1915//2331 1907//2303 1893//2325 +f 1915//2331 1908//2318 1907//2303 +f 1954//2311 1908//2318 1979//2319 +f 1908//2318 1988//2332 1979//2319 +f 1979//2319 1988//2332 1980//2326 +f 2114//2329 2159//204 2131//2317 +f 2155//2205 2154//1806 2129//2224 +f 508//1728 1966//1217 2144//1715 +f 872//1493 1756//1055 1626//1905 +f 1710//614 1715//2323 1505//1962 +f 236//1215 1966//1217 508//1728 +f 2272//74 2284//1754 1398//75 +f 2325//2333 2355//1237 2319//1366 +f 1548//2092 2121//2173 1779//2031 +f 1532//1874 1528//1767 1522//1103 +f 1980//2326 2056//2334 2050//2320 +f 2050//2320 2056//2334 2089//2328 +f 2013//2206 2015//2198 2012//2182 +f 1964//1694 2003//2219 1956//1695 +f 2006//2232 2012//2182 1391//2214 +f 1565//436 1927//1855 1503//437 +f 2244//2335 2243//2336 2226//2337 +f 5//1963 1715//2323 1385//404 +f 1858//2146 1848//1966 1868//2026 +f 1915//2331 1946//2338 1908//2318 +f 1946//2338 1988//2332 1908//2318 +f 1980//2326 2020//2339 2056//2334 +f 2115//2340 2159//204 2114//2329 +f 2092//2192 2083//2194 2063//2060 +f 1398//75 2284//1754 1687//1753 +f 2162//1727 2155//2205 2145//2212 +f 519//680 2475//633 2488//635 +f 2158//2341 5//1963 1385//404 +f 5//1963 1505//1962 1715//2323 +f 1692//1329 1694//1245 1505//1962 +f 1988//2332 2020//2339 1980//2326 +f 2115//2340 2169//2244 2159//204 +f 2169//2244 2168//1485 2159//204 +f 2083//2194 2082//2193 2072//1231 +f 1316//394 1984//1839 1983//395 +f 1488//221 1619//1774 1650//2084 +f 2083//2194 2072//1231 2033//2218 +f 2361//2342 1210//2343 1233//278 +f 1933//1872 1946//2338 1915//2331 +f 2056//2334 2079//2344 2089//2328 +f 2088//2316 2115//2340 2114//2329 +f 2099//2229 2091//2202 2082//2193 +f 2162//1727 532//1724 2155//2205 +f 1852//1298 2006//2232 2005//1834 +f 2023//1642 2061//1498 2052//1497 +f 2176//1469 2184//892 2175//1262 +f 2162//1727 985//1729 532//1724 +f 1909//2345 1893//2325 1881//2324 +f 1909//2345 1915//2331 1893//2325 +f 1988//2332 2040//2346 2020//2339 +f 2040//2346 2056//2334 2020//2339 +f 2089//2328 2079//2344 2088//2316 +f 2088//2316 2079//2344 2115//2340 +f 1782//2127 1444//860 1882//1399 +f 1216//1798 1215//577 2320//2347 +f 867//1458 1939//1393 1894//1847 +f 867//1458 903//1391 1939//1393 +f 1372//1814 2398//1829 1379//1752 +f 1863//236 504//403 2027//631 +f 2158//2341 1385//404 504//403 +f 1868//2026 1782//2127 1881//2324 +f 1909//2345 1933//1872 1915//2331 +f 2040//2346 1988//2332 1946//2338 +f 1481//2045 2024//2069 1492//2046 +f 2120//173 2136//2215 2119//2213 +f 1522//1103 1528//1767 1518//1104 +f 1871//452 1398//75 1405//453 +f 1221//1481 1408//1483 1399//1587 +f 1357//1964 5//1963 2158//2341 +f 2179//1523 1800//1938 1763//858 +f 1868//2026 1865//2022 1782//2127 +f 1882//1399 1881//2324 1782//2127 +f 1882//1399 1909//2345 1881//2324 +f 2040//2346 2057//2348 2056//2334 +f 2106//2349 2079//2344 2056//2334 +f 2057//2348 2106//2349 2056//2334 +f 2106//2349 2132//2350 2079//2344 +f 2132//2350 2115//2340 2079//2344 +f 2115//2340 2132//2350 2169//2244 +f 532//1724 985//1729 597//1725 +f 2092//2192 2100//2196 2082//2193 +f 1210//2343 1221//1481 1399//1587 +f 1399//1587 1233//278 1210//2343 +f 2130//1678 2002//1070 1517//1032 +f 1849//2021 1865//2022 1868//2026 +f 1933//1872 2040//2346 1946//2338 +f 52//554 1269//509 30//16 +f 1667//2271 1813//2147 1753//2093 +f 1997//1769 1380//1054 1673//1056 +f 940//152 1008//1869 1088//1609 +f 1947//224 1994//2133 2046//2150 +f 1882//1399 1916//1185 1909//2345 +f 1924//1184 1933//1872 1909//2345 +f 1533//1871 2040//2346 1933//1872 +f 1533//1871 1534//1906 2040//2346 +f 2058//1838 2040//2346 1534//1906 +f 2058//1838 2057//2348 2040//2346 +f 1238//479 191//480 1768//2138 +f 1997//1769 1389//1976 1380//1054 +f 1875//1651 1541//1650 1554//2110 +f 1854//1621 504//403 1863//236 +f 1854//1621 2158//2341 504//403 +f 2396//2351 1275//1491 2406//1766 +f 2426//2352 2443//1687 153//1733 +f 1916//1185 1924//1184 1909//2345 +f 1925//86 1935//85 1934//1788 +f 1870//1234 1723//1359 1426//1978 +f 2058//1838 2097//1837 2057//2348 +f 2097//1837 2106//2349 2057//2348 +f 2132//2350 2151//1633 2169//2244 +f 2151//1633 2160//1486 2169//2244 +f 1106//1321 1635//1977 1562//1958 +f 1957//90 1768//2138 1681//2145 +f 1957//90 2051//92 1768//2138 +f 526//1238 535//588 33//818 +f 1614//1998 1594//2038 1609//2014 +f 2233//1302 2229//2040 2216//1518 +f 2496//237 2027//631 2084//1006 +f 2496//237 1863//236 2027//631 +f 2117//235 1854//1621 1863//236 +f 2016//1270 2158//2341 1854//1621 +f 2016//1270 1504//1269 1357//1964 +f 2158//2341 2016//1270 1357//1964 +f 1114//2011 236//1215 1661//2010 +f 2129//2224 2154//1806 2137//1807 +f 2133//1846 2106//2349 2097//1837 +f 2491//324 1999//802 2041//2216 +f 2051//92 1238//479 1768//2138 +f 2061//1498 2108//2209 2081//840 +f 2189//1840 2195//1533 2186//1809 +f 2348//2174 2349//2119 2362//2223 +f 1701//1406 192//1832 482//1823 +f 505//801 1737//2125 1707//2126 +f 2133//1846 2132//2350 2106//2349 +f 2132//2350 2133//1846 2151//1633 +f 2151//1633 2170//1632 2160//1486 +f 502//1999 1661//2010 2162//1727 +f 1998//64 1389//1976 1997//1769 +f 2297//2353 2352//2354 2329//2355 +f 2352//2354 2364//2356 2329//2355 +f 2394//2357 2414//2358 2364//2356 +f 2352//2354 2394//2357 2364//2356 +f 2402//2165 512//1136 2415//2359 +f 2255//2360 2254//2361 2243//2336 +f 2446//2362 1365//990 2456//2363 +f 2271//2364 2282//2365 2298//2366 +f 846//268 2283//2367 2264//269 +f 2293//2368 2310//2369 2318//2370 +f 2254//2361 2295//2371 2294//2372 +f 2283//2367 2290//2373 2278//507 +f 2270//2250 2294//2372 2293//2368 +f 2423//2374 2455//2000 2400//1369 +f 2281//2375 2287//1301 2267//1300 +f 2190//2322 2191//2376 2204//1519 +f 2271//2364 2263//2377 2282//2365 +f 2334//2378 2329//2355 2364//2356 +f 2424//1495 2432//2379 2409//2380 +f 2282//2365 2263//2377 2298//2366 +f 1409//744 1659//1880 1958//477 +f 2263//2377 2302//2381 2298//2366 +f 2297//2353 2329//2355 2296//2382 +f 1256//1802 446//287 2346//2162 +f 1958//477 2502//28 2478//743 +f 2437//1684 2399//1792 2444//2383 +f 263//365 2366//1446 2359//464 +f 849//1380 827//1241 823//1444 +f 2311//1019 2325//2333 2290//2373 +f 2499//569 2379//1893 2434//27 +f 2446//2362 2456//2363 2423//2374 +f 947//1160 2358//446 2379//1893 +f 2499//569 947//1160 2379//1893 +f 2205//1534 2195//1533 2212//2384 +f 2245//2385 2237//1218 2227//1219 +f 2245//2385 2256//1898 2237//1218 +f 2256//1898 2263//2377 2271//2364 +f 556//1551 571//1008 2305//1020 +f 1528//1767 2068//344 1518//1104 +f 2424//1495 2439//949 2432//2379 +f 2302//2381 2352//2354 2297//2353 +f 1866//424 2237//1218 826//425 +f 2248//2386 2242//2387 2211//1517 +f 2334//2378 2364//2356 2363//2388 +f 2235//2105 2244//2335 2226//2337 +f 2255//2360 2295//2371 2254//2361 +f 2329//2355 2324//2389 2296//2382 +f 2439//949 2447//1299 1973//950 +f 2329//2355 2334//2378 2324//2389 +f 2409//2380 2432//2379 2414//2358 +f 2293//2368 2318//2370 2276//2251 +f 866//1987 2425//2390 2416//2391 +f 1487//390 1493//2392 2372//1682 +f 2237//1218 2231//1900 2230//2103 +f 2415//2359 512//1136 17//1230 +f 2035//989 1236//535 26//536 +f 921//137 2138//1330 688//160 +f 2491//324 2482//1126 2462//325 +f 6//1282 181//843 197//845 +f 2481//418 948//256 1795//255 +f 2138//1330 2383//2247 2382//1197 +f 2377//2393 2394//2357 2352//2354 +f 2377//2393 506//1463 2394//2357 +f 2394//2357 506//1463 2402//2165 +f 2401//2394 2402//2165 2415//2359 +f 2394//2357 2402//2165 2401//2394 +f 2318//2370 2326//1950 2276//2251 +f 2439//949 2457//948 2432//2379 +f 2298//2366 2302//2381 2297//2353 +f 2244//2335 2249//2395 2243//2336 +f 2404//2396 1100//77 2382//1197 +f 2238//2397 2245//2385 2227//1219 +f 2245//2385 2257//2398 2256//1898 +f 2257//2398 2263//2377 2256//1898 +f 2324//2389 2334//2378 2328//2399 +f 2257//2398 2289//2400 2263//2377 +f 2289//2400 2302//2381 2263//2377 +f 2236//2104 2231//1900 2250//1899 +f 2138//1330 2382//1197 688//160 +f 2383//2247 2404//2396 2382//1197 +f 1100//77 2404//2396 2343//2401 +f 2353//1465 2352//2354 2302//2381 +f 2353//1465 2377//2393 2352//2354 +f 2237//1218 2230//2103 2220//712 +f 2335//1240 2355//1237 2325//2333 +f 2308//2123 2340//2169 2315//2402 +f 2253//2006 2269//2137 2276//2251 +f 2311//1019 2335//1240 2325//2333 +f 2439//949 2424//1495 511//1306 +f 2268//2107 2267//1300 2248//2386 +f 2383//2247 413//1350 2404//2396 +f 123//1666 971//1346 832//2403 +f 2234//2005 2243//2336 2269//2137 +f 2225//2004 2213//1903 2234//2005 +f 2219//2404 2213//1903 2225//2004 +f 2195//1533 2196//1901 2212//2384 +f 1544//2061 2418//284 1549//2047 +f 413//1350 866//1987 2404//2396 +f 2404//2396 866//1987 2416//2391 +f 2416//2391 2417//2405 2404//2396 +f 2404//2396 2417//2405 2343//2401 +f 2415//2359 2409//2380 2401//2394 +f 2196//1901 2219//2404 2212//2384 +f 2268//2107 2248//2386 2218//2106 +f 2206//2406 2214//1902 2197//2407 +f 2417//2405 2332//2408 2343//2401 +f 2343//2401 2332//2408 832//2403 +f 2330//1464 2302//2381 2289//2400 +f 2330//1464 2353//1465 2302//2381 +f 2453//1140 2454//1139 515//1147 +f 2218//2106 2248//2386 2217//2409 +f 2218//2106 2217//2409 2205//1534 +f 2276//2251 2281//2375 2268//2107 +f 2178//1384 2197//2407 2177//1471 +f 2197//2407 2189//1840 2177//1471 +f 2332//2408 2066//2410 832//2403 +f 832//2403 2066//2410 123//1666 +f 2231//1900 2236//2104 2230//2103 +f 669//35 950//1257 1144//33 +f 2217//2409 2211//1517 2199//2411 +f 1216//1798 1209//2412 1217//1813 +f 2066//2410 2365//2413 123//1666 +f 2230//2103 2226//2337 2214//1902 +f 2290//2373 2325//2333 2304//1368 +f 2325//2333 2319//1366 2304//1368 +f 2217//2409 2248//2386 2211//1517 +f 2191//2376 2192//1532 2199//2411 +f 510//988 525//1239 2035//989 +f 2417//2405 1917//2414 2332//2408 +f 2332//2408 1917//2414 2066//2410 +f 2408//2415 2413//333 2341//332 +f 2248//2386 2267//1300 2242//2387 +f 2326//1950 2333//1353 2281//2375 +f 1340//1845 2365//2413 2066//2410 +f 2440//1758 1302//1765 1340//1845 +f 2226//2337 2230//2103 2235//2105 +f 1153//1570 1163//816 1116//1265 +f 2431//1520 2455//2000 2438//1227 +f 2416//2391 2425//2390 2417//2405 +f 2495//576 2474//323 2462//325 +f 2290//2373 2304//1368 2277//2416 +f 825//1305 2227//1219 1872//1172 +f 151//760 239//1577 1038//694 +f 9//728 151//760 1038//694 +f 545//113 928//1548 2381//25 +f 2440//1758 2406//1766 1384//1747 +f 928//1548 1596//80 2381//25 +f 2186//1809 2188//893 2185//2417 +f 2456//2363 26//536 1888//1225 +f 2287//1301 2333//1353 2262//1707 +f 2425//2390 2342//2418 2417//2405 +f 2342//2418 1917//2414 2417//2405 +f 1917//2414 877//2419 2066//2410 +f 2336//2420 1340//1845 2066//2410 +f 2336//2420 2440//1758 1340//1845 +f 2328//2399 2351//2421 2327//1948 +f 825//1305 2238//2397 2227//1219 +f 2351//2421 2368//1949 2327//1948 +f 1222//1746 2388//1780 1211//1790 +f 678//1440 756//1413 734//184 +f 428//1445 263//365 1343//367 +f 2188//893 2191//2376 2190//2322 +f 2341//332 2376//334 2333//1353 +f 2066//2410 877//2419 2336//2420 +f 2290//2373 2277//2416 2278//507 +f 739//984 634//356 592//267 +f 675//1014 304//263 14//230 +f 2384//1480 675//1014 14//230 +f 2199//2411 2211//1517 2204//1519 +f 2191//2376 2199//2411 2204//1519 +f 2322//2422 2318//2370 2310//2369 +f 2287//1301 2262//1707 2233//1302 +f 2185//2417 2188//893 2184//892 +f 2386//1822 2425//2390 845//1942 +f 2384//1480 572//1015 675//1014 +f 1128//795 123//1666 2365//2413 +f 832//2403 971//1346 2343//2401 +f 2188//893 2186//1809 2191//2376 +f 2185//2417 2184//892 2176//1469 +f 2345//2423 1917//2414 2342//2418 +f 2345//2423 877//2419 1917//2414 +f 2336//2420 2406//1766 2440//1758 +f 971//1346 1100//77 2343//2401 +f 2299//2424 2289//2400 2257//2398 +f 2299//2424 2303//1499 2289//2400 +f 2249//2395 2255//2360 2243//2336 +f 506//1463 513//1076 512//1136 +f 2437//1684 955//1349 1219//1348 +f 1587//1546 2398//1829 1324//1547 +f 877//2419 2396//2351 2336//2420 +f 2336//2420 2396//2351 2406//1766 +f 2463//245 2479//648 879//246 +f 2376//334 2412//2425 2350//1354 +f 2281//2375 2267//1300 2268//2107 +f 2303//1499 2330//1464 2289//2400 +f 624//295 635//947 159//649 +f 1996//1009 2356//1271 1561//114 +f 2449//283 2436//282 1996//1009 +f 2356//1271 2054//2426 2451//1489 +f 928//1548 2398//1829 1587//1546 +f 2333//1353 2350//1354 2262//1707 +f 2035//989 26//536 2456//2363 +f 2346//2162 2342//2418 2425//2390 +f 2346//2162 2345//2423 2342//2418 +f 1544//2061 2380//2427 2418//284 +f 2412//2425 2392//2327 2350//1354 +f 622//1109 509//1645 1151//1281 +f 2436//282 2054//2426 1996//1009 +f 545//113 2451//1489 928//1548 +f 2326//1950 2341//332 2333//1353 +f 2346//2162 2425//2390 2386//1822 +f 1365//990 2035//989 2456//2363 +f 2369//1436 2377//2393 2353//1465 +f 2369//1436 506//1463 2377//2393 +f 2451//1489 900//2428 928//1548 +f 900//2428 2398//1829 928//1548 +f 1235//1226 1888//1225 1244//169 +f 2337//1291 2345//2423 2346//2162 +f 877//2419 772//1843 2396//2351 +f 772//1843 1275//1491 2396//2351 +f 2432//2379 2446//2362 2414//2358 +f 2294//2372 2295//2371 2310//2369 +f 2369//1436 2330//1464 828//1437 +f 2418//284 2419//2429 2436//282 +f 2450//2430 2429//2431 2436//282 +f 2436//282 2429//2431 2054//2426 +f 2490//1235 2494//495 1656//1562 +f 1321//1732 155//1608 2338//1607 +f 1256//1802 2346//2162 2386//1822 +f 2448//2432 877//2419 2345//2423 +f 877//2419 2448//2432 772//1843 +f 2446//2362 2423//2374 2414//2358 +f 2351//2421 2334//2378 2363//2388 +f 2243//2336 2254//2361 2269//2137 +f 2380//2427 2419//2429 2418//284 +f 2419//2429 2450//2430 2436//282 +f 2283//2367 2278//507 2264//269 +f 822//1133 2197//2407 823//1444 +f 1008//1869 1759//1662 1565//436 +f 2448//2432 2345//2423 2337//1291 +f 2270//2250 2293//2368 2276//2251 +f 2323//2433 2324//2389 2328//2399 +f 2429//2431 1012//2434 2054//2426 +f 2226//2337 2243//2336 2213//1903 +f 2395//229 325//200 772//1843 +f 2370//1801 2367//428 2380//2427 +f 2054//2426 2435//2435 2451//1489 +f 2435//2435 2397//2436 2451//1489 +f 2451//1489 2397//2436 900//2428 +f 1774//1512 1974//2168 1975//2118 +f 2305//1020 2290//2373 2283//2367 +f 846//268 2305//1020 2283//2367 +f 2320//2347 1215//577 2285//579 +f 2139//2437 2448//2432 2337//1291 +f 2448//2432 2395//229 772//1843 +f 1232//1803 1231//1796 1216//1798 +f 2272//74 2285//579 2284//1754 +f 2367//428 2371//2438 2380//2427 +f 2371//2438 2405//2439 2380//2427 +f 2380//2427 2405//2439 2419//2429 +f 2419//2429 2429//2431 2450//2430 +f 2429//2431 176//2440 1012//2434 +f 2397//2436 2373//2441 900//2428 +f 2373//2441 2398//1829 900//2428 +f 2373//2441 1379//1752 2398//1829 +f 2372//1682 1500//2442 1508//2068 +f 1133//107 1303//1460 1142//1263 +f 2252//2330 2273//2443 2272//74 +f 891//76 2252//2330 2272//74 +f 2419//2429 2405//2439 2429//2431 +f 2405//2439 2430//2444 2429//2431 +f 2429//2431 2430//2444 176//2440 +f 2189//1840 2186//1809 2181//1841 +f 2212//2384 2219//2404 2218//2106 +f 2312//1005 2139//2437 2337//1291 +f 2139//2437 2384//1480 2448//2432 +f 2448//2432 2384//1480 2395//229 +f 899//1374 855//1317 843//1316 +f 2272//74 2273//2443 2285//579 +f 2331//1367 2303//1499 2299//2424 +f 176//2440 2435//2435 2054//2426 +f 1012//2434 176//2440 2054//2426 +f 2177//1471 2185//2417 2176//1469 +f 2218//2106 2219//2404 2225//2004 +f 1216//1798 1220//1783 1215//577 +f 2378//1034 2139//2437 2312//1005 +f 2384//1480 14//230 2395//229 +f 2324//2389 2295//2371 2255//2360 +f 2240//2203 2273//2443 2252//2330 +f 2371//2438 2387//2445 2405//2439 +f 2410//2446 2430//2444 2405//2439 +f 2430//2444 2442//2447 176//2440 +f 2435//2435 2344//2448 2397//2436 +f 2397//2436 2344//2448 2373//2441 +f 2456//2363 1888//1225 2455//2000 +f 2242//2387 2267//1300 2233//1302 +f 2233//1302 2262//1707 2229//2040 +f 2378//1034 2384//1480 2139//2437 +f 2323//2433 2310//2369 2295//2371 +f 2323//2433 2322//2422 2310//2369 +f 2240//2203 2274//2449 2273//2443 +f 974//1177 841//1178 990//1459 +f 2490//1235 1447//1161 2486//568 +f 2387//2445 2410//2446 2405//2439 +f 2442//2447 2141//2450 176//2440 +f 2344//2448 1778//2451 2373//2441 +f 972//2452 1379//1752 2373//2441 +f 1778//2451 972//2452 2373//2441 +f 1379//1752 972//2452 428//1445 +f 1211//1790 2437//1684 1223//1625 +f 1228//578 1215//577 1220//1783 +f 702//1033 2378//1034 2312//1005 +f 17//1230 518//1206 2415//2359 +f 1888//1225 26//536 1244//169 +f 2324//2389 2323//2433 2295//2371 +f 2305//1020 2311//1019 2290//2373 +f 2307//2453 2285//579 2273//2443 +f 2274//2449 2307//2453 2273//2443 +f 2307//2453 2320//2347 2285//579 +f 2369//1436 531//1077 506//1463 +f 2435//2435 2258//2454 2344//2448 +f 2296//2382 2324//2389 2288//2455 +f 1233//278 1217//1813 2361//2342 +f 2360//427 2371//2438 2367//428 +f 2410//2446 2442//2447 2430//2444 +f 176//2440 2141//2450 2258//2454 +f 176//2440 2258//2454 2435//2435 +f 539//1149 2331//1367 66//583 +f 2350//1354 2392//2327 2317//2321 +f 2268//2107 2225//2004 2253//2006 +f 1508//2068 1500//2442 2371//2438 +f 2360//427 1508//2068 2371//2438 +f 2371//2438 1500//2442 2387//2445 +f 972//2452 2366//1446 428//1445 +f 1626//1905 1686//2017 1358//1857 +f 1759//1662 1807//1661 1819//1615 +f 2277//2416 2257//2398 2245//2385 +f 2277//2416 2299//2424 2257//2398 +f 1784//1972 2228//2456 1736//1409 +f 2265//2457 2240//2203 1736//1409 +f 2228//2456 2265//2457 1736//1409 +f 2265//2457 2274//2449 2240//2203 +f 1209//2412 2320//2347 2307//2453 +f 2320//2347 1209//2412 1216//1798 +f 1555//40 1584//41 1560//2091 +f 2387//2445 1500//2442 2372//1682 +f 2410//2446 2420//2458 2442//2447 +f 2433//2459 972//2452 1778//2451 +f 2433//2459 2366//1446 972//2452 +f 955//1349 522//1094 1225//1347 +f 2339//2460 2307//2453 2274//2449 +f 2372//1682 1493//2392 2387//2445 +f 2411//2461 2420//2458 2410//2446 +f 2420//2458 954//2462 2442//2447 +f 2442//2447 954//2462 2141//2450 +f 2344//2448 2433//2459 1778//2451 +f 2205//1534 2212//2384 2218//2106 +f 2328//2399 2334//2378 2351//2421 +f 2394//2357 2401//2394 2414//2358 +f 2250//1899 2256//1898 2271//2364 +f 2339//2460 1209//2412 2307//2453 +f 2328//2399 2322//2422 2323//2433 +f 866//1987 845//1942 2425//2390 +f 3//1594 316//1628 893//2019 +f 2387//2445 2411//2461 2410//2446 +f 2441//2463 2141//2450 954//2462 +f 2141//2450 2441//2463 2258//2454 +f 2354//2464 2433//2459 2344//2448 +f 2254//2361 2294//2372 2270//2250 +f 2269//2137 2254//2361 2270//2250 +f 863//1541 2305//1020 846//268 +f 2441//2463 2354//2464 2258//2454 +f 2258//2454 2354//2464 2344//2448 +f 2319//1366 2355//1237 51//582 +f 2223//53 2228//2456 1784//1972 +f 1493//2392 2411//2461 2387//2445 +f 1560//2091 2449//283 1555//40 +f 2288//2455 2324//2389 2255//2360 +f 825//1305 2251//508 2238//2397 +f 2251//508 2245//2385 2238//2397 +f 1299//591 84//590 1312//1704 +f 2246//2465 2265//2457 2228//2456 +f 2313//2466 2274//2449 2265//2457 +f 2313//2466 2339//2460 2274//2449 +f 2251//508 2277//2416 2245//2385 +f 2319//1366 51//582 2331//1367 +f 891//76 1862//451 2252//2330 +f 2443//1687 954//2462 2420//2458 +f 2443//1687 2441//2463 954//2462 +f 511//1306 2447//1299 2439//949 +f 2242//2387 2233//1302 2211//1517 +f 188//249 15//560 814//547 +f 2443//1687 2426//2352 2441//2463 +f 2426//2352 2354//2464 2441//2463 +f 2306//2467 2403//2468 2433//2459 +f 2433//2459 2403//2468 2366//1446 +f 539//1149 2303//1499 2331//1367 +f 2246//2465 2228//2456 2223//53 +f 1030//830 1819//1615 1807//1661 +f 2354//2464 2306//2467 2433//2459 +f 2413//333 2412//2425 2376//334 +f 2438//1227 2455//2000 1888//1225 +f 1848//1966 1857//1947 2176//1469 +f 2207//52 2208//2469 2223//53 +f 2208//2469 2246//2465 2223//53 +f 1209//2412 2339//2460 1217//1813 +f 2339//2460 2361//2342 1217//1813 +f 1221//1481 1210//2343 2388//1780 +f 554//401 109//400 78//414 +f 386//162 1375//164 95//151 +f 2327//1948 2326//1950 2318//2370 +f 2179//1523 2182//2470 1393//1937 +f 2182//2470 2208//2469 1393//1937 +f 1393//1937 2208//2469 2207//52 +f 2361//2342 2399//1792 2388//1780 +f 2388//1780 2399//1792 1211//1790 +f 2306//2467 2354//2464 2426//2352 +f 2403//2468 2359//464 2366//1446 +f 2214//1902 2226//2337 2213//1903 +f 2268//2107 2253//2006 2276//2251 +f 889//1524 2200//2471 2179//1523 +f 2200//2471 2182//2470 2179//1523 +f 2200//2471 2221//2472 2182//2470 +f 2221//2472 2208//2469 2182//2470 +f 2314//2473 2265//2457 2246//2465 +f 2314//2473 2313//2466 2265//2457 +f 2339//2460 2374//2474 2361//2342 +f 2478//743 2434//27 2379//1893 +f 2205//1534 2217//2409 2199//2411 +f 2208//2469 2259//2475 2246//2465 +f 2259//2475 2275//2476 2246//2465 +f 2314//2473 2321//2477 2313//2466 +f 2313//2466 2347//2478 2339//2460 +f 2347//2478 2374//2474 2339//2460 +f 2374//2474 2399//1792 2361//2342 +f 153//1733 154//1737 2426//2352 +f 154//1737 2306//2467 2426//2352 +f 2385//496 2359//464 2403//2468 +f 2221//2472 2259//2475 2208//2469 +f 2306//2467 2357//2479 2403//2468 +f 2357//2479 2385//496 2403//2468 +f 2237//1218 2256//1898 2231//1900 +f 2172//1528 2180//1553 889//1524 +f 2180//1553 2200//2471 889//1524 +f 2200//2471 2201//2480 2221//2472 +f 2246//2465 2291//2481 2314//2473 +f 2374//2474 2444//2383 2399//1792 +f 571//1008 555//1063 2311//1019 +f 2192//1532 2205//1534 2199//2411 +f 2173//1554 2180//1553 2172//1528 +f 2279//2482 2246//2465 2275//2476 +f 2279//2482 2291//2481 2246//2465 +f 2292//2483 2314//2473 2291//2481 +f 2321//2477 2362//2223 2313//2466 +f 2362//2223 2347//2478 2313//2466 +f 2347//2478 2389//2484 2374//2474 +f 2444//2383 955//1349 2437//1684 +f 2292//2483 2291//2481 2279//2482 +f 2452//2485 2444//2383 2374//2474 +f 2054//2426 2356//1271 1996//1009 +f 2338//1607 2306//2467 154//1737 +f 2186//1809 2192//1532 2191//2376 +f 2193//2486 2201//2480 2200//2471 +f 2259//2475 2221//2472 2201//2480 +f 2247//2487 2259//2475 2201//2480 +f 2452//2485 955//1349 2444//2383 +f 2278//507 2277//2416 2251//508 +f 2338//1607 2357//2479 2306//2467 +f 2181//1841 2186//1809 2185//2417 +f 2276//2251 2326//1950 2281//2375 +f 2432//2379 2457//948 2446//2362 +f 2198//2488 2201//2480 2193//2486 +f 2198//2488 2232//2489 2201//2480 +f 2232//2489 2247//2487 2201//2480 +f 2389//2484 2452//2485 2374//2474 +f 2452//2485 1630//1352 955//1349 +f 1403//859 1749//1940 1444//860 +f 1555//40 1996//1009 1561//114 +f 2357//2479 2427//2490 2385//496 +f 2385//496 2428//1128 230//465 +f 2409//2380 2415//2359 2424//1495 +f 2304//1368 2331//1367 2299//2424 +f 2193//2486 2200//2471 2180//1553 +f 2445//1141 2452//2485 2389//2484 +f 1565//436 1759//1662 1927//1855 +f 2380//2427 1544//2061 2370//1801 +f 2338//1607 2427//2490 2357//2479 +f 2427//2490 2428//1128 2385//496 +f 230//465 222//593 253//550 +f 2202//2491 2198//2488 2193//2486 +f 2202//2491 2209//2492 2198//2488 +f 2209//2492 2241//2493 2198//2488 +f 2241//2493 2232//2489 2198//2488 +f 2266//2124 2275//2476 2259//2475 +f 2365//2413 1340//1845 1128//795 +f 2415//2359 518//1206 2424//1495 +f 2338//1607 170//456 2427//2490 +f 170//456 2428//1128 2427//2490 +f 2181//1841 2185//2417 2177//1471 +f 2196//1901 2195//1533 2189//1840 +f 2183//894 2193//2486 2180//1553 +f 2453//1140 1630//1352 2452//2485 +f 2197//2407 2214//1902 2189//1840 +f 2401//2394 2409//2380 2414//2358 +f 822//1133 2220//712 2197//2407 +f 1210//2343 2361//2342 2388//1780 +f 2187//2494 2193//2486 2183//894 +f 2187//2494 2202//2491 2193//2486 +f 2266//2124 2279//2482 2275//2476 +f 2279//2482 2300//2495 2292//2483 +f 2375//2496 2347//2478 2362//2223 +f 2375//2496 2390//2497 2347//2478 +f 2390//2497 2389//2484 2347//2478 +f 2453//1140 2452//2485 2445//1141 +f 1347//1768 1630//1352 2453//1140 +f 1630//1352 1347//1768 522//1094 +f 2220//712 2206//2406 2197//2407 +f 2262//1707 2350//1354 2286//1708 +f 170//456 254//592 2428//1128 +f 2457//948 1973//950 2446//2362 +f 1973//950 1365//990 2446//2362 +f 2174//1552 2183//894 2180//1553 +f 2194//2498 2202//2491 2187//2494 +f 2222//2499 2241//2493 2209//2492 +f 2222//2499 2260//2500 2241//2493 +f 2266//2124 2259//2475 2247//2487 +f 2390//2497 2445//1141 2389//2484 +f 2264//269 2251//508 825//1305 +f 2363//2388 2368//1949 2351//2421 +f 2326//1950 2393//2115 2341//332 +f 1855//2227 1850//1394 1851//1530 +f 2210//2501 2209//2492 2202//2491 +f 2210//2501 2222//2499 2209//2492 +f 2261//1709 2260//2500 2222//2499 +f 2280//2502 2279//2482 2266//2124 +f 2280//2502 2300//2495 2279//2482 +f 251//429 263//365 2359//464 +f 2277//2416 2304//1368 2299//2424 +f 2220//712 2230//2103 2206//2406 +f 2202//2491 2194//2498 2210//2501 +f 2213//1903 2243//2336 2234//2005 +f 2328//2399 2327//1948 2322//2422 +f 2294//2372 2310//2369 2293//2368 +f 2214//1902 2196//1901 2189//1840 +f 2196//1901 2213//1903 2219//2404 +f 2224//2033 2222//2499 2210//2501 +f 2421//1983 2390//2497 2375//2496 +f 2206//2406 2230//2103 2214//1902 +f 2194//2498 2203//2306 2210//2501 +f 2224//2033 2261//1709 2222//2499 +f 2421//1983 2445//1141 2390//2497 +f 2322//2422 2327//1948 2318//2370 +f 2393//2115 2408//2415 2341//332 +f 1365//990 1973//950 510//988 +f 2216//1518 2210//2501 2203//2306 +f 2216//1518 2224//2033 2210//2501 +f 2266//2124 2308//2123 2280//2502 +f 2280//2502 2308//2123 2300//2495 +f 2407//1370 2421//1983 2375//2496 +f 2175//1262 2183//894 2174//1552 +f 2194//2498 2190//2322 2203//2306 +f 2454//1139 2445//1141 2421//1983 +f 522//1094 1347//1768 523//1095 +f 2456//2363 2455//2000 2423//2374 +f 823//1444 2197//2407 2178//1384 +f 2281//2375 2333//1353 2287//1301 +f 2188//893 2187//2494 2183//894 +f 2188//893 2190//2322 2194//2498 +f 2187//2494 2188//893 2194//2498 +f 2308//2123 2315//2402 2300//2495 +f 2407//1370 2375//2496 2362//2223 +f 2443//1687 2420//2458 2503//2503 +f 2420//2458 2411//2461 2503//2503 +f 2411//2461 1493//2392 2503//2503 +f 1493//2392 1487//390 2503//2503 +f 1487//390 1318//389 2503//2503 +f 1318//389 1320//1416 2503//2503 +f 1320//1416 2443//1687 2503//2503 diff --git a/PROJ1_WIN/565Raytracer/obj/sphere.obj b/PROJ1_WIN/565Raytracer/obj/sphere.obj new file mode 100644 index 0000000..95fe4a5 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/obj/sphere.obj @@ -0,0 +1,1605 @@ +# This file uses centimeters as units for non-parametric coordinates. + +v 0.148778 -0.987688 -0.048341 +v 0.126558 -0.987688 -0.091950 +v 0.091950 -0.987688 -0.126558 +v 0.048341 -0.987688 -0.148778 +v 0.000000 -0.987688 -0.156435 +v -0.048341 -0.987688 -0.148778 +v -0.091950 -0.987688 -0.126558 +v -0.126558 -0.987688 -0.091950 +v -0.148778 -0.987688 -0.048341 +v -0.156435 -0.987688 0.000000 +v -0.148778 -0.987688 0.048341 +v -0.126558 -0.987688 0.091950 +v -0.091950 -0.987688 0.126558 +v -0.048341 -0.987688 0.148778 +v -0.000000 -0.987688 0.156434 +v 0.048341 -0.987688 0.148778 +v 0.091950 -0.987688 0.126558 +v 0.126558 -0.987688 0.091950 +v 0.148778 -0.987688 0.048341 +v 0.156434 -0.987688 0.000000 +v 0.293893 -0.951057 -0.095492 +v 0.250000 -0.951057 -0.181636 +v 0.181636 -0.951057 -0.250000 +v 0.095492 -0.951057 -0.293893 +v 0.000000 -0.951057 -0.309017 +v -0.095492 -0.951057 -0.293893 +v -0.181636 -0.951057 -0.250000 +v -0.250000 -0.951057 -0.181636 +v -0.293893 -0.951057 -0.095492 +v -0.309017 -0.951057 0.000000 +v -0.293893 -0.951057 0.095492 +v -0.250000 -0.951057 0.181636 +v -0.181636 -0.951057 0.250000 +v -0.095492 -0.951057 0.293893 +v -0.000000 -0.951057 0.309017 +v 0.095491 -0.951057 0.293893 +v 0.181636 -0.951057 0.250000 +v 0.250000 -0.951057 0.181636 +v 0.293893 -0.951057 0.095492 +v 0.309017 -0.951057 0.000000 +v 0.431771 -0.891007 -0.140291 +v 0.367286 -0.891007 -0.266849 +v 0.266849 -0.891007 -0.367286 +v 0.140291 -0.891007 -0.431771 +v 0.000000 -0.891007 -0.453991 +v -0.140291 -0.891007 -0.431771 +v -0.266849 -0.891007 -0.367286 +v -0.367286 -0.891007 -0.266849 +v -0.431771 -0.891007 -0.140291 +v -0.453991 -0.891007 0.000000 +v -0.431771 -0.891007 0.140291 +v -0.367286 -0.891007 0.266849 +v -0.266849 -0.891007 0.367286 +v -0.140291 -0.891007 0.431771 +v -0.000000 -0.891007 0.453991 +v 0.140291 -0.891007 0.431771 +v 0.266849 -0.891007 0.367286 +v 0.367286 -0.891007 0.266849 +v 0.431771 -0.891007 0.140291 +v 0.453991 -0.891007 0.000000 +v 0.559017 -0.809017 -0.181636 +v 0.475529 -0.809017 -0.345492 +v 0.345492 -0.809017 -0.475529 +v 0.181636 -0.809017 -0.559017 +v 0.000000 -0.809017 -0.587786 +v -0.181636 -0.809017 -0.559017 +v -0.345492 -0.809017 -0.475528 +v -0.475528 -0.809017 -0.345492 +v -0.559017 -0.809017 -0.181636 +v -0.587785 -0.809017 0.000000 +v -0.559017 -0.809017 0.181636 +v -0.475528 -0.809017 0.345492 +v -0.345492 -0.809017 0.475528 +v -0.181636 -0.809017 0.559017 +v -0.000000 -0.809017 0.587785 +v 0.181636 -0.809017 0.559017 +v 0.345491 -0.809017 0.475528 +v 0.475528 -0.809017 0.345492 +v 0.559017 -0.809017 0.181636 +v 0.587785 -0.809017 0.000000 +v 0.672499 -0.707107 -0.218508 +v 0.572062 -0.707107 -0.415627 +v 0.415627 -0.707107 -0.572062 +v 0.218508 -0.707107 -0.672499 +v 0.000000 -0.707107 -0.707107 +v -0.218508 -0.707107 -0.672499 +v -0.415627 -0.707107 -0.572062 +v -0.572062 -0.707107 -0.415627 +v -0.672499 -0.707107 -0.218508 +v -0.707107 -0.707107 0.000000 +v -0.672499 -0.707107 0.218508 +v -0.572062 -0.707107 0.415627 +v -0.415627 -0.707107 0.572061 +v -0.218508 -0.707107 0.672499 +v -0.000000 -0.707107 0.707107 +v 0.218508 -0.707107 0.672499 +v 0.415627 -0.707107 0.572061 +v 0.572061 -0.707107 0.415627 +v 0.672499 -0.707107 0.218508 +v 0.707107 -0.707107 0.000000 +v 0.769421 -0.587785 -0.250000 +v 0.654509 -0.587785 -0.475529 +v 0.475529 -0.587785 -0.654509 +v 0.250000 -0.587785 -0.769421 +v 0.000000 -0.587785 -0.809017 +v -0.250000 -0.587785 -0.769421 +v -0.475528 -0.587785 -0.654509 +v -0.654509 -0.587785 -0.475528 +v -0.769421 -0.587785 -0.250000 +v -0.809017 -0.587785 0.000000 +v -0.769421 -0.587785 0.250000 +v -0.654509 -0.587785 0.475528 +v -0.475528 -0.587785 0.654509 +v -0.250000 -0.587785 0.769421 +v -0.000000 -0.587785 0.809017 +v 0.250000 -0.587785 0.769421 +v 0.475528 -0.587785 0.654509 +v 0.654509 -0.587785 0.475528 +v 0.769421 -0.587785 0.250000 +v 0.809017 -0.587785 0.000000 +v 0.847398 -0.453991 -0.275336 +v 0.720840 -0.453991 -0.523721 +v 0.523721 -0.453991 -0.720840 +v 0.275336 -0.453991 -0.847398 +v 0.000000 -0.453991 -0.891007 +v -0.275336 -0.453991 -0.847398 +v -0.523721 -0.453991 -0.720840 +v -0.720840 -0.453991 -0.523721 +v -0.847398 -0.453991 -0.275336 +v -0.891007 -0.453991 0.000000 +v -0.847398 -0.453991 0.275336 +v -0.720840 -0.453991 0.523721 +v -0.523721 -0.453991 0.720840 +v -0.275336 -0.453991 0.847398 +v -0.000000 -0.453991 0.891007 +v 0.275336 -0.453991 0.847398 +v 0.523721 -0.453991 0.720840 +v 0.720839 -0.453991 0.523721 +v 0.847398 -0.453991 0.275336 +v 0.891007 -0.453991 0.000000 +v 0.904509 -0.309017 -0.293893 +v 0.769421 -0.309017 -0.559017 +v 0.559017 -0.309017 -0.769421 +v 0.293893 -0.309017 -0.904509 +v 0.000000 -0.309017 -0.951057 +v -0.293893 -0.309017 -0.904509 +v -0.559017 -0.309017 -0.769421 +v -0.769421 -0.309017 -0.559017 +v -0.904509 -0.309017 -0.293893 +v -0.951057 -0.309017 0.000000 +v -0.904509 -0.309017 0.293893 +v -0.769421 -0.309017 0.559017 +v -0.559017 -0.309017 0.769421 +v -0.293893 -0.309017 0.904509 +v -0.000000 -0.309017 0.951057 +v 0.293893 -0.309017 0.904509 +v 0.559017 -0.309017 0.769421 +v 0.769421 -0.309017 0.559017 +v 0.904509 -0.309017 0.293893 +v 0.951057 -0.309017 0.000000 +v 0.939348 -0.156434 -0.305213 +v 0.799057 -0.156434 -0.580549 +v 0.580549 -0.156434 -0.799057 +v 0.305213 -0.156434 -0.939348 +v 0.000000 -0.156434 -0.987689 +v -0.305213 -0.156434 -0.939348 +v -0.580549 -0.156434 -0.799057 +v -0.799057 -0.156434 -0.580549 +v -0.939348 -0.156434 -0.305213 +v -0.987689 -0.156434 0.000000 +v -0.939348 -0.156434 0.305213 +v -0.799057 -0.156434 0.580549 +v -0.580549 -0.156434 0.799057 +v -0.305213 -0.156434 0.939348 +v -0.000000 -0.156434 0.987688 +v 0.305212 -0.156434 0.939348 +v 0.580549 -0.156434 0.799057 +v 0.799057 -0.156434 0.580549 +v 0.939348 -0.156434 0.305212 +v 0.987688 -0.156434 0.000000 +v 0.951057 0.000000 -0.309017 +v 0.809018 0.000000 -0.587786 +v 0.587786 0.000000 -0.809017 +v 0.309017 0.000000 -0.951057 +v 0.000000 0.000000 -1.000000 +v -0.309017 0.000000 -0.951057 +v -0.587785 0.000000 -0.809017 +v -0.809017 0.000000 -0.587785 +v -0.951057 0.000000 -0.309017 +v -1.000000 0.000000 0.000000 +v -0.951057 0.000000 0.309017 +v -0.809017 0.000000 0.587785 +v -0.587785 0.000000 0.809017 +v -0.309017 0.000000 0.951057 +v -0.000000 0.000000 1.000000 +v 0.309017 0.000000 0.951057 +v 0.587785 0.000000 0.809017 +v 0.809017 0.000000 0.587785 +v 0.951057 0.000000 0.309017 +v 1.000000 0.000000 0.000000 +v 0.939348 0.156434 -0.305213 +v 0.799057 0.156434 -0.580549 +v 0.580549 0.156434 -0.799057 +v 0.305213 0.156434 -0.939348 +v 0.000000 0.156434 -0.987689 +v -0.305213 0.156434 -0.939348 +v -0.580549 0.156434 -0.799057 +v -0.799057 0.156434 -0.580549 +v -0.939348 0.156434 -0.305213 +v -0.987689 0.156434 0.000000 +v -0.939348 0.156434 0.305213 +v -0.799057 0.156434 0.580549 +v -0.580549 0.156434 0.799057 +v -0.305213 0.156434 0.939348 +v -0.000000 0.156434 0.987688 +v 0.305212 0.156434 0.939348 +v 0.580549 0.156434 0.799057 +v 0.799057 0.156434 0.580549 +v 0.939348 0.156434 0.305212 +v 0.987688 0.156434 0.000000 +v 0.904509 0.309017 -0.293893 +v 0.769421 0.309017 -0.559017 +v 0.559017 0.309017 -0.769421 +v 0.293893 0.309017 -0.904509 +v 0.000000 0.309017 -0.951057 +v -0.293893 0.309017 -0.904509 +v -0.559017 0.309017 -0.769421 +v -0.769421 0.309017 -0.559017 +v -0.904509 0.309017 -0.293893 +v -0.951057 0.309017 0.000000 +v -0.904509 0.309017 0.293893 +v -0.769421 0.309017 0.559017 +v -0.559017 0.309017 0.769421 +v -0.293893 0.309017 0.904509 +v -0.000000 0.309017 0.951057 +v 0.293893 0.309017 0.904509 +v 0.559017 0.309017 0.769421 +v 0.769421 0.309017 0.559017 +v 0.904509 0.309017 0.293893 +v 0.951057 0.309017 0.000000 +v 0.847398 0.453991 -0.275336 +v 0.720840 0.453991 -0.523721 +v 0.523721 0.453991 -0.720840 +v 0.275336 0.453991 -0.847398 +v 0.000000 0.453991 -0.891007 +v -0.275336 0.453991 -0.847398 +v -0.523721 0.453991 -0.720840 +v -0.720840 0.453991 -0.523721 +v -0.847398 0.453991 -0.275336 +v -0.891007 0.453991 0.000000 +v -0.847398 0.453991 0.275336 +v -0.720840 0.453991 0.523721 +v -0.523721 0.453991 0.720840 +v -0.275336 0.453991 0.847398 +v -0.000000 0.453991 0.891007 +v 0.275336 0.453991 0.847398 +v 0.523721 0.453991 0.720840 +v 0.720839 0.453991 0.523721 +v 0.847398 0.453991 0.275336 +v 0.891007 0.453991 0.000000 +v 0.769421 0.587785 -0.250000 +v 0.654509 0.587785 -0.475529 +v 0.475529 0.587785 -0.654509 +v 0.250000 0.587785 -0.769421 +v 0.000000 0.587785 -0.809017 +v -0.250000 0.587785 -0.769421 +v -0.475528 0.587785 -0.654509 +v -0.654509 0.587785 -0.475528 +v -0.769421 0.587785 -0.250000 +v -0.809017 0.587785 0.000000 +v -0.769421 0.587785 0.250000 +v -0.654509 0.587785 0.475528 +v -0.475528 0.587785 0.654509 +v -0.250000 0.587785 0.769421 +v -0.000000 0.587785 0.809017 +v 0.250000 0.587785 0.769421 +v 0.475528 0.587785 0.654509 +v 0.654509 0.587785 0.475528 +v 0.769421 0.587785 0.250000 +v 0.809017 0.587785 0.000000 +v 0.672499 0.707107 -0.218508 +v 0.572062 0.707107 -0.415627 +v 0.415627 0.707107 -0.572062 +v 0.218508 0.707107 -0.672499 +v 0.000000 0.707107 -0.707107 +v -0.218508 0.707107 -0.672499 +v -0.415627 0.707107 -0.572062 +v -0.572062 0.707107 -0.415627 +v -0.672499 0.707107 -0.218508 +v -0.707107 0.707107 0.000000 +v -0.672499 0.707107 0.218508 +v -0.572062 0.707107 0.415627 +v -0.415627 0.707107 0.572061 +v -0.218508 0.707107 0.672499 +v -0.000000 0.707107 0.707107 +v 0.218508 0.707107 0.672499 +v 0.415627 0.707107 0.572061 +v 0.572061 0.707107 0.415627 +v 0.672499 0.707107 0.218508 +v 0.707107 0.707107 0.000000 +v 0.559017 0.809017 -0.181636 +v 0.475529 0.809017 -0.345492 +v 0.345492 0.809017 -0.475529 +v 0.181636 0.809017 -0.559017 +v 0.000000 0.809017 -0.587786 +v -0.181636 0.809017 -0.559017 +v -0.345492 0.809017 -0.475528 +v -0.475528 0.809017 -0.345492 +v -0.559017 0.809017 -0.181636 +v -0.587785 0.809017 0.000000 +v -0.559017 0.809017 0.181636 +v -0.475528 0.809017 0.345492 +v -0.345492 0.809017 0.475528 +v -0.181636 0.809017 0.559017 +v -0.000000 0.809017 0.587785 +v 0.181636 0.809017 0.559017 +v 0.345491 0.809017 0.475528 +v 0.475528 0.809017 0.345492 +v 0.559017 0.809017 0.181636 +v 0.587785 0.809017 0.000000 +v 0.431771 0.891007 -0.140291 +v 0.367286 0.891007 -0.266849 +v 0.266849 0.891007 -0.367286 +v 0.140291 0.891007 -0.431771 +v 0.000000 0.891007 -0.453991 +v -0.140291 0.891007 -0.431771 +v -0.266849 0.891007 -0.367286 +v -0.367286 0.891007 -0.266849 +v -0.431771 0.891007 -0.140291 +v -0.453991 0.891007 0.000000 +v -0.431771 0.891007 0.140291 +v -0.367286 0.891007 0.266849 +v -0.266849 0.891007 0.367286 +v -0.140291 0.891007 0.431771 +v -0.000000 0.891007 0.453991 +v 0.140291 0.891007 0.431771 +v 0.266849 0.891007 0.367286 +v 0.367286 0.891007 0.266849 +v 0.431771 0.891007 0.140291 +v 0.453991 0.891007 0.000000 +v 0.293893 0.951057 -0.095492 +v 0.250000 0.951057 -0.181636 +v 0.181636 0.951057 -0.250000 +v 0.095492 0.951057 -0.293893 +v 0.000000 0.951057 -0.309017 +v -0.095492 0.951057 -0.293893 +v -0.181636 0.951057 -0.250000 +v -0.250000 0.951057 -0.181636 +v -0.293893 0.951057 -0.095492 +v -0.309017 0.951057 0.000000 +v -0.293893 0.951057 0.095492 +v -0.250000 0.951057 0.181636 +v -0.181636 0.951057 0.250000 +v -0.095492 0.951057 0.293893 +v -0.000000 0.951057 0.309017 +v 0.095491 0.951057 0.293893 +v 0.181636 0.951057 0.250000 +v 0.250000 0.951057 0.181636 +v 0.293893 0.951057 0.095492 +v 0.309017 0.951057 0.000000 +v 0.148778 0.987688 -0.048341 +v 0.126558 0.987688 -0.091950 +v 0.091950 0.987688 -0.126558 +v 0.048341 0.987688 -0.148778 +v 0.000000 0.987688 -0.156435 +v -0.048341 0.987688 -0.148778 +v -0.091950 0.987688 -0.126558 +v -0.126558 0.987688 -0.091950 +v -0.148778 0.987688 -0.048341 +v -0.156435 0.987688 0.000000 +v -0.148778 0.987688 0.048341 +v -0.126558 0.987688 0.091950 +v -0.091950 0.987688 0.126558 +v -0.048341 0.987688 0.148778 +v -0.000000 0.987688 0.156434 +v 0.048341 0.987688 0.148778 +v 0.091950 0.987688 0.126558 +v 0.126558 0.987688 0.091950 +v 0.148778 0.987688 0.048341 +v 0.156434 0.987688 0.000000 +v 0.000000 -1.000000 0.000000 +v 0.000000 1.000000 0.000000 +vt 0.000000 0.050000 +vt 0.050000 0.050000 +vt 0.100000 0.050000 +vt 0.150000 0.050000 +vt 0.200000 0.050000 +vt 0.250000 0.050000 +vt 0.300000 0.050000 +vt 0.350000 0.050000 +vt 0.400000 0.050000 +vt 0.450000 0.050000 +vt 0.500000 0.050000 +vt 0.550000 0.050000 +vt 0.600000 0.050000 +vt 0.650000 0.050000 +vt 0.700000 0.050000 +vt 0.750000 0.050000 +vt 0.800000 0.050000 +vt 0.850000 0.050000 +vt 0.900000 0.050000 +vt 0.950000 0.050000 +vt 1.000000 0.050000 +vt 0.000000 0.100000 +vt 0.050000 0.100000 +vt 0.100000 0.100000 +vt 0.150000 0.100000 +vt 0.200000 0.100000 +vt 0.250000 0.100000 +vt 0.300000 0.100000 +vt 0.350000 0.100000 +vt 0.400000 0.100000 +vt 0.450000 0.100000 +vt 0.500000 0.100000 +vt 0.550000 0.100000 +vt 0.600000 0.100000 +vt 0.650000 0.100000 +vt 0.700000 0.100000 +vt 0.750000 0.100000 +vt 0.800000 0.100000 +vt 0.850000 0.100000 +vt 0.900000 0.100000 +vt 0.950000 0.100000 +vt 1.000000 0.100000 +vt 0.000000 0.150000 +vt 0.050000 0.150000 +vt 0.100000 0.150000 +vt 0.150000 0.150000 +vt 0.200000 0.150000 +vt 0.250000 0.150000 +vt 0.300000 0.150000 +vt 0.350000 0.150000 +vt 0.400000 0.150000 +vt 0.450000 0.150000 +vt 0.500000 0.150000 +vt 0.550000 0.150000 +vt 0.600000 0.150000 +vt 0.650000 0.150000 +vt 0.700000 0.150000 +vt 0.750000 0.150000 +vt 0.800000 0.150000 +vt 0.850000 0.150000 +vt 0.900000 0.150000 +vt 0.950000 0.150000 +vt 1.000000 0.150000 +vt 0.000000 0.200000 +vt 0.050000 0.200000 +vt 0.100000 0.200000 +vt 0.150000 0.200000 +vt 0.200000 0.200000 +vt 0.250000 0.200000 +vt 0.300000 0.200000 +vt 0.350000 0.200000 +vt 0.400000 0.200000 +vt 0.450000 0.200000 +vt 0.500000 0.200000 +vt 0.550000 0.200000 +vt 0.600000 0.200000 +vt 0.650000 0.200000 +vt 0.700000 0.200000 +vt 0.750000 0.200000 +vt 0.800000 0.200000 +vt 0.850000 0.200000 +vt 0.900000 0.200000 +vt 0.950000 0.200000 +vt 1.000000 0.200000 +vt 0.000000 0.250000 +vt 0.050000 0.250000 +vt 0.100000 0.250000 +vt 0.150000 0.250000 +vt 0.200000 0.250000 +vt 0.250000 0.250000 +vt 0.300000 0.250000 +vt 0.350000 0.250000 +vt 0.400000 0.250000 +vt 0.450000 0.250000 +vt 0.500000 0.250000 +vt 0.550000 0.250000 +vt 0.600000 0.250000 +vt 0.650000 0.250000 +vt 0.700000 0.250000 +vt 0.750000 0.250000 +vt 0.800000 0.250000 +vt 0.850000 0.250000 +vt 0.900000 0.250000 +vt 0.950000 0.250000 +vt 1.000000 0.250000 +vt 0.000000 0.300000 +vt 0.050000 0.300000 +vt 0.100000 0.300000 +vt 0.150000 0.300000 +vt 0.200000 0.300000 +vt 0.250000 0.300000 +vt 0.300000 0.300000 +vt 0.350000 0.300000 +vt 0.400000 0.300000 +vt 0.450000 0.300000 +vt 0.500000 0.300000 +vt 0.550000 0.300000 +vt 0.600000 0.300000 +vt 0.650000 0.300000 +vt 0.700000 0.300000 +vt 0.750000 0.300000 +vt 0.800000 0.300000 +vt 0.850000 0.300000 +vt 0.900000 0.300000 +vt 0.950000 0.300000 +vt 1.000000 0.300000 +vt 0.000000 0.350000 +vt 0.050000 0.350000 +vt 0.100000 0.350000 +vt 0.150000 0.350000 +vt 0.200000 0.350000 +vt 0.250000 0.350000 +vt 0.300000 0.350000 +vt 0.350000 0.350000 +vt 0.400000 0.350000 +vt 0.450000 0.350000 +vt 0.500000 0.350000 +vt 0.550000 0.350000 +vt 0.600000 0.350000 +vt 0.650000 0.350000 +vt 0.700000 0.350000 +vt 0.750000 0.350000 +vt 0.800000 0.350000 +vt 0.850000 0.350000 +vt 0.900000 0.350000 +vt 0.950000 0.350000 +vt 1.000000 0.350000 +vt 0.000000 0.400000 +vt 0.050000 0.400000 +vt 0.100000 0.400000 +vt 0.150000 0.400000 +vt 0.200000 0.400000 +vt 0.250000 0.400000 +vt 0.300000 0.400000 +vt 0.350000 0.400000 +vt 0.400000 0.400000 +vt 0.450000 0.400000 +vt 0.500000 0.400000 +vt 0.550000 0.400000 +vt 0.600000 0.400000 +vt 0.650000 0.400000 +vt 0.700000 0.400000 +vt 0.750000 0.400000 +vt 0.800000 0.400000 +vt 0.850000 0.400000 +vt 0.900000 0.400000 +vt 0.950000 0.400000 +vt 1.000000 0.400000 +vt 0.000000 0.450000 +vt 0.050000 0.450000 +vt 0.100000 0.450000 +vt 0.150000 0.450000 +vt 0.200000 0.450000 +vt 0.250000 0.450000 +vt 0.300000 0.450000 +vt 0.350000 0.450000 +vt 0.400000 0.450000 +vt 0.450000 0.450000 +vt 0.500000 0.450000 +vt 0.550000 0.450000 +vt 0.600000 0.450000 +vt 0.650000 0.450000 +vt 0.700000 0.450000 +vt 0.750000 0.450000 +vt 0.800000 0.450000 +vt 0.850000 0.450000 +vt 0.900000 0.450000 +vt 0.950000 0.450000 +vt 1.000000 0.450000 +vt 0.000000 0.500000 +vt 0.050000 0.500000 +vt 0.100000 0.500000 +vt 0.150000 0.500000 +vt 0.200000 0.500000 +vt 0.250000 0.500000 +vt 0.300000 0.500000 +vt 0.350000 0.500000 +vt 0.400000 0.500000 +vt 0.450000 0.500000 +vt 0.500000 0.500000 +vt 0.550000 0.500000 +vt 0.600000 0.500000 +vt 0.650000 0.500000 +vt 0.700000 0.500000 +vt 0.750000 0.500000 +vt 0.800000 0.500000 +vt 0.850000 0.500000 +vt 0.900000 0.500000 +vt 0.950000 0.500000 +vt 1.000000 0.500000 +vt 0.000000 0.550000 +vt 0.050000 0.550000 +vt 0.100000 0.550000 +vt 0.150000 0.550000 +vt 0.200000 0.550000 +vt 0.250000 0.550000 +vt 0.300000 0.550000 +vt 0.350000 0.550000 +vt 0.400000 0.550000 +vt 0.450000 0.550000 +vt 0.500000 0.550000 +vt 0.550000 0.550000 +vt 0.600000 0.550000 +vt 0.650000 0.550000 +vt 0.700000 0.550000 +vt 0.750000 0.550000 +vt 0.800000 0.550000 +vt 0.850000 0.550000 +vt 0.900000 0.550000 +vt 0.950000 0.550000 +vt 1.000000 0.550000 +vt 0.000000 0.600000 +vt 0.050000 0.600000 +vt 0.100000 0.600000 +vt 0.150000 0.600000 +vt 0.200000 0.600000 +vt 0.250000 0.600000 +vt 0.300000 0.600000 +vt 0.350000 0.600000 +vt 0.400000 0.600000 +vt 0.450000 0.600000 +vt 0.500000 0.600000 +vt 0.550000 0.600000 +vt 0.600000 0.600000 +vt 0.650000 0.600000 +vt 0.700000 0.600000 +vt 0.750000 0.600000 +vt 0.800000 0.600000 +vt 0.850000 0.600000 +vt 0.900000 0.600000 +vt 0.950000 0.600000 +vt 1.000000 0.600000 +vt 0.000000 0.650000 +vt 0.050000 0.650000 +vt 0.100000 0.650000 +vt 0.150000 0.650000 +vt 0.200000 0.650000 +vt 0.250000 0.650000 +vt 0.300000 0.650000 +vt 0.350000 0.650000 +vt 0.400000 0.650000 +vt 0.450000 0.650000 +vt 0.500000 0.650000 +vt 0.550000 0.650000 +vt 0.600000 0.650000 +vt 0.650000 0.650000 +vt 0.700000 0.650000 +vt 0.750000 0.650000 +vt 0.800000 0.650000 +vt 0.850000 0.650000 +vt 0.900000 0.650000 +vt 0.950000 0.650000 +vt 1.000000 0.650000 +vt 0.000000 0.700000 +vt 0.050000 0.700000 +vt 0.100000 0.700000 +vt 0.150000 0.700000 +vt 0.200000 0.700000 +vt 0.250000 0.700000 +vt 0.300000 0.700000 +vt 0.350000 0.700000 +vt 0.400000 0.700000 +vt 0.450000 0.700000 +vt 0.500000 0.700000 +vt 0.550000 0.700000 +vt 0.600000 0.700000 +vt 0.650000 0.700000 +vt 0.700000 0.700000 +vt 0.750000 0.700000 +vt 0.800000 0.700000 +vt 0.850000 0.700000 +vt 0.900000 0.700000 +vt 0.950000 0.700000 +vt 1.000000 0.700000 +vt 0.000000 0.750000 +vt 0.050000 0.750000 +vt 0.100000 0.750000 +vt 0.150000 0.750000 +vt 0.200000 0.750000 +vt 0.250000 0.750000 +vt 0.300000 0.750000 +vt 0.350000 0.750000 +vt 0.400000 0.750000 +vt 0.450000 0.750000 +vt 0.500000 0.750000 +vt 0.550000 0.750000 +vt 0.600000 0.750000 +vt 0.650000 0.750000 +vt 0.700000 0.750000 +vt 0.750000 0.750000 +vt 0.800000 0.750000 +vt 0.850000 0.750000 +vt 0.900000 0.750000 +vt 0.950000 0.750000 +vt 1.000000 0.750000 +vt 0.000000 0.800000 +vt 0.050000 0.800000 +vt 0.100000 0.800000 +vt 0.150000 0.800000 +vt 0.200000 0.800000 +vt 0.250000 0.800000 +vt 0.300000 0.800000 +vt 0.350000 0.800000 +vt 0.400000 0.800000 +vt 0.450000 0.800000 +vt 0.500000 0.800000 +vt 0.550000 0.800000 +vt 0.600000 0.800000 +vt 0.650000 0.800000 +vt 0.700000 0.800000 +vt 0.750000 0.800000 +vt 0.800000 0.800000 +vt 0.850000 0.800000 +vt 0.900000 0.800000 +vt 0.950000 0.800000 +vt 1.000000 0.800000 +vt 0.000000 0.850000 +vt 0.050000 0.850000 +vt 0.100000 0.850000 +vt 0.150000 0.850000 +vt 0.200000 0.850000 +vt 0.250000 0.850000 +vt 0.300000 0.850000 +vt 0.350000 0.850000 +vt 0.400000 0.850000 +vt 0.450000 0.850000 +vt 0.500000 0.850000 +vt 0.550000 0.850000 +vt 0.600000 0.850000 +vt 0.650000 0.850000 +vt 0.700000 0.850000 +vt 0.750000 0.850000 +vt 0.800000 0.850000 +vt 0.850000 0.850000 +vt 0.900000 0.850000 +vt 0.950000 0.850000 +vt 1.000000 0.850000 +vt 0.000000 0.900000 +vt 0.050000 0.900000 +vt 0.100000 0.900000 +vt 0.150000 0.900000 +vt 0.200000 0.900000 +vt 0.250000 0.900000 +vt 0.300000 0.900000 +vt 0.350000 0.900000 +vt 0.400000 0.900000 +vt 0.450000 0.900000 +vt 0.500000 0.900000 +vt 0.550000 0.900000 +vt 0.600000 0.900000 +vt 0.650000 0.900000 +vt 0.700000 0.900000 +vt 0.750000 0.900000 +vt 0.800000 0.900000 +vt 0.850000 0.900000 +vt 0.900000 0.900000 +vt 0.950000 0.900000 +vt 1.000000 0.900000 +vt 0.000000 0.950000 +vt 0.050000 0.950000 +vt 0.100000 0.950000 +vt 0.150000 0.950000 +vt 0.200000 0.950000 +vt 0.250000 0.950000 +vt 0.300000 0.950000 +vt 0.350000 0.950000 +vt 0.400000 0.950000 +vt 0.450000 0.950000 +vt 0.500000 0.950000 +vt 0.550000 0.950000 +vt 0.600000 0.950000 +vt 0.650000 0.950000 +vt 0.700000 0.950000 +vt 0.750000 0.950000 +vt 0.800000 0.950000 +vt 0.850000 0.950000 +vt 0.900000 0.950000 +vt 0.950000 0.950000 +vt 1.000000 0.950000 +vt 0.025000 0.000000 +vt 0.075000 0.000000 +vt 0.125000 0.000000 +vt 0.175000 0.000000 +vt 0.225000 0.000000 +vt 0.275000 0.000000 +vt 0.325000 0.000000 +vt 0.375000 0.000000 +vt 0.425000 0.000000 +vt 0.475000 0.000000 +vt 0.525000 0.000000 +vt 0.575000 0.000000 +vt 0.625000 0.000000 +vt 0.675000 0.000000 +vt 0.725000 0.000000 +vt 0.775000 0.000000 +vt 0.825000 0.000000 +vt 0.875000 0.000000 +vt 0.925000 0.000000 +vt 0.975000 0.000000 +vt 0.025000 1.000000 +vt 0.075000 1.000000 +vt 0.125000 1.000000 +vt 0.175000 1.000000 +vt 0.225000 1.000000 +vt 0.275000 1.000000 +vt 0.325000 1.000000 +vt 0.375000 1.000000 +vt 0.425000 1.000000 +vt 0.475000 1.000000 +vt 0.525000 1.000000 +vt 0.575000 1.000000 +vt 0.625000 1.000000 +vt 0.675000 1.000000 +vt 0.725000 1.000000 +vt 0.775000 1.000000 +vt 0.825000 1.000000 +vt 0.875000 1.000000 +vt 0.925000 1.000000 +vt 0.975000 1.000000 +vn 0.190555 -0.979722 -0.061915 +vn 0.162096 -0.979722 -0.117770 +vn 0.269870 -0.942723 -0.196072 +vn 0.317252 -0.942722 -0.103081 +vn 0.117769 -0.979722 -0.162095 +vn 0.196072 -0.942723 -0.269870 +vn 0.061915 -0.979722 -0.190555 +vn 0.103081 -0.942723 -0.317251 +vn -0.000000 -0.979722 -0.200361 +vn -0.000000 -0.942723 -0.333578 +vn -0.061915 -0.979722 -0.190555 +vn -0.103081 -0.942722 -0.317252 +vn -0.117769 -0.979722 -0.162096 +vn -0.196072 -0.942722 -0.269871 +vn -0.162096 -0.979722 -0.117770 +vn -0.269870 -0.942723 -0.196072 +vn -0.190555 -0.979722 -0.061915 +vn -0.317252 -0.942722 -0.103081 +vn -0.200361 -0.979722 0.000000 +vn -0.333578 -0.942722 -0.000000 +vn -0.190555 -0.979722 0.061915 +vn -0.317252 -0.942722 0.103081 +vn -0.162096 -0.979722 0.117769 +vn -0.269870 -0.942723 0.196072 +vn -0.117769 -0.979722 0.162095 +vn -0.196072 -0.942723 0.269870 +vn -0.061915 -0.979722 0.190555 +vn -0.103081 -0.942722 0.317252 +vn 0.000000 -0.979722 0.200361 +vn 0.000000 -0.942722 0.333578 +vn 0.061915 -0.979722 0.190555 +vn 0.103081 -0.942722 0.317252 +vn 0.117769 -0.979722 0.162096 +vn 0.196072 -0.942722 0.269870 +vn 0.162096 -0.979722 0.117769 +vn 0.269870 -0.942722 0.196073 +vn 0.190555 -0.979722 0.061915 +vn 0.317252 -0.942722 0.103082 +vn 0.200361 -0.979722 0.000001 +vn 0.333578 -0.942722 0.000000 +vn 0.380846 -0.882266 -0.276701 +vn 0.447712 -0.882266 -0.145470 +vn 0.276701 -0.882266 -0.380846 +vn 0.145470 -0.882266 -0.447711 +vn -0.000000 -0.882266 -0.470752 +vn -0.145470 -0.882266 -0.447711 +vn -0.276701 -0.882266 -0.380846 +vn -0.380846 -0.882266 -0.276701 +vn -0.447712 -0.882266 -0.145470 +vn -0.470752 -0.882266 0.000000 +vn -0.447712 -0.882266 0.145470 +vn -0.380846 -0.882266 0.276701 +vn -0.276701 -0.882266 0.380846 +vn -0.145470 -0.882266 0.447712 +vn 0.000000 -0.882266 0.470752 +vn 0.145470 -0.882266 0.447712 +vn 0.276701 -0.882266 0.380846 +vn 0.380846 -0.882266 0.276701 +vn 0.447712 -0.882266 0.145470 +vn 0.470752 -0.882266 0.000000 +vn 0.485138 -0.800252 -0.352474 +vn 0.570314 -0.800252 -0.185306 +vn 0.352473 -0.800252 -0.485138 +vn 0.185306 -0.800252 -0.570314 +vn -0.000000 -0.800252 -0.599664 +vn -0.185307 -0.800252 -0.570314 +vn -0.352474 -0.800252 -0.485138 +vn -0.485138 -0.800252 -0.352474 +vn -0.570314 -0.800252 -0.185306 +vn -0.599664 -0.800252 0.000000 +vn -0.570314 -0.800252 0.185306 +vn -0.485138 -0.800252 0.352474 +vn -0.352474 -0.800252 0.485139 +vn -0.185306 -0.800252 0.570314 +vn 0.000000 -0.800252 0.599664 +vn 0.185306 -0.800252 0.570314 +vn 0.352474 -0.800252 0.485139 +vn 0.485138 -0.800252 0.352474 +vn 0.570314 -0.800252 0.185306 +vn 0.599664 -0.800252 0.000001 +vn 0.578713 -0.698789 -0.420459 +vn 0.680318 -0.698789 -0.221048 +vn 0.420459 -0.698789 -0.578713 +vn 0.221049 -0.698789 -0.680318 +vn -0.000000 -0.698789 -0.715328 +vn -0.221049 -0.698789 -0.680318 +vn -0.420460 -0.698789 -0.578713 +vn -0.578713 -0.698789 -0.420459 +vn -0.680318 -0.698788 -0.221049 +vn -0.715328 -0.698788 -0.000000 +vn -0.680318 -0.698789 0.221049 +vn -0.578713 -0.698788 0.420460 +vn -0.420459 -0.698788 0.578713 +vn -0.221049 -0.698788 0.680318 +vn -0.000000 -0.698789 0.715328 +vn 0.221049 -0.698789 0.680318 +vn 0.420460 -0.698788 0.578713 +vn 0.578713 -0.698788 0.420459 +vn 0.680318 -0.698788 0.221049 +vn 0.715328 -0.698788 0.000001 +vn 0.658808 -0.580401 -0.478652 +vn 0.774475 -0.580401 -0.251641 +vn 0.478652 -0.580401 -0.658808 +vn 0.251642 -0.580401 -0.774475 +vn -0.000000 -0.580401 -0.814331 +vn -0.251642 -0.580401 -0.774475 +vn -0.478652 -0.580401 -0.658808 +vn -0.658808 -0.580401 -0.478652 +vn -0.774475 -0.580401 -0.251642 +vn -0.814331 -0.580401 -0.000000 +vn -0.774475 -0.580401 0.251642 +vn -0.658808 -0.580401 0.478652 +vn -0.478652 -0.580401 0.658808 +vn -0.251642 -0.580401 0.774475 +vn 0.000000 -0.580401 0.814331 +vn 0.251642 -0.580401 0.774475 +vn 0.478652 -0.580401 0.658808 +vn 0.658808 -0.580401 0.478652 +vn 0.774475 -0.580401 0.251642 +vn 0.814331 -0.580401 0.000001 +vn 0.723291 -0.447994 -0.525502 +vn 0.850280 -0.447994 -0.276272 +vn 0.525501 -0.447994 -0.723291 +vn 0.276272 -0.447994 -0.850279 +vn -0.000000 -0.447994 -0.894037 +vn -0.276273 -0.447994 -0.850279 +vn -0.525502 -0.447994 -0.723291 +vn -0.723291 -0.447994 -0.525501 +vn -0.850280 -0.447994 -0.276272 +vn -0.894037 -0.447994 -0.000000 +vn -0.850279 -0.447994 0.276273 +vn -0.723291 -0.447994 0.525502 +vn -0.525502 -0.447994 0.723291 +vn -0.276273 -0.447994 0.850280 +vn 0.000000 -0.447994 0.894037 +vn 0.276273 -0.447994 0.850280 +vn 0.525502 -0.447994 0.723291 +vn 0.723291 -0.447994 0.525502 +vn 0.850280 -0.447994 0.276273 +vn 0.894037 -0.447994 0.000001 +vn 0.770524 -0.304789 -0.559819 +vn 0.905806 -0.304789 -0.294313 +vn 0.559818 -0.304789 -0.770524 +vn 0.294314 -0.304789 -0.905805 +vn -0.000000 -0.304789 -0.952420 +vn -0.294314 -0.304789 -0.905805 +vn -0.559819 -0.304789 -0.770524 +vn -0.770524 -0.304789 -0.559818 +vn -0.905805 -0.304789 -0.294314 +vn -0.952420 -0.304789 -0.000000 +vn -0.905805 -0.304789 0.294314 +vn -0.770524 -0.304788 0.559819 +vn -0.559818 -0.304788 0.770524 +vn -0.294314 -0.304789 0.905805 +vn 0.000000 -0.304789 0.952420 +vn 0.294314 -0.304789 0.905805 +vn 0.559818 -0.304789 0.770524 +vn 0.770524 -0.304789 0.559818 +vn 0.905805 -0.304789 0.294314 +vn 0.952420 -0.304788 0.000001 +vn 0.799335 -0.154249 -0.580751 +vn 0.939675 -0.154249 -0.305318 +vn 0.580751 -0.154249 -0.799335 +vn 0.305319 -0.154249 -0.939674 +vn 0.000000 -0.154249 -0.988032 +vn -0.305319 -0.154249 -0.939674 +vn -0.580751 -0.154249 -0.799335 +vn -0.799335 -0.154249 -0.580751 +vn -0.939674 -0.154248 -0.305319 +vn -0.988032 -0.154248 0.000000 +vn -0.939674 -0.154248 0.305319 +vn -0.799335 -0.154248 0.580751 +vn -0.580751 -0.154249 0.799335 +vn -0.305319 -0.154249 0.939674 +vn 0.000000 -0.154249 0.988032 +vn 0.305319 -0.154249 0.939674 +vn 0.580751 -0.154249 0.799335 +vn 0.799335 -0.154249 0.580751 +vn 0.939674 -0.154249 0.305319 +vn 0.988032 -0.154249 0.000001 +vn 0.809017 0.000000 -0.587785 +vn 0.951057 -0.000000 -0.309016 +vn 0.587785 -0.000000 -0.809017 +vn 0.309017 -0.000000 -0.951057 +vn 0.000000 0.000000 -1.000000 +vn -0.309017 -0.000000 -0.951056 +vn -0.587785 -0.000000 -0.809017 +vn -0.809017 0.000000 -0.587785 +vn -0.951057 0.000000 -0.309017 +vn -1.000000 -0.000000 0.000000 +vn -0.951057 -0.000000 0.309017 +vn -0.809017 0.000000 0.587785 +vn -0.587785 -0.000000 0.809017 +vn -0.309017 -0.000000 0.951057 +vn 0.000000 0.000000 1.000000 +vn 0.309017 -0.000000 0.951057 +vn 0.587785 -0.000000 0.809017 +vn 0.809017 -0.000000 0.587785 +vn 0.951057 0.000000 0.309017 +vn 1.000000 0.000000 0.000001 +vn 0.799335 0.154249 -0.580751 +vn 0.939675 0.154249 -0.305318 +vn 0.580751 0.154249 -0.799335 +vn 0.305319 0.154249 -0.939674 +vn 0.000000 0.154249 -0.988032 +vn -0.305319 0.154249 -0.939674 +vn -0.580751 0.154249 -0.799335 +vn -0.799335 0.154249 -0.580751 +vn -0.939674 0.154248 -0.305319 +vn -0.988032 0.154248 0.000000 +vn -0.939674 0.154248 0.305319 +vn -0.799335 0.154248 0.580751 +vn -0.580751 0.154249 0.799335 +vn -0.305319 0.154249 0.939674 +vn 0.000000 0.154249 0.988032 +vn 0.305319 0.154249 0.939674 +vn 0.580751 0.154249 0.799335 +vn 0.799335 0.154249 0.580751 +vn 0.939674 0.154249 0.305319 +vn 0.988032 0.154249 0.000001 +vn 0.770524 0.304789 -0.559819 +vn 0.905806 0.304789 -0.294313 +vn 0.559818 0.304789 -0.770524 +vn 0.294314 0.304789 -0.905805 +vn -0.000000 0.304789 -0.952420 +vn -0.294314 0.304789 -0.905805 +vn -0.559819 0.304789 -0.770524 +vn -0.770524 0.304789 -0.559818 +vn -0.905805 0.304789 -0.294314 +vn -0.952420 0.304789 -0.000000 +vn -0.905805 0.304789 0.294314 +vn -0.770524 0.304788 0.559819 +vn -0.559818 0.304788 0.770524 +vn -0.294314 0.304789 0.905805 +vn 0.000000 0.304789 0.952420 +vn 0.294314 0.304789 0.905805 +vn 0.559818 0.304789 0.770524 +vn 0.770524 0.304789 0.559818 +vn 0.905805 0.304789 0.294314 +vn 0.952420 0.304789 0.000001 +vn 0.723291 0.447994 -0.525502 +vn 0.850280 0.447994 -0.276272 +vn 0.525501 0.447994 -0.723291 +vn 0.276272 0.447994 -0.850280 +vn -0.000000 0.447994 -0.894037 +vn -0.276273 0.447994 -0.850279 +vn -0.525502 0.447994 -0.723291 +vn -0.723291 0.447994 -0.525501 +vn -0.850280 0.447994 -0.276273 +vn -0.894037 0.447994 -0.000000 +vn -0.850280 0.447994 0.276273 +vn -0.723291 0.447994 0.525502 +vn -0.525502 0.447994 0.723291 +vn -0.276273 0.447994 0.850280 +vn 0.000000 0.447994 0.894037 +vn 0.276273 0.447994 0.850280 +vn 0.525502 0.447994 0.723291 +vn 0.723291 0.447994 0.525502 +vn 0.850280 0.447994 0.276273 +vn 0.894037 0.447994 0.000001 +vn 0.658808 0.580401 -0.478652 +vn 0.774475 0.580401 -0.251641 +vn 0.478652 0.580401 -0.658808 +vn 0.251642 0.580401 -0.774475 +vn -0.000000 0.580401 -0.814331 +vn -0.251642 0.580401 -0.774475 +vn -0.478652 0.580401 -0.658808 +vn -0.658808 0.580401 -0.478652 +vn -0.774475 0.580401 -0.251642 +vn -0.814331 0.580401 -0.000000 +vn -0.774475 0.580401 0.251642 +vn -0.658808 0.580401 0.478652 +vn -0.478652 0.580401 0.658808 +vn -0.251642 0.580401 0.774475 +vn 0.000000 0.580401 0.814331 +vn 0.251642 0.580401 0.774475 +vn 0.478652 0.580401 0.658808 +vn 0.658808 0.580401 0.478652 +vn 0.774475 0.580401 0.251642 +vn 0.814331 0.580401 0.000001 +vn 0.578712 0.698789 -0.420459 +vn 0.680318 0.698789 -0.221048 +vn 0.420459 0.698789 -0.578713 +vn 0.221049 0.698789 -0.680318 +vn -0.000000 0.698789 -0.715328 +vn -0.221049 0.698789 -0.680318 +vn -0.420460 0.698789 -0.578713 +vn -0.578713 0.698789 -0.420459 +vn -0.680318 0.698789 -0.221049 +vn -0.715328 0.698789 0.000000 +vn -0.680318 0.698789 0.221049 +vn -0.578713 0.698788 0.420460 +vn -0.420459 0.698788 0.578713 +vn -0.221049 0.698788 0.680318 +vn -0.000000 0.698788 0.715328 +vn 0.221049 0.698789 0.680318 +vn 0.420460 0.698788 0.578713 +vn 0.578713 0.698788 0.420460 +vn 0.680318 0.698788 0.221049 +vn 0.715328 0.698788 0.000001 +vn 0.485138 0.800252 -0.352474 +vn 0.570314 0.800252 -0.185306 +vn 0.352473 0.800252 -0.485139 +vn 0.185306 0.800252 -0.570314 +vn -0.000000 0.800252 -0.599664 +vn -0.185307 0.800252 -0.570314 +vn -0.352474 0.800252 -0.485138 +vn -0.485138 0.800252 -0.352474 +vn -0.570314 0.800252 -0.185306 +vn -0.599664 0.800252 0.000000 +vn -0.570314 0.800252 0.185306 +vn -0.485138 0.800252 0.352474 +vn -0.352474 0.800252 0.485138 +vn -0.185306 0.800252 0.570314 +vn 0.000000 0.800252 0.599664 +vn 0.185306 0.800252 0.570315 +vn 0.352474 0.800252 0.485139 +vn 0.485139 0.800252 0.352474 +vn 0.570314 0.800252 0.185306 +vn 0.599664 0.800252 0.000001 +vn 0.380846 0.882266 -0.276701 +vn 0.447712 0.882266 -0.145470 +vn 0.276701 0.882266 -0.380846 +vn 0.145470 0.882266 -0.447712 +vn -0.000000 0.882266 -0.470752 +vn -0.145470 0.882266 -0.447711 +vn -0.276701 0.882266 -0.380846 +vn -0.380846 0.882266 -0.276701 +vn -0.447712 0.882266 -0.145470 +vn -0.470752 0.882266 0.000000 +vn -0.447712 0.882266 0.145471 +vn -0.380846 0.882266 0.276701 +vn -0.276701 0.882266 0.380846 +vn -0.145470 0.882266 0.447712 +vn 0.000000 0.882266 0.470752 +vn 0.145470 0.882266 0.447712 +vn 0.276701 0.882266 0.380846 +vn 0.380846 0.882266 0.276701 +vn 0.447712 0.882266 0.145470 +vn 0.470752 0.882266 0.000000 +vn 0.269870 0.942722 -0.196073 +vn 0.317252 0.942722 -0.103081 +vn 0.196072 0.942722 -0.269871 +vn 0.103081 0.942723 -0.317252 +vn -0.000000 0.942723 -0.333578 +vn -0.103081 0.942723 -0.317251 +vn -0.196072 0.942723 -0.269870 +vn -0.269870 0.942723 -0.196072 +vn -0.317252 0.942722 -0.103081 +vn -0.333578 0.942722 0.000000 +vn -0.317252 0.942722 0.103082 +vn -0.269870 0.942722 0.196072 +vn -0.196072 0.942723 0.269870 +vn -0.103081 0.942722 0.317252 +vn 0.000000 0.942722 0.333578 +vn 0.103081 0.942722 0.317252 +vn 0.196072 0.942723 0.269870 +vn 0.269870 0.942722 0.196072 +vn 0.317252 0.942722 0.103081 +vn 0.333578 0.942722 0.000000 +vn 0.162096 0.979722 -0.117769 +vn 0.190555 0.979722 -0.061915 +vn 0.117769 0.979722 -0.162096 +vn 0.061915 0.979722 -0.190555 +vn -0.000000 0.979722 -0.200361 +vn -0.061915 0.979722 -0.190555 +vn -0.117769 0.979722 -0.162095 +vn -0.162096 0.979722 -0.117769 +vn -0.190555 0.979722 -0.061915 +vn -0.200361 0.979722 0.000000 +vn -0.190555 0.979722 0.061915 +vn -0.162096 0.979722 0.117769 +vn -0.117769 0.979722 0.162096 +vn -0.061915 0.979722 0.190555 +vn 0.000000 0.979722 0.200361 +vn 0.061915 0.979722 0.190555 +vn 0.117769 0.979722 0.162096 +vn 0.162096 0.979722 0.117769 +vn 0.190555 0.979722 0.061915 +vn 0.200361 0.979722 0.000001 +vn -0.000000 -1.000000 -0.000000 +vn -0.000000 1.000000 0.000000 +f 1/1/1 2/2/2 22/23/3 21/22/4 +f 2/2/2 3/3/5 23/24/6 22/23/3 +f 3/3/5 4/4/7 24/25/8 23/24/6 +f 4/4/7 5/5/9 25/26/10 24/25/8 +f 5/5/9 6/6/11 26/27/12 25/26/10 +f 6/6/11 7/7/13 27/28/14 26/27/12 +f 7/7/13 8/8/15 28/29/16 27/28/14 +f 8/8/15 9/9/17 29/30/18 28/29/16 +f 9/9/17 10/10/19 30/31/20 29/30/18 +f 10/10/19 11/11/21 31/32/22 30/31/20 +f 11/11/21 12/12/23 32/33/24 31/32/22 +f 12/12/23 13/13/25 33/34/26 32/33/24 +f 13/13/25 14/14/27 34/35/28 33/34/26 +f 14/14/27 15/15/29 35/36/30 34/35/28 +f 15/15/29 16/16/31 36/37/32 35/36/30 +f 16/16/31 17/17/33 37/38/34 36/37/32 +f 17/17/33 18/18/35 38/39/36 37/38/34 +f 18/18/35 19/19/37 39/40/38 38/39/36 +f 19/19/37 20/20/39 40/41/40 39/40/38 +f 20/20/39 1/21/1 21/42/4 40/41/40 +f 21/22/4 22/23/3 42/44/41 41/43/42 +f 22/23/3 23/24/6 43/45/43 42/44/41 +f 23/24/6 24/25/8 44/46/44 43/45/43 +f 24/25/8 25/26/10 45/47/45 44/46/44 +f 25/26/10 26/27/12 46/48/46 45/47/45 +f 26/27/12 27/28/14 47/49/47 46/48/46 +f 27/28/14 28/29/16 48/50/48 47/49/47 +f 28/29/16 29/30/18 49/51/49 48/50/48 +f 29/30/18 30/31/20 50/52/50 49/51/49 +f 30/31/20 31/32/22 51/53/51 50/52/50 +f 31/32/22 32/33/24 52/54/52 51/53/51 +f 32/33/24 33/34/26 53/55/53 52/54/52 +f 33/34/26 34/35/28 54/56/54 53/55/53 +f 34/35/28 35/36/30 55/57/55 54/56/54 +f 35/36/30 36/37/32 56/58/56 55/57/55 +f 36/37/32 37/38/34 57/59/57 56/58/56 +f 37/38/34 38/39/36 58/60/58 57/59/57 +f 38/39/36 39/40/38 59/61/59 58/60/58 +f 39/40/38 40/41/40 60/62/60 59/61/59 +f 40/41/40 21/42/4 41/63/42 60/62/60 +f 41/43/42 42/44/41 62/65/61 61/64/62 +f 42/44/41 43/45/43 63/66/63 62/65/61 +f 43/45/43 44/46/44 64/67/64 63/66/63 +f 44/46/44 45/47/45 65/68/65 64/67/64 +f 45/47/45 46/48/46 66/69/66 65/68/65 +f 46/48/46 47/49/47 67/70/67 66/69/66 +f 47/49/47 48/50/48 68/71/68 67/70/67 +f 48/50/48 49/51/49 69/72/69 68/71/68 +f 49/51/49 50/52/50 70/73/70 69/72/69 +f 50/52/50 51/53/51 71/74/71 70/73/70 +f 51/53/51 52/54/52 72/75/72 71/74/71 +f 52/54/52 53/55/53 73/76/73 72/75/72 +f 53/55/53 54/56/54 74/77/74 73/76/73 +f 54/56/54 55/57/55 75/78/75 74/77/74 +f 55/57/55 56/58/56 76/79/76 75/78/75 +f 56/58/56 57/59/57 77/80/77 76/79/76 +f 57/59/57 58/60/58 78/81/78 77/80/77 +f 58/60/58 59/61/59 79/82/79 78/81/78 +f 59/61/59 60/62/60 80/83/80 79/82/79 +f 60/62/60 41/63/42 61/84/62 80/83/80 +f 61/64/62 62/65/61 82/86/81 81/85/82 +f 62/65/61 63/66/63 83/87/83 82/86/81 +f 63/66/63 64/67/64 84/88/84 83/87/83 +f 64/67/64 65/68/65 85/89/85 84/88/84 +f 65/68/65 66/69/66 86/90/86 85/89/85 +f 66/69/66 67/70/67 87/91/87 86/90/86 +f 67/70/67 68/71/68 88/92/88 87/91/87 +f 68/71/68 69/72/69 89/93/89 88/92/88 +f 69/72/69 70/73/70 90/94/90 89/93/89 +f 70/73/70 71/74/71 91/95/91 90/94/90 +f 71/74/71 72/75/72 92/96/92 91/95/91 +f 72/75/72 73/76/73 93/97/93 92/96/92 +f 73/76/73 74/77/74 94/98/94 93/97/93 +f 74/77/74 75/78/75 95/99/95 94/98/94 +f 75/78/75 76/79/76 96/100/96 95/99/95 +f 76/79/76 77/80/77 97/101/97 96/100/96 +f 77/80/77 78/81/78 98/102/98 97/101/97 +f 78/81/78 79/82/79 99/103/99 98/102/98 +f 79/82/79 80/83/80 100/104/100 99/103/99 +f 80/83/80 61/84/62 81/105/82 100/104/100 +f 81/85/82 82/86/81 102/107/101 101/106/102 +f 82/86/81 83/87/83 103/108/103 102/107/101 +f 83/87/83 84/88/84 104/109/104 103/108/103 +f 84/88/84 85/89/85 105/110/105 104/109/104 +f 85/89/85 86/90/86 106/111/106 105/110/105 +f 86/90/86 87/91/87 107/112/107 106/111/106 +f 87/91/87 88/92/88 108/113/108 107/112/107 +f 88/92/88 89/93/89 109/114/109 108/113/108 +f 89/93/89 90/94/90 110/115/110 109/114/109 +f 90/94/90 91/95/91 111/116/111 110/115/110 +f 91/95/91 92/96/92 112/117/112 111/116/111 +f 92/96/92 93/97/93 113/118/113 112/117/112 +f 93/97/93 94/98/94 114/119/114 113/118/113 +f 94/98/94 95/99/95 115/120/115 114/119/114 +f 95/99/95 96/100/96 116/121/116 115/120/115 +f 96/100/96 97/101/97 117/122/117 116/121/116 +f 97/101/97 98/102/98 118/123/118 117/122/117 +f 98/102/98 99/103/99 119/124/119 118/123/118 +f 99/103/99 100/104/100 120/125/120 119/124/119 +f 100/104/100 81/105/82 101/126/102 120/125/120 +f 101/106/102 102/107/101 122/128/121 121/127/122 +f 102/107/101 103/108/103 123/129/123 122/128/121 +f 103/108/103 104/109/104 124/130/124 123/129/123 +f 104/109/104 105/110/105 125/131/125 124/130/124 +f 105/110/105 106/111/106 126/132/126 125/131/125 +f 106/111/106 107/112/107 127/133/127 126/132/126 +f 107/112/107 108/113/108 128/134/128 127/133/127 +f 108/113/108 109/114/109 129/135/129 128/134/128 +f 109/114/109 110/115/110 130/136/130 129/135/129 +f 110/115/110 111/116/111 131/137/131 130/136/130 +f 111/116/111 112/117/112 132/138/132 131/137/131 +f 112/117/112 113/118/113 133/139/133 132/138/132 +f 113/118/113 114/119/114 134/140/134 133/139/133 +f 114/119/114 115/120/115 135/141/135 134/140/134 +f 115/120/115 116/121/116 136/142/136 135/141/135 +f 116/121/116 117/122/117 137/143/137 136/142/136 +f 117/122/117 118/123/118 138/144/138 137/143/137 +f 118/123/118 119/124/119 139/145/139 138/144/138 +f 119/124/119 120/125/120 140/146/140 139/145/139 +f 120/125/120 101/126/102 121/147/122 140/146/140 +f 121/127/122 122/128/121 142/149/141 141/148/142 +f 122/128/121 123/129/123 143/150/143 142/149/141 +f 123/129/123 124/130/124 144/151/144 143/150/143 +f 124/130/124 125/131/125 145/152/145 144/151/144 +f 125/131/125 126/132/126 146/153/146 145/152/145 +f 126/132/126 127/133/127 147/154/147 146/153/146 +f 127/133/127 128/134/128 148/155/148 147/154/147 +f 128/134/128 129/135/129 149/156/149 148/155/148 +f 129/135/129 130/136/130 150/157/150 149/156/149 +f 130/136/130 131/137/131 151/158/151 150/157/150 +f 131/137/131 132/138/132 152/159/152 151/158/151 +f 132/138/132 133/139/133 153/160/153 152/159/152 +f 133/139/133 134/140/134 154/161/154 153/160/153 +f 134/140/134 135/141/135 155/162/155 154/161/154 +f 135/141/135 136/142/136 156/163/156 155/162/155 +f 136/142/136 137/143/137 157/164/157 156/163/156 +f 137/143/137 138/144/138 158/165/158 157/164/157 +f 138/144/138 139/145/139 159/166/159 158/165/158 +f 139/145/139 140/146/140 160/167/160 159/166/159 +f 140/146/140 121/147/122 141/168/142 160/167/160 +f 141/148/142 142/149/141 162/170/161 161/169/162 +f 142/149/141 143/150/143 163/171/163 162/170/161 +f 143/150/143 144/151/144 164/172/164 163/171/163 +f 144/151/144 145/152/145 165/173/165 164/172/164 +f 145/152/145 146/153/146 166/174/166 165/173/165 +f 146/153/146 147/154/147 167/175/167 166/174/166 +f 147/154/147 148/155/148 168/176/168 167/175/167 +f 148/155/148 149/156/149 169/177/169 168/176/168 +f 149/156/149 150/157/150 170/178/170 169/177/169 +f 150/157/150 151/158/151 171/179/171 170/178/170 +f 151/158/151 152/159/152 172/180/172 171/179/171 +f 152/159/152 153/160/153 173/181/173 172/180/172 +f 153/160/153 154/161/154 174/182/174 173/181/173 +f 154/161/154 155/162/155 175/183/175 174/182/174 +f 155/162/155 156/163/156 176/184/176 175/183/175 +f 156/163/156 157/164/157 177/185/177 176/184/176 +f 157/164/157 158/165/158 178/186/178 177/185/177 +f 158/165/158 159/166/159 179/187/179 178/186/178 +f 159/166/159 160/167/160 180/188/180 179/187/179 +f 160/167/160 141/168/142 161/189/162 180/188/180 +f 161/169/162 162/170/161 182/191/181 181/190/182 +f 162/170/161 163/171/163 183/192/183 182/191/181 +f 163/171/163 164/172/164 184/193/184 183/192/183 +f 164/172/164 165/173/165 185/194/185 184/193/184 +f 165/173/165 166/174/166 186/195/186 185/194/185 +f 166/174/166 167/175/167 187/196/187 186/195/186 +f 167/175/167 168/176/168 188/197/188 187/196/187 +f 168/176/168 169/177/169 189/198/189 188/197/188 +f 169/177/169 170/178/170 190/199/190 189/198/189 +f 170/178/170 171/179/171 191/200/191 190/199/190 +f 171/179/171 172/180/172 192/201/192 191/200/191 +f 172/180/172 173/181/173 193/202/193 192/201/192 +f 173/181/173 174/182/174 194/203/194 193/202/193 +f 174/182/174 175/183/175 195/204/195 194/203/194 +f 175/183/175 176/184/176 196/205/196 195/204/195 +f 176/184/176 177/185/177 197/206/197 196/205/196 +f 177/185/177 178/186/178 198/207/198 197/206/197 +f 178/186/178 179/187/179 199/208/199 198/207/198 +f 179/187/179 180/188/180 200/209/200 199/208/199 +f 180/188/180 161/189/162 181/210/182 200/209/200 +f 181/190/182 182/191/181 202/212/201 201/211/202 +f 182/191/181 183/192/183 203/213/203 202/212/201 +f 183/192/183 184/193/184 204/214/204 203/213/203 +f 184/193/184 185/194/185 205/215/205 204/214/204 +f 185/194/185 186/195/186 206/216/206 205/215/205 +f 186/195/186 187/196/187 207/217/207 206/216/206 +f 187/196/187 188/197/188 208/218/208 207/217/207 +f 188/197/188 189/198/189 209/219/209 208/218/208 +f 189/198/189 190/199/190 210/220/210 209/219/209 +f 190/199/190 191/200/191 211/221/211 210/220/210 +f 191/200/191 192/201/192 212/222/212 211/221/211 +f 192/201/192 193/202/193 213/223/213 212/222/212 +f 193/202/193 194/203/194 214/224/214 213/223/213 +f 194/203/194 195/204/195 215/225/215 214/224/214 +f 195/204/195 196/205/196 216/226/216 215/225/215 +f 196/205/196 197/206/197 217/227/217 216/226/216 +f 197/206/197 198/207/198 218/228/218 217/227/217 +f 198/207/198 199/208/199 219/229/219 218/228/218 +f 199/208/199 200/209/200 220/230/220 219/229/219 +f 200/209/200 181/210/182 201/231/202 220/230/220 +f 201/211/202 202/212/201 222/233/221 221/232/222 +f 202/212/201 203/213/203 223/234/223 222/233/221 +f 203/213/203 204/214/204 224/235/224 223/234/223 +f 204/214/204 205/215/205 225/236/225 224/235/224 +f 205/215/205 206/216/206 226/237/226 225/236/225 +f 206/216/206 207/217/207 227/238/227 226/237/226 +f 207/217/207 208/218/208 228/239/228 227/238/227 +f 208/218/208 209/219/209 229/240/229 228/239/228 +f 209/219/209 210/220/210 230/241/230 229/240/229 +f 210/220/210 211/221/211 231/242/231 230/241/230 +f 211/221/211 212/222/212 232/243/232 231/242/231 +f 212/222/212 213/223/213 233/244/233 232/243/232 +f 213/223/213 214/224/214 234/245/234 233/244/233 +f 214/224/214 215/225/215 235/246/235 234/245/234 +f 215/225/215 216/226/216 236/247/236 235/246/235 +f 216/226/216 217/227/217 237/248/237 236/247/236 +f 217/227/217 218/228/218 238/249/238 237/248/237 +f 218/228/218 219/229/219 239/250/239 238/249/238 +f 219/229/219 220/230/220 240/251/240 239/250/239 +f 220/230/220 201/231/202 221/252/222 240/251/240 +f 221/232/222 222/233/221 242/254/241 241/253/242 +f 222/233/221 223/234/223 243/255/243 242/254/241 +f 223/234/223 224/235/224 244/256/244 243/255/243 +f 224/235/224 225/236/225 245/257/245 244/256/244 +f 225/236/225 226/237/226 246/258/246 245/257/245 +f 226/237/226 227/238/227 247/259/247 246/258/246 +f 227/238/227 228/239/228 248/260/248 247/259/247 +f 228/239/228 229/240/229 249/261/249 248/260/248 +f 229/240/229 230/241/230 250/262/250 249/261/249 +f 230/241/230 231/242/231 251/263/251 250/262/250 +f 231/242/231 232/243/232 252/264/252 251/263/251 +f 232/243/232 233/244/233 253/265/253 252/264/252 +f 233/244/233 234/245/234 254/266/254 253/265/253 +f 234/245/234 235/246/235 255/267/255 254/266/254 +f 235/246/235 236/247/236 256/268/256 255/267/255 +f 236/247/236 237/248/237 257/269/257 256/268/256 +f 237/248/237 238/249/238 258/270/258 257/269/257 +f 238/249/238 239/250/239 259/271/259 258/270/258 +f 239/250/239 240/251/240 260/272/260 259/271/259 +f 240/251/240 221/252/222 241/273/242 260/272/260 +f 241/253/242 242/254/241 262/275/261 261/274/262 +f 242/254/241 243/255/243 263/276/263 262/275/261 +f 243/255/243 244/256/244 264/277/264 263/276/263 +f 244/256/244 245/257/245 265/278/265 264/277/264 +f 245/257/245 246/258/246 266/279/266 265/278/265 +f 246/258/246 247/259/247 267/280/267 266/279/266 +f 247/259/247 248/260/248 268/281/268 267/280/267 +f 248/260/248 249/261/249 269/282/269 268/281/268 +f 249/261/249 250/262/250 270/283/270 269/282/269 +f 250/262/250 251/263/251 271/284/271 270/283/270 +f 251/263/251 252/264/252 272/285/272 271/284/271 +f 252/264/252 253/265/253 273/286/273 272/285/272 +f 253/265/253 254/266/254 274/287/274 273/286/273 +f 254/266/254 255/267/255 275/288/275 274/287/274 +f 255/267/255 256/268/256 276/289/276 275/288/275 +f 256/268/256 257/269/257 277/290/277 276/289/276 +f 257/269/257 258/270/258 278/291/278 277/290/277 +f 258/270/258 259/271/259 279/292/279 278/291/278 +f 259/271/259 260/272/260 280/293/280 279/292/279 +f 260/272/260 241/273/242 261/294/262 280/293/280 +f 261/274/262 262/275/261 282/296/281 281/295/282 +f 262/275/261 263/276/263 283/297/283 282/296/281 +f 263/276/263 264/277/264 284/298/284 283/297/283 +f 264/277/264 265/278/265 285/299/285 284/298/284 +f 265/278/265 266/279/266 286/300/286 285/299/285 +f 266/279/266 267/280/267 287/301/287 286/300/286 +f 267/280/267 268/281/268 288/302/288 287/301/287 +f 268/281/268 269/282/269 289/303/289 288/302/288 +f 269/282/269 270/283/270 290/304/290 289/303/289 +f 270/283/270 271/284/271 291/305/291 290/304/290 +f 271/284/271 272/285/272 292/306/292 291/305/291 +f 272/285/272 273/286/273 293/307/293 292/306/292 +f 273/286/273 274/287/274 294/308/294 293/307/293 +f 274/287/274 275/288/275 295/309/295 294/308/294 +f 275/288/275 276/289/276 296/310/296 295/309/295 +f 276/289/276 277/290/277 297/311/297 296/310/296 +f 277/290/277 278/291/278 298/312/298 297/311/297 +f 278/291/278 279/292/279 299/313/299 298/312/298 +f 279/292/279 280/293/280 300/314/300 299/313/299 +f 280/293/280 261/294/262 281/315/282 300/314/300 +f 281/295/282 282/296/281 302/317/301 301/316/302 +f 282/296/281 283/297/283 303/318/303 302/317/301 +f 283/297/283 284/298/284 304/319/304 303/318/303 +f 284/298/284 285/299/285 305/320/305 304/319/304 +f 285/299/285 286/300/286 306/321/306 305/320/305 +f 286/300/286 287/301/287 307/322/307 306/321/306 +f 287/301/287 288/302/288 308/323/308 307/322/307 +f 288/302/288 289/303/289 309/324/309 308/323/308 +f 289/303/289 290/304/290 310/325/310 309/324/309 +f 290/304/290 291/305/291 311/326/311 310/325/310 +f 291/305/291 292/306/292 312/327/312 311/326/311 +f 292/306/292 293/307/293 313/328/313 312/327/312 +f 293/307/293 294/308/294 314/329/314 313/328/313 +f 294/308/294 295/309/295 315/330/315 314/329/314 +f 295/309/295 296/310/296 316/331/316 315/330/315 +f 296/310/296 297/311/297 317/332/317 316/331/316 +f 297/311/297 298/312/298 318/333/318 317/332/317 +f 298/312/298 299/313/299 319/334/319 318/333/318 +f 299/313/299 300/314/300 320/335/320 319/334/319 +f 300/314/300 281/315/282 301/336/302 320/335/320 +f 301/316/302 302/317/301 322/338/321 321/337/322 +f 302/317/301 303/318/303 323/339/323 322/338/321 +f 303/318/303 304/319/304 324/340/324 323/339/323 +f 304/319/304 305/320/305 325/341/325 324/340/324 +f 305/320/305 306/321/306 326/342/326 325/341/325 +f 306/321/306 307/322/307 327/343/327 326/342/326 +f 307/322/307 308/323/308 328/344/328 327/343/327 +f 308/323/308 309/324/309 329/345/329 328/344/328 +f 309/324/309 310/325/310 330/346/330 329/345/329 +f 310/325/310 311/326/311 331/347/331 330/346/330 +f 311/326/311 312/327/312 332/348/332 331/347/331 +f 312/327/312 313/328/313 333/349/333 332/348/332 +f 313/328/313 314/329/314 334/350/334 333/349/333 +f 314/329/314 315/330/315 335/351/335 334/350/334 +f 315/330/315 316/331/316 336/352/336 335/351/335 +f 316/331/316 317/332/317 337/353/337 336/352/336 +f 317/332/317 318/333/318 338/354/338 337/353/337 +f 318/333/318 319/334/319 339/355/339 338/354/338 +f 319/334/319 320/335/320 340/356/340 339/355/339 +f 320/335/320 301/336/302 321/357/322 340/356/340 +f 321/337/322 322/338/321 342/359/341 341/358/342 +f 322/338/321 323/339/323 343/360/343 342/359/341 +f 323/339/323 324/340/324 344/361/344 343/360/343 +f 324/340/324 325/341/325 345/362/345 344/361/344 +f 325/341/325 326/342/326 346/363/346 345/362/345 +f 326/342/326 327/343/327 347/364/347 346/363/346 +f 327/343/327 328/344/328 348/365/348 347/364/347 +f 328/344/328 329/345/329 349/366/349 348/365/348 +f 329/345/329 330/346/330 350/367/350 349/366/349 +f 330/346/330 331/347/331 351/368/351 350/367/350 +f 331/347/331 332/348/332 352/369/352 351/368/351 +f 332/348/332 333/349/333 353/370/353 352/369/352 +f 333/349/333 334/350/334 354/371/354 353/370/353 +f 334/350/334 335/351/335 355/372/355 354/371/354 +f 335/351/335 336/352/336 356/373/356 355/372/355 +f 336/352/336 337/353/337 357/374/357 356/373/356 +f 337/353/337 338/354/338 358/375/358 357/374/357 +f 338/354/338 339/355/339 359/376/359 358/375/358 +f 339/355/339 340/356/340 360/377/360 359/376/359 +f 340/356/340 321/357/322 341/378/342 360/377/360 +f 341/358/342 342/359/341 362/380/361 361/379/362 +f 342/359/341 343/360/343 363/381/363 362/380/361 +f 343/360/343 344/361/344 364/382/364 363/381/363 +f 344/361/344 345/362/345 365/383/365 364/382/364 +f 345/362/345 346/363/346 366/384/366 365/383/365 +f 346/363/346 347/364/347 367/385/367 366/384/366 +f 347/364/347 348/365/348 368/386/368 367/385/367 +f 348/365/348 349/366/349 369/387/369 368/386/368 +f 349/366/349 350/367/350 370/388/370 369/387/369 +f 350/367/350 351/368/351 371/389/371 370/388/370 +f 351/368/351 352/369/352 372/390/372 371/389/371 +f 352/369/352 353/370/353 373/391/373 372/390/372 +f 353/370/353 354/371/354 374/392/374 373/391/373 +f 354/371/354 355/372/355 375/393/375 374/392/374 +f 355/372/355 356/373/356 376/394/376 375/393/375 +f 356/373/356 357/374/357 377/395/377 376/394/376 +f 357/374/357 358/375/358 378/396/378 377/395/377 +f 358/375/358 359/376/359 379/397/379 378/396/378 +f 359/376/359 360/377/360 380/398/380 379/397/379 +f 360/377/360 341/378/342 361/399/362 380/398/380 +f 2/2/2 1/1/1 381/400/381 +f 3/3/5 2/2/2 381/401/381 +f 4/4/7 3/3/5 381/402/381 +f 5/5/9 4/4/7 381/403/381 +f 6/6/11 5/5/9 381/404/381 +f 7/7/13 6/6/11 381/405/381 +f 8/8/15 7/7/13 381/406/381 +f 9/9/17 8/8/15 381/407/381 +f 10/10/19 9/9/17 381/408/381 +f 11/11/21 10/10/19 381/409/381 +f 12/12/23 11/11/21 381/410/381 +f 13/13/25 12/12/23 381/411/381 +f 14/14/27 13/13/25 381/412/381 +f 15/15/29 14/14/27 381/413/381 +f 16/16/31 15/15/29 381/414/381 +f 17/17/33 16/16/31 381/415/381 +f 18/18/35 17/17/33 381/416/381 +f 19/19/37 18/18/35 381/417/381 +f 20/20/39 19/19/37 381/418/381 +f 1/21/1 20/20/39 381/419/381 +f 361/379/362 362/380/361 382/420/382 +f 362/380/361 363/381/363 382/421/382 +f 363/381/363 364/382/364 382/422/382 +f 364/382/364 365/383/365 382/423/382 +f 365/383/365 366/384/366 382/424/382 +f 366/384/366 367/385/367 382/425/382 +f 367/385/367 368/386/368 382/426/382 +f 368/386/368 369/387/369 382/427/382 +f 369/387/369 370/388/370 382/428/382 +f 370/388/370 371/389/371 382/429/382 +f 371/389/371 372/390/372 382/430/382 +f 372/390/372 373/391/373 382/431/382 +f 373/391/373 374/392/374 382/432/382 +f 374/392/374 375/393/375 382/433/382 +f 375/393/375 376/394/376 382/434/382 +f 376/394/376 377/395/377 382/435/382 +f 377/395/377 378/396/378 382/436/382 +f 378/396/378 379/397/379 382/437/382 +f 379/397/379 380/398/380 382/438/382 +f 380/398/380 361/399/362 382/439/382 diff --git a/PROJ1_WIN/565Raytracer/obj/tetrahedron.obj b/PROJ1_WIN/565Raytracer/obj/tetrahedron.obj new file mode 100644 index 0000000..b984359 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/obj/tetrahedron.obj @@ -0,0 +1,38 @@ +# This file uses centimeters as units for non-parametric coordinates. + +v 0.000000 -0.353553 -0.707107 +v -0.707107 -0.353553 -0.000000 +v -0.000000 -0.353553 0.707107 +v 0.707107 -0.353553 0.000000 +v 0.000000 0.353553 0.000000 +vt 0.500000 0.000000 +vt 0.250000 0.250000 +vt 0.500000 0.500000 +vt 0.750000 0.250000 +vt 0.250000 0.500000 +vt 0.375000 0.500000 +vt 0.500000 0.500000 +vt 0.625000 0.500000 +vt 0.750000 0.500000 +vt 0.500000 1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.577350 0.577350 -0.577350 +vn -0.577350 0.577350 -0.577350 +vn -0.577350 0.577350 -0.577350 +vn -0.577350 0.577350 0.577350 +vn -0.577350 0.577350 0.577350 +vn -0.577350 0.577350 0.577350 +vn 0.577350 0.577350 0.577350 +vn 0.577350 0.577350 0.577350 +vn 0.577350 0.577350 0.577350 +vn 0.577350 0.577350 -0.577350 +vn 0.577350 0.577350 -0.577350 +vn 0.577350 0.577350 -0.577350 +f 1/1/1 4/4/2 3/3/3 2/2/4 +f 1/5/5 2/6/6 5/10/7 +f 2/6/8 3/7/9 5/10/10 +f 3/7/11 4/8/12 5/10/13 +f 4/8/14 1/9/15 5/10/16 diff --git a/PROJ1_WIN/565Pathtracer/shaders/passthroughFS.glsl b/PROJ1_WIN/565Raytracer/shaders/passthroughFS.glsl old mode 100755 new mode 100644 similarity index 93% rename from PROJ1_WIN/565Pathtracer/shaders/passthroughFS.glsl rename to PROJ1_WIN/565Raytracer/shaders/passthroughFS.glsl index 9f6d7c5..fd4e15b --- a/PROJ1_WIN/565Pathtracer/shaders/passthroughFS.glsl +++ b/PROJ1_WIN/565Raytracer/shaders/passthroughFS.glsl @@ -1,8 +1,8 @@ -varying vec2 v_Texcoords; - -uniform sampler2D u_image; - -void main(void) -{ - gl_FragColor = texture2D(u_image, v_Texcoords); -} +varying vec2 v_Texcoords; + +uniform sampler2D u_image; + +void main(void) +{ + gl_FragColor = texture2D(u_image, v_Texcoords); +} diff --git a/PROJ1_WIN/565Pathtracer/shaders/passthroughVS.glsl b/PROJ1_WIN/565Raytracer/shaders/passthroughVS.glsl old mode 100755 new mode 100644 similarity index 94% rename from PROJ1_WIN/565Pathtracer/shaders/passthroughVS.glsl rename to PROJ1_WIN/565Raytracer/shaders/passthroughVS.glsl index 55db651..a3dbe92 --- a/PROJ1_WIN/565Pathtracer/shaders/passthroughVS.glsl +++ b/PROJ1_WIN/565Raytracer/shaders/passthroughVS.glsl @@ -1,9 +1,9 @@ -attribute vec4 Position; -attribute vec2 Texcoords; -varying vec2 v_Texcoords; - -void main(void) -{ - v_Texcoords = Texcoords; - gl_Position = Position; +attribute vec4 Position; +attribute vec2 Texcoords; +varying vec2 v_Texcoords; + +void main(void) +{ + v_Texcoords = Texcoords; + gl_Position = Position; } \ No newline at end of file diff --git a/PROJ1_WIN/565Raytracer/test.0.bmp b/PROJ1_WIN/565Raytracer/test.0.bmp new file mode 100644 index 0000000..29c66d3 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/test.0.bmp differ diff --git a/PROJ1_WIN/565Raytracer/textures/ArstaBridge.zip b/PROJ1_WIN/565Raytracer/textures/ArstaBridge.zip new file mode 100644 index 0000000..9603025 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/ArstaBridge.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/ArstaBridge/negx.jpg b/PROJ1_WIN/565Raytracer/textures/ArstaBridge/negx.jpg new file mode 100644 index 0000000..82336df Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/ArstaBridge/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/ArstaBridge/negy.jpg b/PROJ1_WIN/565Raytracer/textures/ArstaBridge/negy.jpg new file mode 100644 index 0000000..ede14c7 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/ArstaBridge/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/ArstaBridge/negz.jpg b/PROJ1_WIN/565Raytracer/textures/ArstaBridge/negz.jpg new file mode 100644 index 0000000..0576384 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/ArstaBridge/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/ArstaBridge/posx.jpg b/PROJ1_WIN/565Raytracer/textures/ArstaBridge/posx.jpg new file mode 100644 index 0000000..3476159 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/ArstaBridge/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/ArstaBridge/posy.jpg b/PROJ1_WIN/565Raytracer/textures/ArstaBridge/posy.jpg new file mode 100644 index 0000000..2e4112a Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/ArstaBridge/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/ArstaBridge/posz.jpg b/PROJ1_WIN/565Raytracer/textures/ArstaBridge/posz.jpg new file mode 100644 index 0000000..4a940da Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/ArstaBridge/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/ArstaBridge/readme.txt b/PROJ1_WIN/565Raytracer/textures/ArstaBridge/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/ArstaBridge/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/Colosseum.zip b/PROJ1_WIN/565Raytracer/textures/Colosseum.zip new file mode 100644 index 0000000..3a09d3b Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Colosseum.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/Colosseum/negx.jpg b/PROJ1_WIN/565Raytracer/textures/Colosseum/negx.jpg new file mode 100644 index 0000000..60d5896 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Colosseum/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Colosseum/negy.jpg b/PROJ1_WIN/565Raytracer/textures/Colosseum/negy.jpg new file mode 100644 index 0000000..9b8de69 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Colosseum/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Colosseum/negz.jpg b/PROJ1_WIN/565Raytracer/textures/Colosseum/negz.jpg new file mode 100644 index 0000000..0a13140 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Colosseum/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Colosseum/posx.jpg b/PROJ1_WIN/565Raytracer/textures/Colosseum/posx.jpg new file mode 100644 index 0000000..86ed8a1 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Colosseum/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Colosseum/posy.jpg b/PROJ1_WIN/565Raytracer/textures/Colosseum/posy.jpg new file mode 100644 index 0000000..432683c Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Colosseum/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Colosseum/posz.jpg b/PROJ1_WIN/565Raytracer/textures/Colosseum/posz.jpg new file mode 100644 index 0000000..7bc8a81 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Colosseum/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Colosseum/readme.txt b/PROJ1_WIN/565Raytracer/textures/Colosseum/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/Colosseum/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/Creek.zip b/PROJ1_WIN/565Raytracer/textures/Creek.zip new file mode 100644 index 0000000..13c5308 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Creek.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/Creek/negx.jpg b/PROJ1_WIN/565Raytracer/textures/Creek/negx.jpg new file mode 100644 index 0000000..98bcd3d Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Creek/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Creek/negy.jpg b/PROJ1_WIN/565Raytracer/textures/Creek/negy.jpg new file mode 100644 index 0000000..2a4dc60 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Creek/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Creek/negz.jpg b/PROJ1_WIN/565Raytracer/textures/Creek/negz.jpg new file mode 100644 index 0000000..311fb0d Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Creek/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Creek/posx.jpg b/PROJ1_WIN/565Raytracer/textures/Creek/posx.jpg new file mode 100644 index 0000000..0d4b395 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Creek/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Creek/posy.jpg b/PROJ1_WIN/565Raytracer/textures/Creek/posy.jpg new file mode 100644 index 0000000..b8026c6 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Creek/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Creek/posz.jpg b/PROJ1_WIN/565Raytracer/textures/Creek/posz.jpg new file mode 100644 index 0000000..7e20431 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Creek/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Creek/readme.txt b/PROJ1_WIN/565Raytracer/textures/Creek/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/Creek/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/Footballfield.zip b/PROJ1_WIN/565Raytracer/textures/Footballfield.zip new file mode 100644 index 0000000..4d18f94 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Footballfield.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/Footballfield/negx.jpg b/PROJ1_WIN/565Raytracer/textures/Footballfield/negx.jpg new file mode 100644 index 0000000..7acdaf0 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Footballfield/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Footballfield/negy.jpg b/PROJ1_WIN/565Raytracer/textures/Footballfield/negy.jpg new file mode 100644 index 0000000..4a507e1 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Footballfield/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Footballfield/negz.jpg b/PROJ1_WIN/565Raytracer/textures/Footballfield/negz.jpg new file mode 100644 index 0000000..4be4c60 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Footballfield/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Footballfield/posx.jpg b/PROJ1_WIN/565Raytracer/textures/Footballfield/posx.jpg new file mode 100644 index 0000000..a7867f4 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Footballfield/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Footballfield/posy.jpg b/PROJ1_WIN/565Raytracer/textures/Footballfield/posy.jpg new file mode 100644 index 0000000..7a07b67 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Footballfield/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Footballfield/posz.jpg b/PROJ1_WIN/565Raytracer/textures/Footballfield/posz.jpg new file mode 100644 index 0000000..b54f1de Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Footballfield/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Footballfield/readme.txt b/PROJ1_WIN/565Raytracer/textures/Footballfield/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/Footballfield/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan.zip b/PROJ1_WIN/565Raytracer/textures/GamlaStan.zip new file mode 100644 index 0000000..30f017c Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/GamlaStan.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan/negx.jpg b/PROJ1_WIN/565Raytracer/textures/GamlaStan/negx.jpg new file mode 100644 index 0000000..24c3699 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/GamlaStan/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan/negy.jpg b/PROJ1_WIN/565Raytracer/textures/GamlaStan/negy.jpg new file mode 100644 index 0000000..cd6e22e Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/GamlaStan/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan/negz.jpg b/PROJ1_WIN/565Raytracer/textures/GamlaStan/negz.jpg new file mode 100644 index 0000000..be8fc4c Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/GamlaStan/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan/posx.jpg b/PROJ1_WIN/565Raytracer/textures/GamlaStan/posx.jpg new file mode 100644 index 0000000..27df7b3 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/GamlaStan/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan/posy.jpg b/PROJ1_WIN/565Raytracer/textures/GamlaStan/posy.jpg new file mode 100644 index 0000000..4987776 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/GamlaStan/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan/posz.jpg b/PROJ1_WIN/565Raytracer/textures/GamlaStan/posz.jpg new file mode 100644 index 0000000..a26f106 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/GamlaStan/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan/readme.txt b/PROJ1_WIN/565Raytracer/textures/GamlaStan/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/GamlaStan/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan2.zip b/PROJ1_WIN/565Raytracer/textures/GamlaStan2.zip new file mode 100644 index 0000000..ecac9c3 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/GamlaStan2.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan2/negx.jpg b/PROJ1_WIN/565Raytracer/textures/GamlaStan2/negx.jpg new file mode 100644 index 0000000..74a93c7 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/GamlaStan2/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan2/negy.jpg b/PROJ1_WIN/565Raytracer/textures/GamlaStan2/negy.jpg new file mode 100644 index 0000000..01e8ca7 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/GamlaStan2/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan2/negz.jpg b/PROJ1_WIN/565Raytracer/textures/GamlaStan2/negz.jpg new file mode 100644 index 0000000..d8d10da Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/GamlaStan2/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan2/posx.jpg b/PROJ1_WIN/565Raytracer/textures/GamlaStan2/posx.jpg new file mode 100644 index 0000000..250f257 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/GamlaStan2/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan2/posy.jpg b/PROJ1_WIN/565Raytracer/textures/GamlaStan2/posy.jpg new file mode 100644 index 0000000..beb399c Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/GamlaStan2/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan2/posz.jpg b/PROJ1_WIN/565Raytracer/textures/GamlaStan2/posz.jpg new file mode 100644 index 0000000..aaedaac Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/GamlaStan2/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/GamlaStan2/readme.txt b/PROJ1_WIN/565Raytracer/textures/GamlaStan2/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/GamlaStan2/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2.zip b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2.zip new file mode 100644 index 0000000..26c7c93 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/negx.jpg b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/negx.jpg new file mode 100644 index 0000000..9935b65 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/negy.jpg b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/negy.jpg new file mode 100644 index 0000000..579f002 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/negz.jpg b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/negz.jpg new file mode 100644 index 0000000..bdcd248 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/posx.jpg b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/posx.jpg new file mode 100644 index 0000000..dd4768d Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/posy.jpg b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/posy.jpg new file mode 100644 index 0000000..6f3f0e3 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/posz.jpg b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/posz.jpg new file mode 100644 index 0000000..3be69fe Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/readme.txt b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/HornstullsStrand2/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/NissiBeach2.zip b/PROJ1_WIN/565Raytracer/textures/NissiBeach2.zip new file mode 100644 index 0000000..4340bf9 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/NissiBeach2.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/NissiBeach2/negx.jpg b/PROJ1_WIN/565Raytracer/textures/NissiBeach2/negx.jpg new file mode 100644 index 0000000..f000a73 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/NissiBeach2/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/NissiBeach2/negy.jpg b/PROJ1_WIN/565Raytracer/textures/NissiBeach2/negy.jpg new file mode 100644 index 0000000..ec49b64 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/NissiBeach2/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/NissiBeach2/negz.jpg b/PROJ1_WIN/565Raytracer/textures/NissiBeach2/negz.jpg new file mode 100644 index 0000000..1ab7631 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/NissiBeach2/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/NissiBeach2/posx.jpg b/PROJ1_WIN/565Raytracer/textures/NissiBeach2/posx.jpg new file mode 100644 index 0000000..5381a98 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/NissiBeach2/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/NissiBeach2/posy.jpg b/PROJ1_WIN/565Raytracer/textures/NissiBeach2/posy.jpg new file mode 100644 index 0000000..e91c614 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/NissiBeach2/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/NissiBeach2/posz.jpg b/PROJ1_WIN/565Raytracer/textures/NissiBeach2/posz.jpg new file mode 100644 index 0000000..6f7510c Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/NissiBeach2/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/NissiBeach2/readme.txt b/PROJ1_WIN/565Raytracer/textures/NissiBeach2/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/NissiBeach2/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/Rainbow.zip b/PROJ1_WIN/565Raytracer/textures/Rainbow.zip new file mode 100644 index 0000000..f634499 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Rainbow.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/Rainbow/negx.jpg b/PROJ1_WIN/565Raytracer/textures/Rainbow/negx.jpg new file mode 100644 index 0000000..f238b70 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Rainbow/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Rainbow/negy.jpg b/PROJ1_WIN/565Raytracer/textures/Rainbow/negy.jpg new file mode 100644 index 0000000..7defa97 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Rainbow/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Rainbow/negz.jpg b/PROJ1_WIN/565Raytracer/textures/Rainbow/negz.jpg new file mode 100644 index 0000000..bb8e140 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Rainbow/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Rainbow/posx.jpg b/PROJ1_WIN/565Raytracer/textures/Rainbow/posx.jpg new file mode 100644 index 0000000..9f10c34 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Rainbow/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Rainbow/posy.jpg b/PROJ1_WIN/565Raytracer/textures/Rainbow/posy.jpg new file mode 100644 index 0000000..8d91cef Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Rainbow/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Rainbow/posz.jpg b/PROJ1_WIN/565Raytracer/textures/Rainbow/posz.jpg new file mode 100644 index 0000000..ab595eb Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Rainbow/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Rainbow/readme.txt b/PROJ1_WIN/565Raytracer/textures/Rainbow/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/Rainbow/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1.zip b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1.zip new file mode 100644 index 0000000..8c435fc Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/negx.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/negx.jpg new file mode 100644 index 0000000..e8a8e77 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/negy.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/negy.jpg new file mode 100644 index 0000000..42b7347 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/negz.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/negz.jpg new file mode 100644 index 0000000..4bee838 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/posx.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/posx.jpg new file mode 100644 index 0000000..fd54d0b Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/posy.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/posy.jpg new file mode 100644 index 0000000..af7107c Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/posz.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/posz.jpg new file mode 100644 index 0000000..20614b8 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/readme.txt b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare1/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2.zip b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2.zip new file mode 100644 index 0000000..d731ba4 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/negx.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/negx.jpg new file mode 100644 index 0000000..ea502cc Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/negy.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/negy.jpg new file mode 100644 index 0000000..774cd3b Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/negz.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/negz.jpg new file mode 100644 index 0000000..c9aa04d Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/posx.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/posx.jpg new file mode 100644 index 0000000..3c4a9eb Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/posy.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/posy.jpg new file mode 100644 index 0000000..eaf9529 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/posz.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/posz.jpg new file mode 100644 index 0000000..a6db7e1 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/readme.txt b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare2/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3.zip b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3.zip new file mode 100644 index 0000000..23a414b Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/negx.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/negx.jpg new file mode 100644 index 0000000..27e515f Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/negy.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/negy.jpg new file mode 100644 index 0000000..0f44e25 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/negz.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/negz.jpg new file mode 100644 index 0000000..50e7bc3 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/posx.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/posx.jpg new file mode 100644 index 0000000..4283cbe Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/posy.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/posy.jpg new file mode 100644 index 0000000..2e667b2 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/posz.jpg b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/posz.jpg new file mode 100644 index 0000000..0adbf36 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/readme.txt b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/SaintPetersSquare3/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2.zip b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2.zip new file mode 100644 index 0000000..db2ed7d Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/negx.jpg b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/negx.jpg new file mode 100644 index 0000000..71f06bb Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/negy.jpg b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/negy.jpg new file mode 100644 index 0000000..25fab5b Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/negz.jpg b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/negz.jpg new file mode 100644 index 0000000..d1653a3 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/posx.jpg b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/posx.jpg new file mode 100644 index 0000000..b4197ea Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/posy.jpg b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/posy.jpg new file mode 100644 index 0000000..a71fba2 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/posz.jpg b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/posz.jpg new file mode 100644 index 0000000..00e7c24 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/readme.txt b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/Sodermalmsallen2/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle.zip b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle.zip new file mode 100644 index 0000000..2aeb2a0 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/negx.jpg b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/negx.jpg new file mode 100644 index 0000000..11fd80a Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/negy.jpg b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/negy.jpg new file mode 100644 index 0000000..020cff3 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/negz.jpg b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/negz.jpg new file mode 100644 index 0000000..695a1f9 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/posx.jpg b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/posx.jpg new file mode 100644 index 0000000..d22da6a Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/posy.jpg b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/posy.jpg new file mode 100644 index 0000000..c0ee9cf Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/posz.jpg b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/posz.jpg new file mode 100644 index 0000000..0800a82 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/readme.txt b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/SwedishRoyalCastle/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/Tallinn.zip b/PROJ1_WIN/565Raytracer/textures/Tallinn.zip new file mode 100644 index 0000000..85e1067 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Tallinn.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/Tallinn/negx.jpg b/PROJ1_WIN/565Raytracer/textures/Tallinn/negx.jpg new file mode 100644 index 0000000..a797658 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Tallinn/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Tallinn/negy.jpg b/PROJ1_WIN/565Raytracer/textures/Tallinn/negy.jpg new file mode 100644 index 0000000..fe46ed6 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Tallinn/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Tallinn/negz.jpg b/PROJ1_WIN/565Raytracer/textures/Tallinn/negz.jpg new file mode 100644 index 0000000..49d3cfe Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Tallinn/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Tallinn/posx.jpg b/PROJ1_WIN/565Raytracer/textures/Tallinn/posx.jpg new file mode 100644 index 0000000..4033200 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Tallinn/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Tallinn/posy.jpg b/PROJ1_WIN/565Raytracer/textures/Tallinn/posy.jpg new file mode 100644 index 0000000..f26df2f Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Tallinn/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Tallinn/posz.jpg b/PROJ1_WIN/565Raytracer/textures/Tallinn/posz.jpg new file mode 100644 index 0000000..83b6f84 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Tallinn/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Tallinn/readme.txt b/PROJ1_WIN/565Raytracer/textures/Tallinn/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/Tallinn/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/Tantolunden5.zip b/PROJ1_WIN/565Raytracer/textures/Tantolunden5.zip new file mode 100644 index 0000000..ea3e37c Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Tantolunden5.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/Tantolunden5/negx.jpg b/PROJ1_WIN/565Raytracer/textures/Tantolunden5/negx.jpg new file mode 100644 index 0000000..5bfb3d6 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Tantolunden5/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Tantolunden5/negy.jpg b/PROJ1_WIN/565Raytracer/textures/Tantolunden5/negy.jpg new file mode 100644 index 0000000..319a206 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Tantolunden5/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Tantolunden5/negz.jpg b/PROJ1_WIN/565Raytracer/textures/Tantolunden5/negz.jpg new file mode 100644 index 0000000..7d12513 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Tantolunden5/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Tantolunden5/posx.jpg b/PROJ1_WIN/565Raytracer/textures/Tantolunden5/posx.jpg new file mode 100644 index 0000000..ed49cfe Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Tantolunden5/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Tantolunden5/posy.jpg b/PROJ1_WIN/565Raytracer/textures/Tantolunden5/posy.jpg new file mode 100644 index 0000000..4aeb05f Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Tantolunden5/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Tantolunden5/posz.jpg b/PROJ1_WIN/565Raytracer/textures/Tantolunden5/posz.jpg new file mode 100644 index 0000000..87aef02 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Tantolunden5/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Tantolunden5/readme.txt b/PROJ1_WIN/565Raytracer/textures/Tantolunden5/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/Tantolunden5/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/Vasa.zip b/PROJ1_WIN/565Raytracer/textures/Vasa.zip new file mode 100644 index 0000000..309e32c Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Vasa.zip differ diff --git a/PROJ1_WIN/565Raytracer/textures/Vasa/negx.jpg b/PROJ1_WIN/565Raytracer/textures/Vasa/negx.jpg new file mode 100644 index 0000000..4335269 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Vasa/negx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Vasa/negy.jpg b/PROJ1_WIN/565Raytracer/textures/Vasa/negy.jpg new file mode 100644 index 0000000..fcfd84b Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Vasa/negy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Vasa/negz.jpg b/PROJ1_WIN/565Raytracer/textures/Vasa/negz.jpg new file mode 100644 index 0000000..781dc43 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Vasa/negz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Vasa/posx.jpg b/PROJ1_WIN/565Raytracer/textures/Vasa/posx.jpg new file mode 100644 index 0000000..0c19ccf Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Vasa/posx.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Vasa/posy.jpg b/PROJ1_WIN/565Raytracer/textures/Vasa/posy.jpg new file mode 100644 index 0000000..1aad996 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Vasa/posy.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Vasa/posz.jpg b/PROJ1_WIN/565Raytracer/textures/Vasa/posz.jpg new file mode 100644 index 0000000..0c745bb Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/Vasa/posz.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/Vasa/readme.txt b/PROJ1_WIN/565Raytracer/textures/Vasa/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/Vasa/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/city_in_a_bottle.jpg b/PROJ1_WIN/565Raytracer/textures/city_in_a_bottle.jpg new file mode 100644 index 0000000..41cb1a1 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/city_in_a_bottle.jpg differ diff --git a/PROJ1_WIN/565Raytracer/textures/readme.txt b/PROJ1_WIN/565Raytracer/textures/readme.txt new file mode 100644 index 0000000..8b404c2 --- /dev/null +++ b/PROJ1_WIN/565Raytracer/textures/readme.txt @@ -0,0 +1,13 @@ +Author +====== + +This is the work of Emil Persson, aka Humus. +http://www.humus.name + + + +License +======= + +This work is licensed under a Creative Commons Attribution 3.0 Unported License. +http://creativecommons.org/licenses/by/3.0/ diff --git a/PROJ1_WIN/565Raytracer/textures/red.bmp b/PROJ1_WIN/565Raytracer/textures/red.bmp new file mode 100644 index 0000000..9fc7a0a Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/red.bmp differ diff --git a/PROJ1_WIN/565Raytracer/textures/red.jpg b/PROJ1_WIN/565Raytracer/textures/red.jpg new file mode 100644 index 0000000..1fd5e34 Binary files /dev/null and b/PROJ1_WIN/565Raytracer/textures/red.jpg differ diff --git a/PROJ1_WIN/565Raytracer/vc110.pdb b/PROJ1_WIN/565Raytracer/vc110.pdb new file mode 100644 index 0000000..45b345a Binary files /dev/null and b/PROJ1_WIN/565Raytracer/vc110.pdb differ diff --git a/PROJ1_WIN/Build/CUDA 4.0.props b/PROJ1_WIN/Build/CUDA 4.0.props deleted file mode 100755 index d0c1013..0000000 --- a/PROJ1_WIN/Build/CUDA 4.0.props +++ /dev/null @@ -1,132 +0,0 @@ - - - - Midl - CustomBuild - - - - $(CudaToolkitCustomDir) - v4.0 - 4.00.0000.0000 - - - - - $(CUDA_PATH_V4_0) - - - $([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\NVIDIA Corporation\GPU Computing Toolkit\Cuda\$(CudaToolkitVersion)', 'InstallDir', null, RegistryView.Registry64, RegistryView.Registry32)) - - - $(CudaToolkitDir)\ - - $(CudaToolkitDir)include - - - - $(CudaToolkitDir)bin - - $(CudaToolkitDir)lib\Win32 - $(CudaToolkitDir)lib - - - - $(CudaToolkitDir)bin64 - $(CudaToolkitDir)bin - - $(CudaToolkitDir)lib\x64 - $(CudaToolkitDir)lib64 - - - - $(CudaToolkitBinDir)\nvcc.exe - - 2008 - 2010 - - false - - $(IntDir) - $(CudaIntDir.Trim('\')) - - - - - - $(IntDir)%(Filename)%(Extension).obj - - false - $(CudaIntDir) - compile - 32 - - - false - compute_10,sm_10 - true - false - 0 - false - - - - false - true - false - false - Od - MDd - MD - Default - false - W3 - - - - - - $(VCInstallDir)bin - $(VCInstallDir)bin\x86_amd64 - $(VCInstallDir)bin\amd64 - - -ccbin "%(VCBinDir)" [Include] [RequiredIncludes] [CInterleavedPTX] [GPUDebugInfo] [Keep] [KeepDir] [MaxRegCount] [PtxAsOptionV] [TargetMachinePlatform] [NvccCompilation] [AdditionalOptions] - --use-local-env --cl-version $(CudaClVersion) - [CodeGeneration] - -clean - -Xcompiler "/EHsc /nologo [Optimization] /Zi [RuntimeChecks] [Runtime] [TypeInfo]" - - %(BaseCommandLineTemplate) -o "[CompileOut]" "%(FullPath)" - %(BaseCommandLineTemplate) [HostDebugInfo] [Emulation] [FastMath] [Defines] %(HostCommandLineTemplate) -o "[CompileOut]" "%(FullPath)" - - -# (Approximate command-line, please see the output window after a build for the full command-line) - -# Driver API (NVCC Compilation Type is .cubin, .gpu, or .ptx) -set CUDAFE_FLAGS=--sdk_dir "$(WindowsSdkDir)" -"$(CudaToolkitNvccPath)" %(BuildCommandLineTemplate) %(DriverApiCommandLineTemplate) - -# Runtime API (NVCC Compilation Type is hybrid object or .c file) -set CUDAFE_FLAGS=--sdk_dir "$(WindowsSdkDir)" -"$(CudaToolkitNvccPath)" %(BuildCommandLineTemplate) %(RuntimeApiCommandLineTemplate) - - Compiling CUDA source file %(Identity)... - Skipping CUDA source file %(Identity) (excluded from build). - - - %(Filename)%(Extension).deps - $(IntDir)%(DepsOutputFile) - - %(Filename)%(Extension).cache - $(IntDir)%(PropsCacheOutputFile) - - - - %(AdditionalLibraryDirectories);$(CudaToolkitLibDir) - - - - %(AdditionalIncludeDirectories);$(CudaToolkitIncludeDir) - - - diff --git a/PROJ1_WIN/Build/CUDA 4.0.targets b/PROJ1_WIN/Build/CUDA 4.0.targets deleted file mode 100755 index 27717b0..0000000 --- a/PROJ1_WIN/Build/CUDA 4.0.targets +++ /dev/null @@ -1,478 +0,0 @@ - - - - - - - CudaBuild - - - - - $(MSBuildThisFileDirectory)CUDA 4.0.xml - $(MSBuildThisFileDirectory)Nvda.Build.CudaTasks.v4.0.dll - - - - $(CudaBuildRulesPath) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Runtime - %(CudaCompile.RuntimeApiCommandLineTemplate) - - - - Driver - %(CudaCompile.DriverApiCommandLineTemplate) - - - - - - - - - - - @(_SanitizedIncludes) - - - - - - - - - - - true - $(_CudaCompileDeps) - - - SelectedFiles.{58e7a258-0433-4cfb-9ce7-27f320d678bc} - - - - - - 32 - - - 64 - - - - - - - SetBuildDefaultEnvironmentVariables; - SetUserMacroEnvironmentVariables; - PrepareForBuild; - AddCudaCompileMetadata; - - - - - - - <_CudaClAdditionalIncludeDirs Include="$(CudaToolkitBinDir)" /> - <_CudaClAdditionalIncludeDirs Include="$(CudaToolkitIncludeDir)" /> - <_CudaClAdditionalIncludeDirs Include="." /> - - <_CudaClForcedIncludeFiles Include="cuda_runtime.h" /> - - - - <_DepsAdditionalIncludeDirs Include="%(CudaCompile.Include)" /> - <_DepsAdditionalIncludeDirs Include="@(_CudaClAdditionalIncludeDirs)" /> - - - - - - - - - - - - false - @(_CudaCompileDeps) - - - - - <_CudaClAdditionalIncludeDirs Remove="@(_CudaClAdditionalIncludeDirs)" /> - <_CudaClForcedIncludeFiles Remove="@(_CudaClForcedIncludeFiles)" /> - - <_DepsAdditionalIncludeDirs Remove="@(_DepsAdditionalIncludeDirs)" /> - <_CudaCompileDeps Remove="@(_CudaCompileDeps)" /> - - - - - - SetBuildDefaultEnvironmentVariables; - SetUserMacroEnvironmentVariables; - PrepareForBuild; - AddCudaCompileMetadata; - - - - - - - - - - - - - - - - - - - - - <_CudaCompilePropNames Remove="CommandLineTemplate" /> - - - - - - - - - - - - - - - $(MSBuildProjectFile) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $(CudaCompileDependsOn); - _SelectedFiles; - CudaFilterSelectedFiles; - AddCudaCompileMetadata; - AddCudaCompileDeps; - AddCudaCompilePropsDeps; - ValidateCudaBuild; - ValidateCudaCodeGeneration; - ComputeCudaCompileOutput; - PrepareForCudaBuild - - - - - - - - - - - - - - - - - - - - - - - - - - - - - $([System.IO.Directory]::GetParent('%(CudaCompile.CompileOut)').FullName) - - - - - - - - - - - <_NvccIntermediateFiles Include="%(CudaCompile.RelativeDir)tmpxft*%(CudaCompile.Filename).cpp3.o" /> - - - - - - - $(ComputeLinkInputsTargets); - ComputeCudaCompileOutput - - - - - - - - - - - - - - - $(CppCleanDependsOn); - CudaClean - - - - AddCudaCompileMetadata; - ValidateCudaBuild; - - - - - - - - - - - - diff --git a/PROJ1_WIN/Build/CUDA 4.0.xml b/PROJ1_WIN/Build/CUDA 4.0.xml deleted file mode 100755 index 8ca3fa7..0000000 --- a/PROJ1_WIN/Build/CUDA 4.0.xml +++ /dev/null @@ -1,404 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/PROJ1_WIN/Build/Nvda.Build.CudaTasks.v4.0.dll b/PROJ1_WIN/Build/Nvda.Build.CudaTasks.v4.0.dll deleted file mode 100755 index a6c2843..0000000 Binary files a/PROJ1_WIN/Build/Nvda.Build.CudaTasks.v4.0.dll and /dev/null differ diff --git a/PROJ1_WIN/Debug (v5.5)/565Raytracer.exe b/PROJ1_WIN/Debug (v5.5)/565Raytracer.exe new file mode 100644 index 0000000..a58c9f1 Binary files /dev/null and b/PROJ1_WIN/Debug (v5.5)/565Raytracer.exe differ diff --git a/PROJ1_WIN/Debug (v5.5)/565Raytracer.ilk b/PROJ1_WIN/Debug (v5.5)/565Raytracer.ilk new file mode 100644 index 0000000..9650eac Binary files /dev/null and b/PROJ1_WIN/Debug (v5.5)/565Raytracer.ilk differ diff --git a/PROJ1_WIN/Debug (v5.5)/565Raytracer.pdb b/PROJ1_WIN/Debug (v5.5)/565Raytracer.pdb new file mode 100644 index 0000000..6ea893c Binary files /dev/null and b/PROJ1_WIN/Debug (v5.5)/565Raytracer.pdb differ diff --git a/PROJ1_WIN/Release (v5.5)/565Raytracer.exe b/PROJ1_WIN/Release (v5.5)/565Raytracer.exe new file mode 100644 index 0000000..6c17dc5 Binary files /dev/null and b/PROJ1_WIN/Release (v5.5)/565Raytracer.exe differ diff --git a/PROJ1_WIN/Release (v5.5)/565Raytracer.pdb b/PROJ1_WIN/Release (v5.5)/565Raytracer.pdb new file mode 100644 index 0000000..a149253 Binary files /dev/null and b/PROJ1_WIN/Release (v5.5)/565Raytracer.pdb differ diff --git a/PROJ1_WIN/src/raytraceKernel.cu.deps b/PROJ1_WIN/src/raytraceKernel.cu.deps new file mode 100644 index 0000000..978cfe1 --- /dev/null +++ b/PROJ1_WIN/src/raytraceKernel.cu.deps @@ -0,0 +1,503 @@ +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda_runtime.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_config.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\sal.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ConcurrencySal.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\vadefs.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\limits.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\stddef.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\channel_descriptor.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\cuda_runtime_api.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\cuda_device_runtime_api.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\cuda_runtime_api.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\common_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\string.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\time.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\wtime.inl +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\time.inl +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\math_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\math.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\stdlib.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\cmath +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\yvals.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xkeycheck.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\use_ansi.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\math.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xtgmath.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xtr1common +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\cstdlib +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\cuda_surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\channel_descriptor.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\cuda_texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\channel_descriptor.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_11_atomic_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_12_atomic_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_13_double_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_20_atomic_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_32_atomic_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_35_atomic_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_32_atomic_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_20_intrinsics.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_30_intrinsics.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_32_intrinsics.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_35_intrinsics.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\sm_32_intrinsics.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\cuda_surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_fetch_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\cuda_texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_indirect_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_indirect_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\builtin_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\driver_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\surface_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\texture_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\host_defines.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_functions.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\device_launch_parameters.h +c:\program files\nvidia gpu computing toolkit\cuda\v5.5\include\vector_types.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\stdio.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\swprintf.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\math.h +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\sceneStructs.h +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm/glm.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core/_fixes.hpp +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\climits +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\cfloat +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\float.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtwrn.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\limits +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ymath.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\cwchar +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\wchar.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xstddef +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\cstddef +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\cstdio +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core/setup.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\./core/_detail.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\setup.hpp +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\cassert +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\assert.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\./core/type.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_detail.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_float.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_half.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\setup.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_int.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\setup.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_detail.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_gentype.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_size.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_vec1.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_vec.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_gentype.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_float.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_int.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_size.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_swizzle.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_swizzle_func.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_vec1.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_vec2.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_vec.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_float.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_int.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_size.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_swizzle.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_vec2.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_vec3.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_vec.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_float.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_int.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_size.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_swizzle.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_vec3.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_vec4.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_vec.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_float.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_int.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_size.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_swizzle.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_vec4.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_gentype.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x2.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x3.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat2x4.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x2.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x3.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat3x4.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x2.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x3.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\type_mat4x4.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\./core/func_trigonometric.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_trigonometric.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_vectorize.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\./core/func_exponential.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_exponential.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_vectorize.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\./core/func_common.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_fixes.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_common.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_vectorize.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\./core/func_packing.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_packing.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\./core/func_geometric.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_geometric.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_vectorize.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\./core/func_matrix.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_matrix.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_vectorize.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\./core/func_vector_relational.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_detail.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_vector_relational.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\./core/func_integer.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_integer.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\_vectorize.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\./core/func_noise.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core\func_noise.inl +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\./core/_swizzle.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\cudaMat4.h +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm/glm.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core/_fixes.hpp +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda_runtime.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda_runtime.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\string +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\iterator +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\istream +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ostream +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ios +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xlocnum +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\streambuf +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xiosbase +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xlocale +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\cstring +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\stdexcept +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\exception +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\eh.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\malloc.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xstring +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xmemory0 +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\new +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\utility +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\iosfwd +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdbg.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\type_traits +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xrefwrap +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xatomic0.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\intrin.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\setjmp.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\immintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\wmmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\nmmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\smmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\tmmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\pmmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\emmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xmmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\mmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ammintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\mm3dnow.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\mmintrin.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\typeinfo +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xlocinfo +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xlocinfo.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\ctype.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\locale.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xdebug +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xfacet +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\system_error +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\cerrno +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\errno.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\share.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\vector +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xmemory +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm/glm.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core/_fixes.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\utilities.h +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm/glm.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core/_fixes.hpp +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\algorithm +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\sstream +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\cudaMat4.h +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\raytraceKernel.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/config.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/simple_defines.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/compiler.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/host_system.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/device_system.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/host_device.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\host_defines.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/debug.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/compiler_fence.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/forceinline.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/config/hd_warning_disable.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/cstdint.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/discard_block_engine.h +C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\iostream +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/random_core_access.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/discard_block_engine.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/linear_congruential_engine.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/linear_congruential_engine_discard.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/mod.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/linear_congruential_engine.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/linear_feedback_shift_engine.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/linear_feedback_shift_engine_wordmask.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/linear_feedback_shift_engine.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/subtract_with_carry_engine.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/subtract_with_carry_engine.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/xor_combine_engine.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/type_traits.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/type_traits/has_trivial_assign.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/xor_combine_engine_max.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/mpl/math.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/xor_combine_engine.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/uniform_int_distribution.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/pair.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/pair.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/swap.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/detail/integer_traits.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/uniform_int_distribution.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/uniform_real_distribution.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/uniform_real_distribution.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/normal_distribution.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/normal_distribution_base.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\thrust/random/detail/normal_distribution.inl +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\math_constants.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda.h +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\sceneStructs.h +C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc\helper_math.h +C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include\cuda_runtime.h +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\intersections.h +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\sceneStructs.h +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\cudaMat4.h +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm/glm.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\glm\core/_fixes.hpp +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\utilities.h +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\interactions.h +c:\users\lucy\documents\school\2013fall\cis565\project2-pathtracer\src\intersections.h +C:/ProgramData/NVIDIA Corporation/CUDA Samples/v5.5/common/inc\helper_math.h diff --git a/README.md b/README.md index 1e36dc5..8a3e7f6 100755 --- a/README.md +++ b/README.md @@ -1,147 +1,53 @@ ------------------------------------------------------------------------------- CIS565: Project 2: CUDA Pathtracer ------------------------------------------------------------------------------- -Fall 2013 -------------------------------------------------------------------------------- -Due Wednesday, 10/02/13 +Yingting Xiao ------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -NOTE: -------------------------------------------------------------------------------- -This project requires an NVIDIA graphics card with CUDA capability! Any card after the Geforce 8xxx series will work. If you do not have an NVIDIA graphics card in the machine you are working on, feel free to use any machine in the SIG Lab or in Moore100 labs. All machines in the SIG Lab and Moore100 are equipped with CUDA capable NVIDIA graphics cards. If this too proves to be a problem, please contact Patrick or Liam as soon as possible. +![alt tag](https://raw.github.com/YingtingXiao/Project2-PathTracer/master/screenshots/reflection_refraction_blend.PNG) ------------------------------------------------------------------------------- -INTRODUCTION: +Features implemented: ------------------------------------------------------------------------------- -In this project, you will extend your raytracer from Project 1 into a full CUDA based global illumination pathtracer. -For this project, you may either choose to continue working off of your codebase from Project 1, or you may choose to use the included basecode in this repository. The basecode for Project 2 is the same as the basecode for Project 1, but with some missing components you will need filled in, such as the intersection testing and camera raycasting methods. +• All required features -How you choose to extend your raytracer into a pathtracer is a fairly open-ended problem; the supplied basecode is meant to serve as one possible set of guidelines for doing so, but you may choose any approach you want in your actual implementation, including completely scrapping the provided basecode in favor of your own from-scratch solution. +• Stream compaction from scratch -------------------------------------------------------------------------------- -CONTENTS: -------------------------------------------------------------------------------- -The Project2 root directory contains the following subdirectories: - -* src/ contains the source code for the project. Both the Windows Visual Studio solution and the OSX makefile reference this folder for all source; the base source code compiles on OSX and Windows without modification. -* scenes/ contains an example scene description file. -* renders/ contains two example renders: the raytraced render from Project 1 (GI_no.bmp), and the same scene rendered with global illumination (GI_yes.bmp). -* PROJ1_WIN/ contains a Windows Visual Studio 2010 project and all dependencies needed for building and running on Windows 7. -* PROJ1_OSX/ contains a OSX makefile, run script, and all dependencies needed for building and running on Mac OSX 10.8. -* PROJ1_NIX/ contains a Linux makefile for building and running on Ubuntu - 12.04 LTS. Note that you will need to set the following environment - variables: - - - PATH=$PATH:/usr/local/cuda-5.5/bin - - LD_LIBRARY_PATH=/usr/local/cuda-5.5/lib64:/lib - -The projects build and run exactly the same way as in Project0 and Project1. +• Fresnel refraction + +Screenshots: ------------------------------------------------------------------------------- -REQUIREMENTS: -------------------------------------------------------------------------------- -In this project, you are given code for: -* All of the basecode from Project 1, plus: -* Intersection testing code for spheres and cubes -* Code for raycasting from the camera +1) Reflection -You will need to implement the following features. A number of these required features you may have already implemented in Project 1. If you have, you are ahead of the curve and have less work to do! +![alt tag](https://raw.github.com/YingtingXiao/Project2-PathTracer/master/screenshots/reflection.PNG) -* Full global illumination (including soft shadows, color bleeding, etc.) by pathtracing rays through the scene. -* Properly accumulating emittance and colors to generate a final image -* Supersampled antialiasing -* Parallelization by ray instead of by pixel via stream compaction -* Perfect specular reflection +2) Refraction -You are also required to implement at least two of the following features. Some of these features you may have already implemented in Project 1. If you have, you may NOT resubmit those features and instead must pick two new ones to implement. +![alt tag](https://raw.github.com/YingtingXiao/Project2-PathTracer/master/screenshots/refraction.PNG) -* Additional BRDF models, such as Cook-Torrance, Ward, etc. Each BRDF model may count as a separate feature. -* Texture mapping -* Bump mapping -* Translational motion blur -* Fresnel-based Refraction, i.e. glass -* OBJ Mesh loading and rendering without KD-Tree -* Interactive camera -* Integrate an existing stackless KD-Tree library, such as CUKD (https://github.com/unvirtual/cukd) -* Depth of field +3) Reflection and refraction -Alternatively, implementing just one of the following features can satisfy the "pick two" feature requirement, since these are correspondingly more difficult problems: +![alt tag](https://raw.github.com/YingtingXiao/Project2-PathTracer/master/screenshots/reflection_refraction.PNG) + +4) Diffuse -* Physically based subsurface scattering and transmission -* Implement and integrate your own stackless KD-Tree from scratch. -* Displacement mapping -* Deformational motion blur +![alt tag](https://raw.github.com/YingtingXiao/Project2-PathTracer/master/screenshots/diffuse.PNG) -As yet another alternative, if you have a feature or features you really want to implement that are not on this list, let us know, and we'll probably say yes! +Screen recording: ------------------------------------------------------------------------------- -NOTES ON GLM: -------------------------------------------------------------------------------- -This project uses GLM, the GL Math library, for linear algebra. You need to know two important points on how GLM is used in this project: - -* In this project, indices in GLM vectors (such as vec3, vec4), are accessed via swizzling. So, instead of v[0], v.x is used, and instead of v[1], v.y is used, and so on and so forth. -* GLM Matrix operations work fine on NVIDIA Fermi cards and later, but pre-Fermi cards do not play nice with GLM matrices. As such, in this project, GLM matrices are replaced with a custom matrix struct, called a cudaMat4, found in cudaMat4.h. A custom function for multiplying glm::vec4s and cudaMat4s is provided as multiplyMV() in intersections.h. -------------------------------------------------------------------------------- -README -------------------------------------------------------------------------------- -All students must replace or augment the contents of this Readme.md in a clear -manner with the following: +https://vimeo.com/76024508 -* A brief description of the project and the specific features you implemented. -* At least one screenshot of your project running. -* A 30 second or longer video of your project running. To create the video you - can use http://www.microsoft.com/expression/products/Encoder4_Overview.aspx -* A performance evaluation (described in detail below). +Performance analysis: ------------------------------------------------------------------------------- -PERFORMANCE EVALUATION -------------------------------------------------------------------------------- -The performance evaluation is where you will investigate how to make your CUDA -programs more efficient using the skills you've learned in class. You must have -performed at least one experiment on your code to investigate the positive or -negative effects on performance. -One such experiment would be to investigate the performance increase involved -with adding a spatial data-structure to your scene data. +Fps with stream compaction using shared memory: 4.15 -Another idea could be looking at the change in timing between various block -sizes. +Fps with stream compaction: 3.08 -A good metric to track would be number of rays per second, or frames per -second, or number of objects displayable at 60fps. - -We encourage you to get creative with your tweaks. Consider places in your code -that could be considered bottlenecks and try to improve them. - -Each student should provide no more than a one page summary of their -optimizations along with tables and or graphs to visually explain any -performance differences. - -------------------------------------------------------------------------------- -THIRD PARTY CODE POLICY -------------------------------------------------------------------------------- -* Use of any third-party code must be approved by asking on the Google group. If it is approved, all students are welcome to use it. Generally, we approve use of third-party code that is not a core part of the project. For example, for the ray tracer, we would approve using a third-party library for loading models, but would not approve copying and pasting a CUDA function for doing refraction. -* Third-party code must be credited in README.md. -* Using third-party code without its approval, including using another student's code, is an academic integrity violation, and will result in you receiving an F for the semester. - -------------------------------------------------------------------------------- -SELF-GRADING -------------------------------------------------------------------------------- -* On the submission date, email your grade, on a scale of 0 to 100, to Liam, liamboone+cis565@gmail.com, with a one paragraph explanation. Be concise and realistic. Recall that we reserve 30 points as a sanity check to adjust your grade. Your actual grade will be (0.7 * your grade) + (0.3 * our grade). We hope to only use this in extreme cases when your grade does not realistically reflect your work - it is either too high or too low. In most cases, we plan to give you the exact grade you suggest. -* Projects are not weighted evenly, e.g., Project 0 doesn't count as much as the path tracer. We will determine the weighting at the end of the semester based on the size of each project. - -------------------------------------------------------------------------------- -SUBMISSION -------------------------------------------------------------------------------- -As with the previous project, you should fork this project and work inside of your fork. Upon completion, commit your finished project back to your fork, and make a pull request to the master repository. -You should include a README.md file in the root directory detailing the following - -* A brief description of the project and specific features you implemented -* At least one screenshot of your project running, and at least one screenshot of the final rendered output of your pathtracer -* Instructions for building and running your project if they differ from the base code -* A link to your blog post detailing the project -* A list of all third-party code used +Fps without stream compaction: 1.67 \ No newline at end of file diff --git a/renders/sampleScene.0.bmp b/renders/sampleScene.0.bmp new file mode 100644 index 0000000..d8bb407 Binary files /dev/null and b/renders/sampleScene.0.bmp differ diff --git a/renders/test.0.bmp b/renders/test.0.bmp deleted file mode 100644 index 9319138..0000000 Binary files a/renders/test.0.bmp and /dev/null differ diff --git a/scenes/bunny.txt b/scenes/bunny.txt new file mode 100644 index 0000000..944b0c5 --- /dev/null +++ b/scenes/bunny.txt @@ -0,0 +1,171 @@ +MATERIAL 0 //white diffuse +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 1 //red diffuse +RGB .63 .06 .04 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 2 //green diffuse +RGB .15 .48 .09 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 3 //blue glass +RGB 0 0.75 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 4 //pink glass +RGB 1 0.5 0.7 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 5 //transparent glass +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 6 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 1 + +MATERIAL 7 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 15 + +CAMERA +RES 800 800 +FOVY 25 +ITERATIONS 5000 +FOCAL -1 +APERTURE 0.5 +FILE test.bmp +frame 0 +EYE 0 4.5 12 +VIEW 0 0 -1 +UP 0 1 0 + +OBJECT 0 +cube +material 0 +frame 0 +TRANS 0 0 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 1 +cube +material 0 +frame 0 +TRANS 0 5 -5 +ROTAT 0 90 0 +SCALE .01 10 10 + +OBJECT 2 +cube +material 0 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 3 +cube +material 1 +frame 0 +TRANS -5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 4 +cube +material 2 +frame 0 +TRANS 5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 5 +obj/bunny.obj +material 5 +frame 0 +TRANS 0 1 0 +ROTAT 0 180 0 +SCALE 1 1 1 + +OBJECT 6 +cube +material 7 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .3 3 3 \ No newline at end of file diff --git a/scenes/sampleScene.txt b/scenes/diffuse.txt old mode 100755 new mode 100644 similarity index 68% rename from scenes/sampleScene.txt rename to scenes/diffuse.txt index 52d079e..7a1a3a2 --- a/scenes/sampleScene.txt +++ b/scenes/diffuse.txt @@ -1,10 +1,11 @@ MATERIAL 0 //white diffuse -RGB 0.9 0.9 0.9 +RGB 1 1 1 SPECEX 0 -SPECRGB 1 1 1 +SPECRGB 1 1 1 +DIFFUSE 1 REFL 0 REFR 0 -REFRIOR 0 +REFRIOR 0 SCATTER 0 ABSCOEFF 0 0 0 RSCTCOEFF 0 @@ -13,7 +14,8 @@ EMITTANCE 0 MATERIAL 1 //red diffuse RGB .63 .06 .04 SPECEX 0 -SPECRGB 1 1 1 +SPECRGB 1 1 1 +DIFFUSE 1 REFL 0 REFR 0 REFRIOR 0 @@ -25,19 +27,21 @@ EMITTANCE 0 MATERIAL 2 //green diffuse RGB .15 .48 .09 SPECEX 0 -SPECRGB 1 1 1 +SPECRGB 1 1 1 +DIFFUSE 1 REFL 0 REFR 0 -REFRIOR 0 +REFRIOR 0 SCATTER 0 ABSCOEFF 0 0 0 RSCTCOEFF 0 EMITTANCE 0 MATERIAL 3 //red glossy -RGB .63 .26 .24 -SPECEX 0 -SPECRGB 1 1 1 +RGB .63 .06 .04 +SPECEX 50 +SPECRGB 1 1 1 +DIFFUSE 0.7 REFL 0 REFR 0 REFRIOR 2 @@ -48,32 +52,35 @@ EMITTANCE 0 MATERIAL 4 //white glossy RGB 1 1 1 -SPECEX 0 -SPECRGB 1 1 1 +SPECEX 50 +SPECRGB 1 1 1 +DIFFUSE 0.5 REFL 0 REFR 0 -REFRIOR 2 +REFRIOR 2 SCATTER 0 ABSCOEFF 0 0 0 RSCTCOEFF 0 EMITTANCE 0 MATERIAL 5 //glass -RGB 0 0 0 +RGB 1 1 1 SPECEX 0 -SPECRGB 1 1 1 -REFL 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 REFR 1 -REFRIOR 2.2 +REFRIOR 1.49 SCATTER 0 ABSCOEFF .02 5.1 5.7 RSCTCOEFF 13 EMITTANCE 0 MATERIAL 6 //green glossy -RGB .35 .48 .29 -SPECEX 0 -SPECRGB 1 1 1 +RGB .15 .48 .09 +SPECEX 10 +SPECRGB 1 1 1 +DIFFUSE 0.3 REFL 0 REFR 0 REFRIOR 2.6 @@ -85,10 +92,11 @@ EMITTANCE 0 MATERIAL 7 //light RGB 1 1 1 SPECEX 0 -SPECRGB 0 0 0 +SPECRGB 0 0 0 +DIFFUSE 1 REFL 0 REFR 0 -REFRIOR 0 +REFRIOR 0 SCATTER 0 ABSCOEFF 0 0 0 RSCTCOEFF 0 @@ -97,7 +105,8 @@ EMITTANCE 1 MATERIAL 8 //light RGB 1 1 1 SPECEX 0 -SPECRGB 0 0 0 +SPECRGB 0 0 0 +DIFFUSE 1 REFL 0 REFR 0 REFRIOR 0 @@ -110,15 +119,13 @@ CAMERA RES 800 800 FOVY 25 ITERATIONS 5000 +FOCAL -1 +APERTURE 0.5 FILE test.bmp frame 0 EYE 0 4.5 12 VIEW 0 0 -1 UP 0 1 0 -frame 1 -EYE 0 4.5 12 -VIEW 0 0 -1 -UP 0 1 0 OBJECT 0 cube @@ -127,10 +134,6 @@ frame 0 TRANS 0 0 0 ROTAT 0 0 90 SCALE .01 10 10 -frame 1 -TRANS 0 0 0 -ROTAT 0 0 90 -SCALE .01 10 10 OBJECT 1 cube @@ -139,10 +142,6 @@ frame 0 TRANS 0 5 -5 ROTAT 0 90 0 SCALE .01 10 10 -frame 1 -TRANS 0 5 -5 -ROTAT 0 90 0 -SCALE .01 10 10 OBJECT 2 cube @@ -151,10 +150,6 @@ frame 0 TRANS 0 10 0 ROTAT 0 0 90 SCALE .01 10 10 -frame 1 -TRANS 0 10 0 -ROTAT 0 0 90 -SCALE .01 10 10 OBJECT 3 cube @@ -163,10 +158,6 @@ frame 0 TRANS -5 5 0 ROTAT 0 0 0 SCALE .01 10 10 -frame 1 -TRANS -5 5 0 -ROTAT 0 0 0 -SCALE .01 10 10 OBJECT 4 cube @@ -175,10 +166,6 @@ frame 0 TRANS 5 5 0 ROTAT 0 0 0 SCALE .01 10 10 -frame 1 -TRANS 5 5 0 -ROTAT 0 0 0 -SCALE .01 10 10 OBJECT 5 sphere @@ -187,10 +174,6 @@ frame 0 TRANS 0 2 0 ROTAT 0 180 0 SCALE 3 3 3 -frame 1 -TRANS 0 2 0 -ROTAT 0 180 0 -SCALE 3 3 3 OBJECT 6 sphere @@ -199,10 +182,6 @@ frame 0 TRANS 2 5 2 ROTAT 0 180 0 SCALE 2.5 2.5 2.5 -frame 1 -TRANS 2 5 2 -ROTAT 0 180 0 -SCALE 2.5 2.5 2.5 OBJECT 7 sphere @@ -211,10 +190,7 @@ frame 0 TRANS -2 5 -2 ROTAT 0 180 0 SCALE 3 3 3 -frame 1 -TRANS -2 5 -2 -ROTAT 0 180 0 -SCALE 3 3 3 + OBJECT 8 cube @@ -222,8 +198,4 @@ material 8 frame 0 TRANS 0 10 0 ROTAT 0 0 90 -SCALE .3 3 3 -frame 1 -TRANS 0 10 0 -ROTAT 0 0 90 -SCALE .3 3 3 +SCALE .3 3 3 \ No newline at end of file diff --git a/scenes/obj.txt b/scenes/obj.txt new file mode 100644 index 0000000..f6f6bf6 --- /dev/null +++ b/scenes/obj.txt @@ -0,0 +1,184 @@ +MATERIAL 0 //white diffuse +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 1 //red diffuse +RGB .63 .06 .04 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 2 //green diffuse +RGB .15 .48 .09 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 3 //red glossy +RGB .63 .06 .04 +SPECEX 50 +SPECRGB 1 1 1 +DIFFUSE 0.7 +REFL 0 +REFR 0 +REFRIOR 2 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 4 //white glossy +RGB 1 1 1 +SPECEX 50 +SPECRGB 1 1 1 +DIFFUSE 0.5 +REFL 0 +REFR 0 +REFRIOR 2 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 5 //glass +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 6 //green glossy +RGB .15 .48 .09 +SPECEX 10 +SPECRGB 1 1 1 +DIFFUSE 0.3 +REFL 0 +REFR 0 +REFRIOR 2.6 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 7 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 1 + +MATERIAL 8 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 15 + +CAMERA +RES 800 800 +FOVY 25 +ITERATIONS 5000 +FOCAL -1 +APERTURE 0.5 +FILE test.bmp +frame 0 +EYE 0 4.5 12 +VIEW 0 0 -1 +UP 0 1 0 + +OBJECT 0 +cube +material 0 +frame 0 +TRANS 0 0 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 1 +cube +material 0 +frame 0 +TRANS 0 5 -5 +ROTAT 0 90 0 +SCALE .01 10 10 + +OBJECT 2 +cube +material 0 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 3 +cube +material 1 +frame 0 +TRANS -5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 4 +cube +material 2 +frame 0 +TRANS 5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 5 +obj/sphere.obj +material 0 +frame 0 +TRANS 0 1 0 +ROTAT 0 180 0 +SCALE 3 3 3 + +OBJECT 6 +cube +material 8 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .3 3 3 \ No newline at end of file diff --git a/scenes/reflection.txt b/scenes/reflection.txt new file mode 100644 index 0000000..207c58c --- /dev/null +++ b/scenes/reflection.txt @@ -0,0 +1,200 @@ +MATERIAL 0 //white diffuse +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 1 //red diffuse +RGB .63 .06 .04 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 2 //green diffuse +RGB .15 .48 .09 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 3 //red glossy +RGB .63 .06 .04 +SPECEX 50 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 0 +REFRIOR 2 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 4 //white glossy +RGB 1 1 1 +SPECEX 50 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 0 +REFRIOR 2 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 5 //glass +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 6 //green glossy +RGB .15 .48 .09 +SPECEX 10 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 0 +REFRIOR 2.6 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 7 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 1 + +MATERIAL 8 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 15 + +CAMERA +RES 800 800 +FOVY 25 +ITERATIONS 5000 +FOCAL -1 +APERTURE 0.5 +FILE test.bmp +frame 0 +EYE 0 4.5 12 +VIEW 0 0 -1 +UP 0 1 0 + +OBJECT 0 +cube +material 0 +frame 0 +TRANS 0 0 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 1 +cube +material 0 +frame 0 +TRANS 0 5 -5 +ROTAT 0 90 0 +SCALE .01 10 10 + +OBJECT 2 +cube +material 0 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 3 +cube +material 1 +frame 0 +TRANS -5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 4 +cube +material 2 +frame 0 +TRANS 5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 5 +sphere +material 4 +frame 0 +TRANS 0 2 0 +ROTAT 0 180 0 +SCALE 3 3 3 + +OBJECT 6 +sphere +material 3 +frame 0 +TRANS 2 5 2 +ROTAT 0 180 0 +SCALE 2.5 2.5 2.5 + +OBJECT 7 +sphere +material 6 +frame 0 +TRANS -2 5 -2 +ROTAT 0 180 0 +SCALE 3 3 3 + +OBJECT 8 +cube +material 8 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .3 3 3 \ No newline at end of file diff --git a/scenes/reflection_blend.txt b/scenes/reflection_blend.txt new file mode 100644 index 0000000..67222f4 --- /dev/null +++ b/scenes/reflection_blend.txt @@ -0,0 +1,200 @@ +MATERIAL 0 //white diffuse +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 1 //red diffuse +RGB .63 .06 .04 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 2 //green diffuse +RGB .15 .48 .09 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 3 //red glossy +RGB .63 .06 .04 +SPECEX 50 +SPECRGB 1 1 1 +DIFFUSE 0.7 +REFL 1 +REFR 0 +REFRIOR 2 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 4 //white glossy +RGB 1 1 1 +SPECEX 50 +SPECRGB 1 1 1 +DIFFUSE 0.5 +REFL 1 +REFR 0 +REFRIOR 2 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 5 //glass +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 6 //green glossy +RGB .15 .48 .09 +SPECEX 10 +SPECRGB 1 1 1 +DIFFUSE 0.3 +REFL 1 +REFR 0 +REFRIOR 2.6 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 7 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 1 + +MATERIAL 8 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 15 + +CAMERA +RES 800 800 +FOVY 25 +ITERATIONS 5000 +FOCAL -1 +APERTURE 0.5 +FILE test.bmp +frame 0 +EYE 0 4.5 12 +VIEW 0 0 -1 +UP 0 1 0 + +OBJECT 0 +cube +material 0 +frame 0 +TRANS 0 0 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 1 +cube +material 0 +frame 0 +TRANS 0 5 -5 +ROTAT 0 90 0 +SCALE .01 10 10 + +OBJECT 2 +cube +material 0 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 3 +cube +material 1 +frame 0 +TRANS -5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 4 +cube +material 2 +frame 0 +TRANS 5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 5 +sphere +material 4 +frame 0 +TRANS 0 2 0 +ROTAT 0 180 0 +SCALE 3 3 3 + +OBJECT 6 +sphere +material 3 +frame 0 +TRANS 2 5 2 +ROTAT 0 180 0 +SCALE 2.5 2.5 2.5 + +OBJECT 7 +sphere +material 6 +frame 0 +TRANS -2 5 -2 +ROTAT 0 180 0 +SCALE 3 3 3 + +OBJECT 8 +cube +material 8 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .3 3 3 \ No newline at end of file diff --git a/scenes/reflection_refraction.txt b/scenes/reflection_refraction.txt new file mode 100644 index 0000000..b0d4796 --- /dev/null +++ b/scenes/reflection_refraction.txt @@ -0,0 +1,187 @@ +MATERIAL 0 //white diffuse +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 1 //red diffuse +RGB .63 .06 .04 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 2 //green diffuse +RGB .15 .48 .09 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 3 //blue glass +RGB 0 0.75 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 4 //pink glass +RGB 1 0.5 0.7 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 5 //transparent glass +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 6 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 1 + +MATERIAL 7 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 15 + +CAMERA +RES 800 800 +FOVY 25 +ITERATIONS 5000 +FOCAL -1 +APERTURE 0.5 +FILE test.bmp +frame 0 +EYE 0 4.5 12 +VIEW 0 0 -1 +UP 0 1 0 + +OBJECT 0 +cube +material 0 +frame 0 +TRANS 0 0 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 1 +cube +material 0 +frame 0 +TRANS 0 5 -5 +ROTAT 0 90 0 +SCALE .01 10 10 + +OBJECT 2 +cube +material 0 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 3 +cube +material 1 +frame 0 +TRANS -5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 4 +cube +material 2 +frame 0 +TRANS 5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 5 +sphere +material 4 +frame 0 +TRANS -1.5 5 -3 +ROTAT 0 180 0 +SCALE 3 3 3 + +OBJECT 6 +sphere +material 3 +frame 0 +TRANS 0 5 0 +ROTAT 0 180 0 +SCALE 3 3 3 + +OBJECT 7 +sphere +material 5 +frame 0 +TRANS 1.5 5 3 +ROTAT 0 180 0 +SCALE 3 3 3 + +OBJECT 8 +cube +material 7 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .3 3 3 \ No newline at end of file diff --git a/scenes/reflection_refraction_blend.txt b/scenes/reflection_refraction_blend.txt new file mode 100644 index 0000000..800e0c0 --- /dev/null +++ b/scenes/reflection_refraction_blend.txt @@ -0,0 +1,201 @@ +MATERIAL 0 //white diffuse +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 1 //red diffuse +RGB .63 .06 .04 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 2 //green diffuse +RGB .15 .48 .09 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 3 //red glossy +RGB .63 .06 .04 +SPECEX 50 +SPECRGB 1 1 1 +DIFFUSE 0.3 +REFL 1 +REFR 0 +REFRIOR 2 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 4 //white glossy +RGB 1 1 1 +SPECEX 50 +SPECRGB 1 1 1 +DIFFUSE 0.5 +REFL 1 +REFR 1 +REFRIOR 2 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 5 //glass +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 6 //green glossy +RGB .15 .48 .09 +SPECEX 50 +SPECRGB 1 1 1 +DIFFUSE 0.3 +REFL 1 +REFR 0 +REFRIOR 2 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 7 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 1 + +MATERIAL 8 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 15 + +CAMERA +RES 800 800 +FOVY 25 +ITERATIONS 5000 +FOCAL -1 +APERTURE 0.5 +FILE test.bmp +frame 0 +EYE 0 4.5 12 +VIEW 0 0 -1 +UP 0 1 0 + +OBJECT 0 +cube +material 0 +frame 0 +TRANS 0 0 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 1 +cube +material 0 +frame 0 +TRANS 0 5 -5 +ROTAT 0 90 0 +SCALE .01 10 10 + +OBJECT 2 +cube +material 0 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 3 +cube +material 1 +frame 0 +TRANS -5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 4 +cube +material 2 +frame 0 +TRANS 5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 5 +sphere +material 5 +frame 0 +TRANS 0 2 0 +ROTAT 0 180 0 +SCALE 3 3 3 + +OBJECT 6 +sphere +material 3 +frame 0 +TRANS 2 5 2 +ROTAT 0 180 0 +SCALE 2.5 2.5 2.5 + +OBJECT 7 +sphere +material 6 +frame 0 +TRANS -2 5 -2 +ROTAT 0 180 0 +SCALE 3 3 3 + + +OBJECT 8 +cube +material 8 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .3 3 3 \ No newline at end of file diff --git a/scenes/refraction.txt b/scenes/refraction.txt new file mode 100644 index 0000000..b56ebe1 --- /dev/null +++ b/scenes/refraction.txt @@ -0,0 +1,171 @@ +MATERIAL 0 //white diffuse +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 1 //red diffuse +RGB .63 .06 .04 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 2 //green diffuse +RGB .15 .48 .09 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 3 //blue glass +RGB 0 0.75 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 4 //pink glass +RGB 1 0.5 0.7 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 0 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 5 //transparent glass +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 0 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 6 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 1 + +MATERIAL 7 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 15 + +CAMERA +RES 800 800 +FOVY 25 +ITERATIONS 5000 +FOCAL -1 +APERTURE 0.5 +FILE test.bmp +frame 0 +EYE 0 4.5 12 +VIEW 0 0 -1 +UP 0 1 0 + +OBJECT 0 +cube +material 0 +frame 0 +TRANS 0 0 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 1 +cube +material 0 +frame 0 +TRANS 0 5 -5 +ROTAT 0 90 0 +SCALE .01 10 10 + +OBJECT 2 +cube +material 0 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 3 +cube +material 1 +frame 0 +TRANS -5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 4 +cube +material 2 +frame 0 +TRANS 5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 5 +sphere +material 3 +frame 0 +TRANS 0 2 0 +ROTAT 0 180 0 +SCALE 3 3 3 + +OBJECT 6 +cube +material 7 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .3 3 3 \ No newline at end of file diff --git a/scenes/tetrahedron.txt b/scenes/tetrahedron.txt new file mode 100644 index 0000000..fe0950c --- /dev/null +++ b/scenes/tetrahedron.txt @@ -0,0 +1,171 @@ +MATERIAL 0 //white diffuse +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 1 //red diffuse +RGB .63 .06 .04 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 2 //green diffuse +RGB .15 .48 .09 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 3 //blue glass +RGB 0 0.75 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 4 //pink glass +RGB 1 0.5 0.7 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 5 //transparent glass +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 6 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 1 + +MATERIAL 7 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 15 + +CAMERA +RES 800 800 +FOVY 25 +ITERATIONS 5000 +FOCAL -1 +APERTURE 0.5 +FILE test.bmp +frame 0 +EYE 0 4.5 12 +VIEW 0 0 -1 +UP 0 1 0 + +OBJECT 0 +cube +material 0 +frame 0 +TRANS 0 0 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 1 +cube +material 0 +frame 0 +TRANS 0 5 -5 +ROTAT 0 90 0 +SCALE .01 10 10 + +OBJECT 2 +cube +material 0 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 3 +cube +material 1 +frame 0 +TRANS -5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 4 +cube +material 2 +frame 0 +TRANS 5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 5 +obj/tetrahedron.obj +material 1 +frame 0 +TRANS 0 1 0 +ROTAT 0 180 0 +SCALE 1 1 1 + +OBJECT 6 +cube +material 7 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .3 3 3 \ No newline at end of file diff --git a/scenes/texture.txt b/scenes/texture.txt new file mode 100644 index 0000000..87a1053 --- /dev/null +++ b/scenes/texture.txt @@ -0,0 +1,132 @@ +TEXTURE 0 +textures/ArstaBridge/negx.jpg + +MATERIAL 0 //white diffuse +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 +TEXTURE -1 + +MATERIAL 1 //red diffuse +RGB .63 .06 .04 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 +TEXTURE -1 + +MATERIAL 2 //green diffuse +RGB .15 .48 .09 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 +TEXTURE -1 + +MATERIAL 3 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 15 +TEXTURE -1 + +MATERIAL 4 //texture +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 +TEXTURE 0 + +CAMERA +RES 800 800 +FOVY 25 +ITERATIONS 5000 +FOCAL -1 +APERTURE 0.5 +FILE test.bmp +frame 0 +EYE 0 4.5 12 +VIEW 0 0 -1 +UP 0 1 0 + +OBJECT 0 +cube +material 0 +frame 0 +TRANS 0 0 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 1 +cube +material 4 +frame 0 +TRANS 0 5 -5 +ROTAT 0 90 0 +SCALE .01 10 10 + +OBJECT 2 +cube +material 0 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 3 +cube +material 1 +frame 0 +TRANS -5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 4 +cube +material 2 +frame 0 +TRANS 5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 5 +cube +material 3 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .3 3 3 \ No newline at end of file diff --git a/scenes/three_spheres.txt b/scenes/three_spheres.txt new file mode 100644 index 0000000..b8658b8 --- /dev/null +++ b/scenes/three_spheres.txt @@ -0,0 +1,179 @@ +MATERIAL 0 //white diffuse +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 1 //red diffuse +RGB .63 .06 .04 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 2 //green diffuse +RGB .15 .48 .09 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 0 + +MATERIAL 3 //blue glass +RGB 0 0.75 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 4 //pink glass +RGB 1 0.5 0.7 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 5 //transparent glass +RGB 1 1 1 +SPECEX 0 +SPECRGB 1 1 1 +DIFFUSE 0 +REFL 1 +REFR 1 +REFRIOR 1.49 +SCATTER 0 +ABSCOEFF .02 5.1 5.7 +RSCTCOEFF 13 +EMITTANCE 0 + +MATERIAL 6 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 1 + +MATERIAL 7 //light +RGB 1 1 1 +SPECEX 0 +SPECRGB 0 0 0 +DIFFUSE 1 +REFL 0 +REFR 0 +REFRIOR 0 +SCATTER 0 +ABSCOEFF 0 0 0 +RSCTCOEFF 0 +EMITTANCE 15 + +CAMERA +RES 800 800 +FOVY 25 +ITERATIONS 5000 +FOCAL -1 +APERTURE 0.5 +FILE test.bmp +frame 0 +EYE 0 4.5 12 +VIEW 0 0 -1 +UP 0 1 0 + +OBJECT 0 +cube +material 0 +frame 0 +TRANS 0 0 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 1 +cube +material 0 +frame 0 +TRANS 0 5 -5 +ROTAT 0 90 0 +SCALE .01 10 10 + +OBJECT 2 +cube +material 0 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .01 10 10 + +OBJECT 3 +cube +material 1 +frame 0 +TRANS -5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 4 +cube +material 2 +frame 0 +TRANS 5 5 0 +ROTAT 0 0 0 +SCALE .01 10 10 + +OBJECT 5 +sphere +material 5 +frame 0 +TRANS 1 5 3 +ROTAT 0 180 0 +SCALE 2 2 2 + +OBJECT 6 +sphere +material 3 +frame 0 +TRANS 0 5 0 +ROTAT 0 180 0 +SCALE 3 3 3 + +OBJECT 7 +cube +material 7 +frame 0 +TRANS 0 10 0 +ROTAT 0 0 90 +SCALE .3 3 3 \ No newline at end of file diff --git a/screenshots/diffuse.PNG b/screenshots/diffuse.PNG new file mode 100644 index 0000000..66851a3 Binary files /dev/null and b/screenshots/diffuse.PNG differ diff --git a/screenshots/reflection.PNG b/screenshots/reflection.PNG new file mode 100644 index 0000000..3830b07 Binary files /dev/null and b/screenshots/reflection.PNG differ diff --git a/screenshots/reflection_refraction.PNG b/screenshots/reflection_refraction.PNG new file mode 100644 index 0000000..3732242 Binary files /dev/null and b/screenshots/reflection_refraction.PNG differ diff --git a/screenshots/reflection_refraction_blend.PNG b/screenshots/reflection_refraction_blend.PNG new file mode 100644 index 0000000..7ac3f54 Binary files /dev/null and b/screenshots/reflection_refraction_blend.PNG differ diff --git a/screenshots/refraction.PNG b/screenshots/refraction.PNG new file mode 100644 index 0000000..a710255 Binary files /dev/null and b/screenshots/refraction.PNG differ diff --git a/src/OpenGLUT.h b/src/OpenGLUT.h new file mode 100644 index 0000000..e9b5ed5 --- /dev/null +++ b/src/OpenGLUT.h @@ -0,0 +1,658 @@ +/* + * Portions copyright (C) 2004, the OpenGLUT project contributors. + * OpenGLUT branched from freeglut in February, 2004. + * + */ +#ifndef __OPENGLUT_H__ +#define __OPENGLUT_H__ + +#include "GL.h" +#include "GLU.h" + +/* + * openglut.h + * + * The openglut library include file + * + * 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 + * PAWEL W. OLSZTA 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. + */ + +/* + * openglut_std.h + * + * The GLUT-compatible part of the OpenGLUT library include file + * + * Portions copyright (c) 2004, the OpenGLUT project contributors. + * OpenGLUT branched from freeglut in Feburary, 2004. + * + * Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved. + * Written by Pawel W. Olszta, + * Creation date: Thu Dec 2 1999 + * + * 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 + * PAWEL W. OLSZTA 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. + */ + +/* + * The OpenGLUT, freeglut, and GLUT API versions + * + * FREEGLUT and FREEGLUT_VERSION are commented out. Unless + * OpenGLUT is going to ensure very good freeglut compatibility, + * providing freeglut API level symbols is probably more harmful than helpful. + * Let the application programmer use the OpenGLUT version to determine + * features, not our pseudo-freeglut version compatibility. + * + * If this is an issue, we can re-enable it later. + * + */ +#define GLUT_API_VERSION 4 + +/* + * GLUT API macro definitions -- the special key codes: + */ +#define GLUT_KEY_F1 0x0001 +#define GLUT_KEY_F2 0x0002 +#define GLUT_KEY_F3 0x0003 +#define GLUT_KEY_F4 0x0004 +#define GLUT_KEY_F5 0x0005 +#define GLUT_KEY_F6 0x0006 +#define GLUT_KEY_F7 0x0007 +#define GLUT_KEY_F8 0x0008 +#define GLUT_KEY_F9 0x0009 +#define GLUT_KEY_F10 0x000A +#define GLUT_KEY_F11 0x000B +#define GLUT_KEY_F12 0x000C +#define GLUT_KEY_LEFT 0x0064 +#define GLUT_KEY_UP 0x0065 +#define GLUT_KEY_RIGHT 0x0066 +#define GLUT_KEY_DOWN 0x0067 +#define GLUT_KEY_PAGE_UP 0x0068 +#define GLUT_KEY_PAGE_DOWN 0x0069 +#define GLUT_KEY_HOME 0x006A +#define GLUT_KEY_END 0x006B +#define GLUT_KEY_INSERT 0x006C + +/* + * GLUT API macro definitions -- mouse state definitions + */ +#define GLUT_LEFT_BUTTON 0x0000 +#define GLUT_MIDDLE_BUTTON 0x0001 +#define GLUT_RIGHT_BUTTON 0x0002 +#define GLUT_DOWN 0x0000 +#define GLUT_UP 0x0001 +#define GLUT_LEFT 0x0000 +#define GLUT_ENTERED 0x0001 + +/* + * GLUT API macro definitions -- the display mode definitions + */ +#define GLUT_RGB 0x0000 +#define GLUT_RGBA 0x0000 +#define GLUT_INDEX 0x0001 +#define GLUT_SINGLE 0x0000 +#define GLUT_DOUBLE 0x0002 +#define GLUT_ACCUM 0x0004 +#define GLUT_ALPHA 0x0008 +#define GLUT_DEPTH 0x0010 +#define GLUT_STENCIL 0x0020 +#define GLUT_MULTISAMPLE 0x0080 +#define GLUT_STEREO 0x0100 +#define GLUT_LUMINANCE 0x0200 + +/* + * GLUT API macro definitions -- windows and menu related definitions + */ +#define GLUT_MENU_NOT_IN_USE 0x0000 +#define GLUT_MENU_IN_USE 0x0001 +#define GLUT_NOT_VISIBLE 0x0000 +#define GLUT_VISIBLE 0x0001 +#define GLUT_HIDDEN 0x0000 +#define GLUT_FULLY_RETAINED 0x0001 +#define GLUT_PARTIALLY_RETAINED 0x0002 +#define GLUT_FULLY_COVERED 0x0003 + +/* + * GLUT API macro definitions -- fonts definitions + */ +#define GLUT_STROKE_ROMAN ((void *)0x0000) +#define GLUT_STROKE_MONO_ROMAN ((void *)0x0001) +#define GLUT_BITMAP_9_BY_15 ((void *)0x0002) +#define GLUT_BITMAP_8_BY_13 ((void *)0x0003) +#define GLUT_BITMAP_TIMES_ROMAN_10 ((void *)0x0004) +#define GLUT_BITMAP_TIMES_ROMAN_24 ((void *)0x0005) +#define GLUT_BITMAP_HELVETICA_10 ((void *)0x0006) +#define GLUT_BITMAP_HELVETICA_12 ((void *)0x0007) +#define GLUT_BITMAP_HELVETICA_18 ((void *)0x0008) + +/* + * GLUT API macro definitions -- the glutGet parameters + */ +#define GLUT_WINDOW_X 0x0064 +#define GLUT_WINDOW_Y 0x0065 +#define GLUT_WINDOW_WIDTH 0x0066 +#define GLUT_WINDOW_HEIGHT 0x0067 +#define GLUT_WINDOW_BUFFER_SIZE 0x0068 +#define GLUT_WINDOW_STENCIL_SIZE 0x0069 +#define GLUT_WINDOW_DEPTH_SIZE 0x006A +#define GLUT_WINDOW_RED_SIZE 0x006B +#define GLUT_WINDOW_GREEN_SIZE 0x006C +#define GLUT_WINDOW_BLUE_SIZE 0x006D +#define GLUT_WINDOW_ALPHA_SIZE 0x006E +#define GLUT_WINDOW_ACCUM_RED_SIZE 0x006F +#define GLUT_WINDOW_ACCUM_GREEN_SIZE 0x0070 +#define GLUT_WINDOW_ACCUM_BLUE_SIZE 0x0071 +#define GLUT_WINDOW_ACCUM_ALPHA_SIZE 0x0072 +#define GLUT_WINDOW_DOUBLEBUFFER 0x0073 +#define GLUT_WINDOW_RGBA 0x0074 +#define GLUT_WINDOW_PARENT 0x0075 +#define GLUT_WINDOW_NUM_CHILDREN 0x0076 +#define GLUT_WINDOW_COLORMAP_SIZE 0x0077 +#define GLUT_WINDOW_NUM_SAMPLES 0x0078 +#define GLUT_WINDOW_STEREO 0x0079 +#define GLUT_WINDOW_CURSOR 0x007A + +#define GLUT_SCREEN_WIDTH 0x00C8 +#define GLUT_SCREEN_HEIGHT 0x00C9 +#define GLUT_SCREEN_WIDTH_MM 0x00CA +#define GLUT_SCREEN_HEIGHT_MM 0x00CB +#define GLUT_MENU_NUM_ITEMS 0x012C +#define GLUT_DISPLAY_MODE_POSSIBLE 0x0190 +#define GLUT_INIT_WINDOW_X 0x01F4 +#define GLUT_INIT_WINDOW_Y 0x01F5 +#define GLUT_INIT_WINDOW_WIDTH 0x01F6 +#define GLUT_INIT_WINDOW_HEIGHT 0x01F7 +#define GLUT_INIT_DISPLAY_MODE 0x01F8 +#define GLUT_ELAPSED_TIME 0x02BC +#define GLUT_WINDOW_FORMAT_ID 0x007B +#define GLUT_INIT_STATE 0x007C + +/* + * GLUT API macro definitions -- the glutDeviceGet parameters + */ +#define GLUT_HAS_KEYBOARD 0x0258 +#define GLUT_HAS_MOUSE 0x0259 +#define GLUT_HAS_SPACEBALL 0x025A +#define GLUT_HAS_DIAL_AND_BUTTON_BOX 0x025B +#define GLUT_HAS_TABLET 0x025C +#define GLUT_NUM_MOUSE_BUTTONS 0x025D +#define GLUT_NUM_SPACEBALL_BUTTONS 0x025E +#define GLUT_NUM_BUTTON_BOX_BUTTONS 0x025F +#define GLUT_NUM_DIALS 0x0260 +#define GLUT_NUM_TABLET_BUTTONS 0x0261 +#define GLUT_DEVICE_IGNORE_KEY_REPEAT 0x0262 +#define GLUT_DEVICE_KEY_REPEAT 0x0263 +#define GLUT_HAS_JOYSTICK 0x0264 +#define GLUT_OWNS_JOYSTICK 0x0265 +#define GLUT_JOYSTICK_BUTTONS 0x0266 +#define GLUT_JOYSTICK_AXES 0x0267 +#define GLUT_JOYSTICK_POLL_RATE 0x0268 + +/* + * GLUT API macro definitions -- the glutLayerGet parameters + */ +#define GLUT_OVERLAY_POSSIBLE 0x0320 +#define GLUT_LAYER_IN_USE 0x0321 +#define GLUT_HAS_OVERLAY 0x0322 +#define GLUT_TRANSPARENT_INDEX 0x0323 +#define GLUT_NORMAL_DAMAGED 0x0324 +#define GLUT_OVERLAY_DAMAGED 0x0325 + +/* + * GLUT API macro definitions -- the glutVideoResizeGet parameters + */ +#define GLUT_VIDEO_RESIZE_POSSIBLE 0x0384 +#define GLUT_VIDEO_RESIZE_IN_USE 0x0385 +#define GLUT_VIDEO_RESIZE_X_DELTA 0x0386 +#define GLUT_VIDEO_RESIZE_Y_DELTA 0x0387 +#define GLUT_VIDEO_RESIZE_WIDTH_DELTA 0x0388 +#define GLUT_VIDEO_RESIZE_HEIGHT_DELTA 0x0389 +#define GLUT_VIDEO_RESIZE_X 0x038A +#define GLUT_VIDEO_RESIZE_Y 0x038B +#define GLUT_VIDEO_RESIZE_WIDTH 0x038C +#define GLUT_VIDEO_RESIZE_HEIGHT 0x038D + +/* + * GLUT API macro definitions -- the glutUseLayer parameters + */ +#define GLUT_NORMAL 0x0000 +#define GLUT_OVERLAY 0x0001 + +/* + * GLUT API macro definitions -- the glutGetModifiers parameters + */ +#define GLUT_ACTIVE_SHIFT 0x0001 +#define GLUT_ACTIVE_CTRL 0x0002 +#define GLUT_ACTIVE_ALT 0x0004 + +/* + * GLUT API macro definitions -- the glutSetCursor parameters + */ +#define GLUT_CURSOR_RIGHT_ARROW 0x0000 +#define GLUT_CURSOR_LEFT_ARROW 0x0001 +#define GLUT_CURSOR_INFO 0x0002 +#define GLUT_CURSOR_DESTROY 0x0003 +#define GLUT_CURSOR_HELP 0x0004 +#define GLUT_CURSOR_CYCLE 0x0005 +#define GLUT_CURSOR_SPRAY 0x0006 +#define GLUT_CURSOR_WAIT 0x0007 +#define GLUT_CURSOR_TEXT 0x0008 +#define GLUT_CURSOR_CROSSHAIR 0x0009 +#define GLUT_CURSOR_UP_DOWN 0x000A +#define GLUT_CURSOR_LEFT_RIGHT 0x000B +#define GLUT_CURSOR_TOP_SIDE 0x000C +#define GLUT_CURSOR_BOTTOM_SIDE 0x000D +#define GLUT_CURSOR_LEFT_SIDE 0x000E +#define GLUT_CURSOR_RIGHT_SIDE 0x000F +#define GLUT_CURSOR_TOP_LEFT_CORNER 0x0010 +#define GLUT_CURSOR_TOP_RIGHT_CORNER 0x0011 +#define GLUT_CURSOR_BOTTOM_RIGHT_CORNER 0x0012 +#define GLUT_CURSOR_BOTTOM_LEFT_CORNER 0x0013 +#define GLUT_CURSOR_INHERIT 0x0064 +#define GLUT_CURSOR_NONE 0x0065 +#define GLUT_CURSOR_FULL_CROSSHAIR 0x0066 + +/* + * GLUT API macro definitions -- RGB color component specification definitions + */ +#define GLUT_RED 0x0000 +#define GLUT_GREEN 0x0001 +#define GLUT_BLUE 0x0002 + +/* + * GLUT API macro definitions -- additional keyboard and joystick definitions + */ +#define GLUT_KEY_REPEAT_OFF 0x0000 +#define GLUT_KEY_REPEAT_ON 0x0001 +#define GLUT_KEY_REPEAT_DEFAULT 0x0002 + +#define GLUT_JOYSTICK_BUTTON_A 0x0001 +#define GLUT_JOYSTICK_BUTTON_B 0x0002 +#define GLUT_JOYSTICK_BUTTON_C 0x0004 +#define GLUT_JOYSTICK_BUTTON_D 0x0008 + +/* + * GLUT API macro definitions -- game mode definitions + */ +#define GLUT_GAME_MODE_ACTIVE 0x0000 +#define GLUT_GAME_MODE_POSSIBLE 0x0001 +#define GLUT_GAME_MODE_WIDTH 0x0002 +#define GLUT_GAME_MODE_HEIGHT 0x0003 +#define GLUT_GAME_MODE_PIXEL_DEPTH 0x0004 +#define GLUT_GAME_MODE_REFRESH_RATE 0x0005 +#define GLUT_GAME_MODE_DISPLAY_CHANGED 0x0006 + +/* + * Initialization functions, see og_init.c + */ +OGAPI void OGAPIENTRY glutInit( int* pargc, char** argv ); +OGAPI void OGAPIENTRY glutInitWindowPosition( int x, int y ); +OGAPI void OGAPIENTRY glutInitWindowSize( int width, int height ); +OGAPI void OGAPIENTRY glutInitDisplayMode( unsigned int displayMode ); +OGAPI void OGAPIENTRY glutInitDisplayString( const char* displayMode ); + +/* + * Process loop function, see og_main.c + */ +OGAPI void OGAPIENTRY glutMainLoop( void ); + +/* + * Window management functions, see og_window.c + */ +OGAPI int OGAPIENTRY glutCreateWindow( const char* title ); +OGAPI int OGAPIENTRY glutCreateSubWindow( + int window, int x, int y, int width, int height +); +OGAPI void OGAPIENTRY glutDestroyWindow( int window ); +OGAPI void OGAPIENTRY glutSetWindow( int window ); +OGAPI int OGAPIENTRY glutGetWindow( void ); +OGAPI void OGAPIENTRY glutSetWindowTitle( const char* title ); +OGAPI void OGAPIENTRY glutSetIconTitle( const char* title ); +OGAPI void OGAPIENTRY glutReshapeWindow( int width, int height ); +OGAPI void OGAPIENTRY glutPositionWindow( int x, int y ); +OGAPI void OGAPIENTRY glutShowWindow( void ); +OGAPI void OGAPIENTRY glutHideWindow( void ); +OGAPI void OGAPIENTRY glutIconifyWindow( void ); +OGAPI void OGAPIENTRY glutPushWindow( void ); +OGAPI void OGAPIENTRY glutPopWindow( void ); +OGAPI void OGAPIENTRY glutFullScreen( void ); + +/* + * Display-connected functions, see og_display.c + */ +OGAPI void OGAPIENTRY glutPostWindowRedisplay( int window ); +OGAPI void OGAPIENTRY glutPostRedisplay( void ); +OGAPI void OGAPIENTRY glutSwapBuffers( void ); + +/* + * Mouse cursor functions, see og_cursor.c + */ +OGAPI void OGAPIENTRY glutWarpPointer( int x, int y ); +OGAPI void OGAPIENTRY glutSetCursor( int cursor ); + +/* + * Overlay stuff, see og_overlay.c + */ +OGAPI void OGAPIENTRY glutEstablishOverlay( void ); +OGAPI void OGAPIENTRY glutRemoveOverlay( void ); +OGAPI void OGAPIENTRY glutUseLayer( GLenum layer ); +OGAPI void OGAPIENTRY glutPostOverlayRedisplay( void ); +OGAPI void OGAPIENTRY glutPostWindowOverlayRedisplay( int window ); +OGAPI void OGAPIENTRY glutShowOverlay( void ); +OGAPI void OGAPIENTRY glutHideOverlay( void ); + +/* + * Menu stuff, see og_menu.c + */ +OGAPI int OGAPIENTRY glutCreateMenu( void (* callback)( int menu ) ); +OGAPI void OGAPIENTRY glutDestroyMenu( int menu ); +OGAPI int OGAPIENTRY glutGetMenu( void ); +OGAPI void OGAPIENTRY glutSetMenu( int menu ); +OGAPI void OGAPIENTRY glutAddMenuEntry( const char* label, int value ); +OGAPI void OGAPIENTRY glutAddSubMenu( const char* label, int subMenu ); +OGAPI void OGAPIENTRY glutChangeToMenuEntry( + int item, const char* label, int value +); +OGAPI void OGAPIENTRY glutChangeToSubMenu( + int item, const char* label, int value +); +OGAPI void OGAPIENTRY glutRemoveMenuItem( int item ); +OGAPI void OGAPIENTRY glutAttachMenu( int button ); +OGAPI void OGAPIENTRY glutDetachMenu( int button ); + +/* + * Global callback functions, see og_callbacks.c + */ +OGAPI void OGAPIENTRY glutTimerFunc( + unsigned int time, void (* callback)( int value), int value +); +OGAPI void OGAPIENTRY glutIdleFunc( void (* callback)( void ) ); + +/* + * Window-specific callback functions, see og_callbacks.c + */ +OGAPI void OGAPIENTRY glutKeyboardFunc( + void (* callback)( unsigned char key, int x, int y) +); +OGAPI void OGAPIENTRY glutSpecialFunc( void (* callback)( int key, int x, int y ) ); +OGAPI void OGAPIENTRY glutReshapeFunc( void (* callback)( int h, int w) ); +OGAPI void OGAPIENTRY glutVisibilityFunc( void (* callback)( int visible) ); +OGAPI void OGAPIENTRY glutDisplayFunc( void (* callback)( void ) ); +OGAPI void OGAPIENTRY glutMouseFunc( + void (* callback)( int button, int state, int x, int y ) +); +OGAPI void OGAPIENTRY glutMotionFunc( void (* callback)( int x, int y) ); +OGAPI void OGAPIENTRY glutPassiveMotionFunc( + void (* callback)( int x, int y) +); +OGAPI void OGAPIENTRY glutEntryFunc( void (* callback)( int value) ); + +OGAPI void OGAPIENTRY glutKeyboardUpFunc( + void (* callback)( unsigned char key, int x, int y) +); +OGAPI void OGAPIENTRY glutSpecialUpFunc( + void (* callback)( int key, int x, int y) +); +OGAPI void OGAPIENTRY glutJoystickFunc( + void (* callback)( unsigned int buttonMask, int x, int y, int z ), int pollInterval +); +OGAPI void OGAPIENTRY glutMenuStateFunc( void (* callback)( int menu ) ); +OGAPI void OGAPIENTRY glutMenuStatusFunc( + void (* callback)( int status, int x, int y) +); +OGAPI void OGAPIENTRY glutOverlayDisplayFunc( void (* callback)( void ) ); +OGAPI void OGAPIENTRY glutWindowStatusFunc( void (* callback)( int status) ); + +OGAPI void OGAPIENTRY glutSpaceballMotionFunc( + void (* callback)( int key, int x, int y ) +); +OGAPI void OGAPIENTRY glutSpaceballRotateFunc( + void (* callback)( int key, int x, int y ) +); +OGAPI void OGAPIENTRY glutSpaceballButtonFunc( + void (* callback)( int x, int y) +); +OGAPI void OGAPIENTRY glutButtonBoxFunc( void (* callback)( int x, int y ) ); +OGAPI void OGAPIENTRY glutDialsFunc( void (* callback)( int x, int y ) ); +OGAPI void OGAPIENTRY glutTabletMotionFunc( void (* callback)( int x, int y ) ); +OGAPI void OGAPIENTRY glutTabletButtonFunc( + void (* callback)( int button, int state, int x, int y ) +); + +/* + * State setting and retrieval functions, see og_state.c + */ +OGAPI int OGAPIENTRY glutGet( GLenum query ); +OGAPI int OGAPIENTRY glutDeviceGet( GLenum query ); +OGAPI int OGAPIENTRY glutGetModifiers( void ); +OGAPI int OGAPIENTRY glutLayerGet( GLenum query ); + +/* + * Font stuff, see og_font.c + */ +OGAPI void OGAPIENTRY glutBitmapCharacter( void* font, int character ); +OGAPI int OGAPIENTRY glutBitmapWidth( void* font, int character ); +OGAPI void OGAPIENTRY glutStrokeCharacter( void* font, int character ); +OGAPI float OGAPIENTRY glutStrokeWidth( void* font, int character ); +OGAPI int OGAPIENTRY glutBitmapLength( void* font, const unsigned char* string ); +OGAPI float OGAPIENTRY glutStrokeLength( void* font, const unsigned char* string ); + +/* + * Geometry functions, see og_geometry.c + */ +OGAPI void OGAPIENTRY glutWireCube( GLdouble size ); +OGAPI void OGAPIENTRY glutSolidCube( GLdouble size ); +OGAPI void OGAPIENTRY glutWireSphere( + GLdouble radius, GLint slices, GLint stacks +); +OGAPI void OGAPIENTRY glutSolidSphere( + GLdouble radius, GLint slices, GLint stacks +); +OGAPI void OGAPIENTRY glutWireCone( + GLdouble base, GLdouble height, GLint slices, GLint stacks +); +OGAPI void OGAPIENTRY glutSolidCone( + GLdouble base, GLdouble height, GLint slices, GLint stacks +); + +OGAPI void OGAPIENTRY glutWireTorus( + GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings +); +OGAPI void OGAPIENTRY glutSolidTorus( + GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings +); +OGAPI void OGAPIENTRY glutWireDodecahedron( void ); +OGAPI void OGAPIENTRY glutSolidDodecahedron( void ); +OGAPI void OGAPIENTRY glutWireOctahedron( void ); +OGAPI void OGAPIENTRY glutSolidOctahedron( void ); +OGAPI void OGAPIENTRY glutWireTetrahedron( void ); +OGAPI void OGAPIENTRY glutSolidTetrahedron( void ); +OGAPI void OGAPIENTRY glutWireIcosahedron( void ); +OGAPI void OGAPIENTRY glutSolidIcosahedron( void ); + +/* + * Teapot rendering functions, found in og_teapot.c + */ +OGAPI void OGAPIENTRY glutWireTeapot( GLdouble size ); +OGAPI void OGAPIENTRY glutSolidTeapot( GLdouble size ); + +/* + * Game mode functions, see og_gamemode.c + */ +OGAPI void OGAPIENTRY glutGameModeString( const char* string ); +OGAPI int OGAPIENTRY glutEnterGameMode( void ); +OGAPI void OGAPIENTRY glutLeaveGameMode( void ); +OGAPI int OGAPIENTRY glutGameModeGet( GLenum query ); + +/* + * Video resize functions, see og_videoresize.c + */ +OGAPI int OGAPIENTRY glutVideoResizeGet( GLenum query ); +OGAPI void OGAPIENTRY glutSetupVideoResizing( void ); +OGAPI void OGAPIENTRY glutStopVideoResizing( void ); +OGAPI void OGAPIENTRY glutVideoResize( + int x, int y, int width, int height +); +OGAPI void OGAPIENTRY glutVideoPan( int x, int y, int width, int height ); + +/* + * Colormap functions, see og_misc.c + */ +OGAPI void OGAPIENTRY glutSetColor( + int color, GLfloat red, GLfloat green, GLfloat blue +); +OGAPI GLfloat OGAPIENTRY glutGetColor( int color, int component ); +OGAPI void OGAPIENTRY glutCopyColormap( int window ); + +/* + * Misc keyboard and joystick functions, see og_misc.c + */ +OGAPI void OGAPIENTRY glutIgnoreKeyRepeat( int ignore ); +OGAPI void OGAPIENTRY glutSetKeyRepeat( int repeatMode ); +OGAPI void OGAPIENTRY glutForceJoystickFunc( void ); + +/* + * Misc functions, see og_misc.c + */ +OGAPI int OGAPIENTRY glutExtensionSupported( const char* extension ); +OGAPI void OGAPIENTRY glutReportErrors( void ); + +/* + *_______________________________________ + * OpenGLUT EXTENSIONS + *_______________________________________ + */ + + +/* + * GLUT API Extension macro definitions -- behavior when the user clicks + * on the window-close/program-quit widget box. + */ +#define GLUT_ACTION_EXIT 0 +#define GLUT_ACTION_GLUTMAINLOOP_RETURNS 1 +#define GLUT_ACTION_CONTINUE_EXECUTION 2 + +/* + * Create a new rendering context when the user opens a new window? + */ +#define GLUT_CREATE_NEW_CONTEXT 0 +#define GLUT_USE_CURRENT_CONTEXT 1 + +/* + * GLUT API Extension macro definitions -- display mode + */ +#define GLUT_OFFSCREEN 0x0400 + +/* + * GLUT API Extension macro definitions -- the glutGet parameters + */ +#define GLUT_ACTION_ON_WINDOW_CLOSE 0x01F9 + +#define GLUT_WINDOW_BORDER_WIDTH 0x01FA +#define GLUT_WINDOW_HEADER_HEIGHT 0x01FB + +#define GLUT_VERSION 0x01FC + +#define GLUT_RENDERING_CONTEXT 0x01FD + +/* + * Process loop function, see freeglut_main.c + */ +OGAPI void OGAPIENTRY glutMainLoopEvent( void ); +OGAPI void OGAPIENTRY glutLeaveMainLoop( void ); + +/* + * Window-specific callback functions, see freeglut_callbacks.c + */ +OGAPI void OGAPIENTRY glutMouseWheelFunc( + void (* callback)( int button, int state, int x, int y ) +); +OGAPI void OGAPIENTRY glutCloseFunc( void (* callback)( void ) ); +OGAPI void OGAPIENTRY glutWMCloseFunc( void (* callback)( void ) ); +/* A. Donev: Also a destruction callback for menus */ +OGAPI void OGAPIENTRY glutMenuDestroyFunc( void (* callback)( void ) ); + +/* + * State setting and retrieval functions, see freeglut_state.c + */ +OGAPI void OGAPIENTRY glutSetOption ( GLenum option_flag, int value ) ; +/* A.Donev: User-data manipulation */ +OGAPI void* OGAPIENTRY glutGetWindowData( void ); +OGAPI void OGAPIENTRY glutSetWindowData(void* data); +OGAPI void* OGAPIENTRY glutGetMenuData( void ); +OGAPI void OGAPIENTRY glutSetMenuData(void* data); + +/* + * Font stuff, see freeglut_font.c + */ +OGAPI int OGAPIENTRY glutBitmapHeight( void* font ); +OGAPI GLfloat OGAPIENTRY glutStrokeHeight( void* font ); +OGAPI void OGAPIENTRY glutBitmapString( + void* font, const unsigned char *string +); +OGAPI void OGAPIENTRY glutStrokeString( + void* font, const unsigned char *string +); + +/* + * Geometry functions, see freeglut_geometry.c + */ +OGAPI void OGAPIENTRY glutWireRhombicDodecahedron( void ); +OGAPI void OGAPIENTRY glutSolidRhombicDodecahedron( void ); +OGAPI void OGAPIENTRY glutWireSierpinskiSponge( + int num_levels, const GLdouble offset[3], GLdouble scale +); +OGAPI void OGAPIENTRY glutSolidSierpinskiSponge( + int num_levels, const GLdouble offset[3], GLdouble scale +); +OGAPI void OGAPIENTRY glutWireCylinder( + GLdouble radius, GLdouble height, GLint slices, GLint stacks +); +OGAPI void OGAPIENTRY glutSolidCylinder( + GLdouble radius, GLdouble height, GLint slices, GLint stacks +); + +/* + * Extension functions, see freeglut_ext.c + */ +OGAPI void *OGAPIENTRY glutGetProcAddress( const char *procName ); + + +/* + * GLUT API Extension macro definitions -- display mode + */ +#define GLUT_BORDERLESS 0x0800 + +/* + * OpenGLUT experimental functions. + */ +OGAPI int glutCreateMenuWindow( int parent, int x, int y, int w, int h ); + +OGAPI void glutSetWindowStayOnTop( int enable ); + +/* + * Allow for conditional compilation of experimental features. + */ + +#define OPENGLUT_MENUWINDOW +#define OPENGLUT_STAYONTOP + +#endif diff --git a/src/clock.h b/src/clock.h new file mode 100644 index 0000000..134658c --- /dev/null +++ b/src/clock.h @@ -0,0 +1,121 @@ +/*! \file clock.h + + \brief Provides a class for timing events with high precision. + + \author Eric Chan + \date July 2003 +*/ + +#ifndef __MMC_CLOCK_H__ +#define __MMC_CLOCK_H__ + +#include "timer.h" + +namespace mmc +{ + + /*! \brief High precision clock for timing events. + + This class is implemented on top of the Timer class. Usually it is + not necessary to use the Timer class directly; instead, use this + class. */ + class Clock + { + public: + /*! Construct a clock. */ + inline Clock (); + + /*! Reset the clock (0 time elapsed). */ + inline void reset (); + + /*! Call once per frame to update the internal clock state. */ + inline void inc (); + + /*! Returns the amount of time (in ms) elapsed between last + two calls to \p inc(). */ + inline long queryInc () const; + + /*! Returns the amount of time (in ms) elapsed since clock creation or + reset() was called. */ + inline long queryTime () const; + + /*! Pause the clock. */ + inline void pauseToggle (); + + private: + Timer *timer_; + MMC_TIME_TYPE inc_; + MMC_TIME_TYPE curTime_; + MMC_TIME_TYPE start_; + bool paused_; + double invFreq_; + }; + + ////////////////////////////////////////////////////////////////////// + // Implementation. + // + + inline + Clock::Clock () + : paused_(false) + { + timer_ = new Timer; + invFreq_ = timer_->getInvFreq(); + timer_->start(); + reset(); + } + + void + Clock::reset () + { + start_ = timer_->queryElapsed(); + inc_ = curTime_ = 0; + } + + void + Clock::inc () + { + timer_->inc(); + if (!paused_) + { + inc_ = timer_->queryInc(); + curTime_ += inc_; + } + else + { + inc_ = 0; + } + } + + // Converts internal clock increment to long in milliseconds. + long + Clock::queryInc () const + { + return (long) (1000.0 * inc_ * invFreq_); + } + + // Converts internal clock time to long in milliseconds. + long + Clock::queryTime () const + { + return (long) (1000.0 * curTime_ * invFreq_); + } + + void + Clock::pauseToggle () + { + if (paused_) + { + paused_ = false; + } + else + { + paused_ = true; + inc_ = 0; + } + } + +} // namespace mmc + +#endif // __MMC_CLOCK_H__ + diff --git a/src/fps.cpp b/src/fps.cpp new file mode 100644 index 0000000..dd0112b --- /dev/null +++ b/src/fps.cpp @@ -0,0 +1,65 @@ +/*! \file fps.h + + \brief Defines a class for keeping track of frames/sec. + + \author Eric Chan + \date July 2003 +*/ + +#include "fps.h" +#include "clock.h" + +using namespace mmc; + +FpsTracker::FpsTracker (int smoothSteps) + : steps_(smoothSteps), nSnaps_(0) +{ + clock_ = new Clock; + snaps_ = new long[steps_]; + memset(snaps_, 0, sizeof(long) * steps_); +} + +FpsTracker::~FpsTracker () +{ + delete snaps_; + delete clock_; +} + +void +FpsTracker::timestamp () +{ + clock_->inc(); + snaps_[nSnaps_ % steps_] = clock_->queryInc(); + nSnaps_++; +} + +float +FpsTracker::fpsAverage () const +{ + int count = (nSnaps_ < steps_) ? nSnaps_ : steps_; + long sum = 0L; + for (int i = 0; i < count; ++i) + { + sum += snaps_[i]; + } + if (!sum) sum = 1L; // prevent div-by-zero + return 1000.0f * count / (float) sum; +} + +float +FpsTracker::fpsInstant () const +{ + long inc = clock_->queryInc(); + if (!inc) inc = 1L; // prevent div-by-zero + return 1000.0f / (float) inc; +} + +void +FpsTracker::setNumSteps (int smoothSteps) +{ + steps_ = smoothSteps; + delete snaps_; + snaps_ = new long[steps_]; + memset(snaps_, 0, sizeof(long) * steps_); + nSnaps_ = 0; +} diff --git a/src/fps.h b/src/fps.h new file mode 100644 index 0000000..35b8263 --- /dev/null +++ b/src/fps.h @@ -0,0 +1,55 @@ +/*! \file fps.h + + \brief Defines a class for keeping track of frames/sec. + + \author Eric Chan + \date July 2003 +*/ + +#ifndef __MMC_FPS_H__ +#define __MMC_FPS_H__ + +#include + +namespace mmc +{ + class Clock; + + /*! \brief Utility class for measuring framerate. */ + class FpsTracker + { + public: + /*! Create a FpsTracker. \p smoothSteps is the window size + over which to average the time measurements. */ + FpsTracker (int smoothSteps = 4); + + /*! Deallocate a FpsTracker. */ + ~FpsTracker (); + + /*! Specify the window size \p smoothSteps over which the time + measurements will be averaged. */ + void setNumSteps (int smoothSteps); + + /*! Makes a timestamp (i.e. takes a snapshot); measures + time intervals between successful calls. Usually, you want + to call this function once per rendering loop. */ + void timestamp (); + + /*! Get the average FPS (averaged over \p smoothSteps + interval). */ + float fpsAverage () const; + + /*! Get the instantaneous FPS (estimated from the last frame + only). */ + float fpsInstant () const; + + private: + Clock *clock_; + int steps_; + int nSnaps_; + long *snaps_; + }; + +} // namespace mmc + +#endif // __MMC_FPS_H__ diff --git a/src/image.cpp b/src/image.cpp index 67bf157..46b6235 100755 --- a/src/image.cpp +++ b/src/image.cpp @@ -38,7 +38,7 @@ image::~image(){ //------------------------ float image::applyGamma(float f){ - //apply gamma correction, use simple power law gamma for now. + //apply gamma correction, use simple power law gamma for now. TODO: sRGB return pow(f/float(gamma.divisor), gamma.gamma); } diff --git a/src/interactions.h b/src/interactions.h index 6561796..8c045c0 100755 --- a/src/interactions.h +++ b/src/interactions.h @@ -8,10 +8,94 @@ #include "intersections.h" +struct AbsorptionAndScatteringProperties{ + glm::vec3 absorptionCoefficient; + float reducedScatteringCoefficient; +}; + //forward declaration +__host__ __device__ bool calculateScatterAndAbsorption(ray& r, float& depth, AbsorptionAndScatteringProperties& currentAbsorptionAndScattering, glm::vec3& unabsorbedColor, material m, float randomFloatForScatteringDistance, float randomFloat2, float randomFloat3); __host__ __device__ glm::vec3 getRandomDirectionInSphere(float xi1, float xi2); +__host__ __device__ glm::vec3 calculateTransmission(glm::vec3 absorptionCoefficient, float distance); +__host__ __device__ glm::vec3 getReflectedRay(glm::vec3 d, glm::vec3 n); +__host__ __device__ glm::vec3 getRefractedRay(glm::vec3 d, glm::vec3 n, float IOR); +__host__ __device__ bool isDiffuseRay(float randomSeed, float hasDiffuse); +__host__ __device__ bool isRefractedRay(float randomSeed, float IOR, glm::vec3 d, glm::vec3 n, glm::vec3 t); __host__ __device__ glm::vec3 calculateRandomDirectionInHemisphere(glm::vec3 normal, float xi1, float xi2); +//TODO (OPTIONAL): IMPLEMENT THIS FUNCTION +__host__ __device__ glm::vec3 calculateTransmission(glm::vec3 absorptionCoefficient, float distance) { + return glm::vec3(0,0,0); +} + +//TODO (OPTIONAL): IMPLEMENT THIS FUNCTION +__host__ __device__ bool calculateScatterAndAbsorption(ray& r, float& depth, AbsorptionAndScatteringProperties& currentAbsorptionAndScattering, + glm::vec3& unabsorbedColor, material m, float randomFloatForScatteringDistance, float randomFloat2, float randomFloat3){ + return false; +} + +// Get the reflected ray direction from ray direction and normal +__host__ __device__ glm::vec3 getReflectedRay(glm::vec3 d, glm::vec3 n) { + glm::vec3 VR; // reflected ray direction + if (glm::length(-d - n) < THRESHOLD) { + VR = n; + } + else if (abs(glm::dot(-d, n)) < THRESHOLD) { + VR = d; + } + else { + VR = glm::normalize(d - 2.0f * glm::dot(d, n) * n); + } + return VR; +} + +// Get the refracted ray direction from ray direction, normal and index of refraction (IOR) +__host__ __device__ glm::vec3 getRefractedRay(glm::vec3 d, glm::vec3 n, float IOR) { + glm::vec3 VT; // refracted ray direction + float t = 1 / IOR; + float base = 1 - t * t * (1 - pow(glm::dot(n, d), 2)); + if (base < 0) { + VT = glm::vec3(0, 0, 0); + } + else { + VT = (-t * glm::dot(n, d) - sqrt(base)) * n + t * d; // refracted ray + VT = glm::normalize(VT); + } + return VT; +} + +// Determine if the reflected ray is a diffuse ray or not +__host__ __device__ bool isDiffuseRay(float randomSeed, float hasDiffuse) { + // determine if ray is reflected according to the proportion + thrust::default_random_engine rng(thrusthash(randomSeed)); + thrust::uniform_real_distribution u01(0,1); + if (u01(rng) <= hasDiffuse) { + return true; + } + else { + return false; + } +} + +// Determine if the randomly generated ray is a refracted ray or a reflected ray +__host__ __device__ bool isRefractedRay(float randomSeed, float IOR, glm::vec3 d, glm::vec3 n, glm::vec3 t) { + float rpar = (IOR * glm::dot(n, d) - glm::dot(n, t)) / (IOR * glm::dot(n, d) + glm::dot(n, t)); + float rperp = (glm::dot(n, d) - IOR * glm::dot(n, t)) / (glm::dot(n, d) + IOR * glm::dot(n, t)); + + // compute proportion of the light reflected + float fr = 0.5 * (rpar * rpar + rperp * rperp); + + // determine if ray is reflected according to the proportion + thrust::default_random_engine rng(thrusthash(randomSeed)); + thrust::uniform_real_distribution u01(0,1); + if (u01(rng) <= fr) { + return false; + } + else { + return true; + } +} + //LOOK: This function demonstrates cosine weighted random direction generation in a sphere! __host__ __device__ glm::vec3 calculateRandomDirectionInHemisphere(glm::vec3 normal, float xi1, float xi2) { @@ -47,4 +131,13 @@ __host__ __device__ glm::vec3 getRandomDirectionInSphere(float xi1, float xi2) { return glm::vec3(0,0,0); } +//TODO (PARTIALLY OPTIONAL): IMPLEMENT THIS FUNCTION +//returns 0 if diffuse scatter, 1 if reflected, 2 if transmitted. +__host__ __device__ int calculateBSDF(ray& r, glm::vec3 intersect, glm::vec3 normal, glm::vec3 emittedColor, + AbsorptionAndScatteringProperties& currentAbsorptionAndScattering, + glm::vec3& color, glm::vec3& unabsorbedColor, material m){ + + return 1; +}; + #endif diff --git a/src/intersections.h b/src/intersections.h index a6b9469..11c66d5 100755 --- a/src/intersections.h +++ b/src/intersections.h @@ -13,17 +13,27 @@ #include //Some forward declarations +//Can I remove them? __host__ __device__ glm::vec3 getPointOnRay(ray r, float t); __host__ __device__ glm::vec3 multiplyMV(cudaMat4 m, glm::vec4 v); __host__ __device__ glm::vec3 getSignOfRay(ray r); __host__ __device__ glm::vec3 getInverseDirectionOfRay(ray r); +__host__ __device__ void getClosestIntersection(staticGeom* geoms, int numberOfGeoms, glm::vec3* vertices, + glm::vec3* normals, triangle* faces, int numberOfFaces, + ray r, glm::vec3& minIntersection, glm::vec3& minNormal, + int& materialid); +__host__ __device__ float geomIntersectionTest(staticGeom sphere, ray r, glm::vec3& intersectionPoint, glm::vec3& normal); +__host__ __device__ float triangleIntersectionTest(glm::vec3 v1, glm::vec3 v2, glm::vec3 v3, + glm::vec3 n1, glm::vec3 n2, glm::vec3 n3, + ray r, glm::vec3& intersection, glm::vec3& normal); __host__ __device__ float boxIntersectionTest(staticGeom sphere, ray r, glm::vec3& intersectionPoint, glm::vec3& normal); -__host__ __device__ float boxIntersectionTest(glm::vec3 boxMin, glm::vec3 boxMax, staticGeom box, ray r, glm::vec3& intersectionPoint, glm::vec3& normal); __host__ __device__ float sphereIntersectionTest(staticGeom sphere, ray r, glm::vec3& intersectionPoint, glm::vec3& normal); +__host__ __device__ glm::vec3 getRandomPointOnGeom(staticGeom geom, float randomSeed); __host__ __device__ glm::vec3 getRandomPointOnCube(staticGeom cube, float randomSeed); +__host__ __device__ glm::vec3 getRandomPointOnSphere(staticGeom sphere, float randomSeed); //Handy dandy little hashing function that provides seeds for random number generation -__host__ __device__ unsigned int hash(unsigned int a){ +__host__ __device__ unsigned int thrusthash(unsigned int a){ a = (a+0x7ed55d16) + (a<<12); a = (a^0xc761c23c) ^ (a>>19); a = (a+0x165667b1) + (a<<5); @@ -69,98 +79,186 @@ __host__ __device__ glm::vec3 getSignOfRay(ray r){ return glm::vec3((int)(inv_direction.x < 0), (int)(inv_direction.y < 0), (int)(inv_direction.z < 0)); } -//Wrapper for cube intersection test for testing against unit cubes -__host__ __device__ float boxIntersectionTest(staticGeom box, ray r, glm::vec3& intersectionPoint, glm::vec3& normal){ - return boxIntersectionTest(glm::vec3(-.5,-.5,-.5), glm::vec3(.5,.5,.5), box, r, intersectionPoint, normal); +// find the position, normal and material id of the closest intersection +__host__ __device__ void getClosestIntersection(staticGeom* geoms, int numberOfGeoms, glm::vec3* vertices, + glm::vec3* normals, triangle* faces, int numberOfFaces, + ray r, glm::vec3& minIntersection, glm::vec3& minNormal, + int& materialid) { + float minDist = FLT_MAX; + glm::vec3 intersection, normal; + float dist; + +#pragma unroll + for (int i=0; i THRESHOLD && dist < minDist) { + materialid = geoms[i].materialid; + minDist = dist; + minIntersection = intersection; + minNormal = normal; + } + } + +#pragma unroll + for (int i=0; i THRESHOLD && dist < minDist) { + materialid = faces[i].materialid; + minDist = dist; + minIntersection = intersection; + minNormal = normal; + } + } } -//Cube intersection test, return -1 if no intersection, otherwise, distance to intersection -__host__ __device__ float boxIntersectionTest(glm::vec3 boxMin, glm::vec3 boxMax, staticGeom box, ray r, glm::vec3& intersectionPoint, glm::vec3& normal){ - glm::vec3 currentNormal = glm::vec3(0,0,0); - - ray ro = r; - - glm::vec3 iP0 = multiplyMV(box.inverseTransform,glm::vec4(r.origin, 1.0f)); - glm::vec3 iP1 = multiplyMV(box.inverseTransform,glm::vec4(r.origin+r.direction, 1.0f)); - glm::vec3 iV0 = iP1 - iP0; - - r.origin = iP0; - r.direction = glm::normalize(iV0); - - float tmin, tmax, tymin, tymax, tzmin, tzmax; - - glm::vec3 rsign = getSignOfRay(r); - glm::vec3 rInverseDirection = getInverseDirectionOfRay(r); - - if((int)rsign.x==0){ - tmin = (boxMin.x - r.origin.x) * rInverseDirection.x; - tmax = (boxMax.x - r.origin.x) * rInverseDirection.x; - }else{ - tmin = (boxMax.x - r.origin.x) * rInverseDirection.x; - tmax = (boxMin.x - r.origin.x) * rInverseDirection.x; - } - - if((int)rsign.y==0){ - tymin = (boxMin.y - r.origin.y) * rInverseDirection.y; - tymax = (boxMax.y - r.origin.y) * rInverseDirection.y; - }else{ - tymin = (boxMax.y - r.origin.y) * rInverseDirection.y; - tymax = (boxMin.y - r.origin.y) * rInverseDirection.y; - } - - if ( (tmin > tymax) || (tymin > tmax) ){ - return -1; - } - if (tymin > tmin){ - tmin = tymin; - } - if (tymax < tmax){ - tmax = tymax; - } - - if((int)rsign.z==0){ - tzmin = (boxMin.z - r.origin.z) * rInverseDirection.z; - tzmax = (boxMax.z - r.origin.z) * rInverseDirection.z; - }else{ - tzmin = (boxMax.z - r.origin.z) * rInverseDirection.z; - tzmax = (boxMin.z - r.origin.z) * rInverseDirection.z; - } - - if ( (tmin > tzmax) || (tzmin > tmax) ){ - return -1; - } - if (tzmin > tmin){ - tmin = tzmin; - } - if (tzmax < tmax){ - tmax = tzmax; - } - if(tmin<0){ - return -1; - } - - glm::vec3 osintersect = r.origin + tmin*r.direction; - - if(abs(osintersect.x-abs(boxMax.x))<.001){ - currentNormal = glm::vec3(1,0,0); - }else if(abs(osintersect.y-abs(boxMax.y))<.001){ - currentNormal = glm::vec3(0,1,0); - }else if(abs(osintersect.z-abs(boxMax.z))<.001){ - currentNormal = glm::vec3(0,0,1); - }else if(abs(osintersect.x+abs(boxMin.x))<.001){ - currentNormal = glm::vec3(-1,0,0); - }else if(abs(osintersect.y+abs(boxMin.y))<.001){ - currentNormal = glm::vec3(0,-1,0); - }else if(abs(osintersect.z+abs(boxMin.z))<.001){ - currentNormal = glm::vec3(0,0,-1); - } - - intersectionPoint = multiplyMV(box.transform, glm::vec4(osintersect, 1.0)); - +// Geometry intersection test, call sphere/box/mesh intersection test functions depending the type of the geometry +__host__ __device__ float geomIntersectionTest(staticGeom geom, ray r, glm::vec3& intersectionPoint, glm::vec3& normal) { + switch (geom.type) { + case GEOMTYPE::SPHERE: + return sphereIntersectionTest(geom, r, intersectionPoint, normal); + case GEOMTYPE::CUBE: + return boxIntersectionTest(geom, r, intersectionPoint, normal); + case GEOMTYPE::MESH: + // TODO: optimize this, maybe remove meshes from the geometry list + return -1; // since mesh intersection test is done by triangle intersection tests + default: + return -1; + } +} +__host__ __device__ float triangleIntersectionTest(glm::vec3 v1, glm::vec3 v2, glm::vec3 v3, + glm::vec3 n1, glm::vec3 n2, glm::vec3 n3, + ray r, glm::vec3& intersection, glm::vec3& normal) { + if (glm::length(v1 - v2) < EPSILON || glm::length(v1 - v3) < EPSILON || glm::length(v2 - v3) < EPSILON) + return -1; + + // ray plane intersection + glm::vec3 n = glm::cross(v2 - v1, v3 - v1); + float t = -glm::dot(r.origin - v1, n) / glm::dot(r.direction, n); + if (t <= 0) { + return -1; + } + glm::vec3 x = r.origin + t * r.direction; + + // point in triangle + float s1 = glm::dot(glm::cross(v2 - v1, x - v1), n); + float s2 = glm::dot(glm::cross(v3 - v2, x - v2), n); + float s3 = glm::dot(glm::cross(v1 - v3, x - v3), n); + if (s1 >= 0 && s2 >= 0 && s3 >= 0) { + intersection = x; + normal = glm::normalize(s1 * n1 + s2 * n2 + s3 * n3); + return glm::length(r.origin - x); + } + else { + return -1; + } +} - normal = multiplyMV(box.transform, glm::vec4(currentNormal,0.0)); - return glm::length(intersectionPoint-ro.origin); +//TODO: IMPLEMENT THIS FUNCTION +//Cube intersection test, return -1 if no intersection, otherwise, distance to intersection +__host__ __device__ float boxIntersectionTest(staticGeom box, ray r, glm::vec3& intersectionPoint, glm::vec3& normal){ + + glm::vec3 ro = multiplyMV(box.inverseTransform, glm::vec4(r.origin,1.0f)); + glm::vec3 rd = glm::normalize(multiplyMV(box.inverseTransform, glm::vec4(r.direction,0.0f))); // why not transpose(inverse)? + + // ray box intersection + bool intersect = true; + float tnear = -FLT_MAX; + float tfar = FLT_MAX; + float t1, t2; + // left and right faces + if (abs(rd[0]) > THRESHOLD) { + t1 = (-0.5 - ro[0]) / rd[0]; + t2 = (0.5 - ro[0]) / rd[0]; + if (t1 > t2) { + float temp = t1; + t1 = t2; + t2 = temp; + } + if (tnear < t1) { + tnear = t1; + } + if (tfar > t2) { + tfar = t2; + } + } + else if (ro[0] <= -0.5 || ro[0] >= 0.5) { + intersect = false; + } + // top and bottom faces + if (abs(rd[1]) > THRESHOLD) { + t1 = (-0.5 - ro[1]) / rd[1]; + t2 = (0.5 - ro[1]) / rd[1]; + if (t1 > t2) { + float temp = t1; + t1 = t2; + t2 = temp; + } + if (tnear < t1) { + tnear = t1; + } + if (tfar > t2) { + tfar = t2; + } + } + else if (ro[1] <= -0.5 || ro[1] >= 0.5) { + intersect = false; + } + // front and rear faces + if (abs(rd[2]) > THRESHOLD) { + t1 = (-0.5 - ro[2]) / rd[2]; + t2 = (0.5 - ro[2]) / rd[2]; + if (t1 > t2) { + float temp = t1; + t1 = t2; + t2 = temp; + } + if (tnear < t1) { + tnear = t1; + } + if (tfar > t2) { + tfar = t2; + } + } + else if (ro[2] <= -0.5 || ro[2] >= 0.5) { + intersect = false; + } + if (!intersect || tnear > tfar + THRESHOLD || tnear < THRESHOLD) { + return -1; + } + else { + glm::vec3 p = ro + rd * tnear; + glm::vec3 n; + if (abs(p[0]+0.5) < THRESHOLD) { + n = glm::vec3(-1, 0, 0); + } + else if (abs(p[0]-0.5) < THRESHOLD) { + n = glm::vec3(1, 0, 0); + } + else if (abs(p[1]+0.5) < THRESHOLD) { + n = glm::vec3(0, -1, 0); + } + else if (abs(p[1]-0.5) < THRESHOLD) { + n = glm::vec3(0, 1, 0); + } + else if (abs(p[2]+0.5) < THRESHOLD) { + n = glm::vec3(0, 0, -1); + } + else { + n = glm::vec3(0, 0, 1); + } + + intersectionPoint = multiplyMV(box.transform, glm::vec4(p, 1.0f)); + normal = glm::normalize(multiplyMV(box.transform, glm::vec4(n, 0.0f))); + + return glm::length(r.origin - intersectionPoint); + } } //LOOK: Here's an intersection test example from a sphere. Now you just need to figure out cube and, optionally, triangle. @@ -184,7 +282,7 @@ __host__ __device__ float sphereIntersectionTest(staticGeom sphere, ray r, glm:: float firstTerm = -vDotDirection; float t1 = firstTerm + squareRoot; float t2 = firstTerm - squareRoot; - + float t = 0; if (t1 < 0 && t2 < 0) { return -1; @@ -215,11 +313,26 @@ __host__ __device__ glm::vec3 getRadiuses(staticGeom geom){ return glm::vec3(xradius, yradius, zradius); } +// Get random point on geometry, call getRandomPointOnCube or getRandomPointOnSphere +__host__ __device__ glm::vec3 getRandomPointOnGeom(staticGeom geom, float randomSeed) { + switch (geom.type) { + case GEOMTYPE::SPHERE: + return getRandomPointOnSphere(geom, randomSeed); + case GEOMTYPE::CUBE: + return getRandomPointOnCube(geom, randomSeed); + case GEOMTYPE::MESH: + // don't need to do mesh lights + return glm::vec3(0, 0, 0); + default: + return glm::vec3(0, 0, 0); + } +} + //LOOK: Example for generating a random point on an object using thrust. //Generates a random point on a given cube __host__ __device__ glm::vec3 getRandomPointOnCube(staticGeom cube, float randomSeed){ - thrust::default_random_engine rng(hash(randomSeed)); + thrust::default_random_engine rng(thrusthash(randomSeed)); thrust::uniform_real_distribution u01(0,1); thrust::uniform_real_distribution u02(-0.5,0.5); @@ -261,20 +374,18 @@ __host__ __device__ glm::vec3 getRandomPointOnCube(staticGeom cube, float random } +//TODO: IMPLEMENT THIS FUNCTION //Generates a random point on a given sphere __host__ __device__ glm::vec3 getRandomPointOnSphere(staticGeom sphere, float randomSeed){ - float radius=.5f; - thrust::default_random_engine rng(hash(randomSeed)); - thrust::uniform_real_distribution u01(-1,1); - thrust::uniform_real_distribution u02(0,TWO_PI); - - float theta = (float)u02(rng); - float cosphi = (float)u01(rng); - float sinphi = sqrt(1 - cosphi*cosphi); - glm::vec3 point = radius*glm::vec3(sinphi*cos(theta),sinphi*sin(theta),cosphi); - glm::vec3 randPoint = multiplyMV(sphere.transform, glm::vec4(point,1.0f)); - - return randPoint; + thrust::default_random_engine rng(thrusthash(randomSeed)); + thrust::uniform_real_distribution u01(0, PI*2); + thrust::uniform_real_distribution u02(0, PI); + + float phi = u01(rng); + float theta = u02(rng); + float r = sphere.scale.x; // assume the sphere is uniformly scaled + + return glm::vec3(r * sin(theta) * cos(phi), r * sin(theta) * sin(phi), r * cos(theta)); } #endif diff --git a/src/main.cpp b/src/main.cpp index 81836b1..4654eb7 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,6 +6,7 @@ // Yining Karl Li's TAKUA Render, a massively parallel pathtracing renderer: http://www.yiningkarlli.com #include "main.h" +#include //------------------------------- //-------------MAIN-------------- @@ -58,6 +59,8 @@ int main(int argc, char** argv){ targetFrame = 0; } + sendDataToGPU(); + // Launch CUDA/GL #ifdef __APPLE__ @@ -96,40 +99,165 @@ int main(int argc, char** argv){ return 0; } +// Send static data, such as geometry, lights, materials at the first frame to GPU +void sendDataToGPU() { + // the image we are rendering to + cudaMalloc((void**)&cudaimage, (int)renderCam->resolution.x*(int)renderCam->resolution.y*sizeof(glm::vec3)); + cudaMemcpy(cudaimage, renderCam->image, (int)renderCam->resolution.x*(int)renderCam->resolution.y*sizeof(glm::vec3), cudaMemcpyHostToDevice); + + // pack geom and material arrays + numberOfGeoms = renderScene->objects.size(); + numberOfMaterials = renderScene->materials.size(); + numberOfVertices = renderScene->vertices.size(); + numberOfNormals = renderScene->normals.size(); + numberOfFaces = renderScene->faces.size(); + + material* materials = new material[numberOfMaterials]; + for(int i=0; imaterials[i]; + } + + // allocate memory for geometry and faces + cudaMalloc((void**)&cudageoms, numberOfGeoms*sizeof(staticGeom)); + cudaMalloc((void**)&cudavertices, numberOfVertices*sizeof(glm::vec3)); + cudaMalloc((void**)&cudanormals, numberOfNormals*sizeof(glm::vec3)); + cudaMalloc((void**)&cudafaces, numberOfFaces*sizeof(triangle)); + + // copy materials to CUDA + cudaMalloc((void**)&cudamtls, numberOfMaterials*sizeof(material)); + cudaMemcpy(cudamtls, materials, numberOfMaterials*sizeof(material), cudaMemcpyHostToDevice); + + // package camera + cam.resolution = renderCam->resolution; + cam.fov = renderCam->fov; + cam.focal = renderCam->focal; + cam.aperture = renderCam->aperture; + + geoms = new geom[numberOfGeoms]; // so we don't need to do this every frame + for(int i=0; iobjects[i]; + } + + uploadDataOfCurrentFrame(); + + // set up ray pools and scan arrays + numberOfRays = (int)cam.resolution.x * (int)cam.resolution.y; + cudaMalloc((void**)&raypool1, (int)cam.resolution.x * (int)cam.resolution.y * sizeof(ray)); + cudaMalloc((void**)&raypool2, (int)cam.resolution.x * (int)cam.resolution.y * sizeof(ray)); + cudaMalloc((void**)&scanArray, numberOfRays * sizeof(int)); + cudaMalloc((void**)&sumArray1, ceil((float)numberOfRays/(float)64) * sizeof(int)); + cudaMalloc((void**)&sumArray2, ceil((float)numberOfRays/(float)64) * sizeof(int)); +} + +// update geometry and camera with data of current frame +void uploadDataOfCurrentFrame() { + triangle* faces = new triangle[numberOfFaces]; + glm::vec3* vertices = new glm::vec3[numberOfVertices]; + glm::vec3* normals = new glm::vec3[numberOfNormals]; + + for (int i=0; ifaces[i])); + } + for (int i=0; ivertices[i])); + } + for (int i=0; inormals[i])); + } + + staticGeom* geomList = new staticGeom[numberOfGeoms]; + int transVCount = 0; //number of vertices transformed + int transNCount = 0; //number of normals transformed + int transFCount = 0; //number of faces transformed + for(int i=0; ipositions[targetFrame]; + cam.view = renderCam->views[targetFrame]; + cam.up = renderCam->ups[targetFrame]; + + // delete pointers + delete [] vertices; + delete [] normals; + delete [] faces; + delete [] geomList; +} + +// helper +glm::vec3 multiplyMVdup(cudaMat4 m, glm::vec4 v){ + glm::vec3 r(1,1,1); + r.x = (m.x.x*v.x)+(m.x.y*v.y)+(m.x.z*v.z)+(m.x.w*v.w); + r.y = (m.y.x*v.x)+(m.y.y*v.y)+(m.y.z*v.z)+(m.y.w*v.w); + r.z = (m.z.x*v.x)+(m.z.y*v.y)+(m.z.z*v.z)+(m.z.w*v.w); + return r; +} + //------------------------------- //---------RUNTIME STUFF--------- //------------------------------- void runCuda(){ - // Map OpenGL buffer object for writing from CUDA on a single GPU // No data is moved (Win & Linux). When mapped to CUDA, OpenGL should not use this buffer - + if(iterationsiterations){ + uchar4 *dptr=NULL; iterations++; cudaGLMapBufferObject((void**)&dptr, pbo); - //pack geom and material arrays - geom* geoms = new geom[renderScene->objects.size()]; - material* materials = new material[renderScene->materials.size()]; - - for(int i=0; iobjects.size(); i++){ - geoms[i] = renderScene->objects[i]; - } - for(int i=0; imaterials.size(); i++){ - materials[i] = renderScene->materials[i]; - } - - // execute the kernel - cudaRaytraceCore(dptr, renderCam, targetFrame, iterations, materials, renderScene->materials.size(), geoms, renderScene->objects.size() ); + cudaRaytraceCore(dptr, renderCam, cam, iterations, cudageoms, numberOfGeoms, cudavertices, + cudanormals, cudafaces, numberOfFaces, cudamtls, cudaimage, raypool1, raypool2, + numberOfRays, scanArray, sumArray1, sumArray2); // unmap buffer object cudaGLUnmapBufferObject(pbo); }else{ if(!finishedRender){ + //retrieve image from GPU + cudaMemcpy(renderCam->image, cudaimage, (int)renderCam->resolution.x*(int)renderCam->resolution.y*sizeof(glm::vec3), cudaMemcpyDeviceToHost); + //output image file image outputImage(renderCam->resolution.x, renderCam->resolution.y); @@ -143,7 +271,7 @@ void runCuda(){ gammaSettings gamma; gamma.applyGamma = true; gamma.gamma = 1.0; - gamma.divisor = 1.0; //renderCam->iterations; + gamma.divisor = renderCam->iterations; outputImage.setGammaSettings(gamma); string filename = renderCam->imageName; string s; @@ -155,26 +283,43 @@ void runCuda(){ outputImage.saveImageRGB(filename); cout << "Saved frame " << s << " to " << filename << endl; finishedRender = true; - if(singleFrameMode==true){ - cudaDeviceReset(); + if(singleFrameMode==true || targetFrame==renderCam->frames-1){ + cudaDeviceReset(); + // free cuda memory + cudaFree(cudageoms); + cudaFree(cudamtls); + cudaFree(cudaimage); + cudaFree(raypool1); + cudaFree(raypool2); + cudaFree(scanArray); + cudaFree(sumArray1); + cudaFree(sumArray2); + + checkCUDAError("Kernel failed!"); exit(0); } } if(targetFrameframes-1){ - - //clear image buffer and move onto next frame - targetFrame++; - iterations = 0; - for(int i=0; iresolution.x*renderCam->resolution.y; i++){ - renderCam->image[i] = glm::vec3(0,0,0); - } - cudaDeviceReset(); - finishedRender = false; + //clear image buffer and move onto next frame + targetFrame++; + uploadDataOfCurrentFrame(); + clearImage(); + cudaDeviceReset(); + finishedRender = false; } } } +// Clear the image on CPU and set iterations to 0 +void clearImage() { + iterations = 0; + for(int i=0; iresolution.x*renderCam->resolution.y; i++){ + renderCam->image[i] = glm::vec3(0,0,0); + } + cudaMemcpy(cudaimage, renderCam->image, (int)renderCam->resolution.x*(int)renderCam->resolution.y*sizeof(glm::vec3), cudaMemcpyHostToDevice); +} + #ifdef __APPLE__ void display(){ @@ -199,6 +344,9 @@ void runCuda(){ #else void display(){ + // Keep track of time + //theFpsTracker.timestamp(); + runCuda(); string title = "565Raytracer | " + utilityCore::convertIntToString(iterations) + " Iterations"; @@ -216,16 +364,51 @@ void runCuda(){ glutPostRedisplay(); glutSwapBuffers(); + + //cout << "Framerate: " << theFpsTracker.fpsAverage() << endl; } void keyboard(unsigned char key, int x, int y) { + float step = 0.1; // camera step std::cout << key << std::endl; switch (key) { - case(27): + case(27): //Esc exit(1); break; + case(97): //a + cam.position += glm::vec3(1, 0, 0) * step; + clearImage(); + break; + case(119): //w + cam.position += glm::vec3(0, 1, 0) * step; + clearImage(); + break; + case(100): //d + cam.position += glm::vec3(-1, 0, 0) * step; + clearImage(); + break; + case(115): //s + cam.position += glm::vec3(0, -1, 0) * step; + clearImage(); + break; + case(122): //z + cam.position += glm::vec3(0, 0, -1) * step; + clearImage(); + break; + case(120): //x + cam.position += glm::vec3(0, 0, 1) * step; + clearImage(); + break; + //case(91): //[ + // cam.focal -= 0.5; + // clearImage(); + // break; + //case(93): //] + // cam.focal += 0.5; + // clearImage(); + // break; } } @@ -369,6 +552,7 @@ GLuint initShader(const char *vertexShaderPath, const char *fragmentShaderPath){ //------------------------------- void cleanupCuda(){ + delete [] geoms; if(pbo) deletePBO(&pbo); if(displayImage) deleteTexture(&displayImage); } diff --git a/src/main.h b/src/main.h index 0bab7cb..630cb37 100755 --- a/src/main.h +++ b/src/main.h @@ -29,6 +29,7 @@ #include "raytraceKernel.h" #include "utilities.h" #include "scene.h" +#include "fps.h" // for frame rate #if CUDA_VERSION >= 5000 #include @@ -42,6 +43,9 @@ using namespace std; +// Fps tracker +mmc::FpsTracker theFpsTracker; + //------------------------------- //----------PATHTRACER----------- //------------------------------- @@ -53,6 +57,38 @@ int iterations; bool finishedRender; bool singleFrameMode; +//------------------------------- +//--------PATHTRACE DATA--------- +//------------------------------- + +// geometry, materials and camera +int numberOfGeoms; +int numberOfMaterials; +int numberOfVertices; +int numberOfNormals; +int numberOfFaces; +geom* geoms; +staticGeom* cudageoms; +material* cudamtls; +glm::vec3* cudavertices; +glm::vec3* cudanormals; +triangle* cudafaces; +cameraData cam; +cudatexture* cudatextures; +glm::vec3* colors; + + +// the image buffer to render to +glm::vec3* cudaimage; + +// ray pools and scan arrays fo stream compaction +int numberOfRays; +ray* raypool1; +ray* raypool2; +int* scanArray; +int* sumArray1; +int* sumArray2; + //------------------------------- //------------GL STUFF----------- //------------------------------- @@ -80,6 +116,7 @@ int main(int argc, char** argv); //------------------------------- void runCuda(); +void clearImage(); #ifdef __APPLE__ void display(); @@ -104,6 +141,9 @@ void initTextures(); void initVAO(); GLuint initShader(const char *vertexShaderPath, const char *fragmentShaderPath); +void sendDataToGPU(); +void uploadDataOfCurrentFrame(); + //------------------------------- //---------CLEANUP STUFF--------- //------------------------------- @@ -113,4 +153,8 @@ void deletePBO(GLuint* pbo); void deleteTexture(GLuint* tex); void shut_down(int return_code); +// helper, copied from intersection.h +// TODO: optimize this +glm::vec3 multiplyMVdup(cudaMat4 m, glm::vec4 v); + #endif diff --git a/src/objload.cpp b/src/objload.cpp new file mode 100644 index 0000000..4d5a113 --- /dev/null +++ b/src/objload.cpp @@ -0,0 +1,1438 @@ +//----------------------------------------------------------------------------------------------------------- +/// \file objload.cpp +/// \author Rob Bateman, mailto:robthebloke@hotmail.com +/// \date 11-4-05 +/// \brief A C++ objloader supporting materials, and any face data going, groups +/// (ie, different meshes), calculation of normals. All face data will be +/// triagulated (badly, though should work 99% of the time). +/// +//----------------------------------------------------------------------------------------------------------- + +#include "objload.h" +#include +#include +#include + +namespace Obj { + + //####################################################################################################### Obj :: BezierPatch + //======================================================================================================= + //------------------------------------------------------------------------------------------------------- + + + //---------------------------------------------------------------------- BezierPatch :: Tesselate + void BezierPatch::Tesselate(const std::vector& point_array) { + + } + + //---------------------------------------------------------------------- BezierPatch :: SetLod + void BezierPatch::SetLod(unsigned new_lod) { + delete [] VertexData; + delete [] BlendFuncs; + delete [] IndexData; + LOD=new_lod; + // allocate new blend funcs array. This just caches the values for tesselation + BlendFuncs = new float[4*(LOD+1)]; + float* ptr = BlendFuncs; + for(unsigned i=0;i<=LOD;++i) { + float t = static_cast(i/LOD); + float t2 = t*t; + float t3 = t2*t; + float it =1.0f-t; + float it2 = it*it; + float it3 = it2*it; + + *ptr = t3; ++ptr; + *ptr = 3*it*t2; ++ptr; + *ptr = 3*it2*t; ++ptr; + *ptr = it3; ++ptr; + + // calculate texture coordinates since they never change + { + + } + // calculate texture coordinates since they never change + { + + } + } + + // allocate vertex data array + VertexData = new float[ 8*(LOD+1)*(LOD+1) ]; + + // allocate indices for triangle strips to render the patch + IndexData = new unsigned [ (LOD+1)*LOD*2 ]; + + { + // calculate the vertex indices for the triangle strips. + unsigned *iptr = IndexData; + unsigned *end = IndexData + (LOD+1)*LOD*2; + unsigned ii=0; + for( ; iptr != end; ++ii) { + *iptr = ii; ++iptr; + *iptr = ii+LOD+1; ++iptr; + } + } + } + + //---------------------------------------------------------------------- BezierPatch :: gl + void BezierPatch::gl() const { + + } + + //####################################################################################################### Normal Calculation Utilities + //======================================================================================================= + //------------------------------------------------------------------------------------------------------- + + //---------------------------------------------------------------------- DoFaceCalc + void DoFaceCalc(const Vertex& v1,const Vertex& v2,const Vertex& v3, + Normal& n1,Normal& n2,Normal& n3) + { + // calculate vector between v2 and v1 + Vertex e1; + e1.x= v1.x - v2.x; + e1.y= v1.y - v2.y; + e1.z= v1.z - v2.z; + + // calculate vector between v2 and v3 + Vertex e2; + e2.x= v3.x - v2.x; + e2.y= v3.y - v2.y; + e2.z= v3.z - v2.z; + + // cross product them + Vertex e1_cross_e2; + e1_cross_e2.x= e2.y*e1.z - e2.z*e1.y; + e1_cross_e2.y= e2.z*e1.x - e2.x*e1.z; + e1_cross_e2.z= e2.x*e1.y - e2.y*e1.x; + + float itt = 1.0f/((float)sqrt( e1_cross_e2.x*e1_cross_e2.x + + e1_cross_e2.y*e1_cross_e2.y + + e1_cross_e2.z*e1_cross_e2.z )); + + // normalise + e1_cross_e2.x *= itt; + e1_cross_e2.y *= itt; + e1_cross_e2.z *= itt; + + // sum the face normal into all the vertex normals this face uses + n1.x += e1_cross_e2.x; + n1.y += e1_cross_e2.y; + n1.z += e1_cross_e2.z; + + n2.x += e1_cross_e2.x; + n2.y += e1_cross_e2.y; + n2.z += e1_cross_e2.z; + + n3.x += e1_cross_e2.x; + n3.y += e1_cross_e2.y; + n3.z += e1_cross_e2.z; + } + + //---------------------------------------------------------------------- NormaliseNormals + void NormaliseNormals(std::vector& norms) { + std::vector::iterator itn = norms.begin(); + for( ; itn != norms.end(); ++itn ) { + float itt = 1.0f/((float)sqrt( itn->x*itn->x + + itn->y*itn->y + + itn->z*itn->z )); + itn->x *= itt; + itn->y *= itt; + itn->z *= itt; + } + } + + //---------------------------------------------------------------------- ZeroNormals + void ZeroNormals(std::vector& norms) { + // zero normals + std::vector::iterator itn = norms.begin(); + for( ; itn != norms.end(); ++itn ) + itn->x = itn->y = itn->z = 0; + } + + //####################################################################################################### Obj :: Material + //======================================================================================================= + //------------------------------------------------------------------------------------------------------- + + //---------------------------------------------------------------------- Material :: Material + Material::Material() : name(),illum(4),Ni(1),Ns(10),Bm(1),map_Ka(),map_Kd(),map_Ks(),map_Bump() { + Ka[0] = Ka[1] = Ka[2] = + Kd[0] = Kd[1] = Kd[2] = + Ks[0] = Ks[1] = Ks[2] = 0; + Ka[3] = Kd[3] = Ks[3] = 1; + Tf[0] = Tf[1] = Tf[2] = 1; + gltex_Ka = gltex_Kd = gltex_Ks = gltex_Bump = 0; + } + Material::~Material() { + if(gltex_Ka) glDeleteTextures(1,&gltex_Ka); + if(gltex_Kd) glDeleteTextures(1,&gltex_Kd); + if(gltex_Ks) glDeleteTextures(1,&gltex_Ks); + if(gltex_Bump) glDeleteTextures(1,&gltex_Bump); + } + + //---------------------------------------------------------------------- Material :: Material + Material::Material(const Material& mat) { + Ka[0] = mat.Ka[0]; Ka[1] = mat.Ka[1]; Ka[2] = mat.Ka[2]; Ka[3] = mat.Ka[3]; + Kd[0] = mat.Kd[0]; Kd[1] = mat.Kd[1]; Kd[2] = mat.Kd[2]; Kd[3] = mat.Kd[3]; + Ks[0] = mat.Ks[0]; Ks[1] = mat.Ks[1]; Ks[2] = mat.Ks[2]; Ks[3] = mat.Ks[3]; + Tf[0] = mat.Tf[0]; Tf[1] = mat.Tf[1]; Tf[2] = mat.Tf[2]; + Ni = mat.Ni; + Ns = mat.Ns; + name = mat.name; + map_Ka = mat.map_Ka; + map_Kd = mat.map_Kd; + map_Ks = mat.map_Ks; + map_Bump = mat.map_Bump; + illum = mat.illum; + Bm = mat.Bm; + } + + //---------------------------------------------------------------------- Material :: gl + void Material::gl() const { + float average_transp = (Tf[0]+Tf[1]+Tf[2])/3.0f; + Ka[3] = Kd[3] = Ks[3] = average_transp; + glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,Ka); + glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,Kd); + glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,Ks); + glMaterialf(GL_FRONT_AND_BACK,GL_SHININESS,Ns); + + if (gltex_Kd) { + // maya always sets the diffuse colour to black when a texture is applied. + float color[4]={0.6f,0.6f,0.6f,average_transp}; + glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,color); + + // apply texture + glBindTexture(GL_TEXTURE_2D,gltex_Kd); + + glEnable(GL_TEXTURE_2D); + } + else + glDisable(GL_TEXTURE_2D); + } + + //####################################################################################################### Obj :: Surface + //======================================================================================================= + //------------------------------------------------------------------------------------------------------- + + //---------------------------------------------------------------------- Surface :: Surface + Surface::Surface() + : m_Vertices(), + m_Normals(), + m_TexCoords(), + m_Triangles(), + m_AssignedMaterials(), + name() + {} + + //---------------------------------------------------------------------- Surface :: Surface + Surface::Surface(const Surface& surface) + : m_Vertices(surface.m_Vertices), + m_Normals(surface.m_Normals), + m_TexCoords(surface.m_TexCoords), + m_Triangles(surface.m_Triangles), + m_AssignedMaterials(surface.m_AssignedMaterials) , + name(surface.name) + {} + + //---------------------------------------------------------------------- Surface :: CalculateNormals + void Surface::CalculateNormals() { + // resize normal array if not present + if(!m_Normals.size()) + m_Normals.resize(m_Vertices.size()); + + ZeroNormals( m_Normals ); + + // loop through each triangle in face + std::vector::iterator it = m_Triangles.begin(); + for( ; it != m_Triangles.end(); ++it ) { + // if no indices exist for normals, create them + if(it->n[0]==-1) it->n[0] = it->v[0]; + if(it->n[1]==-1) it->n[1] = it->v[1]; + if(it->n[2]==-1) it->n[2] = it->v[2]; + + // calc face normal and sum into normal array + DoFaceCalc(m_Vertices[ it->v[0] ],m_Vertices[ it->v[1] ],m_Vertices[ it->v[2] ], + m_Normals[ it->n[0] ],m_Normals[ it->n[1] ],m_Normals[ it->n[2] ]); + } + + NormaliseNormals( m_Normals ); + } + + void Surface::DrawRange(unsigned start,unsigned end_face) const { + // draw each face with this material assigned. + std::vector::const_iterator itf = m_Triangles.begin() + start; + std::vector::const_iterator end = m_Triangles.begin() + end_face; + for( ; itf != end; ++itf ) { + for(int i=0;i!=3;++i) { + if(itf->n[i] != -1) m_Normals[ itf->n[i] ].gl(); + if(itf->t[i] != -1) m_TexCoords[ itf->t[i] ].gl(); + m_Vertices[ itf->v[i] ].gl(); + } + } + } + + //---------------------------------------------------------------------- Surface :: gl + void Surface::gl() const { + + glBegin(GL_TRIANGLES); + if(m_AssignedMaterials.size()) { + std::vector::const_iterator it = m_AssignedMaterials.begin(); + for( ; it != m_AssignedMaterials.end(); ++it ) { + + // if file valid, assign materials + if(m_pFile && m_pFile->m_Materials.size()> it->m_MaterialIdx ) + m_pFile->OnBindMaterial( m_pFile->m_Materials[ it->m_MaterialIdx ] ); + + // draw each face with this material assigned. + DrawRange( it->m_StartFace, it->m_EndFace ); + } + } + else + DrawRange( 0, static_cast(m_Triangles.size()) ); + glEnd(); + } + + //####################################################################################################### Obj :: VertexBuffer + //======================================================================================================= + //------------------------------------------------------------------------------------------------------- + + //---------------------------------------------------------------------- VertexBuffer :: VertexBuffer + VertexBuffer::VertexBuffer() + : m_Vertices(), + m_Normals(), + m_TexCoords(), + m_Indices(), + m_AssignedMaterials(), + name(), + m_pFile(0) + {} + + //---------------------------------------------------------------------- VertexBuffer :: VertexBuffer + VertexBuffer::VertexBuffer(const VertexBuffer& surface) + : m_Vertices(surface.m_Vertices), + m_Normals(surface.m_Normals), + m_TexCoords(surface.m_TexCoords), + m_Indices(surface.m_Indices), + m_AssignedMaterials(surface.m_AssignedMaterials), + name(surface.name), + m_pFile(surface.m_pFile) + {} + + //---------------------------------------------------------------------- VertexBuffer :: CalculateNormals + void VertexBuffer::CalculateNormals() { + // resize normal array if not present + if(m_Normals.size()!=m_Vertices.size()) + m_Normals.resize(m_Vertices.size()); + + ZeroNormals( m_Normals ); + + // loop through each triangle in face + std::vector::const_iterator it = m_Indices.begin(); + for( ; it < m_Indices.end(); it+=3 ) + DoFaceCalc(m_Vertices[ *it ],m_Vertices[ *(it+1) ],m_Vertices[ *(it+2) ], + m_Normals[ *it ],m_Normals[ *(it+1) ],m_Normals[ *(it+2) ]); + + NormaliseNormals( m_Normals ); + } + + //---------------------------------------------------------------------- VertexBuffer :: gl + void VertexBuffer::gl() const { + + // enable vertices + glEnableClientState(GL_VERTEX_ARRAY); + glVertexPointer(3,GL_FLOAT,0,&m_Vertices[0]); + + // if normals present, enabble them. + if(m_Normals.size()) { + glEnableClientState(GL_NORMAL_ARRAY); + glNormalPointer(GL_FLOAT,0,&m_Normals[0]); + } + + // enable tex coords if present + if(m_TexCoords.size()) { + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glTexCoordPointer(2,GL_FLOAT,0,&m_TexCoords[0]); + } + + // if materials assigned to object. + if(m_AssignedMaterials.size()) { + std::vector::const_iterator it = m_AssignedMaterials.begin(); + for( ; it != m_AssignedMaterials.end(); ++it ) { + // if file valid, assign materials + if( m_pFile && m_pFile->m_Materials.size()> it->m_MaterialIdx ) + m_pFile->OnBindMaterial( m_pFile->m_Materials[ it->m_MaterialIdx ] ); + glDrawElements(GL_TRIANGLES,(it->m_EndFace-it->m_StartFace)*3,GL_UNSIGNED_INT,&(m_Indices[it->m_StartFace*3])); + } + } + else + // just draw all elements in array + glDrawElements(GL_TRIANGLES,static_cast(m_Indices.size()),GL_UNSIGNED_INT,&(m_Indices[0])); + + // disable vertex arrays. + glDisableClientState(GL_VERTEX_ARRAY); + glDisableClientState(GL_NORMAL_ARRAY); + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + } + + //####################################################################################################### File Reading Utils + //======================================================================================================= + //------------------------------------------------------------------------------------------------------- + + //---------------------------------------------------------------------- operator << Face + std::ostream& operator << (std::ostream& ofs,const Face& f) { + ofs << "f "; + for(int i=0;i!=3;++i) { + ofs << (f.v[i]+1); + if(f.n[i] != -1 || f.t[i] != -1) { + ofs << "/"; + if(f.t[i] != -1) + ofs << (f.t[i]+1); + ofs << "/"; + if(f.n[i] != -1) + ofs << (f.n[i]+1); + } + ofs << " "; + } + return ofs << std::endl; + } + + //---------------------------------------------------------------------- HasOnlyVertex + bool HasOnlyVertex(const std::string& s) { + std::string::const_iterator it = s.begin(); + for( ; it != s.end(); ++it ) { + if(*it=='/') + return false; + } + return true; + } + + //---------------------------------------------------------------------- MissingUv + bool MissingUv(const std::string& s) { + std::string::const_iterator it = s.begin(); + while( *it != '/') { + if(it == s.end()) + return true; + ++it; + } + return *(it+1)=='/'; + } + + //---------------------------------------------------------------------- MissingNormal + bool MissingNormal(const std::string& s) { + return s[s.size()-1] == '/'; + } + + //---------------------------------------------------------------------- CopyArray< T > + /// quick utility function to copy a range of data from the obj file arrays + /// into a surface array. + template< typename T > + void CopyArray(std::vector< T >& output,const std::vector< T >& input,unsigned start,unsigned end) { + output.resize( end-start+1 ); + std::vector< T >::iterator ito = output.begin(); + std::vector< T >::const_iterator it= input.begin() + start; + std::vector< T >::const_iterator itend = input.begin() + end + 1; + for( ; it != itend; ++it,++ito ) + { + *ito = *it; + } + } + + //---------------------------------------------------------------------- DetermineIndexRange() + void DetermineIndexRange(unsigned int& s_vert,unsigned int& e_vert, + int& s_norm,int& e_norm,int& s_uv,int& e_uv, + std::vector::const_iterator it,std::vector::const_iterator end) { + + // need to determine start and end vertex/normal and uv indices + s_vert=0xFFFFFFF; + s_norm=0xFFFFFFF; + s_uv =0xFFFFFFF; + e_vert= 0; + e_norm=-1; + e_uv =-1; + + // loop through faces to find max/min indices + for( ; it != end; ++it ) { + for(int i=0;i!=3;++i) { + if(it->v[i]v[i]; + if(it->v[i]>e_vert) e_vert = it->v[i]; + if(it->n[i]!=-1) { + if(it->n[i]n[i]; + if(it->n[i]>e_norm) e_norm = it->n[i]; + } + if(it->t[i]!=-1) { + if(it->t[i]t[i]; + if(it->t[i]>e_uv) e_uv = it->t[i]; + } + } + } + } + + //---------------------------------------------------------------------- WriteArrayRange< T >() + template< typename T > + void WriteArrayRange(std::ostream& ofs,const std::vector< T >& the_array,unsigned start,unsigned end) { + std::vector< T >::const_iterator it = the_array.begin() + start; + std::vector< T >::const_iterator itend = the_array.begin() + end + 1; + for( ; it != itend; ++it ) + ofs << *it; + } + + //####################################################################################################### Obj :: File + //======================================================================================================= + //------------------------------------------------------------------------------------------------------- + + + std::string File::ReadChunk(std::istream& ifs) { + + std::string s; + do { + char c = ifs.get(); + if (c=='\\') { + while (ifs.get()!='\n') { /*empty*/ + if (ifs.eof()) { + break; + } + } + } + else + if (c != '\n') { + break; + } + else + s += c; + + if (ifs.eof()) { + break; + } + } + while (1); + return s; + } + + /// releases all object data + void File::Release() { + MF_FUNC(File__Release); + m_Vertices.clear(); + m_Normals.clear(); + m_TexCoords.clear(); + m_Groups.clear(); + m_Materials.clear(); + m_Patches.clear(); + m_Triangles.clear(); + } + + //---------------------------------------------------------------------- File :: ReadPoints + void File::ReadPoints(std::istream& ifs) { + MF_FUNC(File__ReadPoints); + char c; + std::vector VertInfo; + + c = ifs.get(); + // store all strings + do { + // strip white spaces + if (ifs.eof()) { + goto vinf; + } + while(c==' ' || c=='\t') { + c=ifs.get(); + if (c=='\\') { + while (ifs.get()!='\n') { + if (ifs.eof()) { + goto vinf; + } + } + c=ifs.get(); + } + if (ifs.eof()) { + goto vinf; + } + } + std::string s; + + // read vertex info + while(c!=' '&&c!='\t'&&c!='\n') { + s+=c; + c=ifs.get(); + if (ifs.eof()) { + goto vinf; + } + } + + // store string + VertInfo.push_back(s); + } + while(c!='\n'); // loop till end of line +vinf: ; + std::vector::iterator it= VertInfo.begin(); + for( ; it != VertInfo.end(); ++it ) { + int i; + sscanf(it->c_str(),"%d",&i); + if (i<0) { + i=static_cast(m_Vertices.size())+i; + } + else + --i; + m_Points.push_back(i); + } + } + + //---------------------------------------------------------------------- File :: ReadLine + void File::ReadLine(std::istream& ifs) { + MF_FUNC(File__ReadPoints); + char c; + std::vector VertInfo; + + c = ifs.get(); + // store all strings + do { + // strip white spaces + if (ifs.eof()) { + goto vinf; + } + while(c==' ' || c=='\t') { + c=ifs.get(); + if (c=='\\') { + while (ifs.get()!='\n') { + if (ifs.eof()) { + goto vinf; + } + } + c=ifs.get(); + } + if (ifs.eof()) { + goto vinf; + } + } + std::string s; + + // read vertex info + while(c!=' '&&c!='\t'&&c!='\n') { + s+=c; + c=ifs.get(); + if (ifs.eof()) { + goto vinf; + } + } + + // store string + VertInfo.push_back(s); + } + while(c!='\n'); // loop till end of line +vinf: ; + Line l; + + l.m_Vertices.resize(VertInfo.size()); + l.m_TexCoords.resize(m_TexCoords.size()); + + std::vector::iterator it= VertInfo.begin(); + for( ; it != VertInfo.end(); ++it ) { + + if(HasOnlyVertex(*it)) { + int i; + sscanf(it->c_str(),"%d",&i); + if (i<0) { + i=static_cast(m_Vertices.size())+i; + } + else + --i; + l.m_Vertices.push_back(i); + } + else { + int i,j; + sscanf(it->c_str(),"%d/%d",&i,&j); + if (i<0) { + i=static_cast(m_Vertices.size())+i; + } + else + --i; + if (j<0) { + j=static_cast(m_TexCoords.size())+j; + } + else + --j; + l.m_Vertices.push_back(i); + l.m_TexCoords.push_back(j); + } + } + m_Lines.push_back(l); + } + + //---------------------------------------------------------------------- File :: ReadFace + void File::ReadFace(std::istream& ifs) { + MF_FUNC(File__ReadFace); + char c; + std::vector VertInfo; + + // store all strings + do { + // strip white spaces + c = ifs.get(); + if (ifs.eof()) { + goto vinf; + } + while(c==' ' || c=='\t') { + c=ifs.get(); + if (ifs.eof()) { + goto vinf; + } + } + std::string s; + + // read vertex info + while(c!=' '&&c!='\t'&&c!='\n') { + s+=c; + c=ifs.get(); + if (ifs.eof()) { + goto vinf; + } + } + + // store string + VertInfo.push_back(s); + } + while(c!='\n'); // loop till end of line + +vinf: ; + std::vector verts; + std::vector norms; + std::vector uvs; + // split strings into individual indices + std::vector::const_iterator it = VertInfo.begin(); + for( ; it != VertInfo.end(); ++it ) { + int v, n=0, t=0; + + if(HasOnlyVertex(*it)) + sscanf(it->c_str(),"%d",&v); + else + if(MissingUv(*it)) + sscanf(it->c_str(),"%d//%d",&v,&n); + else + if(MissingNormal(*it)) + sscanf(it->c_str(),"%d/%d/",&v,&t); + else + sscanf(it->c_str(),"%d/%d/%d",&v,&t,&n); + + if (v<0) { + v=static_cast(m_Vertices.size())+v+1; + } + if (n<0) { + n=static_cast(m_Normals.size())+n+1; + } + if (t<0) { + t=static_cast(m_TexCoords.size())+t+1; + } + + // obj indices are 1 based, change them to zero based indices + --v; --n; --t; + + verts.push_back(v); + norms.push_back(n); + uvs.push_back(t); + } + + // construct triangles from indices + for(unsigned i=2;i> s; + // ignore the default group, it just contains the verts, normals & uv's for all + // surfaces. Might as well ignore it! + if(s!="default") { + if(m_Groups.size()) { + Group& gr = m_Groups[m_Groups.size()-1]; + gr.EndFace = static_cast(m_Triangles.size()); + + if(gr.m_AssignedMaterials.size()) + gr.m_AssignedMaterials[gr.m_AssignedMaterials.size()-1].m_EndFace + = static_cast(m_Triangles.size()); + } + Group g; + g.name = s; + g.StartFace = static_cast(m_Triangles.size()); + m_Groups.push_back(g); + } + } + + //---------------------------------------------------------------------- File :: Load + bool File::Load(const char filename[]) { + MF_FUNC(File__Load); + + // just in case a model is already loaded + Release(); + + std::ifstream ifs(filename); + if(ifs) { + PreLoad(ifs); + + // loop through the file to the end + while(!ifs.eof()) { + std::string s; + + ifs >> s; + + // comment, skip line + if(s[0]=='#') { + while(ifs.get()!='\n') ; + } + else + if(s=="deg") { + std::cerr << "[ERROR] Unable to handle deg yet. Sorry! RB.\n"; + } + else + + // a new group of faces, ie a seperate mesh + if(s=="cstype") + std::cerr << "[ERROR] Unable to handle cstype yet. Sorry! RB.\n"; + else + + // a new group of faces, ie a seperate mesh + if(s=="bzp") { + BezierPatch bzp; + std::string text = ReadChunk(ifs); + + sscanf(text.c_str(),"%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d", + &bzp.VertexIndices[0][0], + &bzp.VertexIndices[0][1], + &bzp.VertexIndices[0][2], + &bzp.VertexIndices[0][3], + + &bzp.VertexIndices[1][0], + &bzp.VertexIndices[1][1], + &bzp.VertexIndices[1][2], + &bzp.VertexIndices[1][3], + + &bzp.VertexIndices[2][0], + &bzp.VertexIndices[2][1], + &bzp.VertexIndices[2][2], + &bzp.VertexIndices[2][3], + + &bzp.VertexIndices[3][0], + &bzp.VertexIndices[3][1], + &bzp.VertexIndices[3][2], + &bzp.VertexIndices[3][3]); + + // subtract 1 from all indices + for(unsigned i=0;i!=4;++i) + for(unsigned j=0;j!=4;++j) + --bzp.VertexIndices[i][j]; + } + else + + // a new group of faces, ie a seperate mesh + if(s=="g") + ReadGroup(ifs); + else + + // face + if(s=="f"||s=="fo") + ReadFace(ifs); + else + + // points + if(s=="p") + ReadPoints(ifs); + else + + // lines + if(s=="l") + ReadLine(ifs); + else + + // texture coord + if(s=="vt") + m_TexCoords.push_back( TexCoord(ifs) ); + else + + // normal + if(s=="vn") + m_Normals.push_back( Normal(ifs) ); + else + + // vertex + if(s=="v") + m_Vertices.push_back( Vertex(ifs) ); + else + + // vertex parameter + if(s=="vp") + m_VertexParams.push_back( VertexParam(ifs) ); + else + + // material library + if(s=="mtllib") { + char buffer[512]; + char* ptr = buffer; + ifs.getline(buffer,512); + while(*ptr == ' '||*ptr =='\t') + ++ptr; + // ptr now equals filename. Need to construct path relative to the + // the files path. + + std::string mtl_file = filename; + + size_t size=mtl_file.size()-1; + while( size && (mtl_file[size]!='/') && (mtl_file[size]!='\\') ) + --size; + + if(size) { + mtl_file.resize(size+1); + mtl_file += ptr; + } + else { + mtl_file = ptr; + } + + if(!LoadMtl(mtl_file.c_str())) { + if(!LoadMtl(ptr)) { + std::cerr << "[WARNING] Unable to load material file\n"; + } + } + // "test.mtl"; + } + else + + // material to apply + if(s=="usemtl") { + + char buffer[512]; + char* ptr = buffer; + ifs.getline(buffer,512); + while(*ptr == ' '||*ptr =='\t') + ++ptr; + + if(m_Materials.size()) { + + // find material index + unsigned mat=0; + for( ; mat != m_Materials.size(); ++mat ) { + if(m_Materials[mat].name == ptr) { + break; + } + } + + // if found + if(mat != m_Materials.size()) { + if(m_Groups.size()) { + Group& gr = m_Groups[m_Groups.size()-1]; + if(gr.m_AssignedMaterials.size()) + gr.m_AssignedMaterials[gr.m_AssignedMaterials.size()-1].m_EndFace + = static_cast(m_Triangles.size()); + + MaterialGroup mg; + mg.m_MaterialIdx = mat; + mg.m_StartFace = static_cast(m_Triangles.size()); + gr.m_AssignedMaterials.push_back(mg); + } + } + } + } + else + // check for any erroneous parametric curve/surface commands out of place - probably don't need this. + if( s=="end"|| + s=="parm"|| + s=="stech"|| + s=="ctech"|| + s=="curv"|| + s=="curv2"|| + s=="surf"|| + s=="bmat"|| + s=="res"|| + s=="sp"|| + s=="trim"|| + s=="hole") { + + std::cerr << "[ERROR] Unable to handle " << s << " outside of cstype/end pair\n"; + std::cerr << "[ERROR] Unable to handle cstype yet. Sorry! RB.\n"; + ReadChunk(ifs); + } + // dunno what it is, thunk it to derived class. + else + HandleUnknown(s,ifs); + } + + // if groups exist, terminate it. + if(m_Groups.size()) { + Group& gr = m_Groups[m_Groups.size()-1]; + + gr.EndFace = static_cast(m_Triangles.size()); + + // terminate any assigned materials + if(gr.m_AssignedMaterials.size()) + gr.m_AssignedMaterials[gr.m_AssignedMaterials.size()-1].m_EndFace + = static_cast(m_Triangles.size()); + } + + PostLoad(ifs); + return true; + } + return false; + } + + //---------------------------------------------------------------------- File :: Save + bool File::Save(const char filename[]) const { + MF_FUNC(File__Save); + + // if we have materials in the model, save the mtl file + if(m_Materials.size()) { + std::string file = filename; + size_t len = file.size(); + // strip "obj" extension + while(file[--len] != '.') /*empty*/ ; + file.resize(len); + file += ".mtl"; + SaveMtl(file.c_str()); + } + + std::ofstream ofs(filename); + if(ofs) { + PreSave(ofs); + if(m_Groups.size()) + { + std::vector::const_iterator itg = m_Groups.begin(); + for( ; itg != m_Groups.end(); ++itg ) { + + // need to determine start and end vertex/normal and uv indices + unsigned int s_vert,e_vert; + int s_norm,s_uv,e_norm,e_uv; + + DetermineIndexRange(s_vert,e_vert,s_norm,e_norm,s_uv,e_uv, + m_Triangles.begin() + itg->StartFace, + m_Triangles.begin() + itg->EndFace); + + // write default group + ofs << "g default\n"; + + // write groups vertices + WriteArrayRange(ofs,m_Vertices,s_vert,e_vert); + + // write groups normals (if present) + if(e_norm != -1) + WriteArrayRange(ofs,m_Normals,s_norm,e_norm); + + // write groups uv coords (if present) + if(e_uv != -1) + WriteArrayRange(ofs,m_TexCoords,s_uv,e_uv); + + // write group name + ofs << "g " << itg->name << std::endl; + + // write triangles in group + if(itg->m_AssignedMaterials.size()) { + // write out each material group + std::vector::const_iterator itmg = itg->m_AssignedMaterials.begin(); + for( ; itmg != itg->m_AssignedMaterials.end(); ++itmg ) { + unsigned int mat = itmg->m_MaterialIdx; + // write use material flag + ofs << "usemtl " << m_Materials[mat].name << "\n"; + + WriteArrayRange(ofs,m_Triangles,itmg->m_StartFace,itmg->m_EndFace-1); + } + } + else + WriteArrayRange(ofs,m_Triangles,itg->StartFace,itg->EndFace-1); + } + } + else { + // all part of default group + ofs << "g default\n"; + WriteArrayRange(ofs,m_Vertices,0,static_cast(m_Vertices.size())-1); + WriteArrayRange(ofs,m_TexCoords,0,static_cast(m_TexCoords.size())-1); + WriteArrayRange(ofs,m_Normals,0,static_cast(m_Normals.size())-1); + WriteArrayRange(ofs,m_Triangles,0,static_cast(m_Triangles.size())-1); + } + PostSave(ofs); + ofs.close(); + return true; + } + return false; + } + + //---------------------------------------------------------------------- File :: LoadMtl + // loads the specified material file + bool File::LoadMtl(const char filename[]){ + MF_FUNC(File__LoadMtl); + std::ifstream ifs(filename); + if(ifs) { + Material* pmat=0; + while(!ifs.eof()) { + std::string s; + ifs >> s; + if(s == "newmtl") { + Material mat; + ifs >> mat.name; + m_Materials.push_back(mat); + pmat = &(m_Materials[m_Materials.size()-1]); + } + else + if(s == "illum") + ifs >> pmat->illum; + else + if(s == "Kd") + ifs >> pmat->Kd[0] >> pmat->Kd[1] >> pmat->Kd[2]; + else + if(s == "Ka") + ifs >> pmat->Ka[0] >> pmat->Ka[1] >> pmat->Ka[2]; + else + if(s == "Ks") + ifs >> pmat->Ks[0] >> pmat->Ks[1] >> pmat->Ks[2]; + else + if(s == "Tf") + ifs >> pmat->Tf[0] >> pmat->Tf[1] >> pmat->Tf[2]; + else + if(s == "Ni") + ifs >> pmat->Ni; + else + if(s == "Ns") + ifs >> pmat->Ns; + else + if(s == "map_Ka") { + char buffer[512]; + char* ptr = buffer; + ifs.getline(buffer,512); + while(*ptr == ' '||*ptr =='\t') + ++ptr; + pmat->map_Ka = ptr; + pmat->gltex_Ka = OnLoadTexture(pmat->map_Ka.c_str()); + } + else + if(s == "map_Kd") { + char buffer[512]; + char* ptr = buffer; + ifs.getline(buffer,512); + while(*ptr == ' '||*ptr =='\t') + ++ptr; + pmat->map_Kd = ptr; + pmat->gltex_Kd = OnLoadTexture(pmat->map_Kd.c_str()); + } + else + if(s == "map_Ks") { + char buffer[512]; + char* ptr = buffer; + ifs.getline(buffer,512); + while(*ptr == ' '||*ptr =='\t') + ++ptr; + pmat->map_Ks = ptr; + pmat->gltex_Ks = OnLoadTexture(pmat->map_Ks.c_str()); + } + else + if(s == "bump") { + char buffer[512]; + char* ptr = buffer; + ifs.getline(buffer,512); + while(*ptr == ' '||*ptr =='\t') + ++ptr; + + char* flag = ptr; + while(strncmp(flag,"-bm",3)!=0) { + ++flag; + if(*flag == '\0') + return false; + } + // null terminate the filename + *(flag-1) = '\0'; + + pmat->map_Bump = ptr; + flag += 3; + sscanf(flag,"%d",&pmat->Bm); + pmat->gltex_Bump = OnLoadTexture(pmat->map_Bump.c_str()); + } + } + ifs.close(); + return true; + } + return false; + } + + std::ostream& operator << (std::ostream& ofs,const Material& f) { + + MF_FUNC(operator__output__Material); + ofs << "newmtl " << f.name << "\n"; + ofs << "illum " << f.illum << "\n"; + ofs << "Kd " << f.Kd[0] << " " << f.Kd[1] << " " << f.Kd[2] << "\n"; + ofs << "Ka " << f.Ka[0] << " " << f.Ka[1] << " " << f.Ka[2] << "\n"; + ofs << "Ks " << f.Ks[0] << " " << f.Ks[1] << " " << f.Ks[2] << "\n"; + ofs << "Tf " << f.Tf[0] << " " << f.Tf[1] << " " << f.Tf[2] << "\n"; + ofs << "Ni " << f.Ni << "\n"; + ofs << "Ns " << f.Ns << "\n"; + if(f.map_Kd.size()) + ofs << "map_Kd " << f.map_Kd << "\n"; + if(f.map_Ka.size()) + ofs << "map_Ka " << f.map_Ka << "\n"; + if(f.map_Ks.size()) + ofs << "map_Ks " << f.map_Ks << "\n"; + if(f.map_Bump.size()) + ofs <<"bump " << f.map_Bump << " -bm " << f.Bm << "\n"; + return ofs; + } + + //---------------------------------------------------------------------- File :: SaveMtl + // loads the specified material file + bool File::SaveMtl(const char filename[]) const{ + MF_FUNC(File__SaveMtl); + std::ofstream ofs(filename); + if(ofs) { + std::vector::const_iterator it = m_Materials.begin(); + for( ; it != m_Materials.end();++it) + ofs << *it; + ofs.close(); + return true; + } + return false; + } + + //---------------------------------------------------------------------- File :: DrawRange + void File::DrawRange(unsigned int start_face,unsigned int end_face) const { + std::vector::const_iterator it = m_Triangles.begin() + start_face; + std::vector::const_iterator end = m_Triangles.begin() + end_face; + for( ; it != end; ++it ) { + for(int i=0;i!=3;++i) { + if( it->n[i] != -1 ) m_Normals[ it->n[i] ].gl(); + if( it->t[i] != -1 ) m_TexCoords[ it->t[i] ].gl(); + m_Vertices[ it->v[i] ].gl(); + } + } + } + + //---------------------------------------------------------------------- File :: Draw + void File::Draw() const { + glBegin(GL_TRIANGLES); + if( m_Groups.size() ) { + std::vector::const_iterator itg = m_Groups.begin(); + for( ; itg != m_Groups.end(); ++itg ) { + // write triangles in group + if(itg->m_AssignedMaterials.size()) { + // write out each material group + std::vector::const_iterator itmg = itg->m_AssignedMaterials.begin(); + for( ; itmg != itg->m_AssignedMaterials.end(); ++itmg ) { + + // bind the required material + OnBindMaterial(m_Materials[itmg->m_MaterialIdx]); + + // draw faces that use this material + DrawRange( itmg->m_StartFace, itmg->m_EndFace ); + } + } + else + DrawRange( itg->StartFace, itg->EndFace ); + } + } + else + DrawRange( 0, static_cast(m_Triangles.size()) ); + glEnd(); + } + + //---------------------------------------------------------------------- File :: CalculateNormals + void File::CalculateNormals() { + MF_FUNC(File__CalculateNormals); + if (!m_Triangles.size()) { + return; + } + + if(m_Triangles[0].n[0] == -1) { + m_Normals.resize(m_Vertices.size()); + + + std::vector::iterator it = m_Triangles.begin(); + for( ; it != m_Triangles.end(); ++it ) { + + // use vertex indices for normal indices + it->n[0] = it->v[0]; + it->n[1] = it->v[1]; + it->n[2] = it->v[2]; + } + } + + // resize normal array if not present + ZeroNormals( m_Normals ); + + // loop through each triangle in face + std::vector::const_iterator it = m_Triangles.begin(); + for( ; it != m_Triangles.end(); ++it ) { + DoFaceCalc(m_Vertices[ it->v[0] ],m_Vertices[ it->v[1] ],m_Vertices[ it->v[2] ], + m_Normals[ it->n[0] ],m_Normals[ it->n[1] ],m_Normals[ it->n[2] ]); + } + NormaliseNormals( m_Normals ); + } + + //---------------------------------------------------------------------- File :: GroupsToSurfaces + void File::GroupsToSurfaces(std::vector& surface_list) { + MF_FUNC(File__GroupsToSurfaces); + if(m_Groups.size()) { + surface_list.resize(m_Groups.size()); + + std::vector::iterator its = surface_list.begin(); + + std::vector::const_iterator itg = m_Groups.begin(); + for( ; itg != m_Groups.end(); ++itg, ++its ) { + + // need to determine start and end vertex/normal and uv indices + unsigned int s_vert,e_vert; + int s_norm,s_uv,e_norm,e_uv; + + DetermineIndexRange(s_vert,e_vert,s_norm,e_norm,s_uv,e_uv, + m_Triangles.begin() + itg->StartFace, + m_Triangles.begin() + itg->EndFace); + + // set file pointer + its->m_pFile = this; + + // set name + its->name = itg->name; + + // copy material groups for surface + its->m_AssignedMaterials = itg->m_AssignedMaterials; + + // make material groups relative to material start + std::vector::iterator itmg = its->m_AssignedMaterials.begin(); + for( ;itmg != its->m_AssignedMaterials.end(); ++itmg ) { + itmg->m_StartFace -= itg->StartFace; + itmg->m_EndFace -= itg->StartFace; + } + + // resize triangles + its->m_Triangles.resize( itg->EndFace - itg->StartFace ); + + std::vector::iterator ito = its->m_Triangles.begin(); + std::vector::const_iterator it = m_Triangles.begin() + itg->StartFace; + std::vector::const_iterator end = m_Triangles.begin() + itg->EndFace; + + for( ; it != end; ++it, ++ito ) { + for(int i=0;i!=3;++i) { + ito->v[i] = it->v[i]-s_vert; + ito->n[i] = (e_norm==-1) ? -1 : (it->n[i]-s_norm); + ito->t[i] = (e_uv==-1) ? -1 : (it->t[i]-s_uv); + } + } + + // copy over vertices + CopyArray< Vertex >( its->m_Vertices, m_Vertices, s_vert, e_vert ); + + // copy over normals + if(e_norm!=-1) + CopyArray< Normal >( its->m_Normals, m_Normals, s_norm, e_norm ); + + // copy over tex coords + if(e_uv!=-1) + CopyArray< TexCoord >( its->m_TexCoords, m_TexCoords, s_uv, e_uv ); + } + } + else { + surface_list.resize(1); + surface_list[0].m_Vertices = m_Vertices; + surface_list[0].m_Normals = m_Normals; + surface_list[0].m_TexCoords = m_TexCoords; + surface_list[0].m_Triangles = m_Triangles; + surface_list[0].m_pFile = this; + surface_list[0].name = "default"; + } + } + + //---------------------------------------------------------------------- File :: GroupsToVertexArrays + void File::GroupsToVertexArrays(std::vector& surface_list) { + + MF_FUNC(File__GroupsToVertexArrays); + // first split into surfaces + std::vector surfaces; + GroupsToSurfaces(surfaces); + + // now convert each surface into a vertex array + surface_list.resize(surfaces.size()); + + std::vector::iterator itb = surface_list.begin(); + std::vector::iterator its = surfaces.begin(); + + for( ; itb != surface_list.end(); ++itb, ++its ) { + + // set name + itb->name = its->name; + + // set file + itb->m_pFile = this; + + // copy material assignments + itb->m_AssignedMaterials = its->m_AssignedMaterials; + + // determine new vertex and index arrays. + std::vector::iterator itf = its->m_Triangles.begin(); + for( ; itf != its->m_Triangles.end(); ++itf ) { + for(int i=0;i!=3;++i) { + + const Vertex* v = &its->m_Vertices[ itf->v[i] ]; + const Normal* n = 0; + if(itf->n[i]!=-1) + n = &its->m_Normals[ itf->n[i] ]; + const TexCoord* t = 0; + if(itf->t[i]!=-1) + t = &its->m_TexCoords[ itf->t[i] ]; + + unsigned int idx = 0; + if(n&&t) { + std::vector::const_iterator itv = itb->m_Vertices.begin(); + std::vector::const_iterator itn = itb->m_Normals.begin(); + std::vector::const_iterator itt = itb->m_TexCoords.begin(); + for( ; itv != itb->m_Vertices.end(); ++itv,++itn,++itt,++idx ) + if( *v == *itv && *n == *itn && *t == *itt ) + break; + if( itv == itb->m_Vertices.end() ) { + itb->m_Vertices.push_back(*v); + itb->m_Normals.push_back(*n); + itb->m_TexCoords.push_back(*t); + } + itb->m_Indices.push_back(idx); + } + else if(n) { + std::vector::const_iterator itv = itb->m_Vertices.begin(); + std::vector::const_iterator itn = itb->m_Normals.begin(); + for( ; itv != itb->m_Vertices.end(); ++itv,++itn,++idx ) + if( *v == *itv && *n == *itn ) + break; + if( itv == itb->m_Vertices.end() ) { + itb->m_Vertices.push_back(*v); + itb->m_Normals.push_back(*n); + } + itb->m_Indices.push_back(idx); + } + else if(t) { + std::vector::const_iterator itv = itb->m_Vertices.begin(); + std::vector::const_iterator itt = itb->m_TexCoords.begin(); + for( ; itv != itb->m_Vertices.end(); ++itv,++itt,++idx ) + if( *v == *itv && *t == *itt ) + break; + if( itv == itb->m_Vertices.end() ) { + itb->m_Vertices.push_back(*v); + itb->m_TexCoords.push_back(*t); + } + itb->m_Indices.push_back(idx); + } + else { + std::vector::const_iterator itv = itb->m_Vertices.begin(); + for( ; itv != itb->m_Vertices.end(); ++itv,++idx ) + if( *v == *itv ) + break; + itb->m_Indices.push_back(idx); + } + } + } + } + } +} diff --git a/src/objload.h b/src/objload.h new file mode 100644 index 0000000..183313c --- /dev/null +++ b/src/objload.h @@ -0,0 +1,726 @@ +//-------------------------------------------------------------------------------- +/// \file objload.h +/// \author Rob Bateman [mailto:robthebloke@hotmail.com] [http://robthebloke.org] +/// \date 11-4-05 +/// \brief A C++ loader for the alias wavefront obj file format. This loader is +/// intended to be as complete as possible (ie, it handles everything that +/// Maya can spit at it, as well as all the parametric curve and surface +/// stuff not supported by Maya's objexport plugin). +/// +/// If you want to add obj import/export capabilities to your applications, +/// the best method is probably to derive a class from Obj::File and then +/// use the data in the arrays provided (or fill the data arrays with the +/// correct info, then export). +/// +/// In addition to simply accessing the data arrays, you can also overload +/// the functions, PreSave,PostSave,PreLoad,PostLoad and HandleUnknown to +/// extend the capabilities of the file format (if you really think that +/// is wise!). +/// +/// Generally speaking, the obj file format is actually very very complex. +/// As a result, not all of the Curve and Surface types are fully supported +/// in the openGL display parts of this code. Bezier, Bspline & NURBS curves +/// and surface should be fine. Cardinal, taylor and basis matrix types +/// will be displayed as CV's / HULLS only. Trim curves and holes don't get +/// displayed either. I'll leave that as an excersice for the reader. +/// +/// The material lib files (*.mtl) are also supported and parsed, this +/// includes a user extensible interface to load the image files as textures. +/// See the texture manager example for more info. +/// +/// One nice aspect of this code is the ability to calculate normals for +/// the polygonal surfaces, and the ability to convert the objfile into +/// surfaces and /or vertex arrays. Hopefully it may be useful to someone. +/// +/// If you wish to use this code within a game, I **STRONGLY** RECOMMEND +/// converting the data to Vertex Arrays and saving as your own custom +/// file format. The code to handle your own objects will be substantially +/// more efficient than this code which is designed for completeness, not +/// speed! See the obj->game converter for a quick example of this. +/// \todo +/// +/// +//-------------------------------------------------------------------------------- + +#ifndef __OBJ_LOAD__H__ +#define __OBJ_LOAD__H__ + +#ifdef WIN32 + #define WIN32_LEAN_AND_MEAN + #include +#endif +#include +#include +#include +#include +#include +#include +#include +//#include + +#define FCOMPARE(x,y) (((x)-0.0001f)<(y) && ((x)+0.00001f)>(y)) + +// debugging macro from other project.... +#define MF_FUNC(x) ; + + +namespace Obj { + + // forward declaration + class File; + + //----------------------------------------------------- Obj :: Vertex + struct Vertex { + /// x component of point + float x; + /// y component of point + float y; + /// z component of point + float z; + /// ctor from stream + Vertex(std::istream& ifs) { + ifs >> x >> y >> z; + } + /// ctor + Vertex() + : x(0),y(0),z(0) { + } + /// copy ctor + Vertex(const Vertex& v) + : x(v.x),y(v.y),z(v.z) { + } + /// stream insertion operator + friend std::ostream& operator << (std::ostream& ofs,const Vertex& v) { + return ofs << "v " << v.x << " " << v.y << " " << v.z << std::endl; + } + /// calls glVertex + inline void gl() const { + glVertex3f(x,y,z); + } + bool operator==(const Vertex& v) const { + return FCOMPARE(x,v.x) && FCOMPARE(y,v.y) && FCOMPARE(z,v.z); + } + }; + + //----------------------------------------------------- Obj :: VertexParam + struct VertexParam { + /// x component of point + float u; + /// y component of point + float v; + /// z component of point + float w; + /// ctor from stream + VertexParam(std::istream& ifs) { + char buffer[128]; + ifs.getline(buffer,128); + char*ptr = buffer; + while(*ptr==' '||*ptr=='\t') + ++ptr; + char*ptr2 = ptr; + int n=1; + while (*ptr2!='\0') { + if (n==' '||n=='\t') { + ++n; + } + ++ptr2; + } + switch(n) { + case 2: + sscanf(buffer,"%f%f",&u,&u); + w=0; + break; + case 3: + sscanf(buffer,"%f%f%f",&u,&v,&w); + break; + default: + break; + } + } + /// ctor + VertexParam() + : u(0),v(0),w(0) { + } + /// copy ctor + VertexParam(const VertexParam& v_) + : u(v_.u),v(v_.v),w(v_.w) { + } + /// stream insertion operator + friend std::ostream& operator << (std::ostream& ofs,const VertexParam& v_) { + return ofs << "vp " << v_.u << " " << v_.v << " " << v_.w << std::endl; + } + bool operator==(const VertexParam& v_) const { + return FCOMPARE(u,v_.u) && + FCOMPARE(v,v_.v) && + FCOMPARE(w,v_.w) ; + } + }; + + //----------------------------------------------------- Obj :: Normal + struct Normal { + /// x component of vector + float x; + /// y component of vector + float y; + /// z component of vector + float z; + /// ctor from input stream + Normal(std::istream& ifs) { + ifs >> x >> y >> z; + } + /// ctor + Normal() + : x(0),y(0),z(0) { + } + /// copy ctor + Normal(const Normal& n) + : x(n.x),y(n.y),z(n.z) { + } + /// stream insertion operator + friend std::ostream& operator << (std::ostream& ofs,const Normal& n) { + return ofs << "vn " << n.x << " " << n.y << " " << n.z << std::endl; + } + /// calls glNormal + inline void gl() const { + glNormal3f(x,y,z); + } + /// equivalence operator. + bool operator==(const Normal& v) const { + return FCOMPARE(x,v.x) && FCOMPARE(y,v.y) && FCOMPARE(z,v.z); + } + }; + + //----------------------------------------------------- Obj :: TexCoord + struct TexCoord { + /// u tex coord + float u; + /// v tex coord + float v; + /// ctor from stream + TexCoord(std::istream& ifs) { + ifs >> u >> v; + } + /// ctor + TexCoord() + : u(0),v(0) { + } + /// copy ctor + TexCoord(const TexCoord& uv) + : u(uv.u),v(uv.v) { + } + /// stream insertion operator + friend std::ostream& operator << (std::ostream& ofs,const TexCoord& uv) { + return ofs << "vt " << uv.u << " " << uv.v << std::endl; + } + /// calls glTexCoord2f + inline void gl() const { + glTexCoord2f(u,v); + } + bool operator==(const TexCoord& uv) const { + return FCOMPARE(u,uv.u) && FCOMPARE(v,uv.v); + } + }; + + //----------------------------------------------------- Obj :: Line + struct Line { + + /// ctor + Line() + : m_Vertices(), + m_TexCoords() + {} + /// copy ctor + Line(const Line& l) + : m_Vertices(l.m_Vertices), + m_TexCoords(l.m_TexCoords) + {} + + /// the material applied to this line + unsigned short m_Material; + /// the group to which this line belongs + unsigned short m_Group; + + /// the vertex indices for the line + std::vector m_Vertices; + /// the texture coord indices for the line + std::vector m_TexCoords; + /// output stream operator for line (for writing obj files) + friend std::ostream& operator << (std::ostream& ofs,const Line& l) { + + ofs << "l"; + if(l.m_TexCoords.size()) { + std::vector::const_iterator itv= l.m_Vertices.begin(); + std::vector::const_iterator itt= l.m_TexCoords.begin(); + for( ; itv != l.m_Vertices.end();++itv) { + ofs << " " << *itv << "/" << *itt; + } + ofs << "\n"; + } + else { + std::vector::const_iterator itv= l.m_Vertices.begin(); + for( ; itv != l.m_Vertices.end();++itv) { + ofs << " " << *itv ; + } + ofs << "\n"; + } + return ofs; + } + }; + + //----------------------------------------------------- Obj :: Face + struct Face { + /// ctor + Face() { + v[0] = v[1] = v[2] = 0; + // -1 indicates not used + n[0] = n[1] = n[2] = -1; + t[0] = t[1] = t[2] = -1; + } + + /// vertex indices for the triangle + unsigned v[3]; + /// normal indices for the triangle + int n[3]; + /// texture coordinate indices for the triangle + int t[3]; + /// stream insertion operator + friend std::ostream& operator << (std::ostream& ofs,const Face& f) ; + }; + + //----------------------------------------------------- Obj :: Material + struct Material + { + public: + + /// ctor + Material(); + + /// dtor + ~Material(); + + + /// copy ctor + Material(const Material& mat); + + /// applied the material + void gl() const; + + /// stream insertion operator + friend std::ostream& operator << (std::ostream& ofs,const Material& f) ; + + public: + + /// material name + std::string name; + + /// don't know :| Seems to always be 4 + int illum; + + /// ambient + mutable float Ka[4]; + /// diffuse + mutable float Kd[4]; + /// specular + mutable float Ks[4]; + /// transparency + float Tf[3]; + /// intensity + float Ni; + /// specular power + float Ns; + + /// ambient texture map + std::string map_Ka; + /// diffuse texture map + std::string map_Kd; + /// specular texture map + std::string map_Ks; + /// bump texture map + std::string map_Bump; + + /// ambient texture object + unsigned gltex_Ka; + /// diffuse texture object + unsigned gltex_Kd; + /// specular texture object + unsigned gltex_Ks; + /// bump map texture object. + unsigned gltex_Bump; + + /// bump map depth. Only used if bump is relevent. + float Bm; + }; + + //----------------------------------------------------- Obj :: MaterialGroup + struct MaterialGroup { + MaterialGroup() { + m_MaterialIdx = m_StartFace = m_EndFace = 0; + } + MaterialGroup(const MaterialGroup& mg) + : m_MaterialIdx(mg.m_MaterialIdx), m_StartFace(mg.m_StartFace), m_EndFace(mg.m_EndFace) {} + + /// the material applied to a set of faces + unsigned m_MaterialIdx; + /// the starting index of the face to which the material is applied + unsigned m_StartFace; + /// the ending index of the face to which the material is applied + unsigned m_EndFace; + /// start index for points to which the material is applied + unsigned StartPoint; + /// end index for points to which the material is applied + unsigned EndPoint; + }; + + //----------------------------------------------------- Obj :: Group + struct Group + { + /// ctor + Group() + : StartFace(0),EndFace(0),name(""),m_AssignedMaterials() + {} + /// copy ctor + Group(const Group& g) + : StartFace(g.StartFace),EndFace(g.EndFace),name(g.name),m_AssignedMaterials(g.m_AssignedMaterials) + {} + /// start index for faces in the group (surface) + unsigned StartFace; + /// end index for faces in the group (surface) + unsigned EndFace; + /// start index for points in the group (surface) + unsigned StartPoint; + /// end index for points in the group (surface) + unsigned EndPoint; + /// name of the group + std::string name; + + /// a set of material groupings within this surface. ie, which + /// materials are assigned to which faces within this group. + std::vector m_AssignedMaterials; + }; + + //----------------------------------------------------- Obj :: BezierPatch + struct BezierPatch { + public: + + /// ctor + BezierPatch() { + memset(this,0,sizeof(BezierPatch)); + SetLod(10); + } + + /// copy ctor + BezierPatch(const BezierPatch& bzp) { + // copy over all indices + for(int i=0;i!=4;++i) + for(int j=0;j!=4;++j) + VertexIndices[i][j] = bzp.VertexIndices[i][j]; + + /// prevents SetLOD() from attempting to delete invalid data + IndexData=0; + VertexData=0; + BlendFuncs=0; + + /// set level of detail of surface + SetLod(bzp.LOD); + } + + /// dtor + ~BezierPatch() { + delete [] IndexData; + delete [] VertexData; + delete [] BlendFuncs; + IndexData=0; + VertexData=0; + BlendFuncs=0; + } + + /// tesselates the surface at the current level of detail + void Tesselate(const std::vector& point_array); + + /// sets the level of detail and does a bit of internal caching to + /// speed things up a little. + void SetLod(unsigned new_lod); + + /// renders the surface + void gl() const; + + + friend std::ostream& operator << (std::ostream& ofs,const BezierPatch& bzp) { + ofs << "bzp "; + for(int i=0;i!=4;++i) + for(int j=0;j!=4;++j) + ofs << " " << bzp.VertexIndices[i][j]; + return ofs << "\n"; + } + + public: + + /// the material applied to this patch + unsigned short m_Material; + /// the group to which this patch belongs + unsigned short m_Group; + + /// a set of 16 vertex indices + int VertexIndices[4][4]; + /// an array of vertices/normals/texcoords. Each vertex has 8 floats + float* VertexData; + /// an array of vertices/normals/texcoords. Each vertex has 8 floats + float* BlendFuncs; + /// an array of vertex indices for triangle strips + unsigned* IndexData; + /// the level of detail. + unsigned LOD; + }; + + //----------------------------------------------------- Obj :: Surface + /// the obj file can be split into seperate surfaces + /// where all indices are relative to the data in the surface, + /// rather than all data in the obj file. + struct Surface { + friend class File ; + public: + + /// ctor + Surface(); + + /// copy ctor + Surface(const Surface& surface) ; + + /// function to render the surface + void gl() const; + + /// this function will generate vertex normals for the current + /// surface and store those within the m_Normals array + void CalculateNormals(); + + public: + + /// the name of the surface + std::string name; + + /// the vertices in the obj file + std::vector m_Vertices; + /// the normals from the obj file + std::vector m_Normals; + /// the tex coords from the obj file + std::vector m_TexCoords; + /// the triangles in the obj file + std::vector m_Triangles; + /// the lines in the obj file + std::vector m_Lines; + /// the points in the obj file + std::vector m_Points; + /// a set of material groupings within this surface. ie, which + /// materials are assigned to which faces within this group. + std::vector m_AssignedMaterials; + + + private: + /// utility function to draw a range of triangles + void DrawRange(unsigned start,unsigned end_face) const; + /// pointer to file to access material data + File* m_pFile; + }; + + struct GL_Line { + struct { + unsigned int numVerts:16; + unsigned int hasUvs:1; + unsigned int material:15; + }; + /// the line indices in the obj file + std::vector m_Indices; + }; + + //----------------------------------------------------- Obj :: VertexBuffer + /// The obj file can be split into seperate vertex arrays, + /// ie each group is turned into a surface which uses a + /// single index per vertex rather than seperate vertex, + /// normal and uv indices. + struct VertexBuffer { + friend class File ; + public: + + /// ctor + VertexBuffer(); + + /// copy ctor + VertexBuffer(const VertexBuffer& surface) ; + + /// this function will generate vertex normals for the current + /// surface and store those within the m_Normals array + void CalculateNormals(); + + /// a function to render the vertex array + void gl() const ; + + public: + + /// the name of the surface + std::string name; + + /// the vertices in the obj file + std::vector m_Vertices; + /// the normals from the obj file + std::vector m_Normals; + /// the tex coords from the obj file + std::vector m_TexCoords; + /// the triangles in the obj file + std::vector m_Indices; + /// a set of material groupings within this surface. ie, which + /// materials are assigned to which faces within this group. + std::vector m_AssignedMaterials; + /// the lines in the obj file. + std::vector m_Lines; + + private: + /// pointer to file to access material data + File* m_pFile; + }; + + //----------------------------------------------------- Obj :: File + /// main interface for an alias wavefront obj file. + /// + class File { + // vertex buffer needs to access custom materials + friend struct VertexBuffer; + // surfaces may also need to access custom materials if split. + friend struct Surface; + public: + + File() { + } + virtual ~File() { + MF_FUNC(File__dtor); + Release(); + } + + /// releases all object data + void Release(); + + /// loads the specified obj file + bool Load(const char filename[]) ; + + /// loads the specified material file + bool LoadMtl(const char filename[]); + + /// saves the obj file & related material file + bool Save(const char filename[]) const; + + /// saves the mtl file + bool SaveMtl(const char filename[]) const; + + /// renders the obj file rather innefficiently using openGL's + /// immediate mode + void Draw() const ; + + /// this function will generate vertex normals for the current + /// surface and store those within the m_Normals array + void CalculateNormals(); + + /// splits the obj file into seperate surfaces based upon object grouping. + /// The returned list of surfaces will use indices relative to the start of + /// this surface. + void GroupsToSurfaces(std::vector& surface_list); + + /// splits the obj file into sets of vertex arrays for quick rendering. + void GroupsToVertexArrays(std::vector& surface_list); + + std::vector m_Triangles; + /// the groups in the obj file, moved from protected to public + + std::vector m_Normals; + /// the normals from the obj file, moved from protected to public + + std::vector m_Vertices; + /// the vertices in the obj file, moved from protected to public + + + protected: + + /// overide to handle loading of texture data + virtual unsigned int OnLoadTexture(const char filename[]) { + return 0; + } + + /// overload this to change the way the material is specified + /// (ie, custom shaders rather than glMaterialfv() ) + virtual void OnBindMaterial(const Material& mat) const { + mat.gl(); + } + + /// overload this to perform your own set up before or after saving + /// or loading. + virtual bool PreLoad(std::istream&) { + return true; + }; + /// overload this to perform your own set up before or after saving + /// or loading. + virtual bool PostLoad(std::istream&) { + return true; + }; + /// overload this to perform your own set up before or after saving + /// or loading. + virtual bool PreSave(std::ostream&) const { + return true; + }; + /// overload this to perform your own set up before or after saving + /// or loading. + virtual bool PostSave(std::ostream&) const { + return true; + }; + + /// overload this to handle additional data types within the obj file + /// that I currently do not support. + virtual bool HandleUnknown(std::string flag,std::istream& ifs) { + while( !ifs.eof() && (ifs.get()!='\n') ) + /*empty*/ ; + return true; + }; + + protected: + + /// the vertices in the obj file + std::vector m_VertexParams; + /// the tex coords from the obj file + std::vector m_TexCoords; + /// the points stored in the obj file + std::vector m_Points; + /// an array of lines + std::vector m_Lines; + /// the triangles in the obj file + std::vector m_Groups; + /// the materials from the mtl file exported from maya + std::vector m_Materials; + /// an array of bezier patches + std::vector m_Patches; + /// an array of parametric curves + /// an array of parametric surfaces + + private: + + /// the name of the file last loaded is saved internally since the + /// name may be needed to find a path to a material or texture file. + std::string m_FilePath; + + std::string ReadChunk(std::istream& ifs) ; + + /// utility function to parse a face + void ReadPoints(std::istream&); + + /// utility function to parse a face + void ReadLine(std::istream&); + + /// utility function to parse a face + void ReadFace(std::istream&); + + /// a utility function to parse a group + void ReadGroup(std::istream&); + + /// a utility function to draw the specified range of triangles + void DrawRange(unsigned int start_face,unsigned int end_face) const; + + }; +} + +#endif diff --git a/src/raytraceKernel.cu b/src/raytraceKernel.cu index 87a65a6..2f55e66 100755 --- a/src/raytraceKernel.cu +++ b/src/raytraceKernel.cu @@ -7,14 +7,23 @@ #include #include +#include // log2 #include #include "sceneStructs.h" +#include "glm/glm.hpp" #include "utilities.h" #include "raytraceKernel.h" #include "intersections.h" #include "interactions.h" #include -#include "glm/glm.hpp" + +#if CUDA_VERSION >= 5000 + #include +#else + #include +#endif + +#define MAXDEPTH 50 // max raytrace depth void checkCUDAError(const char *msg) { cudaError_t err = cudaGetLastError(); @@ -22,55 +31,6 @@ void checkCUDAError(const char *msg) { fprintf(stderr, "Cuda error: %s: %s.\n", msg, cudaGetErrorString( err) ); exit(EXIT_FAILURE); } -} - -//LOOK: This function demonstrates how to use thrust for random number generation on the GPU! -//Function that generates static. -__host__ __device__ glm::vec3 generateRandomNumberFromThread(glm::vec2 resolution, float time, int x, int y){ - int index = x + (y * resolution.x); - - thrust::default_random_engine rng(hash(index*time)); - thrust::uniform_real_distribution u01(0,1); - - return glm::vec3((float) u01(rng), (float) u01(rng), (float) u01(rng)); -} - -//Kernel that does the initial raycast from the camera. -__host__ __device__ ray raycastFromCameraKernel(glm::vec2 resolution, float time, int x, int y, glm::vec3 eye, glm::vec3 view, glm::vec3 up, glm::vec2 fov){ - - int index = x + (y * resolution.x); - - thrust::default_random_engine rng(hash(index*time)); - thrust::uniform_real_distribution u01(0,1); - - //standard camera raycast stuff - glm::vec3 E = eye; - glm::vec3 C = view; - glm::vec3 U = up; - float fovx = fov.x; - float fovy = fov.y; - - float CD = glm::length(C); - - glm::vec3 A = glm::cross(C, U); - glm::vec3 B = glm::cross(A, C); - glm::vec3 M = E+C; - glm::vec3 H = (A*float(CD*tan(fovx*(PI/180))))/float(glm::length(A)); - glm::vec3 V = (B*float(CD*tan(-fovy*(PI/180))))/float(glm::length(B)); - - float sx = (x)/(resolution.x-1); - float sy = (y)/(resolution.y-1); - - glm::vec3 P = M + (((2*sx)-1)*H) + (((2*sy)-1)*V); - glm::vec3 PmE = P-E; - glm::vec3 R = E + (float(200)*(PmE))/float(glm::length(PmE)); - - glm::vec3 direction = glm::normalize(R); - //major performance cliff at this point, TODO: find out why! - ray r; - r.origin = eye; - r.direction = direction; - return r; } //Kernel that blacks out a given image buffer @@ -83,8 +43,8 @@ __global__ void clearImage(glm::vec2 resolution, glm::vec3* image){ } } -//Kernel that writes the image to the OpenGL PBO directly. -__global__ void sendImageToPBO(uchar4* PBOpos, glm::vec2 resolution, glm::vec3* image){ +//Kernel that writes the image to the OpenGL PBO directly. +__global__ void sendImageToPBO(uchar4* PBOpos, glm::vec2 resolution, glm::vec3* image, float iterations){ int x = (blockIdx.x * blockDim.x) + threadIdx.x; int y = (blockIdx.y * blockDim.y) + threadIdx.y; @@ -92,10 +52,10 @@ __global__ void sendImageToPBO(uchar4* PBOpos, glm::vec2 resolution, glm::vec3* if(x<=resolution.x && y<=resolution.y){ - glm::vec3 color; - color.x = image[index].x*255.0; - color.y = image[index].y*255.0; - color.z = image[index].z*255.0; + glm::vec3 color; + color.x = image[index].x*255.0/iterations; + color.y = image[index].y*255.0/iterations; + color.z = image[index].z*255.0/iterations; if(color.x>255){ color.x = 255; @@ -111,117 +71,322 @@ __global__ void sendImageToPBO(uchar4* PBOpos, glm::vec2 resolution, glm::vec3* // Each thread writes one pixel location in the texture (textel) PBOpos[index].w = 0; - PBOpos[index].x = color.x; + PBOpos[index].x = color.x; PBOpos[index].y = color.y; PBOpos[index].z = color.z; } } +//--------------------------------------------- +//--------------Helper functions--------------- +//--------------------------------------------- + +// Returns true if every component of a is greater than the corresponding component of b +__host__ __device__ bool componentCompare(glm::vec3 a, glm::vec3 b) { + return (a[0] > b[0] && a[1] > b[1] && a[2] > b[2]); +} + +//LOOK: This function demonstrates how to use thrust for random number generation on the GPU! +//Function that generates static. +__host__ __device__ glm::vec3 generateRandomNumberFromThread(glm::vec2 resolution, float time, int x, int y){ + int index = x + (y * resolution.x); + + thrust::default_random_engine rng(thrusthash(index*time)); + thrust::uniform_real_distribution u01(0,1); + + return glm::vec3((float) u01(rng), (float) u01(rng), (float) u01(rng)); +} + //TODO: IMPLEMENT THIS FUNCTION -//Core raytracer kernel -__global__ void raytraceRay(glm::vec2 resolution, float time, float bounce, cameraData cam, int rayDepth, glm::vec3* colors, - staticGeom* geoms, int numberOfGeoms, material* materials, int numberOfMaterials){ +//Function that does the initial raycast from the camera +__host__ __device__ ray raycastFromCameraKernel(glm::vec2 resolution, float time, int x, int y,glm::vec3 eye, + glm::vec3 view, glm::vec3 up, glm::vec2 fov, float focal, float aperture){ + ray r; + r.origin = eye; + r.active = true; - int x = (blockIdx.x * blockDim.x) + threadIdx.x; + // values for computing ray direction + float phi = glm::radians(fov.y); + float theta = glm::radians(fov.x); + glm::vec3 A = glm::normalize(glm::cross(view, up)); + glm::vec3 B = glm::normalize(glm::cross(A, view)); + glm::vec3 M = eye + view; + glm::vec3 V = B * glm::length(view) * tan(phi); + glm::vec3 H = A * glm::length(view) * tan(theta); + + // super sampling for anti-aliasing + thrust::default_random_engine rng(thrusthash(time)); + thrust::uniform_real_distribution u01(0, 1); + float fx = x + (float)u01(rng); + float fy = y + (float)u01(rng); + + glm::vec3 P = M + (2*fx/(resolution.x-1)-1) * H + (2*(1-fy/(resolution.y-1))-1) * V; + r.direction = glm::normalize(P-eye); + + if (abs(focal+1) > THRESHOLD) { + // for depth of field + // get the intersection with the focal plane + glm::vec3 pointOnFocalPlane = eye + r.direction * focal; + + // jitter sample position + thrust::uniform_real_distribution u02(-aperture/2, aperture/2); + r.origin += A * u02(rng) + B * u02(rng); + r.direction = glm::normalize(pointOnFocalPlane - r.origin); + } + + return r; +} + +// Kernel that populates the pool of rays with rays from camera to pixels +__global__ void generateRay(cameraData cam, float time, ray* raypool) { + int x = (blockIdx.x * blockDim.x) + threadIdx.x; int y = (blockIdx.y * blockDim.y) + threadIdx.y; - int index = x + (y * resolution.x); + int index = x + (y * cam.resolution.x); - ray r = raycastFromCameraKernel(resolution, time, x, y, cam.position, cam.view, cam.up, cam.fov); - - if((x<=resolution.x && y<=resolution.y)){ - - float MAX_DEPTH = 100000000000000000; - float depth = MAX_DEPTH; - - for(int i=0; i-EPSILON){ - MAX_DEPTH = depth; - colors[index] = materials[geoms[i].materialid].color; - } - } + if((x<=cam.resolution.x && y<=cam.resolution.y)){ + raypool[index] = raycastFromCameraKernel(cam.resolution, time, x, y, cam.position, cam.view, cam.up, cam.fov, cam.focal, cam.aperture); + raypool[index].index = index; + raypool[index].baseColor = glm::vec3(1, 1, 1); + } +} + +__global__ void pathtraceRay(cameraData cam, float time, int rayDepth, ray* rays, int numberOfRays, glm::vec3* colors, + staticGeom* geoms, int numberOfGeoms, glm::vec3* vertices, glm::vec3* normals, + triangle* faces, int numberOfFaces, material* materials){ + int rayIdx = blockIdx.x * blockDim.x + threadIdx.x; + if (rayIdx < numberOfRays) { + int pixelIdx = rays[rayIdx].index; + float seed = time * rayIdx * (rayDepth+1); + if (rays[rayIdx].active) { + glm::vec3 minIntersection, minNormal; // closest intersection point and the normal at that point + int materialid = -1; + getClosestIntersection(geoms, numberOfGeoms, vertices, normals, faces, numberOfFaces, + rays[rayIdx], minIntersection, minNormal, materialid); + if (materialid != -1) { + material mtl = materials[materialid]; // does caching make it faster? + if (mtl.emittance > THRESHOLD) { // light + glm::vec3 color = rays[rayIdx].baseColor * mtl.color * mtl.emittance; + colors[pixelIdx] += color; + rays[rayIdx].active = false; + } + else { + if (mtl.hasReflective > THRESHOLD || mtl.hasRefractive > THRESHOLD) { + if (!isDiffuseRay(seed, mtl.hasDiffuse)) { + float IOR = mtl.indexOfRefraction; + if (glm::dot(rays[rayIdx].direction, minNormal) > 0) { // reverse normal and index of refraction if we are inside the object + minNormal *= -1; + IOR = 1/(IOR + THRESHOLD); + } + if (mtl.hasRefractive > THRESHOLD) { // if the surface has refraction + glm::vec3 VT = getRefractedRay(rays[rayIdx].direction, minNormal, IOR); + if (glm::length(VT) > THRESHOLD && (mtl.hasReflective < THRESHOLD || isRefractedRay(seed, IOR, rays[rayIdx].direction, minNormal, VT))) { + rays[rayIdx].direction = VT; + rays[rayIdx].origin = minIntersection + VT * (float)THRESHOLD; + rays[rayIdx].baseColor *= mtl.color; + return; + } + } + // if the surface only has reflection + glm::vec3 VR = getReflectedRay(rays[rayIdx].direction, minNormal); + rays[rayIdx].origin = minIntersection + VR * (float)THRESHOLD; + rays[rayIdx].direction = VR; + rays[rayIdx].baseColor *= mtl.color; + return; + } + } + + // use diffuse shading model + if (glm::dot(rays[rayIdx].direction, minNormal) > 0) { // reverse normal if we are inside the object + minNormal *= -1; + } + + // shoot diffuse reflected ray + thrust::default_random_engine rng(thrusthash(seed)); // include rayDepth in this since we don't want + // the direction in every bounce to be the same + thrust::uniform_real_distribution u01(0, 1); + rays[rayIdx].direction = calculateRandomDirectionInHemisphere(minNormal, (float)u01(rng), (float)u01(rng)); + rays[rayIdx].origin = minIntersection + rays[rayIdx].direction * (float)THRESHOLD; + rays[rayIdx].baseColor = rays[rayIdx].baseColor * mtl.color; + } + } + else { + rays[rayIdx].active = false; + } + } + } +} - //colors[index] = generateRandomNumberFromThread(resolution, time, x, y); - } +// Copy ray active data to scanArray +__global__ void copy(ray* raypool, int* scanArray) { + int index = blockIdx.x * blockDim.x + threadIdx.x; + scanArray[index] = (int)(raypool[index].active); } +// Scan using shared memory +__global__ void sharedMemoryScan(int* scanArray, int* sumArray) { + __shared__ int subArray1[64]; + __shared__ int subArray2[64]; + + int index = blockIdx.x * blockDim.x + threadIdx.x; + subArray1[threadIdx.x] = scanArray[index]; + subArray2[threadIdx.x] = scanArray[index]; + __syncthreads(); + + int d = 1; +#pragma unroll + for (; d<=ceil(log((float)blockDim.x)/log(2.0f)); ++d) { + if (threadIdx.x >= ceil(pow((float)2, (float)(d-1)))) { + int prevIdx = threadIdx.x - ceil(pow((float)2, (float)(d-1))); + if (d % 2 == 1) { + subArray2[threadIdx.x] = subArray1[threadIdx.x] + subArray1[prevIdx]; + } + else { + subArray1[threadIdx.x] = subArray2[threadIdx.x] + subArray2[prevIdx]; + } + } + else { + if (d % 2 == 1) { + subArray2[threadIdx.x] = subArray1[threadIdx.x]; + } + else { + subArray1[threadIdx.x] = subArray2[threadIdx.x]; + } + } + __syncthreads(); + } + + if (d % 2 == 1) { + scanArray[index] = subArray1[threadIdx.x]; + if (threadIdx.x == 63) { + sumArray[blockIdx.x] = subArray1[threadIdx.x]; + } + } + else { + scanArray[index] = subArray2[threadIdx.x]; + if (threadIdx.x == 63) { + sumArray[blockIdx.x] = subArray2[threadIdx.x]; + } + } +} + +// Naive scan, for scanning the sum array +__global__ void naiveScan(int* scanArray1, int* scanArray2, int d) { + int index = blockIdx.x * blockDim.x + threadIdx.x; + + if (index >= ceil(pow((float)2, (float)(d-1)))) { + int prevIndex = index - (int)ceil(pow((float)2, (float)(d-1))); + scanArray2[index] = scanArray1[index] + scanArray1[prevIndex]; + } + else { + scanArray2[index] = scanArray1[index]; + } +} + +// Add the elements in the sum array to the scan array +__global__ void addToScanArray(int* scanArray, int* sumArray) { + int index = blockIdx.x * blockDim.x + threadIdx.x; + if (blockIdx.x > 0) { + scanArray[index] += sumArray[blockIdx.x-1]; + } +} + +// Scatter kernel for stream compaction +__global__ void scatter(ray* raypool, int* scanArray, ray* newraypool) { + int index = blockIdx.x * blockDim.x + threadIdx.x; + if (raypool[index].active) { + newraypool[scanArray[index]-1] = raypool[index]; + } +} //TODO: FINISH THIS FUNCTION // Wrapper for the __global__ call that sets up the kernel calls and does a ton of memory management -void cudaRaytraceCore(uchar4* PBOpos, camera* renderCam, int frame, int iterations, material* materials, int numberOfMaterials, geom* geoms, int numberOfGeoms){ - - int traceDepth = 1; //determines how many bounces the raytracer traces - +void cudaRaytraceCore(uchar4* PBOpos, camera* renderCam, cameraData cam, int iterations, + staticGeom* cudageoms, int numberOfGeoms, glm::vec3* cudavertices, + glm::vec3* cudanormals, triangle* cudafaces, int numberOfFaces, + material* cudamtls, glm::vec3* cudaimage, ray* raypool1, + ray* raypool2, int numberOfRays, int* scanArray, int* sumArray1, + int* sumArray2) { // set up crucial magic int tileSize = 8; dim3 threadsPerBlock(tileSize, tileSize); - dim3 fullBlocksPerGrid((int)ceil(float(renderCam->resolution.x)/float(tileSize)), (int)ceil(float(renderCam->resolution.y)/float(tileSize))); - - //send image to GPU - glm::vec3* cudaimage = NULL; - cudaMalloc((void**)&cudaimage, (int)renderCam->resolution.x*(int)renderCam->resolution.y*sizeof(glm::vec3)); - cudaMemcpy( cudaimage, renderCam->image, (int)renderCam->resolution.x*(int)renderCam->resolution.y*sizeof(glm::vec3), cudaMemcpyHostToDevice); - - //package geometry and materials and sent to GPU - staticGeom* geomList = new staticGeom[numberOfGeoms]; - for(int i=0; iresolution; - cam.position = renderCam->positions[frame]; - cam.view = renderCam->views[frame]; - cam.up = renderCam->ups[frame]; - cam.fov = renderCam->fov; - - //kernel launches - for(int bounce = 1; bounce <= 1; ++bounce) - { - raytraceRay<<>>(renderCam->resolution, (float)iterations, (float)bounce, cam, traceDepth, cudaimage, cudageoms, numberOfGeoms, cudamaterials, numberOfMaterials); - } - sendImageToPBO<<>>(PBOpos, renderCam->resolution, cudaimage); + dim3 fullBlocksPerGrid((int)ceil(float(renderCam->resolution.x)/float(tileSize)), (int)ceil(float(renderCam->resolution.y)/float(tileSize))); //send image to GPU - //retrieve image from GPU - cudaMemcpy( renderCam->image, cudaimage, (int)renderCam->resolution.x*(int)renderCam->resolution.y*sizeof(glm::vec3), cudaMemcpyDeviceToHost); + // populate the two ray pools + generateRay<<>>(cam, (float)iterations, raypool1); + cudaMemcpy(raypool2, raypool1, numberOfRays * sizeof(ray), cudaMemcpyDeviceToDevice); - //free up stuff, or else we'll leak memory like a madman - cudaFree( cudaimage ); - cudaFree( cudageoms ); - cudaFree( cudamaterials ); - delete [] geomList; + for (int i=0; i>>(cam, (float)iterations, i, raypool1, + numberOfRays, cudaimage, cudageoms, numberOfGeoms, cudavertices, cudanormals, cudafaces, + numberOfFaces, cudamtls); + cudaDeviceSynchronize(); + + copy<<>>(raypool1, scanArray); + } + else { + pathtraceRay<<>>(cam, (float)iterations, i, raypool1, + numberOfRays, cudaimage, cudageoms, numberOfGeoms, cudavertices, cudanormals, cudafaces, + numberOfFaces, cudamtls); + cudaDeviceSynchronize(); + + copy<<>>(raypool2, scanArray); + } + cudaDeviceSynchronize(); + + sharedMemoryScan<<>>(scanArray, sumArray1); + cudaDeviceSynchronize(); + int sumArrayLength = rayBlocksPerGrid; + int naiveScanBlocksPerGrid = ((int)ceil((float)sumArrayLength/(float)64), 24); // 24 is the number of SMs on my GPU + int naiveScanThreadsPerBlock = ceil((float)sumArrayLength/(float)naiveScanBlocksPerGrid); + int d = 1; + for (; d<=ceil(log(float(sumArrayLength))/log(2.0f)); ++d) { + // use double buffer + if (d % 2 == 1) { + naiveScan<<>>(sumArray1, sumArray2, d); + } + else { + naiveScan<<>>(sumArray2, sumArray1, d); + } + cudaDeviceSynchronize(); + } + if (d % 2 == 1) { + addToScanArray<<>>(scanArray, sumArray1); + } + else { + addToScanArray<<>>(scanArray, sumArray2); + } + cudaDeviceSynchronize(); + + // get number of active rays + int* numberOfActiveRays = new int[1]; + cudaMemcpy(numberOfActiveRays, scanArray + numberOfRays -1, sizeof(int), cudaMemcpyDeviceToHost); - checkCUDAError("Kernel failed!"); + if (numberOfActiveRays[0] <= 0) { + break; + } + + // scatter + if (i % 2 == 0) { + scatter<<>>(raypool1, scanArray, raypool2); + } + else { + scatter<<>>(raypool2, scanArray, raypool1); + } + cudaDeviceSynchronize(); + + numberOfRays = numberOfActiveRays[0]; + + delete [] numberOfActiveRays; + } + + sendImageToPBO<<>>(PBOpos, renderCam->resolution, cudaimage, (float)iterations); + + // make certain the kernel has completed + cudaThreadSynchronize(); } diff --git a/src/raytraceKernel.h b/src/raytraceKernel.h index 5fcf5a3..f4db2cf 100755 --- a/src/raytraceKernel.h +++ b/src/raytraceKernel.h @@ -20,6 +20,12 @@ #include #endif -void cudaRaytraceCore(uchar4* pos, camera* renderCam, int frame, int iterations, material* materials, int numberOfMaterials, geom* geoms, int numberOfGeoms); +void cudaRaytraceCore(uchar4* PBOpos, camera* renderCam, cameraData cam, int iterations, + staticGeom* cudageoms, int numberOfGeoms, glm::vec3* cudavertices, + glm::vec3* normals, triangle* cudafaces, int numberOfFaces, + material* cudamtls, glm::vec3* cudaimage, ray* raypool1, + ray* raypool2, int numberOfRays, int* scanArray, int* sumArray1, + int* sumArray2); +void checkCUDAError(const char *msg); #endif diff --git a/src/scene.cpp b/src/scene.cpp index 415d627..84f3eaf 100755 --- a/src/scene.cpp +++ b/src/scene.cpp @@ -7,6 +7,7 @@ #include #include "scene.h" #include +#include "stb_image/stb_image.h" scene::scene(string filename){ cout << "Reading scene from " << filename << " ..." << endl; @@ -19,7 +20,11 @@ scene::scene(string filename){ utilityCore::safeGetline(fp_in,line); if(!line.empty()){ vector tokens = utilityCore::tokenizeString(line); - if(strcmp(tokens[0].c_str(), "MATERIAL")==0){ + + if(strcmp(tokens[0].c_str(), "TEXTURE")==0){ + loadTexture(tokens[1]); + cout << " " << endl; + }else if(strcmp(tokens[0].c_str(), "MATERIAL")==0){ loadMaterial(tokens[1]); cout << " " << endl; }else if(strcmp(tokens[0].c_str(), "OBJECT")==0){ @@ -49,12 +54,12 @@ int scene::loadObject(string objectid){ if (!line.empty() && fp_in.good()){ if(strcmp(line.c_str(), "sphere")==0){ cout << "Creating new sphere..." << endl; - newObject.type = SPHERE; + newObject.type = SPHERE; }else if(strcmp(line.c_str(), "cube")==0){ cout << "Creating new cube..." << endl; - newObject.type = CUBE; + newObject.type = CUBE; }else{ - string objline = line; + string objline = line; string name; string extension; istringstream liness(objline); @@ -63,7 +68,17 @@ int scene::loadObject(string objectid){ if(strcmp(extension.c_str(), "obj")==0){ cout << "Creating new mesh..." << endl; cout << "Reading mesh from " << line << "... " << endl; - newObject.type = MESH; + Obj::File* obj = new Obj::File(); + obj->Load(objline.c_str()); + newObject.type = MESH; + newObject.vertexcount = obj->m_Vertices.size(); + newObject.normalcount = obj->m_Normals.size(); + newObject.facecount = obj->m_Triangles.size(); + convertObj(obj, id); + vertexcount += obj->m_Vertices.size(); + normalcount += obj->m_Normals.size(); + delete obj; + obj = 0; }else{ cout << "ERROR: " << line << " is not a valid object type!" << endl; return -1; @@ -127,7 +142,7 @@ int scene::loadObject(string objectid){ newObject.inverseTransforms[i] = utilityCore::glmMat4ToCudaMat4(glm::inverse(transform)); } - objects.push_back(newObject); + objects.push_back(newObject); cout << "Loaded " << frameCount << " frames for Object " << objectid << "!" << endl; return 1; @@ -140,7 +155,7 @@ int scene::loadCamera(){ float fovy; //load static properties - for(int i=0; i<4; i++){ + for(int i=0; i<6; i++){ string line; utilityCore::safeGetline(fp_in,line); vector tokens = utilityCore::tokenizeString(line); @@ -150,6 +165,10 @@ int scene::loadCamera(){ fovy = atof(tokens[1].c_str()); }else if(strcmp(tokens[0].c_str(), "ITERATIONS")==0){ newCamera.iterations = atoi(tokens[1].c_str()); + }else if(strcmp(tokens[0].c_str(), "FOCAL")==0){ + newCamera.focal = atof(tokens[1].c_str()); + }else if(strcmp(tokens[0].c_str(), "APERTURE")==0){ + newCamera.aperture = atof(tokens[1].c_str()); }else if(strcmp(tokens[0].c_str(), "FILE")==0){ newCamera.imageName = tokens[1]; } @@ -182,7 +201,7 @@ int scene::loadCamera(){ views.push_back(glm::vec3(atof(tokens[1].c_str()), atof(tokens[2].c_str()), atof(tokens[3].c_str()))); }else if(strcmp(tokens[0].c_str(), "UP")==0){ ups.push_back(glm::vec3(atof(tokens[1].c_str()), atof(tokens[2].c_str()), atof(tokens[3].c_str()))); - } + } } frameCount++; @@ -219,6 +238,42 @@ int scene::loadCamera(){ return 1; } +int scene::loadTexture(string textureid){ + int id = atoi(textureid.c_str()); + if(id!=textures.size()){ + cout << "ERROR: TEXTURE ID does not match expected number of textures" << endl; + return -1; + }else{ + cout << "Loading Texture " << id << "..." << endl; + mtltexture newTexture; + + // load texture from file + string filename; + utilityCore::safeGetline(fp_in,filename); + + int width, height, n; + unsigned char* colorData = stbi_load(filename.c_str(), &width, &height, &n, 3); + + glm::vec3* colors = new glm::vec3[width * height]; + for (int y=0; y tokens = utilityCore::tokenizeString(line); if(strcmp(tokens[0].c_str(), "RGB")==0){ glm::vec3 color( atof(tokens[1].c_str()), atof(tokens[2].c_str()), atof(tokens[3].c_str()) ); @@ -241,12 +296,14 @@ int scene::loadMaterial(string materialid){ }else if(strcmp(tokens[0].c_str(), "SPECRGB")==0){ glm::vec3 specColor( atof(tokens[1].c_str()), atof(tokens[2].c_str()), atof(tokens[3].c_str()) ); newMaterial.specularColor = specColor; + }else if(strcmp(tokens[0].c_str(), "DIFFUSE")==0){ + newMaterial.hasDiffuse = atof(tokens[1].c_str()); }else if(strcmp(tokens[0].c_str(), "REFL")==0){ newMaterial.hasReflective = atof(tokens[1].c_str()); }else if(strcmp(tokens[0].c_str(), "REFR")==0){ newMaterial.hasRefractive = atof(tokens[1].c_str()); }else if(strcmp(tokens[0].c_str(), "REFRIOR")==0){ - newMaterial.indexOfRefraction = atof(tokens[1].c_str()); + newMaterial.indexOfRefraction = atof(tokens[1].c_str()); }else if(strcmp(tokens[0].c_str(), "SCATTER")==0){ newMaterial.hasScatter = atof(tokens[1].c_str()); }else if(strcmp(tokens[0].c_str(), "ABSCOEFF")==0){ @@ -256,10 +313,31 @@ int scene::loadMaterial(string materialid){ newMaterial.reducedScatterCoefficient = atof(tokens[1].c_str()); }else if(strcmp(tokens[0].c_str(), "EMITTANCE")==0){ newMaterial.emittance = atof(tokens[1].c_str()); - + }else if(strcmp(tokens[0].c_str(), "TEXTURE")==0){ + newMaterial.textureid = atof(tokens[1].c_str()); } } materials.push_back(newMaterial); return 1; } } + +// Use the loaded obj's information to populate the vector of faces +void scene::convertObj(Obj::File* obj, int geomId) { + for (int i=0; im_Triangles.size(); ++i) { + triangle* face = new triangle(obj->m_Triangles[i].v[0]+vertexcount, obj->m_Triangles[i].v[1]+vertexcount, + obj->m_Triangles[i].v[2]+vertexcount, obj->m_Triangles[i].n[0]+normalcount, + obj->m_Triangles[i].n[1]+normalcount, obj->m_Triangles[i].n[2]+normalcount); + faces.push_back(face); + } + + for (int i=0; im_Vertices.size(); ++i) { + glm::vec3* vert = new glm::vec3(obj->m_Vertices[i].x, obj->m_Vertices[i].y, obj->m_Vertices[i].z); + vertices.push_back(vert); + } + + for (int i=0; im_Normals.size(); ++i) { + glm::vec3* norm = new glm::vec3(obj->m_Normals[i].x, obj->m_Normals[i].y, obj->m_Normals[i].z); + normals.push_back(norm); + } +} diff --git a/src/scene.h b/src/scene.h index 9bfa71f..21d7d18 100755 --- a/src/scene.h +++ b/src/scene.h @@ -13,21 +13,30 @@ #include #include #include +#include "objload.h" using namespace std; class scene{ private: ifstream fp_in; + int loadTexture(string textureid); int loadMaterial(string materialid); int loadObject(string objectid); int loadCamera(); + void convertObj(Obj::File* obj, int geomId); public: scene(string filename); ~scene(); vector objects; vector materials; + vector textures; + vector faces; // faces of all meshes + vector vertices; + vector normals; + int vertexcount; + int normalcount; camera renderCam; }; diff --git a/src/sceneStructs.h b/src/sceneStructs.h index b10f1cf..4542438 100755 --- a/src/sceneStructs.h +++ b/src/sceneStructs.h @@ -10,12 +10,30 @@ #include "cudaMat4.h" #include #include +#include enum GEOMTYPE{ SPHERE, CUBE, MESH }; +struct triangle { + int materialid; + int v1; + int v2; + int v3; + int n1; + int n2; + int n3; + + triangle() {}; + triangle(int vi1, int vi2, int vi3, int ni1, int ni2, int ni3) : + v1(vi1), v2(vi2), v3(vi3), n1(ni1), n2(ni2), n3(ni3) {}; +}; + struct ray { glm::vec3 origin; glm::vec3 direction; + int index; + glm::vec3 baseColor; + bool active; }; struct geom { @@ -27,6 +45,11 @@ struct geom { glm::vec3* scales; cudaMat4* transforms; cudaMat4* inverseTransforms; + + // for mesh + int vertexcount; + int normalcount; + int facecount; }; struct staticGeom { @@ -45,6 +68,8 @@ struct cameraData { glm::vec3 view; glm::vec3 up; glm::vec2 fov; + float focal; + float aperture; }; struct camera { @@ -55,15 +80,18 @@ struct camera { int frames; glm::vec2 fov; unsigned int iterations; + float focal; + float aperture; glm::vec3* image; ray* rayList; std::string imageName; }; -struct material{ +struct material { glm::vec3 color; float specularExponent; glm::vec3 specularColor; + float hasDiffuse; // diffuse contribution float hasReflective; float hasRefractive; float indexOfRefraction; @@ -71,6 +99,22 @@ struct material{ glm::vec3 absorptionCoefficient; float reducedScatterCoefficient; float emittance; + + int textureid; // -1 means no texture +}; + +// texture structure on CPU +struct mtltexture { + int width; + int height; + glm::vec3* colors; +}; + +// texture structure on CUDA +struct cudatexture { + int width; + int height; + int startindex; // the index of the first pixel in the pixel array of all textures }; -#endif //CUDASTRUCTS_H +#endif //CUDASTRUCTS_H \ No newline at end of file diff --git a/src/timer.h b/src/timer.h new file mode 100644 index 0000000..5f5d2bf --- /dev/null +++ b/src/timer.h @@ -0,0 +1,159 @@ +/*! \file timer.h + + \brief Provides a class for timing application events. + + \author Eric Chan + \date July 2003 +*/ + +#ifndef __MMC_TIMER_H__ +#define __MMC_TIMER_H__ + +#ifdef WIN32 + +/*! win32 implementation -- use OS-provided high-precision timer */ +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif // WIN32_LEAN_AND_MEAN +#include + +typedef _int64 MMC_TIME_TYPE; + +#else +#ifdef LINUX + +#include +#include +typedef double MMC_TIME_TYPE; + +#else + +/*! not win32 -- use C-provided clock timing methods; less precise, but + but provide same basic functionality; + + \todo Other OS's may provide similar OS-specific high-precision + timer routines, which are preferable to the clock() method. */ +#include +typedef clock_t MMC_TIME_TYPE; + +#endif // LINUX +#endif // win32 + +namespace mmc +{ + + /*! \brief Class for timing application events. + + Only one of these is needed per application. */ + class Timer + { + public: + + /*! Get a new timer, initially stopped. */ + inline Timer (); + + /*! Start the timer. */ + inline void start (); + + /*! Call this once per frame to advance internal timer state. */ + inline void inc (); + + /*! Returns number of ms elapsed since start() was called. Use + this to determine how long the timer has been running. */ + inline MMC_TIME_TYPE queryElapsed () const; + + /*! Returns number of ms elapsed between the two previous calls to + \p inc(). Use this to determine the time between frames. */ + inline MMC_TIME_TYPE queryInc () const; + + /*! Returns 1 / frequency of the internal timing clock actually + being used. */ + inline double getInvFreq () const; + + private: + MMC_TIME_TYPE freq_; + MMC_TIME_TYPE start_; + MMC_TIME_TYPE now_; + MMC_TIME_TYPE last_; + MMC_TIME_TYPE elapsed_; + double invFreq_; + }; + + ////////////////////////////////////////////////////////////////////// + // Implementation. + // + + inline + Timer::Timer () + : start_(0), last_(0), now_(0), elapsed_(0) + { +#ifdef WIN32 + QueryPerformanceFrequency((LARGE_INTEGER *) &freq_); +#else +#ifdef LINUX + freq_ = 1.0; +#else + freq_ = CLOCKS_PER_SEC; +#endif +#endif + invFreq_ = 1.0 / (double) freq_; + } + + inline void + Timer::start () + { +#ifdef WIN32 + QueryPerformanceCounter((LARGE_INTEGER *) &start_); +#else +#ifdef LINUX + struct timeval tv; + struct timezone tz; + gettimeofday(&tv, &tz); + start_ = (double) (tv.tv_sec + 1e-6 * tv.tv_usec); +#else + start_ = clock(); +#endif +#endif + last_ = now_ = start_; + } + + inline MMC_TIME_TYPE + Timer::queryElapsed () const + { + return now_ - start_; + } + + inline void + Timer::inc () + { + last_ = now_; +#ifdef WIN32 + QueryPerformanceCounter((LARGE_INTEGER *) &now_); +#else +#ifdef LINUX + struct timeval tv; + struct timezone tz; + gettimeofday(&tv, &tz); + now_ = (double) (tv.tv_sec + 1e-6 * tv.tv_usec); +#else + now_ = clock(); +#endif +#endif + } + + inline MMC_TIME_TYPE + Timer::queryInc () const + { + return now_ - last_; + } + + inline double + Timer::getInvFreq () const + { + return invFreq_; + } + +} // namespace mmc + +#endif // __MMC_TIMER_H__ + diff --git a/src/utilities.cpp b/src/utilities.cpp index 3fd4b73..32f5893 100755 --- a/src/utilities.cpp +++ b/src/utilities.cpp @@ -134,6 +134,7 @@ std::istream& utilityCore::safeGetline(std::istream& is, std::string& t) } } } + //----------------------------- //-------GLM Printers---------- //----------------------------- diff --git a/src/utilities.h b/src/utilities.h index 84ec55f..2f93094 100755 --- a/src/utilities.h +++ b/src/utilities.h @@ -20,10 +20,11 @@ #define PI 3.1415926535897932384626422832795028841971 #define TWO_PI 6.2831853071795864769252867665590057683943 #define SQRT_OF_ONE_THIRD 0.5773502691896257645091487805019574556476 -#define NATURAL_E 2.7182818284590452353602874713526624977572 +#define E 2.7182818284590452353602874713526624977572 #define EPSILON .000000001 #define ZERO_ABSORPTION_EPSILON 0.00001 #define RAY_BIAS_AMOUNT 0.0002 +#define THRESHOLD 0.001 namespace utilityCore { extern float clamp(float f, float min, float max);