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