示例#1
0
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();
}
示例#2
0
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;
}