2014-09-24 3 views
1

Так что мне нужно построить самолеты (как в, они должны быть FLAT), определяемые тремя точками, которые все из моего уравнения. Я могу переопределить код таким образом, чтобы между тремя точками было пространство. Я не хочу этого делать. Я просто добавил комментарии для ясности, где точки разделены. На самом деле их нет.GNUPlot: Анимация плоскости, определяемая тремя точками

# surface 1 
    1.000   0.000   0.000 
-46.777   -0.702   -1.692 
    0.000   3.000   5.500 
# surface 2 
    0.998   0.030   0.055 
-46.451   -2.099   -5.068 
    -0.468   2.993   5.483 
# surface 3 
    0.991   0.060   0.110 
-45.804   -3.471   -8.400 
    -0.932   2.972   5.432 
# surface 4 
    0.979   0.089   0.164 
-44.842   -4.803  -11.659 
    -1.390   2.937   5.348 
# surface 5 
    0.963   0.119   0.217 
-43.574   -6.079  -14.816 
    -1.839   2.889   5.232 
#... and so on 

теперь можно построить только одну поверхность, используя этот код

set dgrid3d 10,10 
set style data lines 
set pm3d 
i=0 
splot '5surf' every ::i::(i+2) pal 

, но когда я подключить его в сделать петлю

n =   1000 
unset key 

set terminal gif size 800,600 crop 
outtmpl = 'pic/output%07d.gif' 

set dgrid3d 10,10 
set style data lines 
set pm3d 

do for [i=0:n:3] { 
set output sprintf(outtmpl, i) 
splot '5surf' every ::i::(i+2) pal 
print i 
} 
set output 

Я получил изогнутые поверхности с этим, что обычная неправильно. (каламбур)

Поверхность, согласно моему анализу, должна выглядеть немного похожей на ее вращение.


EDIT: Я выбросил dgrid3d из окна. Filledcurves не работает. Я был в состоянии сделать квадрат с этими точками

1 1 4.8 
-1 1 5.6 
-1 -1 2.4 
1 -1 1.6 
1 1 4.8 

с помощью многоугольника, но я не могу сделать его чтение из файла.


последнее редактирование: Если кто-нибудь наткнуться на это любопытно, как я обнаружил, что четыре точки, используя оригинальный набор из трех точек, это был вопрос о нахождении уравнения плоскости, содержащее три точки и подключения в (\ pm 1, \ pm 1, z). Решите для z и рассмотрите все четыре случая. основная проблема известкова, действительно

+0

'dgrid3d' не работает должным образом для вашего приложения. Вы должны, вероятно, рассчитать четыре точки, которые должны разграничить самолет, который вы хотите построить. – Christoph

+0

Хорошо, у меня есть уравнение для этого. Я попробовал его с четырьмя очками, но все, что у меня было, было коробкой. Теперь мне нужно заполнить его сплошным цветом для видимости, и когда я попробую pm3d, он говорит, что для этого недостаточно информации. – vardonir

ответ

1

С точкой для квадрата вы должны также вставить пустую строку, чтобы сделать pm3d работы:

surface.dat:

-1 -1 2.4 
-1 1 5.6 

1 -1 1.6 
1 1 4.8 

Не, что у-значение всегда в том же порядке -1, 1 для обоих блоков. Участок это с

set pm3d 
splot 'surface.dat' 

enter image description here

Если вы хотите поместить несколько поверхностей из одного файла теперь можно выделить две поверхности с две пустых строк, которые вы можете получить доступ с index:

surfaces.dat:

-1 -1 2.4 
-1 1 5.6 

1 -1 1.6 
1 1 4.8 


-1 -1 1.4 
-1 1 4.6 

1 -1 0.6 
1 1 3.8 

Вы можете использовать stats для подсчета количества блоков:

stats 'surfaces.dat' nooutput 
set pm3d 
do for [i=0:STATS_blocks - 1] { 
    splot 'surfaces.dat' index i 
} 
+0

Есть ли способ установить цвет для всех итераций? я получил цикл do для работы, но как только «наклон» изменяется достаточно, изменения цвета – vardonir

+1

Если вам нужен один цвет для всех плоскостей, вы должны определить палитру, имеющую только этот цвет: 'set palette defined (0 '# bb0000' , 1 '# bb0000'); unset colorbox'. – Christoph

Смежные вопросы