void genratestate() { int V, H, D; for(int i = 0; i < 256; i++){ V = sum_V((unsigned char)i); D = sum_D((unsigned char)i); H = sum_H((unsigned char)i); states[0][i] = state_LL(V,H,D); states[1][i] = state_HL(V,H,D); states[2][i] = state_HH(V,H,D); } }
void SeqAnalyzer::UpdateStructure(WF_edge *e) { upd_struct_.Start(); int dual_upd = ptr_dualgraph_->UpdateDualization(e); /* modify D0 */ if (dual_upd != -1) { int Ns = ptr_dualgraph_->SizeOfFreeFace(); D0_.conservativeResize(6 * Ns); /* set initiate value by neighbors */ int orig_u = ptr_dualgraph_->v_orig_id(dual_upd); WF_edge *eu = ptr_frame_->GetNeighborEdge(orig_u); VX sum_D(6); sum_D.setZero(); int sum = 0; while (eu != NULL) { WF_vert *v = eu->pvert_; int dual_v = ptr_dualgraph_->v_dual_id(v->ID()); if (dual_v != -1 && !v->isFixed()) { VX tmp_D(6); for (int i = 0; i < 6; i++) { tmp_D[i] = D0_[6 * dual_v + i]; } sum_D += tmp_D; sum++; } eu = eu->pnext_; } if (sum != 0) { sum_D /= sum; } for (int i = 0; i < 6; i++) { D0_[6 * (Ns - 1) + i] = sum_D[i]; } } upd_struct_.Stop(); }