Tengo un cuadrado y distintos puntos en un plano. De cada punto sabemos su ejex y ejey. Pretendo calcular que punto es más cercano a cada vértice del cuadrado.
Cada punto se refiere a un peaton y tiene la siguiente estructura
Código
struct Vpeaton { int ad_peaton; //numero del punto double adg_x; //eje x del punto double adg_y; //eje y del punto }; typedef std::vector<Vpeaton> V_peaton;
Mientras que el cuadrado viene definido por los vertices (xsup,ysup), (xsup, yinf), (xinf,ysup) y (xinf,ysup).
Este es el código que he escrito para averiguar el punto más cercano a cada esquina del cuadrado. Pero no me funciona y no se en que falla.
Código
V_peaton Areas; //buscar peston cercano a cada esquina. distminXsYs = sqrt((xsup-Areas[0].adg_x)*(xsup-Areas[0].adg_x)+(ysup-Areas[0].adg_y)*(ysup-Areas[0].adg_y)); distminXiYs = sqrt((xinf-Areas[0].adg_x)*(xinf-Areas[0].adg_x)+(ysup-Areas[0].adg_y)*(ysup-Areas[0].adg_y)); distminXsYi = sqrt((xsup-Areas[0].adg_x)*(xsup-Areas[0].adg_x)+(yinf-Areas[0].adg_y)*(yinf-Areas[0].adg_y)); distminXiYi = sqrt((xinf-Areas[0].adg_x)*(xinf-Areas[0].adg_x)+(yinf-Areas[0].adg_y)*(yinf-Areas[0].adg_y)); for(int i=1; i<Areas.size(); i++) { dist1 = sqrt((xsup-Areas[i].adg_x)*(xsup-Areas[i].adg_x)+(ysup-Areas[i].adg_y)*(ysup-Areas[i].adg_y)); dist2 = sqrt((xinf-Areas[i].adg_x)*(xinf-Areas[i].adg_x)+(ysup-Areas[i].adg_y)*(ysup-Areas[i].adg_y)); dist3 = sqrt((xsup-Areas[i].adg_x)*(xsup-Areas[i].adg_x)+(yinf-Areas[i].adg_y)*(yinf-Areas[i].adg_y)); dist4 = sqrt((xinf-Areas[i].adg_x)*(xinf-Areas[i].adg_x)+(yinf-Areas[i].adg_y)*(yinf-Areas[i].adg_y)); if(dist1<distminXsYs) { distminXsYs=dist1; peaton_1=Areas[i].ad_peaton; } if (dist2<distminXiYs) { distminXiYs=dist2; peaton_2=Areas[i].ad_peaton; } if(dist3<distminXsYi); { distminXsYi=dist3; peaton_3=Areas[i].ad_peaton; } if(dist4<distminXiYi); { distminXiYi=dist4; peaton_4=Areas[i].ad_peaton; } }