void rotate_roll(float fator) //Z { _V = mat.rotation3Dz(fator*graus)*_V; _U = mat.rotation3Dz(fator*graus)*_U; _N = mat.rotation3Dz(fator*graus)*_N; normalize_all(); }
void rotate_yaw(float fator) //Y { _V = mat.rotation3Dy(fator*graus)*_V; _U = mat.rotation3Dy(fator*graus)*_U; _N = mat.rotation3Dy(fator*graus)*_N; normalize_all(); }
void rotate_pitch(float fator) //X { _V = mat.rotation3Dx(fator*graus)*_V; _U = mat.rotation3Dx(fator*graus)*_U; _N = mat.rotation3Dx(fator*graus)*_N; normalize_all(); }
// bactkrack one level static void test_backtrack(test_bench_t *bench) { assert(bench->decision_level > bench->base_level); printf("[%"PRIu32"]: TEST BACKTRACK to decision level %"PRIu32"\n", ctr, bench->decision_level - 1); equality_queue_backtrack(&bench->equeue); test_bench_undo_subst(bench); op_stack_backtrack(bench); bench->decision_level --; if (bench->show_details) { // print state after backtracking printf("AFTER BACKTRACK: decision level = %"PRIu32", base level = %"PRIu32"\n", bench->decision_level, bench->base_level); normalize_all(bench); printf("Active polys\n"); print_active_polys(bench); printf("Assertions\n"); print_all_equalities(bench); printf("Normal forms\n"); print_normal_forms(bench); } offset_manager_backtrack(&bench->manager, bench->decision_level); ctr ++; }
static void test_propagate(test_bench_t *bench) { ivector_t expl; printf("[%"PRIu32"]: TEST_PROPAGATE: decision level = %"PRIu32", base level = %"PRIu32"\n", ctr, bench->decision_level, bench->base_level); push_propagate(&bench->stack); normalize_all(bench); if (bench->show_details) { printf("Active polys\n"); print_active_polys(bench); printf("Assertions\n"); print_all_equalities(bench); printf("Normal forms\n"); print_normal_forms(bench); } if (bench->conflict) { printf("Expected result: conflict\n\n"); } else { printf("Expected classes\n"); print_expected_classes(bench); } if (offset_manager_propagate(&bench->manager)) { bench->mngr_conflict = false; printf("Propagated classes\n"); print_infered_classes(bench); check_propagation(bench); check_all_propagated(bench); if (bench->conflict) { printf("BUG: conflict expected\n"); fflush(stdout); exit(1); } } else { bench->mngr_conflict = true; printf("Conflict\n"); init_ivector(&expl, 10); offset_manager_explain_conflict(&bench->manager, &expl); print_explanation(bench, &expl); check_conflict(bench, &expl); delete_ivector(&expl); if (! bench->conflict) { printf("BUG: conflict unexpected\n"); fflush(stdout); exit(1); } } ctr ++; }
static void test_pop(test_bench_t *bench) { assert(bench->base_level > 0); printf("[%"PRIu32"]: TEST POP to base level %"PRIu32"\n", ctr, bench->base_level - 1); if (bench->decision_level > bench->base_level) { // backtrack in the test_bench do { equality_queue_backtrack(&bench->equeue); test_bench_undo_subst(bench); op_stack_backtrack(bench); bench->decision_level --; } while (bench->decision_level > bench->base_level); // backtrack in offset_manager offset_manager_backtrack(&bench->manager, bench->decision_level); } // bactrack once more equality_queue_backtrack(&bench->equeue); test_bench_undo_subst(bench); test_bench_undo_activations(bench); bench->decision_level --; bench->base_level --; if (bench->show_details) { // print state after pop printf("AFTER POP: decision level = %"PRIu32", base level = %"PRIu32"\n", bench->decision_level, bench->base_level); normalize_all(bench); printf("Active polys\n"); print_active_polys(bench); printf("Assertions\n"); print_all_equalities(bench); printf("Normal forms\n"); print_normal_forms(bench); } offset_manager_pop(&bench->manager); ctr ++; }