Frage

Ich habe eine implizite Skalarfelds in 2D definiert, für jeden Punkt in 2D Ich kann es einen genauen Skalarwert machen berechnen, aber es ist eine etwas komplexe Berechnung.
Ich mag ein Isolinie dieser Oberfläche zeichnen, sagt die Zeile des Wertes ‚0‘. Die Funktion selbst ist stetig, aber die ‚0‘ Isolinie mehrere kontinuierliche Instanzen haben kann, und es ist nicht garantiert, dass alle von ihnen verbunden sind.
den Wert für jedes Pixel zu berechnen ist keine Option, da das zu viel Zeit in Anspruch nehmen würde -. in der Größenordnung von wenigen Sekunden und dies muss als Echtzeit wie möglich sein

Was ich zur Zeit verwendet, ist eine rekursive Aufteilung des Raumes, die als eine Art von Quad-Baum gedacht werden kann. Ich nehme eine anfängliche, sehr grobe Abtastung des Raumes und wenn ich ein Quadrat finden, die einen Übergang von positiven zu negativen Werten enthalten, ich es rekursiv dividieren bis 4 kleinere Quadrate und überprüft erneut, auf Pixelebene zu stoppen. Die Positiv-Negativ-Übergang wird durch Abtasten eines sqaure in seinen 4 Ecken detektiert. Diese Arbeit ziemlich gut, es sei denn, es funktioniert nicht. Die Iso-Linien, die manchmal geschnitten bekommen gezogen werden, da der Übergang Erkennung für Übergänge nicht, die in einem kleinen Bereich einer Kante passieren und dass sie nicht kreuzen eine Ecke eines Quadrats.

Gibt es eine bessere Art und Weise iso-Strichzeichnung in dieser Einstellung?

zu tun
War es hilfreich?

Lösung

Ich habe viel Erfolg mit den Algorithmen hier beschrieben hatte http://web.archive.org/web/20140718130446/http://members.bellatlantic.net/~vze2vrva/thesis.html die Diskussion adaptive Konturierung (ähnlich dem, was Sie beschreiben), und auch einige andere Probleme mit Kontur im allgemeinen Plotten.

Es gibt keine allgemeine Möglichkeit, alle Konturen eine Funktion zu gewährleisten finden, ohne bei jedem Pixel zu suchen. Es könnte eine sehr kleine geschlossene Kontur sein, wo ein Bereich nur über die Größe eines Pixels, wo die Funktion positiv ist, in einem Bereich, in dem die Funktion im Allgemeinen negativ ist. Es sei denn, Sie fein genug probieren, dass Sie eine Probe innerhalb des positiven Bereichs platzieren, gibt es keine allgemeine Möglichkeit zu wissen, dass es da ist.

Wenn Ihre Funktion glatt genug ist, können Sie möglicherweise erraten, wo solche kleinen geschlossenen Konturen liegen, weil die Modul der Funktion in einem Bereich klein wird um sie herum. Die Probenahme kann dann nur in diesen Regionen verfeinert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top