"Intelligente" Koordinatenberechnung von Punkten 2D

multimolti

Erfahrenes Mitglied
Hallo!

Ich bin mit meinem Diagramm-Tool mittlerweile so weit, dass es einwandfrei alle Graphen anzeigt, streckt, ... Screenshot ist angehängt.
Was jetzt noch fehlt ist eine Anzeige der Punktenamen/Werte. Man soll ja schließlich wissen, welcher Punkt was bedeutet. Ich kann aber nicht einfach sagen "schreibe Text bei (Punktkoordinaten + neuerPunkt(5, 5))", weil dann der Text manchmal den Graphen überlappen würde.

Wie kann man es machen, dass das Programm irgendwie berechnet, wo der Text den Graph überschneidet und dann solange nach einem Punkt sucht bis es einen geeigneten findet?
Ich habe da überhaupt keine Idee...
 

Anhänge

  • graphprogramm.jpg
    graphprogramm.jpg
    39,8 KB · Aufrufe: 61
Oh, da habe ich mich doch tatsächlich beim Forum verklickt. Sorry, kann den Beitrag jemand verschieben oder löschen? Ich hasse Doppel-Themen -.-
 
Hallo,
zunächst sind mal Designfragen zu klären
- wo kommt der Text hin, wenn die Idealposition nicht zulässig ist?
- wo kommt der Text hin, wenn ein Fensterrand diesen abschneiden würde?
- soll eine Legende (Linie mit Rechteck) erstellt werden?
- ist die Überlappung mit anderen Texten zu vermeiden?

Wie auch immer: Ein Algorithmus braucht eine Art Rechteck(x0,y0,x1,y1) für den Text.
Für´s erste setzt man x0,y0 auf die Idealposition.
Man kann dann für die Funktionskurve x von x0 bis x1 laufen lassen und prüfen, ob f(x) den Wert y0 überschreitet. Wenn ja, könnte man y0,y1 um den Überlappungsbetrag + Mindestabstand erhöhen. Dann wäre der Text schon mal außerhalb der Kurve.
 
Ja mittlerweile bin ich vielleicht im C++ Forum, vorher war es aber wirklich bei PHP :p

Und das von dem Vorposter überleg ich mir, melde mich dann wieder, danke schon mal.
 
Zurück