Ejemplo n.º 1
0
int punto_convexhull (punto3d punto, punto3d *hull, int k)
{
    register int i;
    punto3d centro = centroide(hull, k);
    punto3d P = punto3d(punto.x, punto.y, centro.z);
    for (i=0; i<k; i++)
    {
        if((((centro-hull[i])^(hull[(i+1)%k]-hull[i])).z>0)!=(((P-hull[i])^(hull[(i+1)%k]-hull[i])).z>0)) return (0);
    }
    /*   for (i=1; i<k; i++)
    {
    	if((((centro-hull[i-1])^(hull[i]-hull[i-1])).z>0)!=(((P-hull[i-1])^(hull[i]-hull[i-1])).z>0)) return (0);
    }
    if((((centro-hull[k])^(hull[0]-hull[k])).z>0)!=(((P-hull[k])^(hull[0]-hull[k])).z>0)) return (0);*/
    return (1);		            //El puntos esta del mismo lado de los semiplanos que el ctentroide, esta en su interior.
}
Ejemplo n.º 2
0
/**
 *  Calculamo el centro de gravedad de la imagen como aproximacion al centro de la misma
 *  y asi aplicar Hough entorno al mismo minimizar coste computacionaly
 *

 *
 *  @param im_in Contiene la imagen a analizar
 *
 *  @return Point Devolvemos las coordenadas del centro
 */
Point Centrodegravedad (const Vector<Point> puntos){
	Point centroide(0,0);
	double x = 0;
	double y = 0;
	for (unsigned int i=0; i < puntos.size(); i++){
		x += puntos[i].x;
		y += puntos[i].y;
	}

	x /= puntos.size();
	y /= puntos.size();

	centroide.x = x;
	centroide.y = y;

	cout << "Centroide.X: " << centroide.x  << "\tCentroide.Y: " << centroide.y << endl;
	return centroide;
}
Ejemplo n.º 3
0
int main(void){
	//***allocate memory resources for a list of NUM_PUNTOS 2D points

	struct punto_t pres;
	int p=0;	
	int x=0; int y=0;
	
	for(p=0; p<NUM_PUNTOS; p++){
		printf("Introduzca las coordenadas X Y del punto\n");
		scanf("%d %d", &x, &y);
		pv[p].x=x; pv[p].y=y;
	}

	pres=centroide(pv, NUM_PUNTOS);
	printf("(%.3f, %.3f)\n",pres.x, pres.y);

	//***free memory resources appropiately
	return 0;
}