VTK. Получение значения Z по X и Y из polydata

175
23 октября 2021, 23:40

У меня есть некоторый набор точек, который проходит через vtkDelaunay2D (триангуляцию) и vtkSmoothPolyDataFilter (сглаживание), соответственно, получается отображаемая поверхность. Есть ли какая то возможность из этой поверхности получения значения Z по заданным X и Y?

Такой вопрос возник из-за необходимости интерполировать поверхность по другому заданному набору X и Y, но простая линейная интерполяция дает совершенно другую поверхность по геометрии, поэтому появилась идея брать точку из конкретной отображенной поверхности, но как это сделать варианта я не нашел.

Answer 1

Решил задачу с помощью использования vtkCellLocator, по сути решения строится луч и ищется пересечение поверхности с этим лучом. Может кому нибудь пригодится.

const auto smoothedPolyDataFilter = vtkSmartPointer<vtkSmoothPolyDataFilter>::New();
// настройка, обработка
smoothedPolyDataFilter->Update();
const auto cellLocator = vtkSmartPointer<vtkCellLocator>::New();
сellLocator->SetDataSet(smoothedPolyDataFilter->GetOutput());
cellLocator->BuildLocator();
auto x = 100.0, y = 100.0; // задаем x и y для которых ищем z
auto z_min = 0.0, z_max = 100.0; // минимальные и максимальные z поверхности
int subId;
double t, xyz[3], pcoords[3];
double rayStart[3] = { x, y, z_min }, rayEnd[3] = { x, y, z_max };
if (cellLocator->IntersectWithLine(
        rayStart,
        rayEnd,
        0.0001,
        t,
        xyz,
        pcoords,
        subId
    ))
{
    const auto z = xyz[2]; // получаем искомую z из поверхности
}
READ ALSO
перегрузка оператора ()(int,int)

перегрузка оператора ()(int,int)

для класса String требуется перегрузить несколько операторов,возник вопрос с перегрузкой оператора ()(int,int) -возвращение подстроки объектаКак...

191
Как открыть дизайнер формы в проекте Windows Application C++?

Как открыть дизайнер формы в проекте Windows Application C++?

Всем приветВ общем, создал проект Windows Application С++

174
Ошибка Segmentation fault

Ошибка Segmentation fault

Вылетает в этой фукции:

246
Как поймать клик с помощью event.target в popup.js и передать его content.js

Как поймать клик с помощью event.target в popup.js и передать его content.js

Есть расширение для хрома, которое обрабатывает все цвета на открытой вкладке и выводит их в popup, например вот так — rgb(192, 72, 72) и так далее

222