Advertisement
rubias1992

Untitled

Feb 27th, 2015
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. double calcularError(const vector<Punto2D> &contorno, const vector<int> &aproximacionPoligonal)
  2. {
  3. int i,j,a,b;
  4. Punto2D p1,p2,pError;
  5. Recta2D rectAprox;
  6. double error=0.0;
  7. for (i=0; i<aproximacionPoligonal.size();i++)
  8. {
  9. //meto en a el indice del primer punto
  10. a=aproximacionPoligonal[i];
  11. /*meto en b el indice del segundo punto y como el contorno es circular,
  12. en caso de que a contenga el ultimo punto, meto el primer indice*/
  13. if (i==(aproximacionPoligonal.size()-1))
  14. {
  15. b=aproximacionPoligonal[0];
  16.  
  17. }
  18. else
  19. {
  20. b=aproximacionPoligonal[i+1];
  21. }
  22.  
  23.  
  24. //p1 y p2 seran los puntos con sus coordenadas x e y
  25. p1= contorno[a];
  26. p2= contorno[b];
  27.  
  28. rectAprox=Recta2D(p1,p2);//creamos la recta que une los dos puntos con el constructor
  29.  
  30.  
  31. if (i<aproximacionPoligonal.size()-1)//si no estoy en el ultimo punto calculo normal
  32. {
  33. for (j=(a+1);j<(b-1);j++)//recorrerá todos los puntos entre a y b
  34. {
  35.  
  36. pError=contorno[j];
  37.  
  38. error=(error+ pow(rectAprox.distancia(pError),2));
  39.  
  40.  
  41. }
  42. }
  43. else //si estoy en el ultimo punto
  44. {
  45. /*desde j hasta hasta size de abrelatas.txt
  46. y desde 0 hasta b-1
  47. */
  48. for (j=(a+1);j<(contorno.size());j++)//recorrerá todos los puntos entre a y b
  49. {
  50.  
  51. pError=contorno[j];
  52.  
  53. error=(error+ pow(rectAprox.distancia(pError),2));
  54.  
  55. }
  56.  
  57.  
  58. for (j=0;j<(b-1);j++)//recorrerá todos los puntos entre a y b
  59. {
  60.  
  61. pError=contorno[j];
  62.  
  63. error=(error+ pow(rectAprox.distancia(pError),2));
  64.  
  65. }
  66.  
  67.  
  68.  
  69. }
  70.  
  71.  
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement