Recogiendo en java 2d
graphics 3d (2)
Sí, aunque la respuesta completa sería demasiado larga para este espacio.
En primer lugar, a menos que tengas muchos nodos, lo más probable es que lo lineal sea correcto, y no deberías cambiar nada a menos que el rendimiento ya se vea afectado.
Segundo, lo que quiere, en general, es aplicar algún tipo de descomposición jerárquica, como un quadtree . Esta es una forma de utilizar más memoria (y más tiempo por adelantado, amortizado durante las búsquedas) para eliminar elementos de consideración en la llamada "fase amplia". Un poco de diligencia en la web ayudará, al igual que el libro " Detección de colisión en tiempo real ", por Christer Ericson.
Estoy usando java2d para dibujar un gráfico simple en el momento en que implementé picking llamando a contains (MousePoint) para cada objeto / forma, esto funciona pero escala linealmente.
¿Hay un método más eficiente para elegir en java2d?
Siempre que solo selecciones las formas del área (rectángulos, círculos), debería funcionar con el método contains (). Solo hay una trampa en caso de que tenga formas superpuestas y señale un lugar donde las formas realmente se superponen. Pero esa es una cuestión de requisito si desea seleccionar todas las formas, la de arriba o la primera que encuentre en su colección.
El método contains () no funcionará en caso de que desee seleccionar formas de tipo Line2D. No tienen un área, por lo que el método contains () siempre devuelve falso. Pero ya hay una solución en SO para este problema .