AW: MouseOver Canvas Sachen?
11. Aug 2014, 11:59
Und wenn du es doch neu erfinden möchtest: Wenn die Linien nicht nur senk-. und waagerecht sind (da könnte man eine einfache Bounding-Box Prüfung machen), musst du den Abstand von dem Mauscursor zu deiner Strecke ermitteln. Die Formeln für den Abstand von Punkt zu Gerade finden sich leicht im Netz, man muss dann nur bedenken, dass eine Strecke eine begrenzte Gerade ist. Glücklicherweise fällt bei der Abstandsberechnung als Nebenprodukt auch gleich der Fußpunkt auf der Geraden ab, so wie ein Faktor dessen. Da man die Gerade sinnigerweise mit G(a) = P1 + a*(P2-P1), mit P1 und P2 als deine Streckenpunkte, und das "a" besagter Faktor ist, muss man also nur schauen, ob dieser zwischen 0 und 1 liegt. Wenn nicht, ist die Maus vor/hinter der Strecke. Über den Abstand dann noch schauen ob man nah genug dran ist um es als "drauf" interpretieren zu können.
Da man aber nicht immer nur ganze Strecken oder Formen selektieren will, wäre es vom obigen abgesehen noch sinnvoll, verschiedene Selektiermodi anzubieten: Punktselektion, Kantenselektion, Objektselektion, und bei 3D auch Flächenselektion. (Intern würde ich diese alle als Punktselektionen darstellen.) Das aber nur als Nebengedanke.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
|