void UpdateFS_src() { RenderingMethod* tmp; std::string ss; CT::iso->rendering_methods.clear(); rm_files.clear(); wxString f = wxFindFirstFile("RM/*.fs"); int i=0; while ( !f.empty() ) { tmp = new RenderingMethod(); ss = f; tmp->size.set(1,1); tmp->caption = ss; tmp->fs_filename = ss; tmp->pos = tmp->size * vec2(i%3,i/3) * (1.2); CT::iso->rendering_methods.push_back(tmp); rm_files.push_back(ss); f = wxFindNextFile(); i++; } CT::iso->SetCurRM(0); CT::iso->ReLoadShader(); /* if(!rendering_methods.size()) { wxMessageBox("Шейдеры не загружены: в папке RM нет файлов *.fs"); } */ }
std::complex<double> operator*(const svec &a, const cvec &b) { it_assert_debug(a.size() == b.size(), "operator*(): sizes does not match"); std::complex<double> temp = 0; for (int i = 0;i < a.size();i++) {temp += (double)a(i) * b(i);} return temp; }
cvec operator+(const svec &a, const cvec &b) { it_assert_debug(a.size() == b.size(), "operator+(): sizes does not match"); cvec temp = b; for (int i = 0;i < a.size();i++) {temp(i) += (double)a(i);} return temp; }
void match_one (svec a, svec b, ivec& ret) { si_map A; svec inter; for(int i=0; i < a.size(); i++) A[a[i]] = i; std::sort(a.begin(), a.end()); std::sort(b.begin(), b.end()); std::set_intersection(a.begin(), a.end(), b.begin(), b.end(), std::back_inserter(inter)); ret.resize(inter.size()); for(int i=0; i < inter.size(); i++) ret[i] = A[inter[i]]; }
void match_both (svec a, svec b, ivec& ai, ivec& bi) { si_map A; si_map B; svec inter; int i = 0; for(i=0; i < a.size(); i++) A[a[i]] = i; for(i=0; i < b.size(); i++) B[b[i]] = i; std::sort(a.begin(), a.end()); std::sort(b.begin(), b.end()); std::set_intersection(a.begin(), a.end(), b.begin(), b.end(), std::back_inserter(inter)); ai.resize(inter.size()); for(i=0; i < inter.size(); i++) ai[i] = A[inter[i]]; bi.resize(inter.size()); for(i=0; i < inter.size(); i++) bi[i] = B[inter[i]]; }
int find_position(std::string what, svec& table) { svec::iterator svit = std::find(table.begin(), table.end(), what); if(svit==table.end()) return(-1); return(svit - table.begin()); }