Matlab - ayuda porfavor

 
Vista:

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);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder