Cubic.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "Cubic.h"
  2. #include <algorithm>
  3. // 001B683C
  4. int Cubic::degree() {
  5. if (fabsf(list_0[0]) >= 0.000001 || fabsf(list_0[1]) >= 0.000001) return 3;
  6. if (fabsf(list_0[2]) >= 0.000001 || fabsf(list_0[3]) >= 0.000001) return 2;
  7. if (fabsf(list_0[4]) >= 0.000001 || fabsf(list_0[5]) >= 0.000001) return 1;
  8. if (fabsf(list_0[6]) >= 0.000001 || fabsf(list_0[7]) >= 0.000001) return 0;
  9. return -1;
  10. }
  11. // 001b6c48
  12. void sort(cFloat* pf0, int r1_count) {
  13. // loc_1B6C58
  14. for (int i_r2 = 0; i_r2 < 3; i_r2++) { // loc_1B6C58
  15. if (fabs(pf0[i_r2].field_4) >= 1.0e-6f || i_r2 >= r1_count ||
  16. pf0[i_r2].field_0 < 0) { // loc_1B6C80
  17. pf0[i_r2].field_0 = 1000.0f;
  18. pf0[i_r2].field_4 = 0;
  19. }
  20. // loc_1B6C88
  21. }
  22. // 001B6C8E
  23. //优化后的冒泡
  24. for (int i_lr = 0; i_lr < r1_count; i_lr++) { //.text:001B6C98
  25. int d_r12 = 0;
  26. int r3_i=0;
  27. cFloat*r4_pf=pf0+r3_i;
  28. while(r3_i<r1_count - 1){
  29. if(r4_pf->field_0>(r4_pf+1)->field_0){
  30. //001B6CC2
  31. cFloat r4r12_cfloat=*r4_pf;
  32. *r4_pf=*(r4_pf+1);
  33. *(r4_pf+1)=r4r12_cfloat;
  34. r4_pf=pf0+r3_i+1;
  35. d_r12=1;
  36. }else
  37. {
  38. r3_i++;
  39. }
  40. }
  41. // loc_1B6CDA
  42. if (!(d_r12)) break;
  43. }
  44. // locret_1B6CE4
  45. }