Hola de antemano le agradesco q me ayuden
bueno lo q deseo es q me ayuden para dibujar la interseccion de dos figuras,
he tratado con la funcion floodfill para hallar un puntos q este en la
interseccion de las dos figuras y de ah9 pasrles esa coordenadas a la funcion
floodfill la cual rellenara hasta encontrar bordes pero parece q mi algrtimo
sta mal porq siempre el punto q encentra es uno q esta afuera de las dos
figuras y rellena la parte de afuera.
Les paso la clase cuadradop pero en realida son varias figuras q heredean de
figura de poligono en fin....
class Cuadrado : public Figura
{
protected:
int lado;
public:
Cuadrado();
Cuadrado(int l,Punto o);
void setlado(int l);
void setorig(Punto o);
Punto get_Vertice(int i);
void grafica();
double area();
double perimetro();
int get_inter(int a,int b);
void grafica_inter(Punto o1);
void mayor(int& a,int& b);
};
Cuadrado :: Cuadrado():Figura()
{
lado=0;
}
Cuadrado :: Cuadrado(int l, Punto o):Figura(o)
{
lado=l;
}
void Cuadrado :: setlado(int l)
{
Punto aux;
lado=l;
/*/for(int i=0;i<4;i++)
{
aux=get_Vertice(i);
lados[2*i]=aux.get_x();
lados[2*i+1]=aux.get_y();
} */
}
void Cuadrado :: setorig(Punto o)
{
orig=o;
}
Punto Cuadrado :: get_Vertice(int i)
{
int x,y;
Punto aux;
switch(i)
{
case 0:
x=orig.get_x();
y=orig.get_y();break;
case 1:
x=orig.get_x();
y=orig.get_y()-lado;break;
case 2:
x=orig.get_x()+lado;
y=orig.get_y()-lado;break;
case 3:
x=orig.get_x()+lado;
y=orig.get_y();break;
}
return Punto(x,y);
}
void Cuadrado :: mayor(int& a,int& b)
{
int aux;
if(a<b)
{
aux=a;
a=b;
b=aux;
}
}
void Cuadrado :: grafica()
{
int x1,y1,x2,y2;
Punto aux;
for(int i=1;i<=3;i++)
{
aux=get_Vertice(i);
x1=orig.get_x();
y1=orig.get_y();
x2=aux.get_x();
y2=aux.get_y();
line(x1,y1,x2,y2);
x1=x2;
y1=y2;
}
line(x1,y1,orig.get_x(),orig.get_y());
}
double Cuadrado :: area()
{
return(pow(lado,2));
}
double Cuadrado :: perimetro()
{
return 4*lado;
}
//en cuentra un numero q esta entre esos dos rangos q son los limites de la
intersccion
int Cuadrado :: get_inter(int a,int b)
{
int n;
int ea,eb;
n=(a+ rand() % (b-1) );
return n;
}
void Cuadrado :: grafica_inter(Punto o1)
{
int base1,base2,alt1,alt2,b,h;
base1=orig.get_x();
base2=o1.get_x();
alt1=orig.get_y();
alt2=o1.get_y();
if(base2-base1<lado)
{
//punto en el eje x
b=get_inter(base1,base2);
mayor(alt2,alt1);
//alt2 debe ser el mayor
//punto en el eje y
h=get_inter(alt1,alt2);
floodfill(b,h,9);
}
}
Bueno es o es todo no kiero necesariamnte el codigo sino q me dan una idea de
algoritmo q necesito para hallar un punto q este dentro de la interseccion de
las dos figuras
---------------------------------
¿Con Mascota por primera vez? - Sé un mejor Amigo
Entra en Yahoo! Respuestas.
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion