Markierung eines Gitterpunktes im 3D-Raum
-
Hallo liebe Community
Ich hätte gern mal eure Meinungen und Vorschläge zum genannten Problem. Ich habe also ein Polygonnetz gegeben und jenes auch visuell in einem OpenGL-Fenster vorliegen. Nun möchte ich durch klicken in das Fenster auf das Modell einen Punkt markieren.
Dabei bin ich noch nicht ganz sicher, wie ich das realsieren könnte. Ich habe überlegt, vom Punkt, auf den ich klicke, einen Strahl "nach hinten" zu schießen und den Punkt auszuwählen, der dem Strahl am dichtesten liegt. Klingt zwar einfach, aber bei 32000 Punkten kann das schon mal ausarten, zumal die Wurzelfunktion zur Abstandsberechnung auch etwas kostenintensiv ist.
Hättet ihr vielleicht Ideen oder Vorschläge dazu, oder vielleicht einen Link mit einer nützlichen Anleitung dazu?
MfG
Neron
-
Neron17 schrieb:
Hallo liebe Community
Ich hätte gern mal eure Meinungen und Vorschläge zum genannten Problem. Ich habe also ein Polygonnetz gegeben und jenes auch visuell in einem OpenGL-Fenster vorliegen. Nun möchte ich durch klicken in das Fenster auf das Modell einen Punkt markieren.
Ok, dann verwende doch was, was das schon kann, z.B. Coin3D
Neron17 schrieb:
Dabei bin ich noch nicht ganz sicher, wie ich das realsieren könnte. Ich habe überlegt, vom Punkt, auf den ich klicke, einen Strahl "nach hinten" zu schießen und den Punkt auszuwählen, der dem Strahl am dichtesten liegt. Klingt zwar einfach, aber bei 32000 Punkten kann das schon mal ausarten, zumal die Wurzelfunktion zur Abstandsberechnung auch etwas kostenintensiv ist.
Du musst die Wurzel nicht ziehen, da ² streng monoton ist, d.h. wenn der Abstand zu einem Punkt x kleiner ist als zu einem Punkt y, dann gilt das auch für die quadrierten Abstände
Neron17 schrieb:
Hättet ihr vielleicht Ideen oder Vorschläge dazu, oder vielleicht einen Link mit einer nützlichen Anleitung dazu?
MfG
NeronJa, Suche nach "Coin3D" bzw. "Open Inventor" Mouse-Picking.
Gruss, Gast25250
-
Hallo lieber Gast;)
Richtig, ich könnte andere Software einbinden, würde diese Funktionalität aber gern selbst programmieren. wie erwähnt, habe ich ja schon ein kleines System erstellt, in dem ich auch meine Strukturen etc. abspeichere.
Gast25250 schrieb:
Du musst die Wurzel nicht ziehen, da ² streng monoton ist, d.h. wenn der Abstand zu einem Punkt x kleiner ist als zu einem Punkt y, dann gilt das auch für die quadrierten Abstände
Richtig, daran hatte ich gar nicht gedacht. Also denkst du, diese Methode ist sinnvoll? Oder doch zu aufwändig? Kann ich die Anzahl der zu testenden Punkte einschränken?
Grüße
Neron
-
Neron17 schrieb:
Hallo lieber Gast;)
Richtig, ich könnte andere Software einbinden, würde diese Funktionalität aber gern selbst programmieren. wie erwähnt, habe ich ja schon ein kleines System erstellt, in dem ich auch meine Strukturen etc. abspeichere.
Gast25250 schrieb:
Du musst die Wurzel nicht ziehen, da ² streng monoton ist, d.h. wenn der Abstand zu einem Punkt x kleiner ist als zu einem Punkt y, dann gilt das auch für die quadrierten Abstände
Richtig, daran hatte ich gar nicht gedacht. Also denkst du, diese Methode ist sinnvoll? Oder doch zu aufwändig? Kann ich die Anzahl der zu testenden Punkte einschränken?
Grüße
NeronNur ein paar schlagworte (Ich denke du hast Polygone/Dreiecke):
kD-Tree / Octree. Ray-Tracing: Da werden dauernd Polygone mit Strahlen geschnitten. Du findest dann Haufenweise Tutorials, die mit Hilfe eines kD-Trees ray-tracen, aufwänding ist das schon, jedoch nur die Implementierung, das Verfahren weniger!