Erhöhung der Geschwindigkeit von (oder einer Alternative zu) RegionPlot

8

Ich möchte einige Regionen-Plots in eine Manipulate -Struktur einfügen, jedoch ist das Rendering fast prohibitiv langsam. Der Code ist

%Vor%

Was Grafiken wie

erzeugt %Vor%

Das oben genannte dauert ungefähr 40 Sekunden, um auf meinem Computer zu berechnen und zu rendern. Kann jemand einen Weg vorschlagen, um Grafiken ähnlicher Qualität schneller zu erhalten?

Hinweis 1: Ich habe das Grafikobjekt notiert, so dass es nicht jedes Mal in meiner Demonstration neu berechnet werden muss - aber es ist selbst beim ersten Mal zu langsam.
Hinweis 2: Ich bin mit gerasterten Bildern zufrieden, daher könnte eine Lösung vom Typ "Flood Fill" eine Option sein ...
Hinweis 3: Ich brauche etwas wie Manipulate[ rplot[n, o], {n, 2, 10, 1, Appearance -> "Labeled"}, {{o, 1}, Range[1, (n + 1)/2], ControlType -> RadioButtonBar}] , um verwendbar zu sein.

    
Simon 07.12.2011, 03:00
quelle

4 Antworten

3

Ich habe das vorher als Ergänzung zu meiner anderen Antwort gepostet. Es ist inspiriert von Simons analytischem Ansatz, mit einigen Modifikationen, um die Dinge zu beschleunigen

%Vor%

Zuerst benutze ich das für den gegebenen Wert von n und o , der Schnittbereich zwischen dem i -th und i+o-1 -ten Kreis ist der selbe wie der Schnittbereich zwischen dem Der erste und o -te Kreis außer einer Drehung über einen Winkel 2 Pi (i-1)/n , es genügt also, die Region einmal zu berechnen und Rotate zu verwenden, um die Region zu drehen.

Anstatt einen ParametricPlot zu verwenden, um die Schnittmenge zu plotten, verwende ich auch Polygon , also muss ich nur einige Punkte auf der Grenze berechnen, was Zeit spart.

Das Ergebnis für GraphicsGrid[{{rplot2[3, 2], rplot2[5, 2]}, {rplot2[7, 3], rplot2[4, 1]}}] sieht wie

aus

Und die Zeitpunkte, die ich bekomme, sind

%Vor%

im Vergleich zu denen für Simons Lösung

%Vor%     
Heike 08.12.2011, 09:29
quelle
4

Sie könnten so etwas tun

%Vor%

Dann erzeugt GraphicsGrid[{{rplot[3, 2], rplot[5, 3]}, {rplot[7, 2], rplot[4, 1]}}] etwas wie

Bearbeiten

Vorherige Bearbeitung wurde verschoben, um die Antwort zu trennen.

    
Heike 07.12.2011 11:11
quelle
3

Herr. Wizard machte mir klar, dass ich, obwohl ich ein analytisches Formular für die Bereiche hatte, die ich in RegionPlot verwenden konnte, wenn ich ein parametrisiertes Formular für die Grenzen erhielt, dann ParametricPlot verwenden könnte. Also, machen wir das!

Der Kreis i th ( i=0,...,n-1 ) wird in der komplexen Ebene parametrisiert durch
Exp[I t] + Exp[2 i Pi I / n] für t in [0, 2 Pi] .

Wir können den Schnittpunkt der Kreise i th und (i+o-1) th finden, wobei o die Anzahl der Überlappungen ist, wie in der ursprüngliche Code der Frage. Dies gibt die Punkte bei

%Vor%

Nun können wir die Bogen vom Ursprung bis zu einem point[n,o,i] parametrisieren und sie über die Linie vom Ursprung bis zum point[n,o,i] reflektieren. Die Interpolation zwischen den beiden mit einem Parameter s ergibt die parametrisierten Bereiche

%Vor%

Dann können wir

definieren %Vor%

Und GraphicsGrid[{{rplot[3, 2], rplot[5, 3]}, {rplot[7, 2], rplot[4, 1]}}] erzeugt

    
Simon 07.12.2011 11:45
quelle
1

Analytische Methode

Wenn die Kreise immer wie dargestellt in einem geraden Ring angeordnet sind, sollte es eine analytische Lösung für den Kreis-Kreis-Schnittpunkt geben. Ich würde mit der Anzahl der Grade zwischen jedem Kreis anfangen, wie auf dem Ring ausgelegt.

Ich werde diese Methode erkunden, wenn die Zeit es erlaubt.

Rastermethode

  1. Binär rasterisiert eine Reihe von Festplatten an den richtigen Positionen

  2. Ordnen Sie jedem Raster an Stelle von Einsen

  3. eindeutige Power-of-2-Werte zu
  4. Arrays hinzufügen

  5. Berechnen Sie eindeutige Überlappungsmengen aus dem Wert an jedem Punkt im Summen-Array

  6. Ordne die richtigen Farben dem resultierenden Array zu und erzeuge die Ausgabe

Erster grober Durchgang der Rastermethode, einfach als Proof of Concept. Sie können sehen, dass jede Region eine einzigartige Schattierung hat, die nur die Summe der Raster an diesem Punkt darstellt.

%Vor%

Zweiter Entwurf, Hinzufügen von Farben. Es ist immer noch ziemlich klobig.

%Vor%

    
Mr.Wizard 07.12.2011 06:49
quelle

Tags und Links