tener cuidado, si va a ampliar su algoritmo para muchos puntos, el sondeo de los puntos adyacentes es mejor hacerlo utilizando un índice espacial. No estoy al tanto de la existencia de índices espaciales usando coordenadas polares, y estoy seguro de que serían un poco complejos de implementar/usar. Así que si usted tiene:
- un montón de puntos, la sonda
- con más frecuencia que los puntos en movimiento,
hacerse la pregunta si debe usar coordenadas cartesianas y un índice espacial.
hacer sus propios cálculos de acuerdo con su caso de uso típico:
Usando cartesiano junto coordenadas polares:
- conversión polar a cartesiano se realiza sólo cuando un punto se mueve, e involucrar a dos trigonométrica funciones;
- Encontrar puntos más cercanos que una cierta distancia a otro punto se puede hacer en O (1) tiempo (dependiendo de la distancia promedio, el tamaño del índice espacial, el número de puntos ...), y no implica nada aparte de adds/multiplicalies (ni siquiera raíces cuadradas, se compara la distancia al cuadrado).
utilizando sólo coordenadas polares:
- Scanning para todos los puntos w/o índice espacial es O (n);
- Esto implica una función trigonométrica por comparación (por lo tanto n llamadas trigonométricas por sonda).
Sé consciente de que están llenas de sangre TRIGS costoso en tiempo de cálculo.
¿Algún algoritmo euclidiano funciona para usted? – Lostsoul
Puede calcular los radios y el arco que corresponden al segmento que contiene completamente su punto y radio de búsqueda, luego examinar todos los otros puntos dentro de esos límites. Eventualmente, por supuesto, tienes que calcular de alguna manera las distancias entre esos puntos y los tuyos. –