2012-05-26 2 views
0

Название в основном говорит об этом. Я хотел бы построить образцы, приведенные в форме, похожей на куб ниже:Плоские 3d-тела, заданные как поверхности (, заданные как последовательности вершин)

// Front 
0 0 0 
0 0 1 
1 0 1 
1 0 0 

// Back 
0 1 0 
0 1 1 
1 1 1 
1 1 0 

// Left 
0 0 0 
0 1 0 
0 1 1 
0 0 1 

// Right 
1 0 0 
1 1 0 
1 1 1 
1 0 1 

// Bottom 
0 0 0 
1 0 0 
1 1 0 
0 1 0 

// Top 
0 0 1 
1 0 1 
1 1 1 
0 1 1 

Я не ограничен какой-либо конкретной программы, но я предполагаю, что Gnuplot может использоваться, чтобы сделать это. Как бы вы это сделали? (Конечно, я пытался найти это сам, но я Gnuplot нуб и Gnuplot является слишком большим, чтобы найти ответы непосредственно)

ответ

0

Я должен был изменить ваш файл данных немного:

#front 
0 0 0 
0 0 1 

1 0 0 
1 0 1 


#back 
0 1 0 
0 1 1 

1 1 0 
1 1 1 


#left 
0 0 0 
0 1 0 

0 0 1 
0 1 1 


#right 
1 0 0 
1 1 0 

1 0 1 
1 1 1 


#bottom 
0 0 0 
1 0 0 

0 1 0 
1 1 0 


#top 
0 0 1 
1 0 1 

0 1 1 
1 1 1 

это может быть построен с:

set pm3d depthorder 
splot "datafile.dat" u 1:2:3:-2 w pm3d 

в то время как это работает (в основном - сортировка по depthorder не является совершенным в Gnuplot), она быстро становится утомительной, чтобы сделать более сложные формы.

В основном, это работает, потому что я указываю каждый четырехугольник (квадрат в этом случае) отдельно в файле данных - четырехугольники разделены двумя пустыми строками. Каждый квадрат состоит из четырех вершин, отсортированных по 2 "сканам. Итак, первое сканирование вы переходите от точки (0,0,0) до (0,0,1). Затем следующее сканирование происходит от (1,0, .. 0) до (1,0,1) Gnuplot затем соединяет сканы вместе

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

И, наконец, окраска каждой поверхности выполняется с помощью pseudo-column «-2» - это действительно просто четырехугольное число. Вы можете добавить четвертое поле в файл данных и использовать его для цвета, если хотите.

Однако у меня такое ощущение, что это решение с использованием gnuplot на самом деле то, что вы ищете, потому что на самом деле это не то, для чего был разработан gnuplot. Вероятно, есть инструмент, который будет делать это намного легче - я просто не знаю, что это такое.

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