Hola.
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
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.
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 (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
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;
}
}