Ir para o conteúdo
HQuintas

Detectar um ponto dentro de poligono

Mensagens Recomendadas

HQuintas

Boa tarde

Tentei adaptar o codigo http://www.jc-mouse.net/desarrollo-web/detectar-un-punto-dentro-de-un-poligono-html5

Mas não estou conseguindo por a funcionar.

Function insidePolygon(pointList() As Point, p As Point) As Boolean
 Dim counter As Integer = 0
 Dim i As Integer = 0
 Dim xinters As Integer = 0
 Dim p1 As Point = New Point(0, 0)
 Dim p2 As Point = New Point(0, 0)
 Dim n As Integer = pointList.Length
 p1 = pointList(0)
 For i = 1 To n - 1
	 p2 = pointList(i Mod n)
	 If p.Y > Math.Min(p1.Y, p2.Y) Then
		 If p.Y <= Math.Max(p1.Y, p2.Y) Then
			 If p.X <= Math.Max(p1.X, p2.X) Then
				 If p1.Y <> p2.Y Then
					 xinters = (p.Y - p1.Y) * (p2.X - p1.X) / (p2.Y - p1.Y) + p1.X
					 If (p1.X = p2.X) Or (p.X <= xinters) Then
						 counter += 1
					 End If
				 End If
			 End If
		 End If
	 End If
	 p1 = p2
 Next i

 If (counter Mod 2 = 0) Then
	 Return (False)
 Else
	 Return (True)
 End If
End Function

Também tenho estudando, ver se encontro uma forma mais simples de obter o numero de intercessões, que uma linha imaginária horizontal (contendo o ponto) que passa pelo poligono.

Tambem tenho uma forma mais simples de saber se um ponto pertece ou não a um poligono (usando path.IsVisible), mas queria perceber o algoritmo.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.