ayuda porfavor
Publicado por juan (1 intervención) el 06/07/2013 17:28:57
buenas dias
quisiera pedir ayuda a astedes sobre un ejercicio
mi profesor de metodos me dejo un trabajo donde consiste en hacer un algoritmo en matlab sobre determinar si un punto esta en un poligono pero no encuentro respuesta.
lo que eh estudiado me dice que debo de cojer el punto y trazar rectas verticales u horizontales y mirara las intersecciones . si la interseccion es par el punto esta por afuera si la interseccion es impar el punto esta por dentro.
determinar si un punto esta en un poligono.
encontre algoritmos en lenguaje c pero no se como pasarlos a matlab matlab
bool test_del_rayo(list<segmento> Poligono, punto P){
int cortes = 0;
segmento semirecta;
semirecta.p1.x = P.x; semirecta.p1.y = P.y;
semirecta.p2.x = INFINITO; semirecta.p1.y = P.y;
list<segmento>::iterator S;
for(S = Poligono.begin(); S != Poligono.end(); S++)
if(max(*S.p1.x,*S.p2.x) > semirecta.p1.x)
if(ver_se_cortan(*S,Q)
cortes++;
if(mod(cortes,2) == 0)//la cantidad de cortes es par
return 0;//esta fuera
return 1;//esta dentro
y el otro es
#define MIN(x,y) (x < y ? x : y)
#define MAX(x,y) (x > y ? x : y)
#define INSIDE 0
#define OUTSIDE 1
typedef struct {
double x,y;
} Point;
int InsidePolygon(Point *polygon,int N,Point p)
{
int counter = 0;
int i;
double xinters;
Point p1,p2;
p1 = polygon[0];
for (i=1;i<=N;i++) {
p2 = polygon[i % N];
if (p.y > MIN(p1.y,p2.y)) {
if (p.y <= MAX(p1.y,p2.y)) {
if (p.x <= MAX(p1.x,p2.x)) {
if (p1.y != p2.y) {
xinters = (p.y-p1.y)*(p2.x-p1.x)/(p2.y-p1.y)+p1.x;
if (p1.x == p2.x || p.x <= xinters)
counter++;
}
}
}
}
p1 = p2;
}
if (counter % 2 == 0)
return(Fuera);
else
return(Dentro);
}
quisiera pedir ayuda a astedes sobre un ejercicio
mi profesor de metodos me dejo un trabajo donde consiste en hacer un algoritmo en matlab sobre determinar si un punto esta en un poligono pero no encuentro respuesta.
lo que eh estudiado me dice que debo de cojer el punto y trazar rectas verticales u horizontales y mirara las intersecciones . si la interseccion es par el punto esta por afuera si la interseccion es impar el punto esta por dentro.
determinar si un punto esta en un poligono.
encontre algoritmos en lenguaje c pero no se como pasarlos a matlab matlab
bool test_del_rayo(list<segmento> Poligono, punto P){
int cortes = 0;
segmento semirecta;
semirecta.p1.x = P.x; semirecta.p1.y = P.y;
semirecta.p2.x = INFINITO; semirecta.p1.y = P.y;
list<segmento>::iterator S;
for(S = Poligono.begin(); S != Poligono.end(); S++)
if(max(*S.p1.x,*S.p2.x) > semirecta.p1.x)
if(ver_se_cortan(*S,Q)
cortes++;
if(mod(cortes,2) == 0)//la cantidad de cortes es par
return 0;//esta fuera
return 1;//esta dentro
y el otro es
#define MIN(x,y) (x < y ? x : y)
#define MAX(x,y) (x > y ? x : y)
#define INSIDE 0
#define OUTSIDE 1
typedef struct {
double x,y;
} Point;
int InsidePolygon(Point *polygon,int N,Point p)
{
int counter = 0;
int i;
double xinters;
Point p1,p2;
p1 = polygon[0];
for (i=1;i<=N;i++) {
p2 = polygon[i % N];
if (p.y > MIN(p1.y,p2.y)) {
if (p.y <= MAX(p1.y,p2.y)) {
if (p.x <= MAX(p1.x,p2.x)) {
if (p1.y != p2.y) {
xinters = (p.y-p1.y)*(p2.x-p1.x)/(p2.y-p1.y)+p1.x;
if (p1.x == p2.x || p.x <= xinters)
counter++;
}
}
}
}
p1 = p2;
}
if (counter % 2 == 0)
return(Fuera);
else
return(Dentro);
}
Valora esta pregunta


0