Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- double calcularError(const vector<Punto2D> &contorno, const vector<int> &aproximacionPoligonal)
- {
- int i,j,a,b;
- Punto2D p1,p2,pError;
- Recta2D rectAprox;
- double error=0.0;
- for (i=0; i<aproximacionPoligonal.size();i++)
- {
- //meto en a el indice del primer punto
- a=aproximacionPoligonal[i];
- /*meto en b el indice del segundo punto y como el contorno es circular,
- en caso de que a contenga el ultimo punto, meto el primer indice*/
- if (i==(aproximacionPoligonal.size()-1))
- {
- b=aproximacionPoligonal[0];
- }
- else
- {
- b=aproximacionPoligonal[i+1];
- }
- //p1 y p2 seran los puntos con sus coordenadas x e y
- p1= contorno[a];
- p2= contorno[b];
- rectAprox=Recta2D(p1,p2);//creamos la recta que une los dos puntos con el constructor
- if (i<aproximacionPoligonal.size()-1)//si no estoy en el ultimo punto calculo normal
- {
- for (j=(a+1);j<(b-1);j++)//recorrerá todos los puntos entre a y b
- {
- pError=contorno[j];
- error=(error+ pow(rectAprox.distancia(pError),2));
- }
- }
- else //si estoy en el ultimo punto
- {
- /*desde j hasta hasta size de abrelatas.txt
- y desde 0 hasta b-1
- */
- for (j=(a+1);j<(contorno.size());j++)//recorrerá todos los puntos entre a y b
- {
- pError=contorno[j];
- error=(error+ pow(rectAprox.distancia(pError),2));
- }
- for (j=0;j<(b-1);j++)//recorrerá todos los puntos entre a y b
- {
- pError=contorno[j];
- error=(error+ pow(rectAprox.distancia(pError),2));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement