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();
 }
Ejemplo n.º 4
0
// 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 ++;
}
Ejemplo n.º 5
0
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 ++;
}
Ejemplo n.º 6
0
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 ++;
}