File indexing completed on 2026-04-10 07:50:34
0001 #pragma once
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include <vector>
0013 #include <string>
0014 #include <sstream>
0015 #include <iomanip>
0016
0017 struct U4SurfacePerfect
0018 {
0019 static void Get(std::vector<U4SurfacePerfect>& perfects) ;
0020 std::string name ;
0021 double detect ;
0022 double absorb ;
0023 double reflect_specular ;
0024 double reflect_diffuse ;
0025
0026 double sum() const ;
0027 std::string desc() const ;
0028 };
0029
0030 inline double U4SurfacePerfect::sum() const
0031 {
0032 return detect + absorb + reflect_specular + reflect_diffuse ;
0033 }
0034
0035 inline std::string U4SurfacePerfect::desc() const
0036 {
0037 std::stringstream ss ;
0038 ss << " detect " << std::setw(10) << std::fixed << std::setprecision(3) << detect ;
0039 ss << " absorb " << std::setw(10) << std::fixed << std::setprecision(3) << absorb ;
0040 ss << " reflect_specular " << std::setw(10) << std::fixed << std::setprecision(3) << reflect_specular ;
0041 ss << " reflect_diffuse " << std::setw(10) << std::fixed << std::setprecision(3) << reflect_diffuse ;
0042 ss << " name " << name ;
0043 std::string str = ss.str();
0044 return str ;
0045 }
0046
0047
0048 inline void U4SurfacePerfect::Get(std::vector<U4SurfacePerfect>& perfects)
0049 {
0050 U4SurfacePerfect perfectDetectSurface = { "perfectDetectSurface", 1., 0., 0., 0. } ;
0051 U4SurfacePerfect perfectAbsorbSurface = { "perfectAbsorbSurface", 0., 1., 0., 0. } ;
0052 U4SurfacePerfect perfectSpecularSurface = { "perfectSpecularSurface", 0., 0., 1., 0. } ;
0053 U4SurfacePerfect perfectDiffuseSurface = { "perfectDiffuseSurface", 0., 0., 0., 1. } ;
0054
0055 perfects.push_back(perfectDetectSurface) ;
0056 perfects.push_back(perfectAbsorbSurface) ;
0057 perfects.push_back(perfectSpecularSurface) ;
0058 perfects.push_back(perfectDiffuseSurface) ;
0059 }
0060