LINUX.ORG.RU
решено ФорумTalks

Построение графиков по трёхмерным данным и наличием пустых областей


0

1

Есть некоторые данные: x, y, z (где x и y — координаты замера величины, а z — значение величины). Нужно построить изолинии и цветовую карту.

Но! Также существуют места, где величины просто нету. Представьте себе, скажем, трапецию из некоторого материала. А замерямой величиной пусть будет температура материала. Внутри трапеции температура измерима, а за её пределами такого нету, там пустота, вакуум.

По ссылке пример такой области: там где цветастое — это значение величины в центре маленького прямоугольника (не обращайте внимание на зелёное), там, где чёрное — вакуум. Ограничивает область жирная цветастая ломанная. В данном случае область представляет собой прямоугольник, сверху которого сделали «рельеф».

Где такое можно визуализировать, кроме как в Golden Software Surfer?

★★★★★
Ответ на: комментарий от mclaudt

> Вон твой же qfrost и умеет вроде

Ну да, я визуализацию для своего QFrost и пишу.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

выпуклый полигон кладем на координатную плоскость - он задается системой неравентсв

тебе надо задать функцию на большом прямоугольнике содержащем твой полигон

определение функции:
====
берем точку x,y, подставляем в систему - выполняется - берем значение из твоих данных, не выполняется - берем 0
====

эту функцию даем gnuplot-у, он рисует график

все

для большего числа полигоном усложняется определение функции, там больше проверок, но суть та же

alpha ★★★★★
()
Ответ на: комментарий от alpha

> берем точку x,y, подставляем в систему - выполняется - берем значение из твоих данных, не выполняется - берем 0

чтобы провести действие «взятие из моих данных» надо уже иметь аппроксимированные из не-сеточных данные, что не так просто получить.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

так ты может побольше расскажешь как твои данные выглядят, что значит «есть полигон», в каком формате он задан

координаты вершин? длины строн и углы? что такое данные этом на полигоне? квадратичная поверхность? сплайн?

если исходные данные у тебя совсем-совсем не точечные, то имеет смысл действительно говорить об аппроксимации и векторной графике, а не растре

alpha ★★★★★
()
Ответ на: комментарий от alpha

Полигон = многоугольник - список(многоугольник) = внешний многоугольник и многоугольники-дырки

Многоугольник = список(координата) = координаты вершин

Данные = список(величина, координата) = величины и координаты их взятия

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

Вот: http://img849.imageshack.us/img849/7436/qfrostdatapresentation.png

Значения будут браться в прямоугольничках, при этом координатам взятия будут соответствовать геометрические центры этих прямоугольничков. А полигон области тут — это прямоугольник с треугольной дыркой.

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

> Данные = список(величина, координата)

так, вернемся к началу

есть список точек вида координата - значение, скармливаем его gnuplot, получаем график как множество отдельно стоящих точек; если это множество точек надо как-то ограничить - добавляем проверку неравенств

это будет график твоих реальных данных

правильно я понимаю, что этого не достаточно и из отдельных точек хочется получить какую-то более менее гладкую поверхность?

alpha ★★★★★
()
Ответ на: комментарий от Obey-Kun

а если поменять местами порядок действий:

список координата - значение
ограничиванием область выкидывая лишнее из списка (заменяя нулями)
скармливаем построителю

так не проще?

alpha ★★★★★
()
Ответ на: комментарий от alpha

в списке координата--значение нет лишнего, всё нужное

вот пример данных: http://img25.imageshack.us/img25/7510/qfrostdatapresentation2.png

где 1 блок соответствует одной точке, координаты точки == координаты центра блока, внешний вид разбивки я давал выше — http://img849.imageshack.us/img849/7436/qfrostdatapresentation.png

где там лишнее? :)

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

блин, забыл нарисовать обводку у блоков... ну в общем на первой картинке, если присмотришься, не плавные переходы, а те же самые блоки, что на второй картинке, только целиком залитые некоторым цветом

Obey-Kun ★★★★★
() автор топика

Лови скрипт для gnuplot:

set nohidden3d
set contour surface
set view 0,0
#set nosurface
set cntrparam levels 10
set dgrid3d
set xlabel «X»
set ylabel «Y»
set zlabel «HV»
set pm3d
set key off

set terminal png
set output 'out_color.png'
splot 'data.txt' w l

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

И ещё. Файл data.txt должен иметь следующий формат.

Три столбца. Первый - X. Второй - Y. Третий - Z. Отделять можно пробелом или табуляцией.

Пример:

-------------

10 5 1
8 7 0
6 6 4
0 9 30
59 7 80

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

Это построит прямоугольную область?

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Quasar

М, dgrid3d позволяет не использовать сетку во входных данных, это гуд

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Quasar

dgrid3d как-то хреново апроксимирует

Obey-Kun ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.