splot pm3d examples density color 3d gnuplot mesh

pm3d - Dibujar una malla triangular usando gnuplot



pm3d gnuplot (2)

set terminal wxt size 800,600 #set title "Graph Title" #set xlabel "X" #set ylabel "Y" #set zlabel "Z" # sets background color set object 1 rectangle from screen -0.1,-0.1 to screen 1.1,1.1 fillcolor rgb "#ffffff" behind # allows rendering of polygons with hidden line removal set hidden3d back offset 0 trianglepattern 3 undefined 1 altdiagonal bentover # displays borders 0x7F = 0b1111111 set border 0x7F linecolor rgb "#555555" # displays the x, y and z axis set xzeroaxis linewidth 0.5 linetype 1 set yzeroaxis linewidth 0.5 linetype 2 set zzeroaxis linewidth 0.5 linetype 3 # displays the x, y and z grid set grid xtics linecolor rgb "#888888" linewidth 0.2 linetype 9 set grid ytics linecolor rgb "#888888" linewidth 0.2 linetype 9 set grid ztics linecolor rgb "#888888" linewidth 0.2 linetype 9 # moves the x, y grid to 0 set xyplane at 0 # makes the x, y, and z axis proportional set view equal xyz # sets the axis range set xrange [-10:10] set yrange [-10:10] set zrange [-10:10] # moves the key out of the graph set key outside vertical bottom right # hides the key set key off splot/ "ico.dat" title "ico" with lines linewidth 2.1 linecolor rgb "#88FF88"

ico.dat:

-1.381925 -4.253200 -2.236075 0.000000 0.000000 -5.000000 3.618000 -2.628600 -2.236075 3.618000 -2.628600 -2.236075 3.618000 -2.628600 -2.236075 0.000000 0.000000 -5.000000 3.618000 2.628600 -2.236075 3.618000 2.628600 -2.236075 -4.472125 0.000000 -2.236075 0.000000 0.000000 -5.000000 -1.381925 -4.253200 -2.236075 -1.381925 -4.253200 -2.236075 -1.381925 4.253200 -2.236075 0.000000 0.000000 -5.000000 -4.472125 0.000000 -2.236075 -4.472125 0.000000 -2.236075 3.618000 2.628600 -2.236075 0.000000 0.000000 -5.000000 -1.381925 4.253200 -2.236075 -1.381925 4.253200 -2.236075 3.618000 -2.628600 -2.236075 3.618000 2.628600 -2.236075 4.472125 0.000000 2.236075 4.472125 0.000000 2.236075 -1.381925 -4.253200 -2.236075 3.618000 -2.628600 -2.236075 1.381925 -4.253200 2.236075 1.381925 -4.253200 2.236075 -4.472125 0.000000 -2.236075 -1.381925 -4.253200 -2.236075 -3.618000 -2.628600 2.236075 -3.618000 -2.628600 2.236075 -1.381925 4.253200 -2.236075 -4.472125 0.000000 -2.236075 -3.618000 2.628600 2.236075 -3.618000 2.628600 2.236075 3.618000 2.628600 -2.236075 -1.381925 4.253200 -2.236075 1.381925 4.253200 2.236075 1.381925 4.253200 2.236075 4.472125 0.000000 2.236075 1.381925 -4.253200 2.236075 3.618000 -2.628600 -2.236075 3.618000 -2.628600 -2.236075 1.381925 -4.253200 2.236075 -3.618000 -2.628600 2.236075 -1.381925 -4.253200 -2.236075 -1.381925 -4.253200 -2.236075 -3.618000 -2.628600 2.236075 -3.618000 2.628600 2.236075 -4.472125 0.000000 -2.236075 -4.472125 0.000000 -2.236075 -3.618000 2.628600 2.236075 1.381925 4.253200 2.236075 -1.381925 4.253200 -2.236075 -1.381925 4.253200 -2.236075 1.381925 4.253200 2.236075 4.472125 0.000000 2.236075 3.618000 2.628600 -2.236075 3.618000 2.628600 -2.236075 1.381925 -4.253200 2.236075 4.472125 0.000000 2.236075 0.000000 0.000000 5.000000 0.000000 0.000000 5.000000 -3.618000 -2.628600 2.236075 1.381925 -4.253200 2.236075 0.000000 0.000000 5.000000 0.000000 0.000000 5.000000 -3.618000 2.628600 2.236075 -3.618000 -2.628600 2.236075 0.000000 0.000000 5.000000 0.000000 0.000000 5.000000 1.381925 4.253200 2.236075 -3.618000 2.628600 2.236075 0.000000 0.000000 5.000000 0.000000 0.000000 5.000000 4.472125 0.000000 2.236075 1.381925 4.253200 2.236075 0.000000 0.000000 5.000000 0.000000 0.000000 5.000000

Generado por blender y una secuencia de comandos python:
https://github.com/lowlevel86/blender-to-gnuplot

A menudo es necesario dibujar una malla triangular usando gnuplot .

La única manera que veo actualmente es hacer "wireframe" usando la opción de with lines y with lines dobles nuevas entre cadenas de líneas cerradas (el primero y el último punto son iguales) para cada faceta:

$wireframe <<EOD 0 1 1 p1 1 -1 1 p2 -1 -1 1 p3 0 1 1 2 1 0 p4 0 1 1 1 -1 1 2 1 0 0 -2 0 p5 1 -1 1 -1 -1 1 0 -2 0 -2 1 0 p6 -1 -1 1 0 1 1 -2 1 0 EOD splot ''$wireframe'' with lines notitle, '''' with labels offset character 0, character 1 notitle

Estos son los 4 triángulos: 1 en el centro (p1, p2, p3) y 3 son adyacentes a sus patas.

Hay muchas duplicaciones para definir una malla. En ocasiones, es la forma más adecuada de definir la malla como una franja triangular o un abanico triangular.

Otro problema es llenar el interior de los triángulos 3D de algún color. Actualmente solo puedo dibujar una malla con diferentes colores (desde la paleta) para diferentes líneas encadenadas. Pero se superponen.

Diga, quiero dibujar icosaedro. Está cerrado sólido, limitado por las caras de un triángulo.


Una solución alternativa podría ser escribir un guión gawk / Python que analizaría la definición de las facetas y generaría un guión Gnuplot donde las facetas se dibujarían manualmente como polígonos:

set xr [0:1] set yr [0:1] set zr [0:1] #generate the polygons set object polygon from 0,0,0 to 1,0,0 to 1,1,0 to 0,1,0 to 0,0,0 fc rgb "cyan" fillstyle solid 1.0 border lt -1 set object polygon from 1,0,0 to 1,1,0 to 1,1,1 to 1,0,1 to 1,0,0 fc rgb "cyan" fillstyle solid 1.0 border lt -1 #do not plot anything splot 1/0