Question

Je voudrais tracer des points dans un tracé 3D et créer un maillage capable de gérer des données non rectangulaires.Pour être plus précis, mes données sont

données.dat

-1 0 0
-1 1 0
0 -1 0
0 0 0
0 1 0
1 -1 0
1 0 0

et mon fichier gnuplot

tracé.plt

set dgrid3d 3,3
splot 'data.dat' w l
pause -1

Malheureusement dgrid3d semble rendre mes données rectangulaires et une grille rectangulaire (en fait une grille carrée) est tracée.Existe-t-il un moyen de tracer une enveloppe restreinte de mes données ?Idéalement, j'aimerais tracer le coque convexe orthogonale de mon ensemble de points.

Était-ce utile?

La solution

Vous disposez de plusieurs options pour réaliser quelque chose comme ceci. Malheureusement, elles nécessitent toutes un certain travail de votre part.

Tout d'abord, il est important de noter que gnuplot peut gérer des maillages non rectangulaires pour le traçage de surfaces (même si vous n'avez besoin que d'une surface rectangulaire pour cet exemple).Pour le traçage de surface, le fichier de données ressemble à ceci (notez les enregistrements vides) :

x11 y11 z11
x21 y21 z21
x31 y31 z31
...

x12 y12 z12
x22 y22 z22
x23 y23 z23
...

Il forme alors des quadrilatères.Dans ce cas, le premier quadrilatère serait formé des points (x11,y11),(x21,y21),(x12,y12),(x22,y22).Le deuxième quadrilatère serait formé de (x21,y21),(x31,y31),(x22,y22),(x23,y23) et ainsi de suite.Ainsi, étant donné votre ensemble de points, vous pouvez facilement créer un « maillage rectangulaire » qui contiendra tous vos points de données.Il ne sera pas uniformément espacé, mais ce n’est pas un problème.Nous devons maintenant trouver comment supprimer des points afin que gnuplot ne les trace pas.C'est le "truc".Vous pouvez marquer une chaîne particulière comme « données manquantes » dans le fichier de données (set datafile missing "string").Dans ce cas, gnuplot ne tracera pas ce point, mais il gardera quand même la trace des coordonnées des données manquantes dans le but de générer la surface.

Ainsi, en fin de compte, votre fichier de données ressemblera à quelque chose comme :

x11 y11 ?
x21 y21 ?
x31 y31 z31
...

x12 y12 ?
x22 y22 z22
x23 y23 z23
...

et le script pour le tracer serait :

set datafile missing '?'
set surf
set view map #Not sure about this...depends on the view you want
splot "mydata.dat" u 1:2:3 w lines

Si vous voulez que gnuplot calcule la "coque convexe orthogonale", je pense que vous n'avez pas de chance.

LA MANIÈRE FACILE

Notez également que si vous voulez un objet de couleur unie dans un espace 2D (comme l'image sur le lien wikipedia que vous avez publié), ce problème devient beaucoup plus simple.Si vous pouvez créer un fichier de données avec uniquement les sommets de l'objet que vous souhaitez dessiner (dans un ordre tel que (x1, y1) se connecte à (x2, y2) se connecte à (x3, y3)...), alors vous pouvez tracer ce fichier de données comme :

set fillstyle #However you want the object to appear
plot "datafile.dat" u 1:2 with filledcurves closed
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top