Tenho alguns pontos que formam um poligono. Em determinado momento preciso saber quais pontos estão posicionados dentro desse poligono.
Pesquisei e vi a classe GeneralPath, quando a precisão não é grande ele funciona corretamente, porém quando tenho uma precisão alta ele me retorna false…
Resolvi o problema para o meu caso reduzindo a precisão da aquisição das coordenadas, porém é interessante para a comunidade conseguirmos a resposta para essa questão.
Abraço,
E
entanglement
Você está querendo saber se um ponto está dentro de um triângulo, certo?
Nesse caso desse triângulo absurdamente fino ( 9.99999999717344, 10.000000002836707 e 10.000000002887727 ) você intuitivamente sabe que ele fica dentro do triângulo, mas se você fosse fazer as contas com double você mesmo, tem certeza que o seu algoritmo, com a precisão do double, iria corretamente indicar que está dentro do triângulo?
Emersonsts
Olá entanglement,
No meu caso é o seguinte: eu tenho um gráfico feito com a biblioteca JFreeChart, no gráfico o usuário consegue com cliques do mouse criar um polígono. Estou conseguindo desenhar o polígono corretamente no gráfico (e por isso eu sei que o ponto está dentro dele), mas na hora que utilizo o método “contains” ele não consegue me afirmar isso.
Se você já estudou cálculo numérico, provavelmente esse é um problema “mal-condicionado”. Uma forma de melhorar o condicionamento de um problema desses é você deixar o triângulo “mais gordinho”. Por exemplo, converter o triângulo
é um “condicionamento” do problema (para evitar trabalhar com diferenças de números muito próximos).
Então você não testaria o ponto 10.0, 20.0 e sim o ponto 0.0, 20.0: