Advertisement
Guest User

Untitled

a guest
Dec 12th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. void PrzetwarzatorObrazow::CalcMoments8(PrzetwarzatorObrazow * source)
  2. {
  3. BITMAPINFOHEADER header = source->getInfo()->bmiHeader;
  4. int width = header.biWidth;
  5. int height = header.biHeight;
  6.  
  7. std::vector<CPoint> obj = source->selectedObject;
  8.  
  9. // u00
  10. double u00 = obj.size();
  11.  
  12. // u10 = /x
  13. double u10 = 0;
  14. for (int i = 0; i < obj.size(); i++)
  15. u10 += obj[i].x;
  16. u10 /= u00;
  17.  
  18. // u01 = /y
  19. double u01 = 0;
  20. for (int i = 0; i < obj.size(); i++)
  21. u01 += (height - obj[i].y);
  22. u01 /= u00;
  23.  
  24. // u20
  25. double u20 = 0;
  26. for (int i = 0; i < obj.size(); i++)
  27. u20 += pow(obj[i].x - u10, 2);
  28. u20 /= u00;
  29.  
  30. // u02
  31. double u02 = 0;
  32. for (int i = 0; i < obj.size(); i++)
  33. u02 += pow((height - obj[i].y) - u01, 2);
  34. u02 /= u00;
  35.  
  36. // u11
  37. double u11 = 0;
  38. for (int i = 0; i < obj.size(); i++)
  39. u11 += (obj[i].x - u10) * ((height - obj[i].y) - u01);
  40. u11 /= u00;
  41.  
  42. // o z kreska w srodku
  43. double o = 0.5 * atan((2 * u11) / (u20 - u02));
  44.  
  45. double pi = 3.14159265;
  46. double oDegree = o * 180 / pi;
  47. selectedMoments = CalcMomentsValues(u00, u10, u01, u20, u02, u11, oDegree);
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement