Gnu Octave a-t-il un code existant pour tracer des lignes ou des polygones?

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

  •  07-07-2019
  •  | 
  •  

Question

Arrière-plan:

Je veux pouvoir prendre une matrice 2D (une image réellement), un ensemble de points définissant un polygone et dessiner ce polygone dans la matrice.

Avant de me lancer et de réinventer la roue, je me demandais si quelqu'un connaissait l'existence d'une bibliothèque ou d'un code existant dans Octave qui fait cela. Jusqu'à présent, mes recherches dans les packages Octave et Google ont été vides.

Faute de quoi, ni l’un ni l’autre n’est trop difficile à mettre en œuvre, mais je ne sais pas comment dessiner un polygone rempli. Existe-t-il un moyen simple et efficace de déterminer quels points se trouvent à l'intérieur d'un polygone et lesquels se trouvent à l'extérieur? Merci.

Modifier:

Mon objectif n’affiche rien. En fait, ce que je cherche à faire, c’est un travail de traitement d’image, comme tracer une coque convexe, trouver sa surface, trouver les parties de la coque convexe qui ne se trouvent pas dans l’objet original, etc.

.

Je ne vois pas que Gnu Plot me rende les données avec lesquelles je peux travailler. Si je me trompe, dites-moi comment. Merci.

Était-ce utile?

La solution

Pour rechercher des points dans un polygone, vous pouvez essayer la fonction MATLAB de Darren Engwirda publiée sur MATLAB Central: http://www.mathworks.com/matlabcentral/fileexchange/10391

J'ai parcouru brièvement le code et je ne vois rien qui soit spécifique à MATLAB. Il peut donc fonctionner tel quel dans Octave.

Autres conseils

EDIT: répond au sommet du texte du PO pour le retrouver plus facilement:

Il existe une diverses façons de rendre le rendu de gnuplot directement dans un fichier ( faites défiler jusqu'à "Terminal") que vous pouvez ensuite lire pour analyse. Par exemple, vous pouvez passer au format bitmap portable , qui est extrêmement facile à lire et à écrire. (si pas petit et élégant). Notez que, par définition, PBM vous fournira un tableau de noirs et de blancs.

Par exemple, vérifiez cette utilisation du " set terminal " et " définir la sortie " commandes pour rendre une série de pipes Unix qui produisent un fichier pbm puis un fichier png.

Terminer EDIT:

Gnu Octave utilise par défaut gnuplot pour le traçage et il se trouve que gnuplot est assez bon pour produire des polygones remplis. Voici quelques démonstrations utiles de ce genre de choses. Par exemple, voici des polygones remplis :

# 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

Voici un autre script de démonstration qui dessine le visage fou au bas de la page courbes remplies:

# 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top