Beruflich Dokumente
Kultur Dokumente
G
e
o
m
e
t
r
a
C
o
m
p
u
t
a
c
i
o
n
a
l
Localizacin de puntos
Curso: 1 de Ingeniera Informtica, Plan 2004
Profesora: Lidia Ortega Alvarado
Departamento: Informtica
Curso acadmico: 2011/12
Ubicacin: http://wwwdi.ujaen.es/asignaturas/gc/tema4.odp
Actualizado: 03/11/2010
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
ndice
Introduccin
Punto en Polgono
Mapas trapezoidales
Mtodo de la cadena
Bibliografa
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
Introduccin
Los problemas de localizacin responden a la siguiente
pregunta: en qu posicin pinchamos en el mapa?
o lo que es lo mismo, dada un subdivisin del plano, cual es
la regin donde se encuentra el punto p?
una divisin del plano (del espacio, de un polgono, etc.) es
una particin en regiones, de modo que la unin de ellas es
el plano (polgono, espacio, etc.) y la interseccin es el conjunto
de ejes o semiejes que les sirven de frontera entre las regiones.
Punto en polgono
q
est q dentro de P?
P
1
2 3 4
5
si el nmero de intersecciones es impar q est dentro
si el nmero de intersecciones es par q no est dentro
1
2
3
4
5
q
6
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
P x y
0
1
2
...
n-2
n-1
Suponemos
P como un
array nx2
p
2
Punto en polgono
q
P
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
origen de
coordenadas
FUNCTION PuntoEnPoligono (P:Poligono; q:Punto; n:Entero):Lgico
ENTRADA: El punto q que est dentro o no del polgono P de tamao n
SALIDA: Verdadero si q est dentro de P
Falso en caso contrario
INICIO
PARA i <- 0 HASTA n-1 REPETIR
PARA j <- 0 HASTA 1 REPETIR
P[i,j] <- P[i,j]-q[j]
cross <- 0
PARA i <- 0 HASTA n-1 REPETIR
i1 <- (i+n-1) mod n
SI (((P(i,1)>0 AND P(i1,1)<=0)) OR
((P(i1,1)>0 AND P(i,1)<= 0 )))
ENTONCES
x <- P(i,0)*P(i1,1)-P(i1,0)*P(i,1)/(P(i1,1)-P(i,1))
SI x > 0 ENTONCES cross <- cross + 1
SI (cross mod 2) = 1
ENTONCES PuntoEnPoligono <- verdad
SINO PuntoEnPoligono <- false
FIN.
1
2
3
4
5
6
Punto en polgono
P
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
Tiempo de ejecucin: O(n)
Mejora para polgonos
convexos O(logn)
q
Los vrtices de un polgono
convexo estn ordenados
angularmente con algn punto
interior, por ejemplo el centroide
0
1
2
3
4
5
6
7
8
9
c
Punto en polgono
P
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
q
0
1
2
3
4
5
6
7
8
9
c
Bsqueda dicotmica:
Izquierda(q,c,4) = F
Izquierda(q,c,5) = F
Buscar a la izquierda
Izquierda(q,c,2) = V
Izquierda(q,c,3) = V
Buscar a la derecha
Izquierda(q,c,3) = V
Izquierda(q,c,4) = F
Encontrado
r
Diferenciar entre dentro y fuera:
Izquierda(3,4,q) = V
Dentro
Izquierda(3,4,r) = F
Fuera
Punto en polgono
P
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
Tiempo de ejecucin: O(logn)
Este mtodo es tambin
vlido para polgonos
estrellados
Un polgono es estrellado cuando existe al menos un punto en su
interior desde el cual todos los segmentos qp
i
estn dentro de P.
Al conjunto de puntos que cumplen esta condicin se le llama
ncleo del polgono.
0
1
2
3
4
5
6
7
8
9
c
c
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
Mtodo de las franjas
1.- Pintamos fanjas verticales
(horizontales) infintias en cada
vrtice. Cada una de las n-1
franjas carece de vrtices
2.- Ordenamos las franjas en
tiempo O(n logn)
3.- Buscar en las franjas
verticales en tiempo O(logn)
4.- Buscar horizontalmente en
la franja elegida
Es importante que las bsquedas se realicen en tiempo
logartmico utilizando estructuras de datos adecuadas
q
q
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
q
Tiempo de ejecucin (Mtodo de las franjas): O(logn)
Carga de datos: O(n
2
), aunque normalmente es O(n*n
1/2
)
Una mejora al mtodo de las franjas en cuanto a la carga
de datos es el mapa trapezoidal
Mapas trapezoidales
1.- Metemos la subdivisin plana
en un rectngulo.
Si q est fuera del rectngulo,
tambin lo est fuera de la
subdivisin plana
2.- Pintamos fanjas verticales
(horizontales) hacia arriba y hacia
abajo hasta encontrar un
obstculo.
La carga de datos es lineal
6n+4 vrtices y 3n+1 trapecios
Una cara de un mapa trapezoidal tiene una
o dos lados verticales y exactamente dos no
verticales, es decir, es un trapecio o un
tringulo
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
Bsqueda binaria en mapas
trapezoidales
3.- Contruir un grafo acclico que
soporte dicha particin:
1 raz,
n
Algoritmo aleatorio incremental
(mapas trapezoidales)
A
B
C
D
p
1
r
1
s
1
p
1
r
1 A
s
1
B C
D
s
2
p
2
r
2
T =mapa trapezoidal
D =rbol o estructura de datos
Para cada uno de los n segmentos
1.- Elegir un segmento s
i
aleaoriamente
2.- Encontrar los k trapecios en T
intersectados tras colocar s
i
3.- Eliminar esos k trapecios
en T e insertar los nuevos
tras colocar s
i
4.- Eliminar las k hojas
de D y crear nuevas hojas
de acuerdo con el siguiente
mtodo
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
A
B
C
D
F
E
G
p
1
r
1
p
2
r
2
s
1
s
2
p
1
r
1 A
s
1
B C
D
Algoritmo aleatorio incremental
(mapas trapezoidales)
T =mapa trapezoidal
D =rbol o estructura de datos
Para cada uno de los n segmentos
1.- Elegir un segmento s
i
aleaoriamente
2.- Encontrar los k trapecios en T
intersectados tras colocar s
i
3.- Eliminar esos k trapecios en T
e insertar los nuevos tras colocar s
i
4.- Eliminar las k hojas de D y
crear nuevas hojas de acuerdo con
el siguiente mtodo
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
A
B
C
D
F
E
G
p
1
r
1
p
2
r
2
s
1
s
2
p
1
r
1
s
1
r
2
s
2
B
p
2
s
2 C
D
F
G
E
T =mapa trapezoidal
D =rbol o estructura de datos
Modificar D despus de colocar a s
i
4.1.- Colocar p
i
y s
i
en D
4.2.- Colocar r
i
y s
i
en D
A Tiempos:
Carga de datos:
O(n), esperado
Tiempo de construccin:
O(nlogn), esperado
Tiempo de localizacin:
O(logn), esperado
Algoritmo aleatorio incremental
(mapas trapezoidales)
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
Mtodo de la cadena
n
Mtodo de la cadena
n
Mtodo de la cadena
n
Algoritmo para asignar pesos
1.- Asignar a todos los vrtices el peso 1
Peso(e
i
)=1, para todo i
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
2.- PARA i = 1 HASTA n-2 REPETIR
Pesos_entrada(V
i
)= suma de los pesos de entrada de los ejes de V
i
SI (Pesos_entrada(V
i
) > Pesos_salida(V
i
)) {
d
1
= el eje de salida ms a la izquierda de V
i
Pesos(d
1
) = Pesos_entrada(V
i
) Pesos_salida(V
i
) + 1
FIN_SI
FIN_PARA 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1X 2
4>2
3 X
2>1
X 2
1=1
1=1
3>2
2=2
1<3
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
3.- PARA i = n-2 HASTA 1 REPETIR
Pesos_salida(V
i
)= suma de los pesos de entrada de los ejes de V
i
SI (Pesos_salida(V
i
) > Pesos_entrada(V
i
)) {
d
2
= el eje de entrada ms a la izquierda de V
i
Pesos(d
2
) = Pesos_salida(V
i
) Pesos_entrada(V
i
) + Pesos(d
2
)
FIN_SI
FIN_PARA
1
1
1
1
1
1
1
1
1
1
2
1
3
1
1
2
2=2
1=1
4=4
3=3
2=2
3>1
3 X
1=1
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
C
1
C
2
C
3
C
4
C
5
C
6 C4
C2 C6
C1 C3 C5
Tiempo para regularizar un PSLG con n vrtices: O(n logn)
Carga de datos: O(n)
Tiempo de construccin: O(n logn)
Localizacin en subdivisin plana
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
C
1
C
2
C
3
C
4
C
5
C
6
C4
C2 C6
C1 C3 C5
Ejemplo de localizacin: dnde est q?
q decha
izda
decha
q
Tiempo de localizacin
(Mtodo de la cadena):
O(log
2
n)
Bibliografa
P
r
o
b
l
e
m
a
s
d
e
l
o
c
a
l
i
z
a
c
i
n
OROURKE Joseph. Computational Geometry in C. Cambridge University
Press. 1998 (captulo 2 y 7)
PREPARATA F.P., SHAMOS M.I. Computational Geometry. An Introduction.
Springer-Verlag. 1985 (captulo 2)
BERG, KREVELD, OVERMARS, SCHWARZKOPF. Computational
Geometry, Algorithms and Applications. Springer. 1997 (captulo 6)