Oui, bien que la réponse complète soit trop longue pour cet espace.
Tout d'abord, à moins que vous avez beaucoup de nœuds, alors linéaire sera très probablement bien, et vous ne devriez pas changer quoi que ce soit à moins la performance est déjà vu souffrir. Deuxièmement, vous voulez généralement appliquer une sorte de décomposition hiérarchique, par exemple quadtree. C'est une façon d'utiliser plus de mémoire (et plus de temps à l'avance, amorti pendant les recherches) pour éliminer les éléments à considérer dans une «phase large». Une certaine diligence sur le web aidera, tout comme le livre "Real-Time Collision Detection", de Christer Ericson.
C'est la direction que je pensais mais qui m'oblige à l'implémenter moi-même. Peut-être est-il préférable d'utiliser java3d et d'utiliser le SceneGraph et le picking déjà implémentés. – stimpie
+1 pour "optimiser quand vous en avez besoin". –