Hat Gnu Octave haben alle vorhandenen Code für Linien oder Polygonen zu zeichnen?

StackOverflow https://stackoverflow.com/questions/1429165

  •  07-07-2019
  •  | 
  •  

Frage

Hintergrund:

Ich mag eine 2D-Matrix zu ergreifen, um die Lage sein (ein Bild wirklich), und eine Reihe von Punkten ein Polygon definieren, und das Polygon in die Matrix ziehen.

Bevor ich weglaufen und das Rad neu erfinden, dachte ich, ich würde fragen, ob jemand von irgendwelchen vorhandenen Bibliotheken oder Code in Octave wusste, dass dies der Fall ist. Bisher meine Suche durch die Octave-Pakete und Google haben ging leer aus.

Failing, dass weder zu hart zu implementieren, aber ich bin nicht sicher, wie ein gefülltes Polygon zu zeichnen. Gibt es eine einfache / effiziente Art und Weise zu erklären, welche Punkte innerhalb eines Polygons sind und die außerhalb? Danke.

Edit:

Mein Ziel Anzeige ist nicht alles. Eigentlich, was ich speziell auf Tuns suchen, ist einige Bildverarbeitung Sachen, wie eine konvexe Hülle Plotten, ihre Fläche zu finden, die Teile der konvexen Hülle nicht in das ursprüngliche Objekt zu finden, etc.

Ich sehe nicht, dass Gnu Plot mir tatsächlich alle Daten zurückgeben ich arbeiten kann. Wenn ich falsch bin, mit allen Mitteln mir sagen, wie. Danke.

War es hilfreich?

Lösung

Für Punkte innerhalb eines Polygons zu finden, können Sie Darren Engwirda versuchen MATLAB-Funktion auf MATLAB Central posted: http://www.mathworks.com/matlabcentral/fileexchange/10391

sah ich den Code kurz durch und sehe nichts, das ist besonders MATLAB spezifisch, so dass es als Service-Leistung in Octave laufen kann.

Andere Tipps

EDIT: Antwort auf die Bearbeitung bis oben der OP, um es leichter zu finden:

Es gibt eine Vielzahl von Möglichkeiten rel="nofollow zu machen direkt in eine Datei gnuplot zu machen ( scrollen Sie nach unten zu „Terminal“), die Sie dann für die Analyse eingelesen können. Zum Beispiel können Sie Ausgabe auf tragbare Bitmap-Format das ist auffallend leicht zu lesen und schreiben (wenn nicht klein und elegant). Beachten Sie, dass per definitionem PBM geben Sie eine Reihe von Schwarzen und Weißen.

Zum Beispiel, lesen Sie in dieser Verwendung der „gesetzt Terminal“ und Befehle „Ausgang gesetzt“ zu einer Reihe von Unix-Rohren zu machen, die eine pbm und dann einer pNG-Datei zu erzeugen.

Ende EDIT:

Gnu Octave standardmäßig gnuplot mit zum Plotten und es kommt vor, dass gnuplot bei der Herstellung gefüllt Polygone recht gut. Hier sind einige hilfreich Demonstrationen genau diese Art von Dingen. Zum Beispiel hier sind einige gefüllten Polygone :

# set terminal png transparent nocrop enhanced font arial 8 size 420,320 
# set output 'fillcrvs.4.png'
set grid nopolar
set grid xtics nomxtics ytics nomytics noztics nomztics \
 nox2tics nomx2tics noy2tics nomy2tics nocbtics nomcbtics
set grid front   linetype 0 linewidth 1.000,  linetype 0 linewidth 1.000
set key outside right top vertical Right noreverse enhanced autotitles nobox
set title "The red bat: abs(x) with filledcurve xy=2,5" 
plot abs(x) with filledcurve xy=2,5

Hier ist eine weitere Demonstration Skript dass das verrückt Gesicht am Boden zieht aus die gefüllten Kurven Seite:

# set terminal png transparent nocrop enhanced font arial 8 size 420,320 
# set output 'fillcrvs.6.png'
unset border
set dummy t,y
set grid nopolar
set grid xtics nomxtics ytics nomytics noztics nomztics \
 nox2tics nomx2tics noy2tics nomy2tics nocbtics nomcbtics
set grid layerdefault   linetype 0 linewidth 1.000,  linetype 0 linewidth 1.000
unset key
set label 1 "gnuplot" at 0, 1.2, 0 centre norotate front nopoint offset character 0, 0, 0
set label 2 "gnuplot" at 0.02, -0.6, 0 centre norotate front nopoint offset character 0, 0, 0
set arrow 1 from -0.1, 0.26, 0 to 0.18, -0.17, 0 head front nofilled linetype 5 linewidth 4.000 size first 0.100,40.000,90.000
set parametric
set size ratio 1 1,1
set noxtics
set noytics
set title "Let's smile with parametric filled curves" 
set xrange [ -1.00000 : 1.00000 ] noreverse nowriteback
set yrange [ -1.00000 : 1.60000 ] noreverse nowriteback
plot [t=-pi:pi]     sin(t),cos(t) with filledcurve xy=0,0 lt 15,        sin(t)/8-0.5,cos(t)/8+0.4 with filledcurve lt 3,        sin(t)/8+0.5,cos(t)/8+0.4 with filledcurve lt 3,        t/5,abs(t/5)-0.8 with filledcurve xy=0.1,-0.5 lt 1,     t/3,1.52-abs(t/pi) with filledcurve xy=0,1.8 lt -1
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top