void Entropy::setDegree( int deg ) { L = deg; a.clear(); std::fstream fd_coeffs("coeffs.txt"); // ignore the first L-1 lines fd_coeffs.seekg(std::ios::beg); for( int i = 0; i < L-1; ++i ) fd_coeffs.ignore(std::numeric_limits<std::streamsize>::max(),'\n'); // Read line L int test_L; fd_coeffs >> test_L; if ( L != test_L ) { std::cerr<<"Read the wrong line!!"<<std::endl; exit(1); } double coeff; for (int i = 0; i <= L; i++) { fd_coeffs >> coeff; a.push_back(coeff); } fd_coeffs.close(); }
vector<double> diffuse_filter(const vector<double>& llin,size_t width=1024,size_t height=512) { SHT_LatLong diffuse_transform(width,height,3,3); //do a lossy low-frequency projection to bottom 16 coefficients and back. vector<std::complex<double> > fd_coeffs(diffuse_transform.num_fd_samples()); vector<double> diffuse_map(diffuse_transform.num_td_samples()); diffuse_transform.execute_transform(llin.data(),fd_coeffs.data()); diffuse_transform.execute_inverse_transform(fd_coeffs.data(),diffuse_map.data()); return diffuse_map; }